如何克隆 LVM 精简配置卷?

如何克隆 LVM 精简配置卷?

我在 Google 上搜索了很多次,但找不到答案。我想要的是将 LVM 精简配置卷克隆到另一个精简卷。

目前我知道dd可以按如下方式克隆薄卷:

dd if=/dev/mapper/vg_thin01 of=/dev/mapper/vg_thin02 bs=1M

但新克隆的卷将是全尺寸的!我怎样才能将其变成稀疏/薄卷?

(实际上,精简卷将用于 Xen 或 KVM 中的 DomU 存储)

答案1

克隆精简卷非常简单,只需对要克隆的卷进行快照即可。使用精简卷时,快照和新卷实际上是同一件事,只是默认标志不同。

来自内核文档

一旦创建,用户不必担心原点和快照之间的任何联系。 事实上,快照与任何其他精简配置的设备没有什么不同并且可以通过相同的方法对自身进行快照。只激活其中一个是完全合法的,并且激活或删除它们两者没有顺序要求。(这与传统的设备映射器快照不同。)

因此,对精简配置的卷进行快照以创建 CoW 克隆是完全合法的。从手册页

例子
       创建现有 ThinLV 的第一个快照:
       # lvcreate -n thin1s1 -s vg/thin1

答案2

我相信这个问题还没有得到正确的回答,因为原帖似乎指出了两个不同的卷组,一个源和一个目标。所以我会试着回答。

注意:此回复假定类似引用/dev/mapper/vg_thin02表示卷组按照通常的 Linux 惯例,该组中的任何池或精简卷后面都会跟着一个破折号,如下所示:/dev/mapper/vg_thin02-volA

在同一台计算机上的两个卷组(或两个精简池)之间进行克隆时,对每个源卷执行以下操作:

fstrim /mnt/volA
umount /mnt/volA
lvcreate -kn -ay -V sizeofvolA -T vg_thin02/poolname -n volA
dd if=/dev/mapper/vg_thin01-volA of=/dev/mapper/vg_thin02-volA conv=sparse

根据需要继续使用“volB”、“volC”等。该conv=sparse参数以稀疏、精简配置的方式存储新副本。

fstrim和行umount表明在源卷脱机和复制之前,需要对其进行某种形式的修剪/丢弃。如果卷通常使用该discard选项安装,则可能不需要这样做。

对于两台不同的机器之间的克隆,您可以ssh在源机器上与dd目标机器上结合使用:

gzip -2 </dev/mapper/vg_thin01-volA | ssh user@address "zcat | sudo dd of=/dev/mapper/vg_thin02-volA conv=sparse"

答案3

实际上,您需要的是一个可以识别文件系统的克隆实用程序。最好是未挂载的文件系统,因为克隆正在运行的文件系统会导致灾难。

部分克隆就是这样一个实用程序。我的 ubuntu 16.10 和 OpenSUSE Leap:42 在其包管理器存储库中有它。而 Fedora 25 则没有。

您可以使用克隆这也是支持 LVM2 的实时 CD 备份/恢复工具。

我发现还有更多这一页

答案4

我理解,进一步回复@shodanshok后,您可以按照手册文档激活该快照以供正常使用:

6. activate SnapLV
       Thin snapshots are created with the persistent "activation skip"
       flag, indicated by the "k" attribute.  Use -K with lvchange or
       vgchange to activate thin snapshots with the "k" attribute.

相关内容