基于 Amazon DataSync 迁移 NetApp NAS 上云

c95a82d162407670887a6c68b6338e43.jpeg

b4b50aadea47df66d7ef7201dbb2298f.gif

点击上方入口立即【自由构建 探索无限】

一起共赴年度科技盛宴!

摘要

Amazon DataSync 是亚马逊云科技一款原生的数据迁移工具,可以方便快捷地迁移数据中心的 NAS 数据到 Amazon 端。在 Amazon 端,DataSync 可以直接将数据存放到 Amazon Simple Storage Service (Amazon S3)Amazon Elastic File System (Amazon EFS) 和 Amazon FSx 中。DataSync 同时也可以和 Amazon CloudWatch, Amazon CloudTrail 集成,实现对于迁移任务的记录、监控和告警。本文通过真实场景的案例,阐述通过 DataSync 迁移云下环境中的 NetApp NAS 数据到 Amazon FSx for NetApp ONTAP。

Amazon DataSync:

https://aws.amazon.com/cn/datasync/

Amazon Simple Storage Service (Amazon S3):

https://aws.amazon.com/cn/s3/

Amazon Elastic File System (Amazon EFS):

https://aws.amazon.com/cn/efs/

Amazon FSx:

https://aws.amazon.com/cn/fsx/

Amazon CloudWatch:

https://aws.amazon.com/cn/cloudwatch/

Amazon CloudTrail :

https://aws.amazon.com/cn/cloudtrail/

背景

对于 NetApp NAS 的迁移,DataSync 支持存量和增量数据同步,在同步完成后会自动进行源端和目的端的数据一致性校验。本文介绍的 NetApp 迁移基于以下典型案例,读者可以参考此案例来搭建迁移环境来进行数据上云。

假设客户在本地 IDC 环境有 NetApp 集群,有若干应用分别通过 NFS 或者 SMB CIFS 方式来访问这些集群。客户的应用存在海量小文件读写的情况:同一个数据卷存在上千万级别的小文件,每天还有大量新增数据。同时有一根 1G 的 Direct Connect 专线可以专门用来做数据同步。

客户需求是把 NetApp 集群里所有卷的数据都迁移到 Amazon FSx for NetApp,并希望尽量缩短迁移过程,更重要的是要确保文件属性和权限的一致性。同时在业务正式切割之前还需要有能做定期增量同步的能力。

迁移环境部署

迁移的整体架构图如下:


在客户的云下环境,我们需要至少一台机器作为 Agent 来处理数据的传输(Agent 距离迁移原始端越近传输效率越高)。同时建议再获取一台可以挂载 NetApp NAS 的跳板机来探查 NetApp 的文件数据结构。线下环境和云上通过专线打通,云上以 DataSync Endpoint 的方式来和线下通信。Endpoint 安全组需要打开 TCP 入向的 1024-1064 端口(流量控制) 以及 443 端口(数据传输)。详细网络配置可参考附录文档[1]

a6e3fa7d223d716761f6aa9bdf63089a.png

云上目的端要提前创建好 Amazon FSx for NetApp,建议使用跨可用区部署;安全组和路由配置要使得和 DataSync 服务通信正常。详细创建流程可参考附录文档[2]

注意:截止本文发表日。Amazon DataSync 支持 NFS v3, NFS v4.0, NFS v4.1 以及 SMB 2.1, SMB 3。低版本的协议建议升级后再使用 DataSync 进行迁移操作。

DataSync 任务配置

Amazon DataSync 的任务配置可以直接基于 Amazon 控制台进行图形界面操作,包括 Agent 激活、迁移原始端和目的端创建、任务创建执行等流程。下面展示了任务创建执行的全流程。

DataSync Agent 激活

(1)选择对应的线下环境镜像包,本文对应的环境是 VMware。这里选择 VMware 镜像包进行线下 Agent 机器的安装。

d2a5b7d543604970d0c5a6c94bd2d638.png

(2)安装成功后登陆系统按照以下步骤获取激活码。系统登陆默认用户名密码(用户名:admin, 密码:password)。

62800840fb58abd2788ee4eda635777b.jpeg

b2bd4f74f09f81cbcdd0aef4cd641f5b.jpeg

填好以上信息后,点击回车即可获取激活码。

(3)在 DataSync 控制台激活 Agent。

d6d9a8c041040d501283ab9b27fd0e5c.png

a1ced0cfd3b98d70916d93e4360e1396.jpeg

Online 状态表示当前 Agent 的状态正常,可以进行下一步任务配置。

DataSync location 创建

(源端和目的端)

(1)创建源 location(使用上面激活的 Agent,协议使用 SMB;两端协议需要一致)。

注意:  当使用 SMB 协议的时候,可以在源端和目的端使用不同的 Windows AD 账号;但源和目的需要是同一个 AD 或 AD 之间有信任关系。

7d6772d2a190f7d393a009e75e520308.png

