将数据转移到 Cloud Storage 或从 Cloud Storage 转移数据

Parallelstore 可以从 Cloud Storage 导入和导出数据。借助数据传输,您可以快速将数据加载到 Parallelstore 实例中,并将 Cloud Storage 用作 Parallelstore 实例的持久性后备层。

数据导入和导出是增量操作;它们只会复制目标位置中不存在的文件,或自传输以来发生更改的文件。

如需了解预期的传输速度,请参阅性能

所需权限

用于发起转移的用户账号或服务账号需要具有以下权限:

  • parallelstore.instances.exportData,以便从 Parallelstore 转移到 Cloud Storage。
  • parallelstore.instances.importData,以便转移到 Cloud Storage。

这两项权限均由 roles/parallelstore.admin 角色授予。您可以创建自定义角色,以便独立授予权限。

此外,Parallelstore 服务账号需要具有以下权限:

  • 对 Cloud Storage 存储分区的 roles/storage.admin 权限。

如需授予此权限,请运行以下 gcloud 命令:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-parallelstore.iam.gserviceaccount.com \
  --role=roles/storage.admin

您的 PROJECT_NUMBER项目 ID 不同:

  • 项目 ID 是一个唯一字符串,可以是字母、数字和连字符的组合。您可以在创建项目时指定项目 ID。例如 example-project-123
  • 项目编号是系统为项目自动生成的唯一标识符,仅由数字组成。例如 1234567890

如需获取给定项目 ID 的 PROJECT_NUMBER,请使用 gcloud projects describe 命令:

gcloud projects describe PROJECT_ID --format="value(projectNumber)"

将数据导入 Parallelstore

您可以从 Cloud Storage 存储分区导入数据。该存储分区可以位于同一项目中,也可以位于其他项目中。该存储分区可以位于与 Parallelstore 实例不同的可用区或区域,但区域间传输的速度可能会比区域内传输的速度慢。

gcloud

gcloud beta parallelstore instances import-data INSTANCE_ID \
  --location=LOCATION \
  --source-gcs-bucket-uri=gs://BUCKET_NAME \
  --destination-parallelstore-path=PS_PATH

其中:

  • INSTANCE_ID 是您的 Parallelstore 实例名称。
  • --location 必须是受支持的区域
  • --source-gcs-bucket-uri 使用 gs://<bucket_name>/<optional_path_inside_bucket> 格式指定 Cloud Storage 存储分区的 URI 或存储分区中的路径。
  • --destination-parallelstore-path 指定 Parallelstore 文件系统的根目录路径。必须以 / 开头。默认值为 /

下面介绍的是可选参数。

  • 借助 --request-id,您可以为此请求分配唯一 ID。如果您使用相同的请求 ID 重试此请求,那么如果该请求已完成,服务器会忽略该请求。必须是有效的 UUID,且不能全为零。例如:--request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async 会立即返回响应,而无需等待操作完成。

REST

POST https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData
Authorization: Bearer [YOUR_ACCESS_TOKEN]

{
  "source_gcs_bucket" : {
    "uri" : "gs://BUCKET_NAME/"
  },
  "destination_parallelstore" : {
    "path" : "/PATH"
  }
}

其中:

  • PROJECT_ID 是您的 Google Cloud 项目 ID。
  • LOCATION 必须是您的实例所在的受支持的区域
  • INSTANCE_ID 是您的 Parallelstore 实例名称。
  • source-gcs-bucket 包含一个 uri 键,其值使用 gs://<bucket_name>/<optional_path_inside_bucket> 格式指定 Cloud Storage 存储分区的 URI 或存储分区内的路径。
  • destination-parallelstore 包含一个 path 键,其值指定了 Parallelstore 文件系统的根目录路径。必须以 / 开头。默认值为 /

如需使用您自己的服务账号(而非 Google 管理的服务代理),请求支持在 JSON 对象中使用 serviceAccount 字段:

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

示例 c网址 命令如下所示:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData \
  -d '{"source_gcs_bucket": {"uri":"gs://BUCKET_NAME/"}, "destination_parallelstore": {"path":"/"}}'

导出数据

您可以将数据从 Parallelstore 实例导出到同一项目或其他项目中的 Cloud Storage 存储分区。该存储分区可以与您的 Parallelstore 实例位于不同的可用区或区域,但跨区域传输的速度可能会比区域内传输的速度慢。

gcloud

gcloud beta parallelstore instances export-data \
  INSTANCE_ID \
  --location=LOCATION \
  --destination-gcs-bucket-uri="gs://BUCKET_NAME" \
  --source-parallelstore-path="/"

其中:

  • INSTANCE_ID 是您的 Parallelstore 实例名称。
  • --location 必须是受支持的区域
  • --destination-gcs-bucket-uri 使用 gs://<bucket_name>/<optional_path_inside_bucket> 格式指定 Cloud Storage 存储分区的 URI 或存储分区内的路径。
  • --source-parallelstore-path 指定 Parallelstore 文件系统的根目录路径。必须以 / 开头。默认值为 /

下面介绍的是可选参数。

  • 借助 --request-id,您可以为此请求分配唯一 ID。如果您使用相同的请求 ID 重试此请求,那么如果该请求已完成,服务器会忽略该请求。必须是有效的 UUID,且不能全为零。例如:--request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async 会立即返回响应,而无需等待操作完成。

REST

POST https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData
Authorization: Bearer [YOUR_ACCESS_TOKEN]

{
  "source_parallelstore" : {
    "path" : "/"
  },
  "destination_gcs_bucket" : {
    "uri" : "gs://BUCKET_NAME/"
  }
}

其中:

  • PROJECT_ID 是您的 Google Cloud 项目 ID。
  • INSTANCE_ID 是您的 Parallelstore 实例名称。
  • LOCATION 必须是 Parallelstore 实例所在的受支持的可用区
  • --source-parallelstore 包含一个 path 键,其值指定了 Parallelstore 文件系统的根目录路径。必须以 / 开头。默认值为 /
  • --destination-gcs-bucket 包含一个 uri 键,其值使用 gs://<bucket_name>/<optional_path_inside_bucket> 格式指定 Cloud Storage 存储分区的 URI 或存储分区内的路径。

如需使用您自己的服务账号(而非 Google 管理的服务代理),请求支持在 JSON 对象中使用 serviceAccount 字段:

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

示例 c网址 命令如下所示:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json"
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData \
  -d '{"source_parallelstore": {"path":"/"}, "destination_gcs_bucket": {"uri":"gs://BUCKET_NAME/"}}'

获取操作

如需查看导入或导出操作的状态,您需要操作 ID。当您发出导入或导出请求时,该服务会返回此 ID,其格式如下:

  • operation-1234567890123-6127783ad26ea-88913969-02748053

gcloud

gcloud beta parallelstore operations describe OPERATION_ID \
  --location=LOCATION

REST

GET https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Authorization: Bearer [YOUR_ACCESS_TOKEN]

示例 c网址 命令如下所示:

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

取消操作

如需取消导入或导出操作,您需要提供操作 ID。当您发出导入或导出请求时,该服务会返回此 ID,其格式如下:

  • operation-1234567890123-6127783ad26ea-88913969-02748053

gcloud

gcloud beta parallelstore operations cancel OPERATION_ID \
  --location=LOCATION

REST

POST https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Authorization: Bearer [YOUR_ACCESS_TOKEN]

示例 c网址 命令如下所示:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel