应用场景
本文适用于在不同地域(资源池)不同VPC的海量文件系统之间的数据迁移。例如当您需要将业务从A省迁移至B省的资源池,以提高访问效率。
前提条件
- 已拥有两个NFS协议的海量文件系统。两个资源池的海量文件系统分别作为源文件系统和目标文件系统,源文件系统指含业务数据的源文件系统,目标文件系统指即将投入使用的新文件系统。
- 准备一台与源文件系统在同一VPC网络下的弹性云主机和一台与目标文件系统在同一VPC网络下的弹性云主机,并为这两台弹性云主机配置弹性IP,以实现基于公网的数据迁移。
准备工作
- 在两个资源池分别创建一个海量文件系统和一台弹性云主机,具体操作请参考创建海量文件系统、创建弹性云主机。
- 将文件系统分别挂载海量文件系统至弹性云主机,具体操作请参考使用弹性云主机挂载海量文件系统。
操作步骤
不同资源池的两个海量文件系统之间的数据迁移可以分为几个关键步骤: 挂载文件系统 > 安装迁移工具 >迁移存量数据> 迁移增量数据源> 迁移结果检查 。具体操作步骤如下:
-
将两个资源池的海量文件系统分别挂载到对应云主机。
将海量文件系统挂载至云主机中,这里设定资源池1为源文件系统,将其挂载到同一资源池弹性云主机的“/mnt/localpath/”目录上,资源池2为目标文件系统,同样将其挂载到同一资源池的弹性云主机的 “/mnt/localpath/”目录上。 -
安装迁移工具。
执行以下命令安装rsync命令工具:yum install -y rsync
-
迁移存量数据。
执行以下命令,将资源池1海量文件系统中的数据迁移到资源池2中:
rsync -avP /mnt/localpath/ root@IP:/mnt/localpath/
我们还可以利用rsync并发拷贝迁移数据,由于并发操作,每个ssh连接操作均要求输入密码,因此在并发迁移数据过程中会要求多次输入密码,这里我们配置无需密码通过ssh执行rsync来迁移文件。在资源池1中的弹性云主机中执行 ssh-keygen命令生成密钥,之后使用ssh-copy-id将公钥拷贝至资源池2的弹性云主机,执行以下命令:
ssh-keygenssh-copy-id -i ~/.ssh/id_rsa.pub IP![]()
执行以下命令,实现并发数据迁移:
threads=<线程数量>; src=<源路径/>; dest=<目标路径/>; rsync -av -f"+ */" -f"- *" $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/%)
-
迁移增量数据。
执行以下命令,实现增量数据的迁移:
rsync -avP --delete /mnt/localpath/ root@IP:/mnt/localpath/
-
检查迁移结果。
在完成数据迁移后,执行以下命令:
rsync -rvn /mnt/localpath/ root@IP:/mnt/localpath/
如果源文件系统与目标文件系统数据一致,则应显示上面信息,中间不包含任何文件路径。