创建已安装磁盘的磁盘映像是一个非常糟糕的主意吗?

创建已安装磁盘的磁盘映像是一个非常糟糕的主意吗?

我想备份我的服务器。例如使用 dd:

dd if=/dev/md0 of=/some_network_share

我想知道如果安装 /dev/md0,此映像是否会出现不一致的情况?是否可以将此类 dd 映像转换为 vdi 驱动器并创建在职的虚拟机?例如使用此命令:

VBoxManage convertfromraw ImageFile.dd OutputFile.vdi 

防火墙上禁用网络流量(仅与复制图像的一台远程机器有连接)。

答案1

如果您正在使用 LVM 卷(您可能应该在生产环境中使用),则有一个可以生成精确快照的写入快照功能。

有几种商业产品可以以某种形式实现这一点 - vmware vCenter Converter 可以从实时机器创建虚拟机,Acronis TrueImage 有一个支持实时复制的企业产品的 Linux 版本。

否则,一种可行的黑客方法是反复使用 rsync,直到差异足够小,您可以重新挂载只读文件系统,最后一次 rsync,然后重新挂载 rw。我从未在原始文件系统映像上尝试过这种方法,但它在目录结构上效果很好。

答案2

这取决于方法。对正在运行的磁盘进行映像的问题是无法确保一致性 - 文件会在您处理它们时发生变化。

有几种方法可以避免这种情况 - 一种是使用某种方法对特定时间段内的文件进行快照并进行备份 - Windows 有 VSS,但 linux/ext 没有与之等效的方法。

另一种方法是将图像从非实时系统中删除

所以,除非它是一个可以快照的操作系统或文件系统,否则这不是一个好的方法。

答案3

是的。

不要这样做。

备份将无法使用。即使转换成功,您也很难验证内容。

答案4

我确实这样做过,而且它有效。从各方面来看,它也相当可靠。这是个好主意吗?不,可能不是。您可能会丢失数据或最终导致文件损坏。对于 ext3 分区,在启动时,您会收到一条警告,提示分区“未完全卸载,强制检查”。然后它将运行“fsck”。fsck 可能需要很长时间才能将文件系统恢复到干净状态,但它会到达那里。ext4 文件系统会更快地完成此操作。

想想看,对实时文件系统执行 'dd' 相当于在服务器运行时拔掉电源插头。如果你拔掉服务器的电源插头,你会认为文件系统会被破坏,机器将无法再次启动吗?当然不会。除非你一直在更新启动内核或 initrd 之类的东西。我相信还有其他极端情况。但这仍然不是关闭系统的理想方式。不要依赖它。

此外,在这种情况下运行“sync”可能毫无用处(我说“可能毫无用处”是因为我不能 100% 确定我的事实,而且我也不想核实事实)。在“dd”步骤之前运行“sync”不会使图像更加一致,因为“dd”不会简单地绕过内核并直接与硬件对话。“dd”仍然要经过 Linux 内核。如果“dd”从脏块(尚未同步到驱动器的更新数据)请求数据,它不会忽略这一事实。换句话说,“dd”实际上会复制脏块,即使它们尚未同步到磁盘。请注意,我相信有选项可以要求“dd”执行此操作(绕过内核缓冲区并直接与硬件对话),但这不是默认行为。

相关内容