我有一个 Xen 服务器 dom0 安装了许多来宾,并且正在努力寻找一种从 dom0 端管理备份的简单方法。
- 来宾脚本:当然,我可以在每个来宾上运行备份脚本,但从管理的角度来看,如果可能的话,我希望避免这种情况。理想情况下,我还希望能够自己备份磁盘映像,连同配置一起,如果需要,可以直接将其恢复到另一个 Xen dom0,也许还有某些目录的文件备份。
- /var/lib/libvirt/images 的 rsync:我已尝试在域关闭的情况下对 /var/lib/libvirt/images/ 中的图像文件进行简单的 rsync,但有一个问题 - 磁盘图像尝试复制完整可用大小(它们可以增长到的大小)。所以这意味着每个图像都试图以 250Gb 复制,而不是实际的 2.5Gb 左右(例如 ls -l 显示的大小而不是 du 显示的 [used] 大小)。
网上有许多解决方案和脚本,但这些似乎都相当陈旧,并且似乎基于作为 LVM 设备的磁盘,因此可以在 /dev/virtual/NAME-disk 中找到它们,然后可以复制它们,然后挂载,然后备份使用 rsync。这似乎不是我的系统的配置方式。
如果可能的话,我看到了一些潜在的解决方案(正如我所提到的,理想情况下,我想备份一个映像文件,并对 VM 上的某些目录进行文件级备份,因此可能是这些的组合)。
- 缩小图像文件:我可以复制图像文件,然后将其缩小到实际使用的空间吗?然后我可以 rsync 并删除临时文件。
- 以实际大小复制:以某种方式以实际大小复制图像文件,然后如果需要在另一个 dom0 上重新创建大小属性?
- 挂载映像文件:以某种方式直接挂载映像文件?我看到有一些方法可以将其转换为 LVM 映像,但不确定这是否是唯一的方法(我很高兴使用映像文件来进行域来宾的正常操作)。
在此先感谢并希望它足够清楚。
对我来说,备份磁盘映像在这里更有意义。从备份脚本的角度来看,VDI 是基于文件还是基于 LVM 并不重要,您应该能够以相同的方式备份它们,只需更改路径即可。但是,迁移到 LVM 可能会给您带来巨大的性能提升,尤其是在您使用原始(不是基于 VHD)VDI 的情况下。
为避免每次都传输整个稀疏文件,请进一步修改脚本以通过打包程序管道数据(gzip是一个很好的解决方案)。这样,即使读取完整大小的 VDI 文件也会给你一个紧凑的输出。这可能很难通过rsync实现,因此请使用其他方式将数据传输到备份位置(即带有 shell 重定向的ssh )。
为了减少停机时间,如果是 LVM SR(不确定图像文件),您还可以增强脚本,以便在备份之前拍摄 VM 的快照。然后它可以从快照存储中备份,因此它将提供一致的数据,而不会从一开始就阻止 VM。拍摄快照通常只需几秒钟。快照 VDI 也可以安装在 dom0 上以备份单个文件,唯一的问题是使用了 VHD 格式(同样,使用 LVM 和原始 VDI)。