
Мы используем RHEL 5.4 и нам нужно клонировать несколько жестких дисков. Какой был бы хороший (или "правильный") способ сделать это? Я бы хотел избежать использования dd, если это возможно, так как это довольно медленно. (Однако, если это единственный выбор, то пусть так и будет.)
Несколько предостережений:
1) Использование других дистрибутивов невозможно, включая Live CD, поскольку у нас очень строгий процесс утверждения, и единственный дистрибутив, который мы можем использовать, — это RHEL.
2) Если это вообще возможно, нам нужно использовать программное обеспечение, которое является частью пакетов RHEL. Рекомендации по другому программному обеспечению по-прежнему приветствуются, но если мы можем использовать что-то, что уже является частью RHEL, это сэкономит нам массу бумажной работы.
Я понимаю, что это может показаться попыткой усложнить работу больше, чем она должна быть, но такова природа корпоративных правил.
Спасибо за любую помощь!
решение1
Насколько точный клон вам нужен? Если есть LVM, например, должны ли совпадать идентификаторы? ext2 (и 3, и, вероятно, большинство файловых систем Linux) имеет универсальный уникальный идентификатор (UUID) на каждой файловой системе; должны ли они совпадать между оригиналом и клоном?
Другими словами, для чего вам нужен клон?
Нет ничего быстрее, чем dd для создания точной копии диска.
Некоторые альтернативы dd
- Используйте fdisk (или parted или cfdisk или что-то еще) для дублирования разделов. lv tools, если необходимо. Создайте файловые системы, используйте
rsync
или(cd /origmount ; tar cf) | (cd /newmount; tar xf -)
илиcp
для копирования данных -- Это разместит файлы в совершенно другом порядке блоков, но будут выглядеть идентично. Или не монтируйте исходные файловые системы и используйте что-то вродеdump -level0 -f - /dev/sda1 | (cd /mnt/sdb1; restore -f - -rf)
- Осторожно используйте программные средства RAID (md) для создания деградированного RAID1 из исходных разделов, добавьте новые разделы, дождитесь завершения синхронизации и затем разбейте RAID. Это, вероятно, будет медленнее, чем dd, но большую часть работы можно выполнить во время работы машины, поэтому это может быть «быстрее» для некоторых определений этого слова.
решение2
Это шаги, которые я записал для перемещения с большого управляемого LVM-диска с установкой CentOS 5.5 на меньший диск (очевидно, что используемое пространство на большом диске было меньше размера меньшего диска). Я уверен, что есть лучшие способы сделать это, но этот метод оказался успешным. Некоторые шаги могут быть специфичны для нашей ситуации, подправьте по мере необходимости.
Требования:
- Установить компакт-диск
- Новый диск
Шаги:
Подключите новый диск
Загрузитесь с компакт-диска, в командной строке введите "linux rescue", чтобы войти в режим восстановления. Он спросит, хотите ли вы продолжить или пропустить монтирование, вам следует продолжить (он будет смонтирован в
/mnt/sysimage
). Не форматируйте новый диск, если он спросит.Проверьте предыдущую геометрию с помощью
fdisk -l
. У вас, скорее всего, будет/dev/sda1
и/dev/sda2
в обычной конфигурации LVM.sda1
будет ваш раздел /boot, который существует вне LVM. Его размер должен быть 1-13, а остальная часть диска должна быть выделена для LVM.
.
# fdisk -l
...
/dev/sda1 * 1 13 ... 83 Linux
/dev/sda2 14 ... 8e Linux LVM
# fdisk /dev/sdb
>Command...:
n
>Command action
>e extended
>p primary partition (1-4)
p
>Partition number (1-4):
1
>First cylinder ...:
<default>
>Last cylinder ...:
13 (value from /dev/sda1, the original /boot)
>Command...:
n
>Command action
>e extended
>p primary partition (1-4)
p
>Partition number (1-4):
2
>First cylinder ...:
<default>
>Last cylinder ...:
<default (end of disk)>
>Command...:
t
>Partition...:
1
>Hex code...:
83
>Command...:
t
>Partition...:
2
>Hex code...:
8e
>Command...:
a
>Partition...:
1
>Command...:
w
- Создать файловую систему для /boot на /dev/sdb1
.
# mkfs.ext3 /dev/sdb1
- Настройте новый физический том, группу томов и логические тома и их файловые системы на /dev/sdb2. Замените
?G
на нужный вам размер. LogVol00 должен быть размером раздела LVM за вычетом требуемого размера тома подкачки, LogVol01 должен быть размером подкачки.
.
# pvcreate /dev/sdb2
# vgcreate VolGroup01 /dev/sdb2
# lvcreate --name LogVol00 --size ?G VolGroup01
# lvcreate --name LogVol01 --size ?G VolGroup01
# mkfs.ext3 /dev/VolGroup01/LogVol00
# mkswap /dev/VolGroup01/LogVol01
- Смонтируйте новый диск и скопируйте на него содержимое старого диска с помощью
cp -ax
. Избегайте копирования/dev
,/proc
,/sys
,/boot
,/lost+found
и/mnt
.
# mkdir /mnt/newdisk
# mount /dev/VolGroup01/LogVol00 /mnt/newdisk
# cd /mnt/sysimage
# for i in $(ls -1 | grep -v '\(dev\|proc\|sys\|mnt\|boot\|lost\)'); do echo $i; cp -ax /mnt/sysimage/$i /mnt/newdisk; done
# cd /mnt/newdisk
# mkdir {dev,proc,sys,mnt,boot}
- Смонтируйте новый
/boot
диск и скопируйте на него содержимое со старого, затем отмонтируйте его.
.
# mkdir /mnt/{boot,newboot}
# mount /dev/sda1 /mnt/boot
# mount /dev/sdb1 /mnt/newboot
# cp -ax /mnt/boot/* /mnt/newboot
# umount /mnt/newboot
- Установить grub на новый диск
.
# mount -o bind /dev /mnt/newdisk/dev
# mount /dev/sdb1 /mnt/newdisk/boot
# chroot /mnt/newdisk
# grub
> root (hd1,0)
> setup (hd1)
> quit
- Исправьте свой
/boot/grub/grub.conf
.
# vi /boot/grub/grub.conf
:%s/VolGroup00/VolGroup01/g
:wq
- Переделайте ваши initrds
.
# cd /boot
# for i in $(ls -1 initrd* | grep -v bak); do mv $i{,-bak}; ver=$(echo $i | sed 's/initrd-//;s/\.img//;'); mkinitrd /boot/$i $ver; done
- Выход из chroot
.
# exit
#
- Исправьте свой
/etc/fstab
.
# vi /mnt/newdisk/etc/fstab
:%s/VolGroup00/VolGroup01/g
:wq
В этот момент выключите и удалите старый диск. Загрузитесь снова в режиме восстановления.
/dev/sdb
теперь будет/dev/sda
и смонтируется в/mnt/sysimage
Этикетка
/boot
.
# e2label /dev/sda1 /boot
- Извлеките компакт-диск, и на этом этапе вы сможете загрузиться с измененного диска.
решение3
Ну, если вы избегаете использования 'dd' и любого другого инструмента, не предоставляемого RHEL, то вам придется дублировать файловые системы и копировать содержимое (используя инструмент по вашему выбору, cpio, tar, rsync и т. д.) и помещать GRUB на новый диск(и). Лучше всего это сделать с замороженными дисками (возможно, загруженными в режиме восстановления RHEL).
решение4
Для создания копий образов ваших дисков вы можете попробовать Ghost, Fog, Clonezilla и т. д. (даже VMware Converter и т. д.).
Для копирования файловой системы я бы рекомендовал rsync и тому подобное.