我需要从LVM分区的1TB磁盘克隆一个CentOS安装到几个相同的机器上。 由于只安装和configuration了操作系统和一些软件,所以磁盘大部分是空的。
没有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#
但是我认为它不适用于LVM。
当然我可以用dd
来克隆整个磁盘:
dd if=/dev/sda of=/dev/sdb
但是和分体相比,花费的时间太多了。
有没有办法更快地克隆LVM分区? 我认为一个可能的解决scheme是使用dd将LVM分区克隆到另一个磁盘中的常规分区,然后使用partclone将新磁盘克隆到其他计算机。 但是我不知道这样的事是否会起作用:
dd if=/dev/mapper/vg_node07-lv_root of=/dev/sdb1
它可以工作吗? 你能告诉我其他解决scheme吗?
是的,你可以像描述的那样使用dd
。
我会做的是使用尽可能小的分区创build源映像,克隆它们,然后放大目标上的逻辑卷和文件系统。 你的克隆程序就像这样:
# <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
您将需要预订LVM和文件系统工具,但是这是shell脚本的绝佳select。
你可以做与VMware P2V软件几乎相同的事情。 它所做的就是在新系统上创build新的文件系统,完全按照您的需要,然后将文件系统的tar文件传输到另一台服务器上。 这样你得到的一切都完全一样,你只是复制当前正在使用的文件和空间。 那么你必须做的grub的东西,以确保其可启动。
LVM做的很多事情要比简单的分区简单的磁盘复杂得多,因为…克隆是一个复杂得多的过程。
事实上,你最好手动(或脚本化)创buildlvm卷,然后使用sfdisk / partclone进程将实际数据克隆到新的LVM。
这也会给你更多的好处,就是能够在更多的磁盘上将RAID-1系统克隆到RAID-5设置上,因为分区不会受到影响。