(2)创建目的 location(目的端是 Amazon FSx for NetApp)。

8983cfdc5c35192695780ec201095c79.png

DataSync 任务配置

参考以下流程,使用上面创建的源和目的 location 来进行任务配置。

0f7d97f1ae21c1fb6f65762f328153d9.jpeg

a95dde82c2c8a052b7453f401a173e19.png

带宽大小会影响原始端的性能,开始建议可以限制小一点。我们这里限制到 20MiB/s。

d2720bc122c44859f1fb9d412431cd82.png

这里根据实际情况,选择传输的配置项。(后续增量传输可以设置只传输增量数据)

747519d4d16f8c8c82c1bd7c3b7b7e7e.png

DataSync 任务执行

任务创建好之后即可进行任务执行。

5d5d1bf652370e7ac83a158b19707990.png

在历史记录中查询任务的执行结果。

1291f1aa2687d4f0504bc76304ef94ed.png

迁移结果分析

本文迁移实践进行了 SMB 2.1, NFS 3协议的相关迁移实验,相关结果参见下表:

fd4bf9b29d949a2886f196e61485736c.jpeg

任务用时分析

由实验结果对比推测,文件数量对于传输任务耗时的影响系数大于数据量大小。换句话说,在文件数量不变的情况下,数据量大小变化引起的总任务时间变化,较数据量大小不变而文件数量变化的总任务时间变化更少。这是因为传输过程任务在小文件场景下所花费准备阶段建立索引,验证阶段数据哈希验证的时间会变得更长。

带宽 IOPS 影响分析

在实验中,在不做带宽限制的前提下,同区域的 DataSync 任务峰值传输速度可以达到200 MiB/s以上,源端 IOPS 可以达到7000以上。对于商用 NAS 存储产品,数千 IOPS 并发压力是相对比较友好的。但在客户环境发起传输任务,需要注意根据客户环境的专线带宽设置传输速度带宽限制,避免过度抢占专线带宽资源。

代理数量及配置分析

由实验结果对比可以发现,在千万文件数量级场景下,单台 m5.xlarge 已可以很好的满足传输需求。同时,我们不推荐在千万级小文件以下场景使用多台代理,此时增加代理数量并不会明显增加任务传输速度,不同文件数量级采用的代理配置可以参考附录文档[3]

增量传输任务配置分析

在应用实践中,传输任务可以被复用并配置为增量传输模式。在该模式下,准备阶段会扫描源端及目的端的所有文件并建立索引,并在传输阶段中仅传输差异部分数据。

成本分析

Amaozn DataSync 的计费方式比较简单,只有一个数据拷贝的费用。不同区域的费用略有差异,以本文作者所使用的新加坡区域为例,传输费用为:$0.0125/GB。上述案例中 205G 数据,DataSync 迁移完毕的总费用为 205 * 0.0125 = 3.125 美元。

同时在上述环境中,我们也使用了 DataSync Endpoint ,这部分会根据使用时长收费。

费用详细介绍可参考附录文档[4]。

常见问题

特殊类型文件报错

[ERROR] Deferred error: create(name=“/**/Thumbs.db”, hard=0, target=, mode=100644, dev=0, flags=241): Permission denied

左滑查看更多

解决方案:Thumbs.db 为 Windows 文件系统缓存文件,无需同步。如下图所示:

4a26e98f50960a47ba4d8fef102a7f6e.png

Windows 特殊文件类型可参考文档[5]

元数据校验异常

[NOTICE] /***/**pture.PNG srcMeta: type=R mode=0755 uid=65534 gid=65534 size=21825 atime=1579610388/259577000 mtime=1579610207/773981000 extAttrsHash=1516301661
[NOTICE] srcHash: f1bcb3297909d11cd1b45b4cda37ff9ee367aec43c1f698d2427966041919f82
[NOTICE] /***/**pture.PNG dstMeta: type=R mode=0755 uid=65534 gid=65534 size=21825 atime=1579610388/259577000 mtime=1579610207/773981000 extAttrsHash=4004291957
[NOTICE] dstHash: f1bcb3297909d11cd1b45b4cda37ff9ee367aec43c1f698d2427966041919f82

左滑查看更多

解决方案:在实验中,我们发现存在极少数数据校验一致的图片文件的元数据属性校验异常,表现为 extAttrsHash 不一致。为探究原因,我们以测试卷中 test.png 文件为例,挂载源端、目的端卷至 Windows 服务器的 X, Y 盘,通过 PowerShell 中如下命令查看其元数据内容:

Get-acl ‘X:\**\test.png' | format-list

左滑查看更多

bb56ac4087a36019b30e632c049f356f.png

通过比较,我们可以发现元数据的校验异常原因为 SDDL 语句差异。SDDL 语言又名安全描述定义语言,是用于描述 Windows 域文件访问权限、审计权限及相关权限继承的特定语言。

