将大型数据集从 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 Console 的“项目选择器”页面上,选择或创建一个 Google Cloud 项目。

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

    转到“项目选择器”

  2. 启用结算功能

    确保您的 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 客户端机器的转移作业。您将创建一个可代表 4 个客户端机器运行的单个服务帐号。每台客户端机器都将安装三个 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 是您在上一步中映射到的目录的名称。这是您要将 Filestore 实例装载到 Compute Engine 虚拟机实例上的目录。

    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 Console 的转移作业页面监控转移作业的状态。

命令行

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

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

如需了解详情,请参阅监控代理活动文件系统传输详细信息

后续步骤