Мне нужно клонировать установку CentOS с диска 1 ТБ, разделенного LVM, на несколько идентичных машин. Диск в основном пуст, поскольку установлены и настроены только операционная система и некоторое программное обеспечение.
Без 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? Я думаю, что одним из возможных решений является клонирование разделов LVM на обычные разделы на другом диске с помощью dd, а затем клонирование нового диска на другие машины с помощью partclone. Но я не знаю, сработает ли что-то вроде этого:
dd if=/dev/mapper/vg_node07-lv_root of=/dev/sdb1
Это может работать? Подскажите другие решения?
Да, вы можете использовать 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
Вы захотите ознакомиться с LVM и инструментами файловой системы, но это отличный кандидат для сценариев оболочки.
Вы можете делать почти то же самое, что и программное обеспечение VMware p2v. Что он делает, так это создает новые файловые системы в новой системе в точности такими, какими вы хотите их видеть, а затем выполняет tar файловых систем на другом сервере. Таким образом, вы получаете все точно так же, и вы копируете только те файлы и пространство, которые используются в данный момент. Затем вам нужно сделать grub, чтобы убедиться, что он загрузочный.
LVM делает много вещей намного сложнее, чем простой диск с простым разделом ... и из-за этого ... клонирование - гораздо более сложный процесс.
Фактически, вам будет лучше (повторно?) Создать том lvm вручную (или с помощью сценария), а затем просто использовать процесс sfdisk / partclone для клонирования фактических данных в новый LVM.
Это также даст вам дополнительное преимущество, так как вы сможете клонировать систему RAID-1 в систему RAID-5 на большем количестве дисков ... поскольку разделы не будут затронуты.