克隆 LVM 分区

Man*_*uel 5 partition hard-drive cloning lvm dd

我需要将 CentOS 安装从使用 LVM 分区的 1TB 磁盘克隆到几台相同的计算机。磁盘大部分是空的,因为只安装和配置了操作系统和一些软件。

如果没有 LVM,我会复制整个分区表,然后使用 partclone 逐个克隆分区:

sfdisk -d /dev/sda | sed -e 's/sda/sdb/' | sfdisk /dev/sdb
partclone.ext4 -c -s /dev/sda# -o - | partclone.ext4 -r -s - -o /dev/sdb#
Run Code Online (Sandbox Code Playgroud)

不过我认为它不适用于 LVM。

当然,我可以使用dd克隆整个磁盘:

dd if=/dev/sda of=/dev/sdb
Run Code Online (Sandbox Code Playgroud)

但与partclone相比需要太多时间。

有没有办法更快地克隆 LVM 分区?我认为一种可能的解决方案是使用 dd 将 LVM 分区克隆到另一个磁盘中的常规分区,然后使用 partclone 将新磁盘克隆到其他计算机。但我不知道这样的事情是否会起作用:

dd if=/dev/mapper/vg_node07-lv_root of=/dev/sdb1
Run Code Online (Sandbox Code Playgroud)

能行吗?你能告诉我其他解决方案吗?

nor*_*lly 5

dd是的,您可以按照描述使用。

我要做的是使用尽可能小的分区创建源映像,克隆它们,然后扩大目标上的逻辑卷和文件系统。你的克隆过程变成这样:

# <attach target for cloning, say, /dev/sdc>
# CURRENT_LE=2000  (get exact "Current LE" value from lvdisplay)
# NEW_SIZE="20G"
# parted -a optimal /dev/sdc mklabel gpt mkpart p1 ext4 0% 100%
# pvcreate /dev/sdc1
# vgcreate nodexx /dev/sdc1
# lvcreate -n lv_root -l $CURRENT_LE nodexx
# dd if=/dev/node07/lv_root of=/dev/nodexx/lv_root bs=4M
# lvresize /dev/vg_nodexx/lv_root -L $NEW_SIZE
# fsck.ext4 -f -y /dev/vg_nodexx/lv_root
# resize2fs /dev/vg_nodexx/lv_root
Run Code Online (Sandbox Code Playgroud)

您需要了解 LVM 和文件系统工具,但这是 shell 脚本编写的绝佳选择。