主机运行的是 CentOS 5.3,并使用 LVM 创建逻辑卷 (LV) 并允许对这些 LV 进行实时快照。我的想法是将 Xen 低权限域 (domU) 的所有映像文件存储在单个 LV 中,并定期对该 LV 进行快照,并将磁盘映像从快照中复制出来,以便对这些系统进行实时备份。这可行吗?还有更好的方法吗?
谢谢!
答案1
真正的“实时”备份并不完全可行。
理论上,使用 LVM 时,您能获得的最好结果是几秒钟的“暂停”时间,这应该没问题:domU 需要同步其磁盘、暂停/挂起、备份数据并恢复。
然而,这种方法(而不是仅仅关闭机器)有几个“陷阱”需要解决。
主要问题是 domU 文件系统的一致性 - 请查看想法-xen-文件系统-配置-关于备份以获得更完整的解释。
答案2
可能最好的方法是对每个 domU 进行文件级备份,而不是乱用 LV 快照。或者,对快照进行文件级备份。
但是如果你希望对你的 domU 进行块级备份——将所有 domU 磁盘作为文件存储在一个 LV 上是可行的,也是我考虑过的做法,但我决定不这样做,而是按照你的服务器已经配置的方式——每个 LV 一个 domU,原因有二:
- 创建新的 domU 映像文件需要很长时间,除非您使用稀疏文件。使用 LVM 创建和删除 LV 是即时的。使用稀疏文件可能会耗尽磁盘空间。
- 对所有 domU 进行一次快照会占用大量快照空间。在等待备份完成时,对正在运行的 domU 进行的所有更改都会占用快照空间。我所做的只是一次对一个域进行快照,然后执行备份。
答案3
我已经编写了一个脚本来执行与你解释的不同的事情
1)“xm save domain domain.mem.backup”(带暂停) 2)LVM 快照 3)“xm restore domain domain.mem.backup” 4)将 LVM 快照“dd”到 domain.dd.backup 5)删除 LVM 快照
要恢复:1)为域创建一个 LVM LV 2)从 domain.dd.backup “dd”到此 LV 3)“xm restore domain domain.dd.mem”
域将恢复到备份时内存的状态。然后,如果有一些数据未写入,它将在恢复后立即写入……就像从未停止过一样。
答案4
这取决于您想要的备份质量和您可以承受的停机时间。我想说,如果您想要完全一致的备份,您必须关闭 domU(如果是 Win 或 Linux domU,其他操作系统可能会有所不同)。
如果您只想备份一些数据,可以尝试一下“xm pause”命令。只需运行“xm pause domain”,制作快照,然后继续“xm unpause domain”。但您有数据丢失的风险,包括文件系统层的数据以及应用程序(例如 samba)未刷新缓冲区中的数据。
由于 dom0 存储层与 domU 内核和应用程序之间没有通信系统(用于 FS 和缓冲区同步),因此关闭 domU 是实现一致备份的唯一方法。