本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本指南旨在指导如何将 2020 年 05 月 20 日前创建的极速型 NAS 实例(v1 版),通过 rsync 工具安全迁移至新实例,并完成业务切换。
迁移流程概览
整个迁移过程分为四个主要阶段,请严格按照顺序执行:
- 准备阶段:识别旧实例,创建并配置新实例。 
- 数据迁移:使用 rsync 工具同步数据。 
- 业务切换:将应用程序切换到新的文件系统实例。 
- 资源清理:在确认业务稳定后,安全地释放旧的文件系统和相关资源。 
第一阶段:准备与规划
您需要迁移的是文件系统版本为1的极速型NAS实例。
步骤 1.1:识别待迁移的旧实例
使用NAS控制台
- 登录 文件存储NAS控制台。 
- 在左侧导航栏,选择文件系统 > 文件系统列表。 
- 设置筛选条件为极速型。 
- 单击极速型NAS名称进入文件系统详情页。 
- 在基础信息页签下,查看版本号字段:  - 如果版本号为1,即为本次需迁移的文件系统; 
- 记录其文件系统ID和挂载点地址,便于后续操作。 
 
使用API
- 登录阿里云OpenAPI门户,调用DescribeFileSystems接口。 
- 设置请求参数: - 地域:选择 NAS 实例所在的地域。 
- FileSystemType: 填写 extreme,表示查询极速型。
 
