理想情况下,我想创建一个 VPS 的 qcow2 映像,来自里面该 VPS 的运行实例。我不确定这是否可行,但我认为不可能。
问题是,我的 VPS 提供商允许我创建备份映像,但没有办法导出该映像(它只能用于将 VPS 恢复到以前的状态,或创建新的 VPS 实例)。如果相关的话,他们正在运行 VMware。他们确实有一个“备份解决方案”,其中包括安装(并每月支付)Acronis,但我不确定它是如何工作的,也不知道它实际上能给我带来什么。
我是否有其他“热”备份选项,还是只能尝试将整个(Ubuntu 22.04)服务器(减去伪/虚拟文件?) rsync 到我自己的本地存储,并希望获得最佳效果?
答案1
从技术上来说这是可行的,但最简单的方法(从 /dev/sda 读取)不会是一个正确的“时间冻结”转储,而是一个可能需要修复的不一致的文件系统。
如果您的下一个服务器实例具有 LVM,这将有所帮助,它支持原子快照,可以在服务器继续运行时安全地传输(然后销毁)。使用 LVM 快照,您将能够对 /dev/mapper/something 进行映像,而不是对 /dev/sda 进行映像,是时间冻结。
更好的方法是使用内置有文件级快照的文件系统(例如 Btrfs 或 ZFS,或者在不久的将来可能是 XFS),因为 Btrfs 和 ZFS 都已经具有基于快照的备份工具,例如zfs send
。
但如果快照不可用——只需 rsync 整个系统,然后立即 rsync 它再次。第二次运行将会非常少,并捕捉第一次运行期间发生的所有变化;您可以循环几次,直到不再发生变化。
此外,即使没有快照,某些文件系统也可以冻结通过运行fsfreeze
– 然后所有写入调用都会暂停,因此您可以半安全地 rsync 所有文件,因为在运行之前它们不会更改fsfreeze -u
。(请小心,因为这也可能导致新的登录尝试如果 SSH 服务尝试写入日志文件,则会挂起。
请记住,许多数据库服务需要特定的工具来制作“热”备份(例如,LMDB 可能需要 mdb_copy),但这同样适用于 VPS 级快照、rsync 或 LVM,因此这并不是什么新鲜事。
注意:无需手动排除 /dev、/proc 等,只需考虑它们全部都是单独的文件系统并且会通过使用 而被自动排除--one-file-system
。