Перевод Xenserver 6.5 на software RAID1

 

Удаляем GPT разметку с диска /dev/sdb:
# sgdisk --zap-all /dev/sdb


Конвертируем разметку /dev/sdb GPT в MBR:
# sgdisk --mbrtogpt --clear /dev/sdb

Копируем разметку диска с /dev/sda на /dev/sdb. /dev/sda имеет три раздела: /dev/sda1, /dev/sda2, /dev/sda3.
# sgdisk -R /dev/sdb /dev/sda

Задаем код разделов, fd00 это код Linux RAID:
# sgdisk --typecode=1:fd00 /dev/sdb
# sgdisk --typecode=2:fd00 /dev/sdb
# sgdisk --typecode=3:fd00 /dev/sdb

Добавляем модуль RAID в ядре так как оно не активировано по умолчанию:
# modprobe md_mod

Создаем 3 RAID1 массива, где md0 (root), md1 (swap) и md2 (storage).
# mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb1 missing
# mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb2 missing
# mdadm --create /dev/md2 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb3 missing

Создаем файловую систему для root.
# mkfs.ext3 /dev/md0

Монтируем массив:
# mount /dev/md0 /mnt

Копируем все файлы с root на /mnt:
# cp -xR --preserve=all / /mnt

Записываем всю информацию о RAID массивах в файл mdadm.conf:
# mdadm --detail --scan > /mnt/etc/mdadm.conf

Обновляем файл /etc/fstab, добавляя /dev/md0:
# sed -i 's/LABEL=[a-zA-Z\-]*/\/dev\/md0/' /mnt/etc/fstab

Монтируем директорию /dev в /mnt/dev, с доступом к обоим директориям. Монтируем sysfs и proc в  /mnt:
# mount --bind /dev /mnt/dev
# mount -t sysfs none /mnt/sys
# mount -t proc none /mnt/proc

Выполняем команду /sbin/extlinux в директории /mnt для инициализации:
# chroot /mnt /sbin/extlinux --install /boot

Копируем загрузчик на /dev/sdb:
# dd if=/mnt/usr/share/syslinux/gptmbr.bin of=/dev/sdb

Выполняем chroot на /mnt:
# chroot /mnt

Создаем образ файловой системы:
# mkinitrd -v -f --theme=/usr/share/splash --without-multipath /boot/initrd-`uname -r`.img `uname -r`

Выходим из chroot:
# exit

Обновляем файл extlinux.conf для активации нового RAID массива:
# sed -i 's/LABEL=[a-zA-Z\-]*/\/dev\/md0/' /mnt/boot/extlinux.conf

Переходим в /mnt и выполняем инициализацию в boot/, в режиме raid:
# cd /mnt
# extlinux --raid -i boot/

Устанавливаем диск /dev/sdb загрузочным:
# sgdisk /dev/sdb --attributes=1:set:2

Отмонтируем директории dev, sys, proc y mnt:
# cd
# umount /mnt/dev
# umount /mnt/sys
# umount /mnt/proc
# umount /mnt

Синхронизируем на диск информацию с RAM и перезагрузим систему:
# sync
# reboot

 

По умолчанию, никаких действий по замене загрузочного диска в BIOS не требуется, но если система загрузилась с диска /dev/sda, то необходимо вновь перезагрузить сервер и установить диск /dev/sdb загрузочным, чтобы система загрузилась с /dev/md0.

 

Проверяем наименование дисков, так как оно может поменяться с sda на sdb!

Клонируем разметку диска с /dev/sdb на /dev/sda
# sgdisk -R /dev/sda /dev/sdb

Устанавливаем диск /dev/sda загрузочным:
# sgdisk /dev/sda --attributes=1:set:2

Добавляем sda1, sda2 y sda3 в RAID массивы:
# mdadm -a /dev/md0 /dev/sda1
# mdadm -a /dev/md1 /dev/sda2
# mdadm -a /dev/md2 /dev/sda3

Если есть проблемы с добавлением раздела sda3, то они связаны с тем что при установке XenServer был создан Local Storage, для решения проблемы необходимо его удалить.

 

Смотрим список SR:

# xe sr-list

 

Узнать uuid ( RO) Local Storage командой:

# xe pbd-list sr-uuid=<UUID Local Storage>

Удаляем Local Storage командой:

# xe pbd-unplug uuid=<uuid ( RO) Local Storage>

 

И забываем Local Storage через XenCenter или CLI:

# xe sr-forget uuid=<UUID Local Storage>

 

Добавляем раздел sda3:

# mdadm -a /dev/md2 /dev/sda3


Перезагружаем систему:
# reboot

 

Создаем SR Local Storage:

# xe sr-create content-type=user device-config:device=/dev/md2 host-uuid=<UUID del host xenserver> name-label="Local Storage" shared=false type=lvm

 

Материалы:

http://mmorejon.github.io/en/blog/configure-xenserver6.5-software-raid1/