当服务器中磁盘某一个文件夹中的数据过大时,需要增加一块磁盘,用于存储更多数据,但是当替换磁盘时,不可能长时间停掉服务去拷贝数据,此时就需要使用到 rsync 命令,先完整的拷贝一遍数据后,再停止服务,增量拷贝,软链接替换后恢复服务。
操作示例如下:
此处我需要将目录 /home/ftp/ 下面的所有文件全部迁移至新的磁盘中,并且不改变文件的权限信息。
原始路径:/home/ftp/
目标路径:/mnt/wd_8t_disk/ftp_link/
此处我的目标路径已经挂载了新的磁盘,并且挂载完成,查询挂载信息如下:
[root@test-002 home]# df -hT | grep /mnt/wd_8t_disk
/dev/sda1 ext4 7.3T 32K 6.9T 1% /mnt/wd_8t_disk
[root@test-002 home]#
并且由于/home/ftp/为服务正在使用的目录,在迁移时不能长期停止服务,需要动态热迁移,仅有5分钟的时间周期用于处理迁移数据。
[root@test-002 home]# du -sh ./ftp/
884G ./ftp/
[root@test-002 home]#
此处可以看到,我的/home/ftp/目录有884GB的数据需要迁移,单块机械磁盘顺序写入100MB/s,大概需要处理2.5小时,由于留给我们的时间只有5分钟的周期,所以需要动态的去同步文件,当两个目录中的文件完全同步后停止掉在使用的服务,且使用软连接切换实际路径。
一:完整同步
此处我先将/home/ftp/目录下的所有数据同步至:/mnt/wd_8t_disk/ftp_link/ 当中
使用同步命令rsync 该命令还可以显示已经同步了多少数据
[root@test-002 ftp_link]# rsync -aHAX --info=progress2,stats /home/ftp/ /mnt/wd_8t_disk/ftp_link/
953,585,965,820 100% 231.08MB/s 1:05:35 (xfr#1821331, to-chk=0/1886178)
sent 953,952,265,821 bytes received 35,144,020 bytes 242,344,064.48 bytes/sec
total size is 953,585,965,820 speedup is 1.00
[root@test-002 ftp_link]#
二:增量更新
此处继续使用rsync命令,将增加修改的数据同步到目标地址中,此处可以多同步几次,直到没有数据变动。
在更新开始前先将对此路径有读写的服务停止掉,再同步数据
root@test-002 ftp_link]# rsync -aHAX --delete --info=progress2,stats /home/ftp/ /mnt/wd_8t_disk/ftp_link/
407,778,311 0% 328.98MB/s 0:00:01 (xfr#6, to-chk=0/1886192)
sent 467,229,740 bytes received 76,721 bytes 19,073,733.10 bytes/sec
total size is 953,993,744,131 speedup is 2,041.47
[root@test-002 ftp_link]#
三:软连接替换
此处首先将原本的目录更名为ftp_bak作为备份数据,然后使用/home/ftp/软连接关联到目录/mnt/wd_8t_disk/ftp_link/
查看功能是否恢复正常,如果恢复正常则删除备份数据即可。
[root@test-002 ftp_link]#
[root@test-002 ftp_link]# mv /home/ftp /home/ftp_bak
[root@test-002 ftp_link]#
[root@test-002 ftp_link]# ln -s /mnt/wd_8t_disk/ftp_link /home/ftp
[root@test-002 ftp_link]#
[root@test-002 ftp_link]# rm -rf /home/ftp_bak
[root@test-002 ftp_link]#
替换完成后使用ll命令查看/home/文件夹,即可看到软连接情况
[root@test-002 ftpuser]# ll /home/
total 12548212
lrwxrwxrwx 1 root root 24 Aug 19 07:42 ftp -> /mnt/wd_8t_disk/ftp_link
drwxr-xr-x 3 root root 21 Nov 11 2024 ftp_bak
drwxr-xr-x 3 root root 17 Nov 11 2024 mydata
[root@test-002 ftpuser]#