Xenserver недавно обновился до седьмой версии и я, конечно же, не смог пройти мимо!
Среди бросающихся в глаза плюшек (помимо миграции на CentOS 7) – другая разбивка диска с монтируемым отдельно /var/log (наконец-то) и увеличенным до 20 гигов корнем (алиллуйя!).
Но вот делать при загрузке RAID любого уровня он так и не умеет. А значит, нужно опять мигрировать уже установленную систему.
Благо, если XenServer только-только установлен, то это не так страшно ;)
Итак, мануалов по установке давать не буду – там ничего не изменилось толком. Если будете ставить с нуля – при установке не надо создавать хранилища для ВМ, их мы сделаем позже.
После установки разбивка у нас будет примерно такая:
1 2 3 4 5 | / (root) 18GB (update) 18GB /boot/efi 512M /var/log 4GB swap 1GB |
0. Удаляем старое
Первым делом отключаем существующие хранилища (если они таки есть):
1 2 3 4 5 6 7 8 9 | #xe sr-list #xe pbd-list sr-uuid=<local storage-uuid> #xe pbd-unplug uuid=<uuid> #xe sr-forget uuid=<local storage-uuid> #sed -i 's/metadata_read_only = 1/metadata_read_only = 0/' /etc/lvm/lvm.conf #lvremove /dev/VG_XenStorage-cc5e2fd6-e2f5-2e1c-ad01-1f8635b02f24/MGT #vgremove VG_XenStorage-cc5e2fd6-e2f5-2e1c-ad01-1f8635b02f24 #pvremove /dev/sda3 #sed -i 's/metadata_read_only = 0/metadata_read_only = 1/' /etc/lvm/lvm.conf |
естественно, pv и vg указываем свои, а не просто копипастим ;)
Теперь останавливаем и удаляем RAID, если они есть в системе:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #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
1 2 | #sgdisk --zap-all /dev/sdb #sgdisk -R /dev/sdb /dev/sda |
Задаем тип RAID для разделов
1 2 3 4 5 | #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
1 2 3 4 5 | #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/sdb4 missing #yes|mdadm --create /dev/md4 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb5 missing |
Создаем новый раздел подкачки. Он не будет жить на RAID, поэтому у нас их будет два.
1 | #mkswap /dev/sdb6 |
Создаем разделы (корень и /var/logs) и монтируем
1 2 3 4 5 | #mkfs.ext3 /dev/md0 #mkfs.ext3 /dev/md3 #mount /dev/md0 /mnt #mkdir -p /mnt/var/log #mount /dev/md3 /mnt/var/log |
Копируем файлы на новый раздел:
1 | #cp -xR --preserve=all / /mnt |
Создаем файл mdadm.conf
1 2 3 | #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 |
1 2 | #mdadm --detail --scan >> /mnt/etc/mdadm.conf #cp /mnt/etc/mdadm.conf /etc |
2. Правим fstab и grub
Изменяем точки монтирования на RAID
1 2 3 4 | #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
1 | #e2label /dev/sda1 |xargs -t e2label /dev/sdb1 |
Делаем chroot в нашу будущую систему:
1 2 3 4 5 | #mount --bind /dev /mnt/dev #mount --bind /sys /mnt/sys #mount --bind /proc /mnt/proc #mount --bind /run /mnt/run #chroot /mnt /bin/bash |
Устанавливаем загрузчик
1 | #grub-install /dev/sdb |
Создаем новый initrd
1 | #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:
1 2 3 4 5 6 | #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
1 | exit |
Перезагружаемся. В качестве загрузочного диска ставим второй, на котом мы создали RAID. Если что-то пойдет не так – будет шанс загрузиться со “старой” системы и попробовать еще раз.
Если всё прошло удачно, то переписываем таблицу с /dev/sdb на /dev/sda
1 | #sgdisk -R /dev/sda /dev/sdb |
И добавляем разделы в RAID:
1 2 3 4 | #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:
1 2 | #mkswap /dev/sda6 #grub-install /dev/sda |
Перезагружаемся еще раз, дабы проверить, что все установилось корректно.
Ну вот, собственно, и всё :) Теперь можно создать/подключить хранилища:
1 | #xe sr-create content-type=user device-config:device=/dev/md2 host-uuid=<host-uuid> name-label=”SRRaid1-Local” shared=false type=lvm |