将大型数据集从 Cloud Storage 转移到 Filestore

使用 Storage Transfer Service 将大型数据集从 Cloud Storage 移至 Filestore 文件共享。

显示使用 Storage Transfer Service 将数据从 Cloud Storage 移动到 Filestore 实例的工作流。Filestore 实例会装载到多个 Compute Engine 实例上。

Storage Transfer Service 可帮助您在对象存储系统和文件存储系统之间快速安全地转移大型数据集,无论您的数据是托管在 Cloud Storage、第三方云服务商还是本地。

Storage Transfer Service 支持加速转移大型数据集,处理数百 TB 或更多的数据。将大型数据集迁移到云端,即可利用装载 Filestore 实例的底层 Compute Engine 实例提供的分析和机器学习操作。

借助 Storage Transfer Service,您可以轻松创建 Google 管理的转移作业,或配置自托管的转移作业,以完全控制网络路由和带宽用量。

将数据从 Cloud Storage 存储桶转移到 Filestore 文件共享

使用 Storage Transfer Service 将数据从 Cloud Storage 传输到 Filestore 文件共享时,您需要完成以下任务:

  1. 设置环境。
  2. 配置 Filestore。
  3. 配置 Storage Transfer Service。
  4. 创建并启动转移作业。

以下部分将引导您完成每项任务。

设置您的环境

  1. 选择或创建项目。

    在本指南中,请确保源资源和目标资源位于同一项目中。

    在 Google Cloud 控制台的“项目选择器”页面上,选择或创建一个 Google Cloud 项目。

    如果要测试 Filestore,但不打算保留创建的资源,我们建议您创建项目,而不是选择现有项目。完成测试后,您可以删除项目,并移除与该项目关联的所有资源。

    转到“项目选择器”

  2. 启用结算功能

    确保您的 Google Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  3. 启用以下 API

    • Filestore API

    • Resource Manager API

    • Pub/Sub API

    • Cloud Storage API

    • Storage Transfer API

    • Cloud Logging API

    • Compute Engine API

    • Service Usage API

    • Identity and Access Management API

  4. 可选:gcloud 是 Google Cloud SDK 的主要组件,会安装在每个 Compute Engine 虚拟机上。如果通过本地命令行执行以下任何步骤,请设置 Google Cloud SDK。

    安装并初始化 Google Cloud SDK

    如果您之前安装了 Google Cloud SDK,请运行以下命令以确保您使用的是最新版本:

    gcloud components update
    
  5. 创建服务帐号。向此服务帐号授予对项目的访问权限部分中,分配以下角色:

    • Owner

    • Project IAM Admin

    • Role Administrator

    • Pub/Sub Editor

    • Cloud Filestore Editor

    • Storage Object Admin

    • Storage Transfer Admin

    • Storage Transfer Agent

    1. 复制并保存您为后续步骤创建的服务帐号的名称。

    2. 为您刚刚创建的帐号创建服务帐号密钥。在本指南中,请仅创建一个密钥。下载密钥文件并保存以供后续步骤使用。

  6. 为用户帐号分配角色。在 IAM 页面中,找到您的用户帐号并为其分配以下角色:

    • Owner

    • Project IAM Admin

    • Role Administrator

    • Storage Transfer Admin

    • Storage Admin

    如需了解详情,请参阅用户权限

