亚马逊AWS官方博客

使用 Amazon DataSync 传输 Amazon FSx for Windows File Server 文件

1. 前言

Amazon DataSync 是一项在线数据移动和发现服务,可简化数据迁移,并帮助您在亚马逊云科技存储服务及其他类型存储之间快速、轻松、安全地传输文件或对象数据。

它支持广泛的存储类型和服务,比如 on-premises 存储系统 NFS、HDF,亚马逊云科技存储服务 Amazon S3、Amazon FSx for Windows File Server 等。

文本以某跨国公司传输企业财务数据为背景。由于组织架构调整,公司希望将存储在 Amazon FSx for Windows File Server 的财务数据数据统一存储到国内以方便管理。下面基于此场景演示 DataSync 的使用。

2. 架构设计

我们将亚马逊云科技悉尼区域作为数据源,亚马逊云科技宁夏区域(由西云数据独立运营)作为目标。

为便于后续描述,进行如下命名约定:

  • Source fsx:悉尼区域的 Amazon FSx for Windows File Server 文件系统
  • Source fsx sg:Source fsx 所在安全组
  • Target fsx:宁夏区域的 Amazon FSx for Windows File Server 文件系统
  • Target fsx sg:Target fsx 所在安全组
  • Target agent:宁夏区域所需的 DataSync 代理

传输架构如下:

图中包含两部分:左侧是目标区域宁夏(ZHY),包含目标文件系统 target fsx 以及将 target fsx 暴露给源 DataSync 的代理,即 target agent。右侧是源区域悉尼(Sydney),包含待传输的 Amazon FSx for Windows File Server 文件系统,即 source fsx,以及传输服务 Amazon DataSync。两部分通过互联网连接。

为保证悉尼的 DataSync 能发现 target fsx,我们引入了 target agent。在本架构中,我们在宁夏区域启动一台实例并安装 DataSync 代理软件充当 target agent,然后将 target fsx 的/share 目录挂载到该实例的/fsx 目录。这样既保证了实例能跟 target fsx 通信,又可以被悉尼区域的 DataSync 发现。

DataSync 通过 80 端口来注册 target agent,因此通过向 target agent 的安全组添加该入站规则即可。需要注意的是,宁夏区域开通 80.443 端口需要向亚马逊云科技的支持组提申请。

3. 数据传输

下面详细说明传输配置。按照位置不同,配置分为源端配置和目标端配置。由于源端配置依赖目标端的信息,所以我们先看一下目标端配置。

创建 target fsx

为了接受源端的数据,需要在目标端创建 Amazon FSx for Windows File Server 文件系统,即 target fsx。建议 target fsx 的大小、存储类型等配置跟 source fsx 完全一致。此外,为了保证传输正常,请确保 target fsx 所在安全组入站规则包含如下端口:

您可以按照如下操作来查看 target fsx 对应的安全组:选择 target fsx,点击“网络与安全”选项卡,定位到子网部分,然后点击“网络接口”,在打开的界面中可确认安全组信息。

创建 DataSync agent 实例

如上所述,该实例的作用是为了发现并暴露 target fsx 给悉尼的 DataSync。具体配置如下:

(1)创建实例安全组 target-agent-sg

确保安全组的入站规则包含 80 端口,建议在传输阶段将源安全组范围放开,从而避免在悉尼 DataSync 中注册失败。出站规则按照默认即可。可以参考下图添加入站规则:

(2)从官方指定的镜像文件启动实例

官方提供了专门的镜像文件(AMI),从而无需手动安装 agent 相关软件。因为我们在宁夏区启动实例,所以通过以下命令来获得对应区域的镜像:

aws ssm get-parameter --name /aws/service/datasync/ami --region cn-northwest-1
PowerShell

以下是输出结果,Value 对应的值就是 AMI ID:

{
    "Parameter": {
        "Name": "/aws/service/datasync/ami",
        "Type": "String",
        "Value": "ami-0b9037602795a18d3",
        "Version": 61,
        "LastModifiedDate": "2024-07-16T00:29:37.042000+08:00",
        "ARN": "arn:aws-cn:ssm:cn-northwest-1::parameter/aws/service/datasync/ami",
        "DataType": "text"
    }
}
PowerShell

将 AMI ID 替换该链接中的 AMI_ID:

https://console.amazonaws.cn/ec2/v2/home?region=cn-northwest-1#LaunchInstanceWizard:ami=AMI_ID ,这样可以直接打开实例创建界面。

(3)选择合适的实例类型

agent 对实例类型有一定的要求,根据官方文档的建议,可以选择如下实例:

  • m5.2xlarge:传输的对象不超过 2 千万个对象,文件或目录。
  • m5.4xlarge:传输对象超过 2 千万个对象,文件或目录。

当然,如果文件非常巨大,也可以选择更高配置。

(4)在网络配置中选择第一步创建的 target-agent-sg 即可,vpc 确保跟 target fsx 相同

(5)将实例添加到 target fsx 所在域

因为 DataSync 通过域账号来传输数据,所以在启动实例时请将其添加到 target fsx 所在域环境。展开高级详细信息,按下图选择所在域即可:

如果是自建域环境,可以先创建 AD Connector 指向该域,然后在此选择对应的 AD Connector 即可。关于如何创建 AD Connector,可参考链接:https://docs.aws.amazon.com/zh_cn/directoryservice/latest/admin-guide/directory_ad_connector.html

将该实例挂载到 target fsx

