Среди бросающихся в глаза плюшек (помимо миграции на 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:fd00 /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
yes|mdadm --create /dev/md4 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb6 missing
Создаем новый раздел подкачки.
mkswap /dev/md4
Создаем разделы (корень и /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/md3 /dev/sda5
mdadm -a /dev/md4 /dev/sda6
На всякий случай,
grub-install /dev/sda
Перезагружаемся еще раз, дабы проверить, что все установилось корректно.
Ну вот, собственно, и всё. Теперь осталось подключить (или создать) разделы с данными, добавить (если нужно) их в RAID и создать/подключить хранилища:
xe sr-create content-type=user device-config:device=/dev/md5 host-uuid=<host-uuid> name-label=”SRRaid1-Local” shared=false type=lvm
Данный материал является компиляцией нескольких howto, найденных на просторах Сети. Замечания и дополнения всячески приветствуются.
Комментарии (13)
farafonoff
08.08.2016 15:50+1Я swap слздаю на md, иначе при выходе диска из строя получается краш системы.
rrrav
08.08.2016 20:58Тоже удивило — делать зеркало, а swap раскидывать на два физических диска — вероятность вылета даже в 2 раза больше, чем на одном диске. Логично тогда вообще все положить на RAID 0 — летать будет, но недолго проживет.
Swap либо на зеркале, либо вовсе без него (что тоже может осложнить жизнь).Night_Snake
08.08.2016 21:51Я в двух мануалах (в т.ч. на форуме цитрикса как «рекомендованное решение») видел именно такой сценарий. Хотя, соглашусь, странно. Пожалуй, сделаю апдейт, спасибо
rrrav
08.08.2016 22:49+2Возможно имелось ввиду, что swap не следует располагать на томе LVM — это где-то понять можно — лишняя нагрузка на процессор. Еще попадалось рассуждение, что при серьезной нехватке памяти, в swap может попасть сам модуль LVM на которой этот swap лежит. Лет 20 назад такое еще можно было представить, но сейчас памяти хватает, swap в системе — «на всякий случай» (чтобы OOM килер не посетил).
MikeBooker
08.08.2016 21:51Не совсем понял автора — у меня XenServer 6.5 & RAID1 (hardware) + RAID1 (hardware), т.е. в моем случае штатный update до 7.0 не пройдет? И спасет только этот мануал?
Night_Snake
08.08.2016 23:31Обновлять я не пробовал, сразу скажу. Но при загрузке с диска xenserver тупо не дает поставиться на RAID.
mobilesfinks
09.08.2016 10:31+1не пройдёт.
Что бы прошёл вам нужно:
1 — вывести один диск из массива.
2 — поставить на этот освободившийся диск новую систему
3 — поднять дегрейдед рейд на новом диске (для хранилища)
4 — мигрировать VG на новый диск
5 — дальше как обычно переезжаем на рейд
akamensky
11.08.2016 09:49Вот интересно почему ext3, а не ext4? И да, причем тут XenServer? Процесс для миграции на RAID и без XenServer'а будет выглядет также.
Ну и немного непонятно зачем XenServer'у софтварный RAID? Что-то серьезное собирать без нормального RAID контроллера это, извиняюсь, поиск приключений на собственную голову.Night_Snake
11.08.2016 10:05Так исторически сложилось (с). Думаю, этот вопрос надо задать Citrix, которые до сих пор пользуют ext3 для хост-системы, даже после перехода на ядро centos 7.
XenServer тут, собственно, не сильно при делах — за исключением того, что он, в отличие от «обычного» линукса на RAID не ставится.
Про аппаратный RAID-контроллер вы всё правильно говорите, но далеко не всегда есть возможность и/или необходимость в его покупке.akamensky
11.08.2016 10:15Думаю, этот вопрос надо задать Citrix, которые до сих пор пользуют ext3 для хост-системы, даже после перехода на ядро centos 7.
Не пользуюсь их продуктом. Но мы тут вовсю используем FOSS Xen под версией 4.x. Так вот он отлично работает со всеми известными FS, так как в этом случае Xen ядро подгружает оригинальное ядро, которое в свою очередь поддерживает все доступные драйвера.
XenServer тут, собственно, не сильно при делах — за исключением того, что он, в отличие от «обычного» линукса на RAID не ставится.
Вот это для меня новость. Так как обычный Xen спокойно ставится на все что угодно за исключением Secure Boot (его тоже можно завести, но для Centos придется руками все компилировать, не хочется с этим связываться)
Про аппаратный RAID-контроллер вы всё правильно говорите, но далеко не всегда есть возможность и/или необходимость в его покупке.
Ну как бы даже очень древние сервера «for small office» шли с какой-никакой а картой. Не уверен про другие бренды, в основном работал с Dell. Так что может это только к ним относится.Night_Snake
11.08.2016 10:35Не пользуюсь их продуктом. Но мы тут вовсю используем FOSS Xen под версией 4.x. Так вот он отлично работает со всеми известными FS, так как в этом случае Xen ядро подгружает оригинальное ядро, которое в свою очередь поддерживает все доступные драйвера.
Очень рад за вас, но в данном случае речь идет именно о XenServer от Citrix. Пользовать для хост-системы ext4 или ext3 — дело вкуса, на мой взгляд.
Вот это для меня новость. Так как обычный Xen спокойно ставится на все что угодно за исключением Secure Boot (его тоже можно завести, но для Centos придется руками все компилировать, не хочется с этим связываться)
XenServer это очень сильно урезанный и перепиленный CentOS. Вообще, как и любой другой гипервизор, его спокойно можно ставить на флешку, а отказоустойчивость обеспечивать кластером. Но в данном случае сервер был один, так что ставить пришлось на диски.
Ну как бы даже очень древние сервера «for small office» шли с какой-никакой а картой. Не уверен про другие бренды, в основном работал с Dell. Так что может это только к ним относится.
У меня в наличии самосбор на супермикре. Покупать к нему еще и RAID-контроллер смысла как-то не вижу, учитывая круг задач. В брендовых серверах да, встречал, но не во всех.
mobilesfinks
Извините за прямоту, но после этого можно не читать. Это уже не миграция, а чистая установка.
Удалили хранилища => спокойно переставляем систему с нуля, как положено без создания хранилища. ВСЁ. Дальше делаем рейд, вводим в пул, настраиваем согласно своих предпочтений.
Единственный вопрос:
Где тут миграция?
Миграция, это когда у вас одна из боевых нод на рейде и вы апгрейдите её до новой версии. У меня так не получалось с рейдом, надеялся увидеть данное шаманство здесь.
Night_Snake
Я делал именно на свежеустановленном XenServer. Но вы правы, удалю, дабы не смущать лишний раз.
На «боевой» системе я так тоже делал, но еще на шестерке.
С апгрейдом всё сложнее — на уже созданный linux-raid xenserver не встает, проверено. Т.е. как минимум, придется переставлять базовую систему, и потом цеплять к ней хранилища. смигрировать существующий lvm на raid проблем не составляет — делаем raid, добавляем в vg, мигрируем данные, вынимаем «старый» раздел из vg.