LVM2 快照包含什么?

LVM2 快照包含什么?

我读到的所有内容都让我认为 lvm 快照是快照逻辑卷的直接副本,但是当快照 90 GB 逻辑卷需要 10 秒时,这怎么可能呢?如果我在 /var 上有一个 KVM qcow2 磁盘映像,并且 /var 在 /dev/volgroup1/lv_var 处为 90 GB。我执行 lvcreate -L 90G -n var_snapped -s /dev/volgroup1/lv_var ,这是否意味着我可以删除 var 上的 qcow2 映像,然后只需安装 var_snapped 逻辑卷并将上面的一个复制到那里,这样就没问题了?我不明白 1:1 复制如何能这么快发生。

答案1

要回答这个问题,我们需要确定 LVM 的工作原理。这是它的要点;

卷组由多个物理卷(或)组成pvs。它们又被划分为区段。每个区段在物理卷上占用固定大小的空间 - 该大小在创建卷组时指定(或使用默认值)。

创建逻辑卷时,您需要指定其大小。这将分配卷组中需要访问指定磁盘空间量的范围。

现在,您可以开始使用该卷来做某事。当您创建该卷的快照时,您可以指定快照的大小小于您“复制”的卷。这样做是可行的,因为快照卷引用了第一个卷的所有范围,并且仅使用新分配的范围来存储两者之间的差异。您可以使用 -command 来判断快照的利用率lvs

因此,拍摄快照只需很短的时间,因为 LVM 仅创建对第一个卷的范围的引用 - 并且根本不复制任何数据。

这样做的副作用是,如果差异大于分配的范围量 - 快照将无效 - 您将在 dmesg 中看到很多错误消息(对于第一个卷来说是无害的)。

我希望这有帮助。

答案2

快照的目的是行为类似于副本,但实际上并不复制所有内容。只有修改的数据创建快照时会进行复制。最初对快照的读取是通过读取源来满足的。对快照的写入存储在快照空间中,将来对该数据的读取将从那里而不是源进行。对源的写入会导致被覆盖的数据被复制到快照,将来从快照设备读取该数据将使用快照存储中的副本。

所以是的,如果您创建快照,然后从原点删除文件,它仍然会存在于快照中(反之亦然)。

答案3

在 LVM2 中,快照默认为读/写。读/写快照的工作方式类似于只读快照,但具有一个附加功能:如果将数据写入快照,则该块将在异常表中标记为已使用,并且永远不会从原始卷中复制。这开启了许多 LVM1 的只读快照无法实现的新可能性。一个例子是快照卷、安装快照,并尝试更改该卷上文件的实验程序。如果您不喜欢它所做的操作,您可以卸载快照,删除它,并在其位置安装原始文件系统。它对于创建用于 Xen 的卷也很有用。您可以创建磁盘映像,然后对其进行快照并修改特定 domU 实例的快照。然后,您可以创建原始卷的另一个快照,并为不同的 domU 实例修改该快照。由于快照使用的唯一存储是在原点或快照上更改的块,因此卷的大部分由 domU 共享。

http://tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html

答案4

LVM 手册是一件奇妙的事情:

http://tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html

相关内容