使用 Storage Transfer Service 将大型数据集从 Cloud Storage 移至 Filestore 文件共享。
无论您的数据托管在 Cloud Storage、第三方云服务提供商还是本地,Storage Transfer Service 都能帮助您在对象存储系统和文件存储系统之间快速安全地转移大型数据集。
Storage Transfer Service 支持加速传输大型数据集,可处理数百 TB 或更多数据。将大型数据集移至云端,以便利用 Filestore 实例挂载到的底层 Compute Engine 实例提供的分析和机器学习操作。
借助 Storage Transfer Service,您可以创建 Google 管理的转移作业,或配置自行托管的转移作业,以便完全控制网络路由和带宽用量。
将数据从 Cloud Storage 存储桶传输到 Filestore 文件共享
若要使用 Storage Transfer Service 将数据从 Cloud Storage 转移到 Filestore 文件共享,需要完成以下任务:
- 设置环境。
- 配置 Filestore。
- 配置 Storage Transfer Service。
- 创建并启动转移作业。
以下部分将引导您完成每项任务。
设置环境
选择或创建项目。
在本指南中,请确保您的源资源和目标资源位于同一项目中。
在 Google Cloud Console 的“项目选择器”页面上,选择或创建一个 Google Cloud 项目。
如果您只是在测试 Filestore,并且不打算保留创建的资源,我们建议您创建新项目,而不是选择现有项目。测试完成后,您可以删除项目,从而移除与该项目关联的所有资源。
启用结算功能。
确保您的 Google Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能。
-
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
可选:
gcloud
是 Google Cloud SDK 的一个主要组件,会安装在每个 Compute Engine VM 上。如果您要从本地命令行执行以下任一步骤,请设置 Google Cloud SDK。安装并初始化 Google Cloud SDK。
如果您之前安装了 Google Cloud SDK,请运行以下命令,确保您拥有最新版本:
gcloud components update
创建服务账号。 在向此服务账号授予对项目的访问权限部分中,分配以下角色:
Owner
Project IAM Admin
Role Administrator
Pub/Sub Editor
Cloud Filestore Editor
Storage Object Admin
Storage Transfer Admin
Storage Transfer Agent
复制并保存您创建的服务账号的名称,以备后续步骤使用。
为您刚刚创建的账号创建服务账号。在本指南中,请仅创建一个密钥。下载密钥文件并保存,以备后续步骤使用。
向用户账号分配角色。在 IAM 页面中,找到您的用户账号,并为其分配以下角色:
Owner
Project IAM Admin
Role Administrator
Storage Transfer Admin
Storage Admin
如需了解详情,请参阅用户权限。
配置 Filestore
创建 Filestore 实例。 创建实例时,请应用以下规范:
在客户端计算机上装载 Filestore 实例。
本指南介绍了一种传输方式,其中使用四台 Compute Engine 虚拟机作为 NFS 客户端计算机。您将创建一个服务账号,该账号将代表四台客户端计算机运行。每台客户端计算机上都将安装三个 Storage Transfer Service 代理。
创建可访问其他 Google Cloud 服务的 Compute Engine 虚拟机实例。
使用以下规格配置虚拟机:
指定位置时,请确保 Google Cloud 存储桶、客户端虚拟机和 Filestore 实例都位于同一区域。
每个 Storage Transfer Service 代理都需要 4 个 vCPU 和 8 GB RAM。为了获得最佳性能,请在每个虚拟机上运行多个代理。在本指南中,请预配一个
e2-standard-32
Compute Engine 虚拟机实例。在身份和 API 访问权限部分,指定以下内容:
- 在服务账号下拉列表中,选择您刚刚创建的服务账号。
创建 Compute Engine 虚拟机实例后,使用 SSH 登录该机器。在 Compute Engine 虚拟机实例页面中,找到您创建的实例,然后点击 SSH。
使用 Vim 等文本编辑器创建服务账号密钥文件的副本,并将其临时保存到虚拟机的本地。例如
service-account-key.json
。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
。
仍在 SSH 命令行中,安装 NFS:
sudo apt-get -y update && sudo apt-get install nfs-common
创建一个本地目录,将其映射到 Filestore 文件共享。为后续的 Compute Engine 虚拟机实例重复这些步骤时,请使用相同的名称和路径:
sudo mkdir -p MY_DIRECTORY
其中:
- MY_DIRECTORY 是 Compute Engine 虚拟机实例的本地 POSIX 目录的名称。例如
/usr/local/my_dir
。
- MY_DIRECTORY 是 Compute Engine 虚拟机实例的本地 POSIX 目录的名称。例如
通过运行
mount
命令,装载与 Filestore 实例关联的文件共享。您可以使用任何 NFS 装载选项。为了获得最佳性能,请参阅在 Compute Engine 虚拟机实例上装载文件共享中的 NFS 装载建议:sudo mount -o rw IP_ADDRESS:/FILE_SHARE MY_DIRECTORY
其中:
IP_ADDRESS 是 Filestore 实例的 IP 地址。您可以在 Filestore 实例页面中找到此信息。
FILE_SHARE 是实例上的文件共享的名称。例如
my_fs_instance
。MY_DIRECTORY 是您在上一步中映射到的目录的名称。这是您要在 Compute Engine 虚拟机实例上装载 Filestore 实例的目录。
确认装载点:
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
记下本地 POSIX 目录路径,并保存以备后续步骤使用。
重复上述步骤,再创建 3 个 Compute Engine 虚拟机实例,并将相同的 Filestore 实例挂载到每个实例。使用同一个服务账号管理所有四台 Compute Engine 虚拟机。将服务账号密钥的本地副本暂时保存到每个虚拟机。
配置 Storage Transfer Service
为服务代理授予使用所有 Storage Transfer Service 功能的权限。
输入以下命令:
gcloud transfer authorize --add-missing --creds-file=KEY_FILE
其中:
- KEY_FILE 是您之前复制的密钥文件的本地相对路径。例如
sa-key.json
。
记下返回的有关服务代理的通知,并保存关联的电子邮件地址以供下一步使用。
- KEY_FILE 是您之前复制的密钥文件的本地相对路径。例如
几分钟后,您应该会在 IAM 页面中看到服务代理。传播完成后,请验证是否已分配以下角色:
Pub/Sub Editor
Storage Admin
安装转移代理。
每个 Storage Transfer Service 代理都需要 4 个 vCPU 和 8 GB RAM。
我们建议您安装多个代理,以最大限度地提高容错性,并充分利用 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
。
对每台客户端计算机重复上述步骤。
创建并启动转移作业
- 创建转移作业,以将数据从 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