因为 DataSync 通过 target agent 来访问 target fsx,所以需要将该实例挂载到 target fsx 以便访问其相应目录。挂载的过程很简单,登录该实例,然后输入以下命令:

mkdir local_path
sudo mount -t cifs -o vers=3.0,sec=ntlmsspi,user=user@DOMAIN //target_fsx_ip/share local_path
PowerShell

其中:

  • local_path 表示实例本地目录。
  • user@DOMAIN 表示 target fsx 所在域管理员账号。
  • target_fsx_ip 表示 target fsx 的 IP 地址,在 target fsx 的“网络和安全”部分可以查看对应 IP。

例如下面的命令创建 /fsx 目录,并以域管理员 admin@test.com 身份将其挂载到 target fsx 的/share 目录。Target fsx 对应的 IP 为 172.31.22.149。

mkdir /fsx
sudo mount -t cifs -o vers=3.0,sec=ntlmsspi,user=admin@test.com //172.31.22.149 /share /fsx
PowerShell

通过目标端配置,我们完成了 target fsx 及其安全组的创建,DataSync 代理实例的创建及挂载。下面我们完成源端的配置。源端的配置相对简单,包括:target agent注册、源和目标位置的创建,最后创建并执行传输任务。

Target agent 注册

为了能让悉尼的 DataSync 发现我们创建的宁夏区域的代理 target agent,首先需要进行注册。打开悉尼区域的 DataSync 控制台,点击左侧导航中的“代理”连接,在打开的界面中进行如下设置:

Hypervisor 选择 EC2

Endpoint type 选择 Asia Pacific(Syndey)中的公共服务终端节点

输入代理的公网 IP 地址

如果 target agent 的 80 端口已经打开,而且 IP 地址填写正确,那么稍等几分钟可以看到激活成功的提示。

注意:有两种常见情况会导致注册失败:

  1. 未开通 80.443 端口。宁夏区域的 80.443 端口需要提工单开通,默认不能访问这两个端口。
  2. 安全组入站规则虽已添加 80 端口,但是源的 IP 范围设置太小。

创建 DataSync 位置

DataSync 的传输需要分别指定源和目标位置。我们先为悉尼区域的 source fsx 创建位置。在悉尼 DataSync 的控制台点击左侧“Locations”链接,然后点击“Create Location”,在打开的界面进行如下设置:

Configuraiton 部分

  • Location type 选择 Amazon FSx
  • FSx file system 选择 source fsx
  • Share name 填写 /share
  • 安全组选择合适安全组

注意:source fsx 安全组和 target fsx 类似,要确保打开如下端口号

User settings 部分:

  • User 填写 source fsx 所在域的域管理员
  • Password 填写对应密码
  • Domain 填写对应域名

如下图:

点击“创建”即可完成源位置的创建,下面我们再创建目标位置。如下图,此时的 Location type 选择 SMB。这里我们将 target fsx 看成普通的可被 SMB 协议访问的文件系统,而非托管的 FSx 服务。Agent 选择刚刚激活的 target agent,SMB server 选择 target fsx 的 IP,share name 填写 /share。

在 User setting 部分,用户名填写 target fsx 的域管理员账号,对应密码以及域信息。点击创建即可。

这样我们分别创建了源和目标对应的位置。接下来我们创建任务来进行传输。

创建 DataSync 任务

继续在悉尼区域的 DataSync 控制台,点击左侧的 Task,进一步点击“创建任务”。然后分别选择刚刚创建源和目标位置。首先选择源位置:

然后选择目标位置:

点击下一步,配置传输的具体文件和 schedule:

指定任务的名称和传输文件

指定运行 schedule,默认“Not scheduled”表示只运行一次

在 Review 审阅界面进行确认后点击“创建任务”。创建成功后通过“启动”操作可以启动任务。可以在任务的 Monitor 选项卡中观察传输的细节。

注意:任务的运行分为 QUEUED、LAUNCHING、PREPARING、TRANSFERRING 等多个阶段,其中 PREPARING 会计算需要传输哪些文件,文件越多消耗的时间越长,一般需要几分钟到几个小时不等。

开始传输后,可以通过 Amazon Fsx for Windows File Server 控制台的监控查看下面类似指标:

4. 总结

本文介绍了如何使用 DataSync 将悉尼区域的 Amazon FSx for Windows File Server 文件传输到宁夏区域。以实际的测试场景为例,基于互联网传输 2TB FSx for Windows 文件(约 44 万个),传输峰值能达到每秒 50 多兆,平均传输速率是每秒 20 兆,总耗时约 28 小时。

除了 Amazon FSx ,DataSync 还支持 Amazon EFS、Amazon S3、SMB、HDFS 等主流的文件存储类型。在传输过程中还支持压缩和断点续传,从而为文件传输提供了很好的选项。


*由于各国对数据跨境传输的监管日益健全,就您具体的数据跨境传输需求,还请您咨询相应的法务合规专家以确保数据跨境安全、自由、合规流动。

*请您在阅读本文并依据本文进行操作部署前知悉并同意:本文仅提供相关建议性信息,您应负责对该等建议性信息进行独立评估并确定是否据此进行操作及部署。在任何情况下,本文不应被视为服务提供方(包括其关联方、供应商、合作方或许可方)针对本文下的服务对您所作出的任何形式的承诺或保证。

本篇作者

何建桥

西云数据解决方案架构师,10+年开发和架构经验,在实时数据传输、大数据以及生成式 AI 方面有着丰富的实战经验。