将 LVM 快照用于 KVM 虚拟机克隆

phr*_*red 5 virtualization linux lvm kvm-virtualization

所以,我现在有一个非常棒的 KVM 设置正在运行,主机和来宾域上的 CentOS5.5,管理所有配置的 libvirt,等等。来宾域文件系统存储在硬件 RAID5 卷顶部的 LVM 中,所以我具有备份和低级数据冗余的灵活性。

我今天测试了 virt-clone,它运行得非常好,除了将 24G 数据从挂起域的 LVM 磁盘复制到新虚拟机的新 LVM 卷需要大约 30 分钟。

我的问题是:我不能只使用 LVM 快照来创建新 VM 的根磁盘吗?例如: lvcreate -s guest1_root -n guest2_root -L 8G raid_vg

现在,我对 LVM 快照的理解是,快照存储对原始块所做更改的逆增量,因此快照占用的实际空间很少,即使在写入原始卷后也可以读取原始块。LVM2 添加了读写快照,开启了这种有趣的可能性。

事实上,LVM HOWTO甚至建议将此功能与 Xen 结合使用:

这开辟了许多新的可能性,这是 LVM1 的只读快照无法实现的。(...) 它对于创建用于 Xen 的卷也很有用。您可以创建磁盘映像,然后对其进行快照并修改特定 domU 实例的快照。然后,您可以创建原始卷的另一个快照,并针对不同的 domU 实例修改该快照。由于快照使用的唯一存储是在源或快照上更改的块,因此大部分卷由 domU 共享。

这似乎是一个非常强大的工具,我想知道是否有人在他们的生产虚拟化环境中尝试过它,能想到任何采用这种方法的供应商(Citrix、VMWare),或者能想到这个想法的任何严重问题。我可以想到以下潜在问题:

  • 如果“原始”来宾在快照时运行,则潜在的文件系统问题。
  • 作为“逆增量”和“写入块”日志附加到的主机域 LVM 性能。它可能非常快,但我不知道,这似乎是一个奇怪的想法,因此需要进行测试和基准测试。
  • 一篮子里的更多鸡蛋:如果“原始”LVM 卷被损坏,那么快照卷也会被冲洗掉。当然,RAID5 可以减轻磁盘损坏,但值得注意的是。
  • 你能快照快照吗?我假设是这样。

作为可能比我拥有更多虚拟化经验的人,有没有什么让想要从这样的设置中尖叫的?

wzz*_*zrd 4

这样做是完全没问题的。您不希望的是同时使用快照的父级(原始快照、源快照或任何您想称呼的名称),因为这会导致 IO 倍增(Hubert 对此是正确的) ,只要不一直使用源卷就很容易防止)。

如果您在 LVM 上安装了一个主操作系统,并且创建了四次快照,则不会有太大的 IO 损失,因为您只写入各个快照卷。当然,它不是免费的,但其他文件系统或虚拟磁盘上的其他形式的快照也不是免费的。总有地方需要付出代价。

休伯特说得对的另一件事是,你必须考虑快照的大小。您需要确保快照卷能够继续写入。完整的快照卷会严重破坏内容。防止这种情况发生的一种故障安全方法是使快照卷的大小与源卷相同(或更大)。不过,您会失去通过这种方式使用更少磁盘空间的好处。

您知道 qemu 映像也具有快照功能吗?