Как я установил PROXMOX VE 3.1 на SoftRaid 1(mdadm)

Задумался над установкой Proxmox на хардварный рейд, но он какой-то очень старый и медленный в отличии от mdadm, передумал практически сразу. Но к моему несчастью Proxmox официально не поддерживает установку на software raid1, а инструкции в интернетах все рабочие наполовину. Или писаны на неправославном языке.

Хочу описать свой путь джедая и предложить что-то типа mini-howto proxmox on software raid1. Если мне понадобилось, то скорее всего кто-то тоже оценит.

Все нормальные инструкции по инсталляции и настройке начинаются с установки Proxmox 3.1 на SDA и подробнейшим описанием того, как скачать iso-шку раскатать ее на флешку и установить стандартный Proxmox. Я этого делать не буду, так как это не нормальная инструкция, а всего лишь mini-howto по установке proxmox 3.1 на mdadm raid1.

Тем не менее перечислю шаги, которые были бы полезны сразу после инсталляции Proxmox на ваш сервер.

1. После того как вы поставили Proxmox вам необходимо обновить пакеты:
apt-get update

Тут же вы поймете, что что-то не так, все потому что у вас нету подписки, как и у меня.

2. Подключим свободный репозиторий с обновлениями и отключим репзиторий требующий платную подписку Proxmox.
Инструкция по настройке обновлений Proxmox 3.1

3. Почти обязательный шаг, так как некоторые все-таки покупают.
Инструкция по убиранию назойлевой надписи о “No Valid Subscription”

4. Установим необходимый для сборки рейда пакет mdadm, в debian 7.2 он есть в стандартных репах.
apt-get update
apt-get install mdadm

Во время установки mdadm что-то спросит, тыкаем - ок.

5. Теперь пришло время заняться делом
Ну во первых определимся, у меня Proxmox 3.1 установлен на /dev/sda таблица разделов mbr(у вас надеюсь так же). Второй диск для организации рейда - /dev/sdb, он у меня совершенно такой же как и первый, поэтому таблицу разделов переношу как есть.

Беру таблицу расделов с /dev/sda и кладу в /dev/sdb - все просто.

sfdisk -d /dev/sda | sfdisk -f /dev/sdb


6. Теперь нам надо сказать, что партиции на /dev/sdb являются кусками Linux-рейда

sfdisk -c /dev/sdb 1 fd
sfdisk -c /dev/sdb 2 fd


7. Создаем рейд-устройства

В данном рейд-устройстве будет 2 устройства, второе из которых - /dev/sdb*, а первое пока-то "missing", тобишь отсутствует.

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2


8. /boot

Теперь нас интересует /dev/md0 - это наш будущий /boot раздел, нам его нужно собрать и попробовать с него загрузиться, от правильности дальнейших действий зависит получите ли вы огромный опыт в изучении Grub или все пройдет гладко . Обратите особое внимание на пункты дальше.

Создаем файловую систему на /dev/md0

mkfs.ext3 /dev/md0


Переносим /boot on /dev/md0

mkdir /mnt/md0
mount /dev/md0 /mnt/md0
cp -ax /boot/* /mnt/md0


9. Добавляем информацию о наших raid-устройствах в конфиги

mdadm --detail --scan >> /etc/mdadm/mdadm.conf
mdadm --detail --scan >> /mnt/new-raid/etc/mdadm/mdadm.conf


10. Для предотвращения незагрузки машины, по причине того, что рейд находится в degraded состоянии добавляем bootdegraded=1 опцию ядра.

Также вносим все необходимые изменения в grub.cfg и fstab.
Предположим, что uuid моих файловых систем такие:
/boot: db89a886-973c-4c51-8e16-1ba8ab12f6d7

Тогда конфиг grub.cfg преобразится таким образом:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Proxmox Virtual Environment GNU/Linux, with Linux 2.6.32-26-pve' --class proxmox --class gnu-linux --class gnu --class os {
	load_video
	insmod gzio
	insmod part_msdos
	insmod ext2
	set root='(mduuid/db89a886-973c-4c51-8e16-1ba8ab12f6d7)'
	search --no-floppy --fs-uuid --set=root db89a886-973c-4c51-8e16-1ba8ab12f6d7
	echo	'Loading Linux 2.6.32-26-pve ...'
	linux	/vmlinuz-2.6.32-26-pve root=/dev/mapper/pve-root ro bootdegraded=1 quiet
	echo	'Loading initial ramdisk ...'
	initrd	/initrd.img-2.6.32-26-pve
}


На всякий случай копируем конфиг на /sda
cp /mnt/md0/grub/grub.cfg /boot/grub/grub.cfg


11. Вносим изменения в fstab

cat /etc/fstab
#     /dev/pve/root / ext3 errors=remount-ro 0 1
/dev/pve/data /var/lib/vz ext3 defaults 0 1
/dev/md0 /boot ext3 defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0


12. Обновляем initramfs

update-initramfs -k $(uname -r) -c -t
copy /boot to /mnt/md0/boot


14. Устанавливаем Grub-загрузчик на оба диска

grub-install /dev/sda
grub-install /dev/sdb


15. Перезагрузка
Перед выполнением этого пункта необходимо проверить все предыдущие пункты.

reboot


16. После загрузки убедимся, что мы загрузились с /dev/md0

mount | grep boot


Если видим что-то такое - то все ок! Если нет - разбирайтесь с проблемами, где-то что-то забыли.

/dev/md0 on /boot type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=0,data=ordered)


17. Добавим /dev/sda; в рейд

Скажем, что этот раздел - кусок рейда

sfdisk -c /dev/sda 1 fd


Добавляем в рейд

mdadm --add /dev/md0 /dev/sda1


18. Перенос раздела с данными на raid-1

По умолчанию Proxmox 3.1 инсталлируется на LVM /dev/sda2 у нас есть задача переместить этот LVM на /dev/md1

Создаем LVM Phisical Volume

pvcreate /dev/md1


Расширяем PVE на /dev/md1

vgextend pve /dev/md1


Далее просто сдвигаем данные с /dev/sda2 на /dev/md1

pvmove /dev/sda2 /dev/md1


Данная процедура на 2TB диске и серваке с 2 х Intel(R) Xeon(R) CPU 4 @ 2,33GHz заняла примерно 6 часов. Можно лечь спать и проверить результат.

Далее убираем из LVM /dev/sda2, он нам еще понадобится
vgreduce pve /dev/sda2
pvremove /dev/sda2


19. Доюавляем /dev/sda2 в raid

Говорим /dev/sda2 что он кусок Linux-raid
sfdisk --change-id /dev/sda 2 fd


Присоединяем /dev/sda2 к /dev/md1
mdadm-add /dev/md1 /dev/sda2


20. Убыстряем sync данных в mdadm

Посмотрим текущие значения:
cat /proc/sys/dev/raid/speed_limit_min
cat /proc/sys/dev/raid/speed_limit_max


И установим нужные:
echo 400000 >/proc/sys/dev/raid/speed_limit_min
echo 400000 >/proc/sys/dev/raid/speed_limit_max


Наблюдаем за процессом синхронизации:
watch cat /proc/mdstat


21. Теперь мы имеем Proxmox 3.1 на Software Raid-1.




Вас также может заинтересовать:

Китайский суперкомпьютер установил новый рекорд производительности
Релиз Proxmox VE 2.2, дистрибутива для организации работы виртуальных серверов