Dav*_*cks 24 linux backup rsync virtual-machines lvm
我有许多 Xen 虚拟机在许多 Linux 服务器上运行。这些 VM 将其磁盘映像存储在 Linux LVM 卷中,设备名称类似于 /dev/xenVG/SERVER001OS 等。我想对这些磁盘映像进行定期备份,以便在需要时恢复 VM(LVM 设备已经在两台物理机之间使用 DRBD 进行了镜像,我只是在这里特别偏执)。
我该怎么做?显然,第一步是对 LVM 设备进行快照,但如何以最有效的方式将数据传输到备份服务器?我可以简单地复制整个设备,大致如下:
dd if=/dev/xenVG/SERVER001OS | ssh administrator@backupserver "dd of=/mnt/largeDisk/SERVER001OS.img"
Run Code Online (Sandbox Code Playgroud)
...但这会占用大量带宽。是否有类似 rsync 的工具用于在远程服务器之间同步整个磁盘块的内容?就像是:
rsync /dev/xenVG/SERVER001OS backupServer:/mnt/largeDisk/SERVER001OS.img
Run Code Online (Sandbox Code Playgroud)
如果我正确理解了 rsync 的手册页,上面的命令实际上不会起作用(会吗?),但它显示了我的目标。我知道 --devices rsync 选项是复制设备本身,而不是这些设备的内容。在与远程服务器同步之前制作 VM 映像的本地副本不是一种选择,因为没有磁盘空间。
是否有一个方便的实用程序可以在块设备和远程服务器上的备份文件之间进行同步?如果需要,我可以写一个,但现有的解决方案会更好。我是否错过了为我执行此操作的 rsync 选项?
小智 18
尽管 RSync 有“写入设备”和“复制设备”补丁,但它们仅适用于小图像(1-2GB)。RSync 将花费很长时间在更大的图像上搜索匹配的块,它几乎没有用 40GB 或更大的设备/文件。
我们使用以下内容来执行每 1MB 校验和的比较,然后如果不匹配则简单地复制内容。我们使用它通过公共互联网将美国虚拟主机上的服务器备份到英国的备份系统。非常少的 CPU 活动和快照性能仅在数小时后才会受到影响:
创建快照:
lvcreate -i 2 -L 25G /dev/vg_kvm/company-exchange -n company-exchange-snap1
export dev1='/dev/mapper/vg_kvm-company--exchange--snap1';
export dev2='/dev/mapper/vg_kvm-company--exchange';
export remote='root@backup.company.co.za';
Run Code Online (Sandbox Code Playgroud)
初始播种:
dd if=$dev1 bs=100M | gzip -c -9 | ssh -i /root/.ssh/rsync_rsa $remote "gzip -dc | dd of=$dev2"
Run Code Online (Sandbox Code Playgroud)
每晚增量备份(仅发送更改的块):
ssh -i /root/.ssh/rsync_rsa $remote "
perl -'MDigest::MD5 md5' -ne 'BEGIN{\$/=\1024};print md5(\$_)' $dev2 | lzop -c" |
lzop -dc | perl -'MDigest::MD5 md5' -ne 'BEGIN{$/=\1024};$b=md5($_);
read STDIN,$a,16;if ($a eq $b) {print "s"} else {print "c" . $_}' $dev1 | lzop -c |
ssh -i /root/.ssh/rsync_rsa $remote "lzop -dc |
perl -ne 'BEGIN{\$/=\1} if (\$_ eq\"s\") {\$s++} else {if (\$s) {
seek STDOUT,\$s*1024,1; \$s=0}; read ARGV,\$buf,1024; print \$buf}' 1<> $dev2"
Run Code Online (Sandbox Code Playgroud)
删除快照:
lvremove -f company-exchange-snap1
Run Code Online (Sandbox Code Playgroud)
Bal*_*sár 12
标准 rsync 缺少此功能,但在 rsync-patches tarball (copy-devices.diff) 中有一个补丁可以从http://rsync.samba.org/ftp/rsync/下载 应用和重新编译后,您可以使用 --copy-devices 选项 rsync 设备。
看看Zumastor Linux Storage Project,它通过ddsnap工具使用二进制“rsync”实现“快照”备份。
从手册页:
ddsnap 提供块设备复制,因为块级快照工具能够有效地保存多个并发快照。ddsnap 可以生成两个快照之间不同的快照块列表,然后通过网络发送该差异。在下游服务器上,将更新的数据写入快照块设备。
| 归档时间: |
|
| 查看次数: |
37040 次 |
| 最近记录: |