配置 Filestore

  1. 创建 Filestore 实例。 创建实例时,请应用以下规范:

    1. 确保 Cloud Storage 存储桶、客户端虚拟机和 Filestore 实例都位于同一区域

    2. 选择一种企业实例类型。

    3. 可选:对于较大的数据集,请申请增加配额

    4. 复制实例名称和 IP 地址并保存,以备后续步骤使用。

  2. 在客户端机器上装载 Filestore 实例。

    本指南介绍了将四个 Compute Engine 虚拟机用作 NFS 客户端机器的转移。您将创建一个代表这四台客户端机器运行的服务帐号。每台客户端机器将安装三个 Storage Transfer Service 代理。

    1. 创建可访问其他 Google Cloud 服务的 Compute Engine 虚拟机实例。

      1. 使用以下规格配置虚拟机

        1. 指定位置时,请确保 Google Cloud 存储桶、客户端虚拟机和 Filestore 实例位于同一区域

        2. 每个 Storage Transfer Service 代理都需要 4 个 vCPU 和 8 GB RAM。为获得最佳性能,请为每个虚拟机运行多个代理。 在本指南中,请预配 e2-standard-32 Compute Engine 虚拟机实例。

        3. 身份和 API 访问权限部分,指定以下内容:

          1. 服务帐号下拉列表中,选择您刚刚创建的服务帐号。
    2. 创建 Compute Engine 虚拟机实例后,使用 SSH 登录机器。在 Compute Engine 虚拟机实例页面中,找到您创建的实例,然后点击 SSH

    3. 使用 Vim 等文本编辑器创建服务帐号密钥文件的副本,并将其临时保存到虚拟机本地。例如 service-account-key.json

    4. 在虚拟机上安装 Docker

    5. gcloud 已安装在 Compute Engine 虚拟机实例上。在 SSH 命令行中,输入以下命令来授权服务帐号使用 gcloud

      gcloud auth activate-service-account ACCOUNT --key-file=KEY_FILE
      

      其中:

      • ACCOUNT 是您创建的服务帐号的电子邮件地址。例如 my-service-account@my-project.iam.gserviceaccount.com

      • KEY_FILE 是您之前复制的密钥文件的相对本地路径。例如 sa-key.json

    6. 仍然在 SSH 命令行中,安装 NFS:

      sudo apt-get -y update && sudo apt-get install nfs-common
      
    7. 创建一个本地目录以映射到 Filestore 文件共享。 对后续 Compute Engine 虚拟机实例重复这些步骤时,请使用相同的名称和路径:

      sudo mkdir -p MY_DIRECTORY
      

      其中:

      • MY_DIRECTORY 是 Compute Engine 虚拟机实例的本地 POSIX 目录的名称。例如 /usr/local/my_dir
    8. 运行 mount 命令,装载与 Filestore 实例关联的文件共享。您可以使用任何 NFS 装载选项。为了获得最佳性能,请参阅在 Compute Engine 虚拟机实例上装载文件共享中的 NFS 装载建议:

      sudo mount -o rw,intr IP_ADDRESS:/FILE_SHARE MY_DIRECTORY
      

      其中:

      • IP_ADDRESS 是 Filestore 实例的 IP 地址。您可以在 Filestore 实例页面中找到它。

      • FILE_SHARE 是实例上的文件共享的名称。 例如 my_fs_instance

      • MY_DIRECTORY 是您在上一步中映射到的目录的名称。这是 Compute Engine 虚拟机实例上要装载 Filestore 实例的目录。

    9. 确认装载点:

      mount -l | grep nfs
      

      这将返回以下内容或类似结果:

      10.66.55.194:/my_fs_instance on /home/usr/my_dir type nfs (rw,relatime,vers=3,rsize=262144,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.66.55.194,mountvers=3,mountport=2050,mountproto=udp,local_lock=none,addr=10.66.55.194)
      

      或者,您也可以使用以下命令:

      df -h --type=nfs
      

      这将返回以下内容或类似结果:

      Filesystem                       Size  Used Avail Use% Mounted on
      10.66.55.194:/my_fs_instance  1.0T     0  1.0T   0% /home/usr/my_dir
      
    10. 请记下本地 POSIX 目录路径并保存,以备后续步骤使用。

    11. 重复上述步骤,再创建三个 Compute Engine 虚拟机实例,并将同一个 Filestore 实例装载到每个实例中。使用同一服务帐号管理所有四个 Compute Engine 虚拟机。将服务帐号密钥的本地副本暂时保存到每个虚拟机。

配置 Storage Transfer Service

  1. 创建代理池。

  2. 授权 Google 代管式服务帐号以使用所有 Storage Transfer Service 功能。

    1. 输入以下命令:

      gcloud transfer authorize --add-missing --creds-file=KEY_FILE
      

      其中:

      • KEY_FILE 是您之前复制的密钥文件的相对本地路径。例如 sa-key.json

      记下返回的有关 Google 代管式服务帐号的通知,并保存关联的电子邮件地址以供下一步使用。

    2. 几分钟后,您应该会在 IAM 页面中看到 Google 代管式服务帐号。传播完成后,请验证是否分配了以下角色:

      • Pub/Sub Editor

      • Storage Admin

  3. 安装转移代理

    每个 Storage Transfer Service 代理都需要 4 个 vCPU 和 8 GB RAM。

    1. 我们建议安装多个代理,以最大限度地提高容错能力并利用 Storage Transfer Service 提供的动态伸缩。以下示例展示了如何在客户端机器上安装三个代理。在 SSH 命令行中,运行以下命令:

      gcloud transfer agents install --pool=MY_AGENT_POOL --count=3 \
      --creds-file=MY_SERVICE_ACCOUNT_KEY_FILE
      

      其中:

      • MY_AGENT_POOL 是您之前创建的代理池的名称。例如 my-agent-pool

      • MY_SERVICE_ACCOUNT_KEY_FILE 是服务帐号密钥的相对路径。例如 /relative/path/to/service-account-key.json

    2. 对每台客户端计算机重复上述步骤。

创建并启动转移作业

  1. 创建转移作业,将数据从 Cloud Storage 存储桶移至 Filestore 实例。 引用您之前保存的本地 POSIX 目录来指定目标路径。例如 /home/usr/my_dir

监控转移状态

控制台

通过 Google Cloud 控制台的转移作业页面监控转移作业的状态。

命令行

您可以使用命令行监控状态:

gcloud transfer jobs monitor JOB_NAME

其中:

  • JOB_NAME 是转移作业的名称。例如 transferJobs/OPI6300379522015192941

响应会显示以下内容或类似内容:

Polling for latest operation name...done.
Operation name: my-sts-project_transferJobs/OPI6300379522015192941_0000000001660692377
Parent job: OPI6300379522015192941
Start time: 2022-08-16T23:26:17.600981Z
SUCCESS | 100% (731.9MiB of 731.9MiB) | Skipped: 129.8kiB | Errors: 0
End time: 2022-08-16T23:27:23.429472Z

如需了解详情,请参阅监控代理活动文件系统转移详情

后续步骤