我一直在寻找一种方法来对正在运行的 Linux 服务器进行磁盘映像备份。
有几个问题可以回答这个问题,比如如何制作磁盘映像,镜像 Live Linux(Debian)服务器,Linux实时热备份快照和Debian Live 服务器映像。
他们中的大多数人似乎建议dd
,使用 GUI 包装器partclone
,使用专有工具(对我来说不是一个选择)或改为执行基于文件的备份(例如rsync
)。虽然我熟悉这些工具,但由于数据完整性问题,我不确定是否在远程实时服务器上使用前两个工具来创建热映像备份。
所以我想知道
- 可以
dd if=/dev/vda1
在正在运行的服务器上使用导致图像损坏 尝试从服务器恢复时处于无效状态,或其他数据的完整性问题? - 文件系统感知工具是否
partclone.ext4
能够在从实时服务器克隆时解决/避免潜在的文件系统错误,还是它们只是节省备份空间?或者它们甚至可能带来比仅仅使用更多的问题dd
? - 在创建磁盘映像之前是否可以
mount -o remount,ro /
有效地防止潜在的问题?缺点是会导致服务停机。 - 是否有其他解决方案可以创建我可能忽略的正在运行的服务器的备份映像,且不会导致服务停机?
这个问题很笼统,不针对特定类型的服务;解决方案应该适用于邮件服务器、网络服务器、文件服务器、监控、构建服务器等。对于无法使用提供快照功能的其他文件系统的服务器,也应该适用于 ext4。
不幸的是,我不能只测试一次就能确保如果第一次成功了,下次还能成功。
答案1
- 是的。
- 能吗?是的。他们能吗?NFI。
- 是的。
- 有点,这取决于你对“服务停机时间”的定义。Linux 有“冷冻“文件系统,允许文件系统保持一致状态——有点像重新挂载只读,但是没有导致写入失败(它们只是挂起,直到文件系统解冻)。
当然,诀窍在于(通常)您不想让文件系统长时间处于冻结状态,因为任何写入文件系统的进程都将被挂起,直到您再次解冻为止。标准解决方案是使用底层快照机制,例如 LVM 快照(精简或其他),因此备份过程变为:
- 冻结文件系统
- 获取底层块设备的快照
- 解除文件系统冻结(系统现在继续正常运行)
- 采取一致的备份快照
- 删除快照,以阻止写时复制快照的性能下降