Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
citrix:software_raid_xenserver_7.6 [2018/12/20 07:20] – [Добавление второго диска в массивы] admin | citrix:software_raid_xenserver_7.6 [2019/02/11 09:13] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | Выполнено по мотивам https:// | ||
+ | ====== Назначение разделов ====== | ||
+ | https:// | ||
+ | На свежеустановленном **Xenserver 7.6** диск разбивается на **6** разделов: | ||
+ | < | ||
+ | sda2 - 18.0 GiB backup partition | ||
+ | sda3 - XenStorage LVM Physycal Volume | ||
+ | sda4 - 512.0 MiB /boot/efi type vfat | ||
+ | sda5 - 4.0 GiB /var/log type ext3 | ||
+ | sda6 - 1.0 GiB swap | ||
+ | </ | ||
+ | |||
+ | ====== Подготовка первого диска массива RAID ====== | ||
+ | Подразумевается, | ||
+ | sgdisk -R /dev/sdb /dev/sda | ||
+ | Делаем прописываем новым разделам тип **fd00** и создаем массивы: | ||
+ | < | ||
+ | sgdisk --typecode=2: | ||
+ | sgdisk --typecode=3: | ||
+ | sgdisk --typecode=4: | ||
+ | sgdisk --typecode=5: | ||
+ | sgdisk --typecode=6: | ||
+ | |||
+ | yes|mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb1 missing | ||
+ | yes|mdadm --create /dev/md2 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb2 missing | ||
+ | yes|mdadm --create /dev/md3 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb3 missing | ||
+ | yes|mdadm --create /dev/md4 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb4 missing | ||
+ | yes|mdadm --create /dev/md5 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb5 missing | ||
+ | yes|mdadm --create /dev/md6 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb6 missing | ||
+ | </ | ||
+ | Во избежание путаницы, | ||
+ | ====== Копирование системы на массивы RAID ====== | ||
+ | Форматируем разделы: | ||
+ | < | ||
+ | mkfs.ext3 /dev/md5 | ||
+ | mkswap /dev/md6 | ||
+ | </ | ||
+ | Так как утилита **mkfs.vfat** отсутствует в **XenServer 7.6** я просто скопировал раздел **EFI** с помощью **dd**: | ||
+ | dd if=/ | ||
+ | Монтируем новые разделы: | ||
+ | mount /dev/md1 /mnt | ||
+ | mkdir -p / | ||
+ | mount /dev/md5 / | ||
+ | Если в результате выполнеения следующих команд (монтирования **/ | ||
+ | mkdir -p / | ||
+ | mount /dev/md4 / | ||
+ | |||
+ | Копируем систему: | ||
+ | cp -xR --preserve=all / /mnt | ||
+ | |||
+ | Настраиваем **mdadm**: | ||
+ | < | ||
+ | echo " | ||
+ | echo "AUTO +imsm +1.x -all" >> / | ||
+ | echo " | ||
+ | mdadm --detail --scan >> / | ||
+ | cp / | ||
+ | </ | ||
+ | Настраиваем **fstab**: | ||
+ | < | ||
+ | sed -i ' | ||
+ | sed -i ' | ||
+ | sed -i ' | ||
+ | e2label /dev/sda1 |xargs -t e2label /dev/sdb1 | ||
+ | </ | ||
+ | |||
+ | Монтируем системыные файловые системы для **chroot**: | ||
+ | < | ||
+ | mount --bind /dev /mnt/dev | ||
+ | mount --bind /sys /mnt/sys | ||
+ | mount --bind /proc /mnt/proc | ||
+ | mount --bind /run /mnt/run | ||
+ | </ | ||
+ | И выполняем **chroot**: | ||
+ | chroot /mnt /bin/bash | ||
+ | |||
+ | Так как я скопировал **EFI**-раздел с помощью **dd**, то ставить **grub** нужды нет. В **chroot** нужно пересобрать ram-диск **dracut**. | ||
+ | dracut --mdadmconf --fstab --add=" | ||
+ | Меняем некоторые параметры **grub**: | ||
+ | < | ||
+ | sed -i ' | ||
+ | sed -i ' | ||
+ | sed -i '/ | ||
+ | sed -i '/ | ||
+ | sed -i '/ | ||
+ | sed -i '/ | ||
+ | </ | ||
+ | |||
+ | Выходим из **chroot** и перезагружаемся: | ||
+ | exit | ||
+ | reboot | ||
+ | Отключаем первый диск и загружаемся со второго диска (того, который мы уже добавили в **RAID**). Если что-то пошло не так - можно опять загрузиться с первого и сделать все заново. У меня всё раработало с первого раза. \\ | ||
+ | После загрузки смотрим: | ||
+ | cat / | ||
+ | mount | grep md | ||
+ | И убеждаемся, | ||
+ | |||
+ | ====== Добавление второго диска в массивы ====== | ||
+ | Теперь - добавляем в рейд разделы первого диска (за исключением раздела №3), делаем на **RAID** новую **Storage Repository** и переносим виртуалки с **sda3** на **md3**. \\ | ||
+ | Чтобы не лазить в биос я просто отключил первый диск на время загрузки, | ||
+ | sgdisk --typecode=1: | ||
+ | sgdisk --typecode=2: | ||
+ | sgdisk --typecode=4: | ||
+ | sgdisk --typecode=5: | ||
+ | sgdisk --typecode=6: | ||
+ | И добавляем эти диски в массивы: | ||
+ | mdadm -a /dev/md1 /dev/sdb1 | ||
+ | mdadm -a /dev/md2 /dev/sdb2 | ||
+ | mdadm -a /dev/md4 /dev/sdb4 | ||
+ | mdadm -a /dev/md5 /dev/sdb5 | ||
+ | mdadm -a /dev/md6 /dev/sdb6 | ||
+ | Теперь создаем новую **Storage Repository** на **md3**. | ||
+ | xe sr-create content-type=user device-config: | ||
+ | Виртуалки я переношу с помощью **XenCenter**: | ||
+ | Эта ситуация может привести в ступор, | ||
+ | Поэтому - я рекомендую запускать **XenCenter** из виртуалки, | ||
+ | |||
+ | После переезда виртуалок на новую **Storage Repository** отлючаем от старой **SR** её **pdb**(**/ | ||
+ | xe pbd-list | ||
+ | xe pbd-unplug uuid=~~~pdb_uuid~~~ | ||
+ | xe sr-destroy uuid=~~~sr_uuid~~~ | ||
+ | sgdisk --typecode=3: | ||
+ | mdadm -a /dev/md3 /dev/sda3 | ||
+ | И вытирая слезу радости наблюдаем за перестроением зеркала: | ||
+ | cat / | ||
+ | |||
+ | |||
+ | ====== Система не загружается, | ||
+ | Если просто физически выдернуть один диск из массива и попытаться загрузиться - система не загрузится. | ||
+ | Она скажет: | ||
+ | Started dracut premount hook | ||
+ | A start job is running for dev-md1.device | ||
+ | И будет бесконечно тупить. | ||
+ | Я пока не нашел что сделать для того, чтобы исправить это. Однако, | ||
+ | mdadm /dev/md1 -f /dev/sdb1 | ||
+ | mdadm /dev/md2 -f /dev/sdb2 | ||
+ | mdadm /dev/md3 -f /dev/sdb3 | ||
+ | mdadm /dev/md4 -f /dev/sdb4 | ||
+ | mdadm /dev/md5 -f /dev/sdb4 | ||
+ | mdadm /dev/md5 -f /dev/sdb5 | ||
+ | mdadm /dev/md6 -f /dev/sdb6 | ||
+ | |||
+ | |||
+ | https:// | ||
+ | |||
+ | http:// |