使用 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 文件共享
使用以下方法将数据从 Cloud Storage 转移到 Filestore 文件共享: Storage Transfer Service 需要以下任务:
- 设置环境。
- 配置 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 的主要组件 运行 24 万个 Pod如果执行以下任何步骤 设置 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 实例。 创建实例时,请应用以下规范:
确保 Cloud Storage 存储桶、客户端虚拟机和 Filestore 实例都位于同一区域。
选择区域级或 enterprise 实例类型。
可选:对于较大的数据集,请申请增加配额。
复制实例名称和 IP 地址,并保存以备后续步骤使用。
在客户端机器上装载 Filestore 实例。
本指南介绍了一个使用 4 个 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 虚拟机实例例如
/usr/local/my_dir
。
- MY_DIRECTORY 是
Compute Engine 虚拟机实例例如
通过运行
mount
命令,装载与 Filestore 实例关联的文件共享。您可以使用任何 NFS 装载选项。 如需获得最佳性能,请参阅 在 Compute Engine 虚拟机实例上装载文件共享: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 目录路径,并保存以备后续步骤使用。
重复前面的步骤,再创建三个 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
。
监控转移状态
控制台
通过转移作业监控转移作业的状态 页面
命令行
您可以使用命令行监控状态:
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