- 在返回结果中,筛选出所有 Version 字段值为 "1" 的实例,并记录其 - FileSystemId。- JSON 返回结果示例: - { "FileSystems": { "FileSystem": [ { "Version": "1", // <-- 确认此字段值为 "1" "FileSystemId": "31a****-****", // <-- 记录此字段 // ... 其他字段 } ] } }
- 根据记录的 - FileSystemId,前往文件存储NAS控制台,查找并记录其挂载点地址。
步骤 1.2:规划并创建新文件系统
为每一个待迁移的旧实例,创建一个新的极速型 NAS 文件系统作为迁移目标。
在规划前,建议先尝试在目标可用区创建一个测试实例,以确认资源库存充足。
- 在 文件存储NAS控制台,单击创建文件系统。 
- 在弹出的面板中,选择创建极速型NAS。 
- 在创建页面,参考下表进行关键配置: - 参数 - 配置指导 (用于本次迁移) - 说明 - 地域 - 必须选择与旧实例相同的地域。 - 跨地域无法直接通过 VPC 访问,会极大增加迁移复杂度和成本。 - 可用区 - 建议选择与旧实例相同的可用区 - 这是确保迁移 ECS 能同时挂载新旧两个实例、获得最佳性能的关键。 - 存储规格 - 根据您的业务需求选择标准型或高级型。 - 任一可用区仅支持一种类型。建议选择高级型以获得更优性能。 - 协议类型 - NFS (自动选择,无需修改) - 极速型 NAS 仅支持 NFS 协议。 - 极速型配置容量 - 建议设置为不小于旧实例的存储容量。 - 您可以根据业务未来的增长预期,适当增加容量。 - 加密类型 - 保持默认的不加密,或根据您的安全合规要求选择。 - 如果旧实例未加密,建议新实例也保持不加密,以避免引入不必要的复杂性。 
- 完成以上配置后,点击 立即购买,完成创建。 
步骤 1.3:为新文件系统创建挂载点
- 在 文件存储 NAS 控制台的文件系统列表中,找到并单击您刚刚创建的新文件系统的 ID。 
- 进入文件系统详情页,在左侧导航栏选择挂载使用 > 添加挂载点。 - 参数 - 配置指导 (用于本次迁移) - 说明 - VPC 网络 - 必须选择与旧实例挂载点相同的 VPC 网络。 - 这是确保迁移 ECS 能够同时访问新旧两个文件系统的前提条件。 - 交换机 - 选择上述 VPC 网络下的任意一个交换机即可。 - 建议选择 IP 资源充足的交换机。 - 权限组 - 选择 VPC 默认权限组。 - 该默认规则允许同一 VPC 内的所有 IP 访问,最适合迁移场景。 - 开启 IPv6 - 保持关闭状态,除非您的业务有特定要求。 - 避免引入不必要的复杂性。 
- 创建成功后,复制并记录新的挂载点地址。 
第二阶段:使用rsync迁移数据
使用rsync迁移数据会占用旧实例的读带宽,可能影响旧实例的既有业务,强烈建议在业务低峰期执行。另外,若数据量较大,全量迁移数据的耗时可能较长,可以按照子目录粒度分批次迁移。
本阶段将使用一台 ECS 作为中转节点,通过 rsync 工具将数据从旧实例同步到新实例。建议新购一台按量付费的ECS用于迁移,任务完成后释放,以避免与现有业务争抢资源。
步骤 2.1:准备并挂载迁移 ECS
- 登录ECS 管理控制台,在与NAS实例相同的地域、可用区和 VPC 下,创建一台按量付费的临时 ECS。 
- 登录该ECS,创建用于挂载新旧文件系统的本地目录: - sudo mkdir -p /mnt/nas_old sudo mkdir -p /mnt/nas_new
- 分别挂载旧实例和新实例。您可以进入目标文件系统的详情页,选择挂载使用,在挂载点列表中复制完整的挂载点地址。 - # 挂载旧实例 (请将 <旧的挂载点地址> 替换为您的实际地址) sudo mount -t nfs -o vers=3,noacl,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport <旧的挂载点地址>:/share /mnt/nas_old # 挂载新实例 (请将 <新的挂载点地址> 替换为您的实际地址) sudo mount -t nfs -o vers=3,noacl,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport <新的挂载点地址>:/share /mnt/nas_new
- 执行 - df -h命令,确认两个文件系统都已成功挂载。
步骤 2.2:安装工具并执行数据同步
- 安装 rsync 和 tmux 工具: - sudo yum install -y rsync tmux- rsync 是核心的数据同步工具。 
- tmux 是一个终端复用工具,强烈建议在 tmux 中执行耗时长的 rsync 命令,以防止因 SSH 连接意外断开而导致迁移任务中断。 
 
- 启动 tmux 会话: - tmux
- 执行存量数据同步。此过程耗时较长,请耐心等待。 - # 注意源路径 /mnt/nas_old/ 后面的斜杠 "/" 必须要有 sudo rsync -avP /mnt/nas_old/ /mnt/nas_new/- 如果您的数据包含海量小文件或数据量巨大,可以参考并行rsync命令来大幅提升同步效率。 
- 执行最终增量同步。 - 在业务低峰期,停止所有读写旧 NAS 实例的应用程序。 
- 在迁移 ECS 上,执行增量同步命令。 警告- --delete选项代表从目标文件系统中删除已在源文件系统中被删除的数据,请谨慎使用,避免将目标文件系统中的数据意外删除。 - # --delete 参数会确保目标目录与源目录完全一致 sudo rsync -avP --delete /mnt/nas_old/ /mnt/nas_new/
 
- 执行数据一致性校验。 - 在业务切换前,必须确认新旧数据完全一致。 - echo "正在校验数据一致性,此过程不会修改任何数据..." sudo rsync -rvn --delete /mnt/nas_old/ /mnt/nas_new/- 预期结果:如果数据完全一致,该命令的输出除了头尾的统计信息外,中间不应列出任何文件名。如果出现任何文件名,说明存在差异,必须在切换前回滚或重新同步。 
第三阶段:业务切换与验证
在数据完全同步后,请在所有相关的业务服务器上重复以下操作。
步骤 3.1:手动切换挂载点
- 停止业务应用(如 Nginx、Tomcat 等)。 
- 卸载旧的挂载点。此处以业务服务器上的本地挂载目录 - /var/www/html/uploads为例:- sudo umount /var/www/html/uploads
- 挂载新的文件系统到原来相同的本地目录: - sudo mount -t nfs -o vers=3,noacl,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport <新的挂载点地址>:/share /var/www/html/uploads
- 执行 - df -h,确认新的文件系统已成功挂载。
- 重启应用,并进行快速功能测试(如文件上传下载)。 
步骤 3.2:配置 fstab 自动挂载
在手动切换成功后,配置fstab实现持久化自动挂载。
- 执行以下命令,打开 - rpcbind.socket配置文件:- sudo vi /etc/systemd/system/sockets.target.wants/rpcbind.socket
- 注释IPv6相关的rpcbind参数(如下图所示),否则NFS的rpcbind服务自动启动会失败。  
- 如果您是在CentOS 6.x系统中配置自动挂载,还需额外执行以下操作: - 执行 - chkconfig netfs on命令,确保netfs服务开机自启动。
- 编辑/etc/netconfig配置文件,注释掉inet6相关的内容(如下图所示)。  
- 保存并退出文件。 
 
- 备份现有fstab配置。 - sudo cp /etc/fstab /etc/fstab.bak.$(date +%Y%m%d)
- 编辑 - /etc/fstab文件,将旧的挂载点信息注释掉,并添加新行:- <file-system-id.region.extreme.nas.aliyuncs.com>:/share </mnt> nfs vers=3,nolock,noacl,proto=tcp,noresvport,_netdev 0 0- <file-system-id.region.nas.aliyuncs.com>:替换为实际的NAS查看挂载点地址。(例如: - 00a*****-****.cn-hangzhou.extreme.nas.aliyuncs.com。)
- </mnt>:替换为本地挂载路径。(例如: - /mnt)。
 
- 验证系统能否根据fstab的新配置进行挂载。 - sudo mount -a
- 执行 - df -h命令,检查是否成功挂载。
步骤 3.3:启动并验证业务
- 重新启动您的应用程序。 
- 进行全面的功能回归测试,确保数据读写完全正常。 
- 持续观察业务运行一段时间(例如1小时),确认无任何异常。 
第四阶段:资源清理
请在业务切换完成并稳定运行至少一周后,再执行本阶段操作。过早删除旧资源可能导致在出现意外情况时数据无法恢复。
步骤 4.1:删除旧的挂载点
- 在 文件存储 NAS 控制台,找到旧的文件系统实例,进入其挂载使用页面。 
- 找到目标挂载点,在操作列点击  > 删除,并确认。 > 删除,并确认。
步骤 4.2:删除旧的文件系统实例
此操作不可逆,将永久删除该文件系统及其中的所有数据。请在删除前再次确认业务已无需此实例。
- 在确认所有挂载点都已删除后,返回文件系统列表页面。 
- 找到目标旧实例,在操作列点击  > 删除。 > 删除。
步骤 4.3:释放用于迁移的ECS
- 登录 ECS 管理控制台,找到用于迁移的临时 ECS 实例。 
- 在操作列,选择 更多 > 实例状态 > 停止。 
- 等待实例状态变为已停止后,再次在操作列,选择  > 实例状态 > 释放,按指引完成释放。 > 实例状态 > 释放,按指引完成释放。
了解更多
针对Kubernetes环境的说明
如果您的业务通过 K8s 挂载 NAS,切换步骤如下:
- 修改现有的动态卷或静态卷YAML配置文件,将旧的挂载点替换为新挂载点。 
- 用修改后的配置文件生成新pod,确认其挂载新的文件系统成功并可正常读写。 
- 回收使用旧的文件系统的所有pod。 
紧急回滚计划
如果在第三阶段验证时发现任何问题,请立即执行回滚:
- 停止业务应用。 
- 在业务服务器上卸载新的挂载点。 
- 恢复旧的 - /etc/fstab配置。
- 重新挂载旧的文件系统 ( - sudo mount -a) 并通过- df -h确认。
- 重启业务应用,确认恢复正常。