在此例中,SDDL 语言内容差异主要体现在描述符 ARAI 与 AI 上。经查阅,AR, AI 是继承权限设置描述语言,其释义如附录[6]

c326d24f1190ebae24f675a2e252f4a9.jpeg

在 PowerShell 环境中,使用 ConvertFrom-SddlString 命令解析源端和目的端的 SDDL[7],结果如下:

# Source: 
DiscretionaryAcl : {Everyone: AccessAllowed Inherited (ChangePermissions, CreateLink, CreateSubKey, Delete, DeleteSubdirectoriesAndFiles, EnumerateSubKeys, ExecuteKey, FullControl,
FullControl, FullControl, FullControl, FullControl, GenericAll, GenericExecute, GenericRead, GenericWrite, Modify, Notify, QueryValues, Read, ReadAndExecute,
ReadAttributes, ReadPermissions, SetValue, Synchronize, TakeOwnership, Write, WriteAttributes, WriteKey)}

# Destiantin: 
DiscretionaryAcl : {Everyone: AccessAllowed Inherited (ChangePermissions, CreateLink, CreateSubKey, Delete, DeleteSubdirectoriesAndFiles, EnumerateSubKeys, ExecuteKey, FullControl,
FullControl, FullControl, FullControl, FullControl, GenericAll, GenericExecute, GenericRead, GenericWrite, Modify, Notify, QueryValues, Read, ReadAndExecute,
ReadAttributes, ReadPermissions, SetValue, Synchronize, TakeOwnership, Write, WriteAttributes, WriteKey)}

左滑查看更多

通过解析我们可以看出源端和目的端的权限是一致的,因此这个 [NOTICE] 类型的异常可以忽略。

同步异常

[ERROR] Failed to open source file /*** /FTP***_**38: No such file or directory

左滑查看更多

解决方案:这是因为文件在同步过程中被应用程序修改或删除,可以忽略。如果要求源和目的端强一致,则需要在业务停写的情况下,重新进行增量同步。

常见问题总结

如果 DataSync 执行失败,请从以下几个方面去排错:

  • 数据校验码是否一致(如果一致,证明数据同步没有问题)

  • 属性校验码是否一致(如果不一致,证明属性存在差异)

  • CloudWatch 报错是 info 或者 notice 级别还是 error 级别 (一般来说不是 error 级别的日志都可以忽略)

  • 是否拷贝了不应该拷贝的 Windows 缓存信息 (参照上文报错处理,可以使用 Filter 功能去掉不需要同步的文件)

  • 文件的 DACL 和 SACL 对业务的影响程度

参考文档

[1] Amazon DataSync 网络配置:

https://docs.aws.amazon.com/datasync/latest/userguide/datasync-network.html

[2] Amazon FSx for NetApp 创建流程:

https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/getting-started.html

[3] Amazon DataSync Agent配置:

https://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/Agent-requirements.html

[4] Amazon DataSync 使用成本:

https://aws.amazon.com/datasync/pricing/

[5] Windows 特殊文件类型概述:

https://docs.microsoft.com/en-us/azure/storage/file-sync/file-sync-planning

[6] Windows 文件 SDDL 属性概述:

https://docs.microsoft.com/en-us/windows/win32/secauthz/security-descriptor-string-format

[7] Windows 文件 SDDL 解析:

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertfrom-sddlstring

总结

DataSync 在本次数据迁移实测场景中的表现非常优秀,单台 Agent 就可以把1G专线带宽跑满,尤其是在海量小文件的场景里,性能表现非常优异。DataSync 通过 CloudWatch 监控和日志的记录,对于迁移过程分析带来了很大的便利,方便对任务进度和细节进行把控。

总之,我们认为在 NAS 迁移的场景中,DataSync 作为亚马逊云科技的原生服务,可以为客户带来很大的成本和速度的优势,成为迁移不可或缺的利器。

本篇作者

86380faa204159e2a28d6081c208422d.jpeg

朱俊杰

亚马逊云科技专业服务团队架构顾问。专注于企业整体云上架构设计、迁移,最佳实践以及落地实施。

c5b0327beee3a6c8bf306cc5608545cd.jpeg

王嘉伟

亚马逊云科技专业服务团队云基础架构顾问。有多年的公有云服务运维经验,专注于企业上云基础架构设计、迁移方案设计以及落地实施。

3b7ad8f8896916744979555a84fd833f.jpeg

周闻

亚马逊云科技专业服务团队数据库顾问。专注于企业云上数据库及相关基础设施的架构设计、云上数据库迁移方案设计、最佳实践以及落地实施。

0d25f66fa33e2db010160264f29858aa.jpeg

点击上方【立即报名】

直通大咖云集的亚马逊云科技中国峰会!

17d11b53f11210ce31db6e431b8a25a5.gif

c514ccf366da431e23f5babf8f09f1bc.gif

听说,点完下面4个按钮

就不会碰到bug了!

bedc3273eda158ff854656aac803c221.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值