Xenserver недавно обновился до седьмой версии и я, конечно же, не смог пройти мимо.
Среди бросающихся в глаза плюшек (помимо миграции на CentOS 7) — другая разбивка диска с монтируемым отдельно /var/log (наконец-то) и увеличенным до 20 гигов корнем (алиллуйя!).
Но вот делать при загрузке RAID любого уровня он так и не умеет. А значит, нужно опять мигрировать уже установленную систему.
Благо, если XenServer только-только установлен, то это не так страшно.
Итак, мануалов по установке давать не буду — там ничего не изменилось толком. Если будете ставить с нуля — при установке не надо создавать хранилища для ВМ, их мы сделаем позже.
После установки разбивка у нас будет примерно такая:
/ (root) 18GB
(update) 18GB
/boot/efi 512M
/var/log 4GB
swap 1GB
0. Удаляем старое
Первым делом отключаем существующие хранилища (если они таки есть):
xe sr-list
xe pbd-list sr-uuid=<local storage-uuid>
xe pbd-unplug uuid=<uuid>
xe sr-forget uuid=<local storage-uuid>
естественно, pv и vg указываем свои, а не просто копипастим ;)
Теперь останавливаем и удаляем RAID, если они есть в системе:
mdadm --stop /dev/md0
mdadm --stop /dev/md1
mdadm --stop /dev/md2
mdadm --stop /dev/md3
mdadm --stop /dev/md4
mdadm --stop /dev/md5
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
mdadm --zero-superblock /dev/sdb4
mdadm --zero-superblock /dev/sdb5
mdadm --zero-superblock /dev/sdb6
При этом каких-то разделов у вас может и не оказаться — например, у меня не было sda4 (видимо потому, что я не создавал хранилище при установке).
Ниже я считаю, что раздела /dev/sda4 у вас нет.
1. Строим новое
Удаляем таблицу разделов на /dev/sdb и копируем её с /dev/sda:
sgdisk --zap-all /dev/sdb
sgdisk -R /dev/sdb /dev/sda
Задаем тип RAID для разделов:
sgdisk --typecode=1:fd00 /dev/sdb
sgdisk --typecode=2:fd00 /dev/sdb
sgdisk --typecode=3:fd00 /dev/sdb
sgdisk --typecode=5:fd00 /dev/sdb
sgdisk --typecode=6:ef02 /dev/sdb
Создаем, собственно, RAID:
yes|mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb1 missing
yes|mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb2 missing
yes|mdadm --create /dev/md2 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb3 missing
yes|mdadm --create /dev/md3 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb5 missing
Создаем новый раздел подкачки. Он не будет жить на RAID, поэтому у нас их будет два.
mkswap /dev/sdb6
Создаем разделы (корень и /var/logs) и монтируем:
mkfs.ext3 /dev/md0
mkfs.ext3 /dev/md3
mount /dev/md0 /mnt
mkdir -p /mnt/var/log
mount /dev/md3 /mnt/var/log
Копируем файлы на новый раздел:
cp -xR --preserve=all / /mnt
Создаем файл mdadm.conf:
echo "MAILADDR root" > /mnt/etc/mdadm.conf
echo "auto +imsm +1.x -all" >> /mnt/etc/mdadm.conf
echo "DEVICE /dev/sd*[a-z][1-9]" >> /mnt/etc/mdadm.conf
mdadm --detail --scan >> /mnt/etc/mdadm.conf
cp /mnt/etc/mdadm.conf /etc
2. Правим fstab и grub
Изменяем точки монтирования на RAID:
sed -i 's/LABEL=root-[a-zA-Z-]*//dev/md0/' /mnt/etc/fstab
sed -i 's/LABEL=swap-[a-zA-Z-]*//dev/sda6/' /mnt/etc/fstab
sed -i 's/LABEL=logs-[a-zA-Z-]*//dev/md3/' /mnt/etc/fstab
sed -i '/sda6/ a/dev/sdb6 swap swap defaults 0 0 ' /mnt/etc/fstab
Копируем метку раздела на /dev/sdb:
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 /mnt /bin/bash
Устанавливаем загрузчик:
grub-install /dev/sdb</code>
Создаем новый initrd:
<source lang="bash">
dracut --mdadmconf --fstab --add="mdraid" --filesystems "ext3 tmpfs devpts sysfs proc" --add-drivers="raid1 raid456 mdraid1x mdraid09" --force /boot/initrd-$(uname -r).img $(uname -r) -M
Меняем конфигурацию GRUB, чтобы загрузиться с RAID:
sed -i 's/quiet/rd.auto rd.auto=1 rhgb quiet/' /boot/grub/grub.cfg
sed -i 's/LABEL=root-[a-zA-Z-]*//dev/md0/' /boot/grub/grub.cfg
sed -i '/search/ i insmod gzio' /boot/grub/grub.cfg
sed -i '/search/ i insmod part_msdos' /boot/grub/grub.cfg
sed -i '/search/ i insmod diskfilter mdraid09' /boot/grub/grub.cfg
sed -i '/search/ c set root=(hd0,gpt1)' /boot/grub/grub.cfg
Выходим из chroot:
exit
Перезагружаемся. В качестве загрузочного диска ставим второй, на котом мы создали RAID. Если что-то пойдет не так — будет шанс загрузиться со «старой» системы и попробовать еще раз.
Если всё прошло удачно, то переписываем таблицу с /dev/sdb на /dev/sda:
sgdisk -R /dev/sda /dev/sdb
И добавляем разделы в RAID:
mdadm -a /dev/md0 /dev/sda1
mdadm -a /dev/md1 /dev/sda2
mdadm -a /dev/md2 /dev/sda3
mdadm -a /dev/md4 /dev/sda5
На всякий случай, пересоздаем SWAP и переустанавливаем загрузчик на /dev/sda:
mkswap /dev/sda6
grub-install /dev/sda
Перезагружаемся еще раз, дабы проверить, что все установилось корректно.
Ну вот, собственно, и всё. Теперь осталось подключить (или создать) разделы с данными, добавить (если нужно) их в RAID и создать/подключить хранилища:
xe sr-create content-type=user device-config:device=/dev/md4 host-uuid=<host-uuid> name-label=”SRRaid1-Local” shared=false type=lvm
Данный материал является компиляцией нескольких howto, найденных на просторах Сети. Замечания и дополнения всячески приветствуются.
Автор: Night_Snake