我们在用KVM虚拟机的时候经常会需要备份VM的image文件,把这些文件CP到其它服务器上。这些文件一般都是用qemu-img命令生成的稀疏文件,看上去有几十G上百G,但实际使用的磁盘空间,可能也就几百M,或几个G。要备份这样的文件,如果你直接SCP或rsync的话,在备份服务器会生成很大的文件,十分浪费空间。
1、决上面的问题,可以使用rsync的 -S (–sparse)参数来解决。使用这个参数,可以让rsync在同步时,让目标服务器上也生成对应的稀疏文件,这样可以大大节约服务器上的空间。
2、我都使用rsync+ssh的方式来同步数据,但在同步稀疏文件时,还是碰到点问题。rsync在做同步之前会有一个比较长的计算时间,些时ssh会断开连接,会使同步失败。解决办法是在同步时增加 -o “ServerAliveInterval 60”参数,让client端定期发个keepalive包给server端。
3、最终的同步代码如下:
rsync -avS -e 'ssh -o "ServerAliveInterval 60"' vir_w23_x86_17_c.img kvm03:/opt/images/vir_w23_x86_17_c.img