User Tools

Site Tools


Sidebar


Здравствуйте!

Меня зовут Михаил!
Я системный администратор
и наполняю эту wiki,
решая разнообразные IT-задачки.

Моя специализация - виртуализация!

Я всегда готов помочь Вам
наладить IT-инфраструктуру
за скромное вознаграждение!

mike@autosys.tk
+7 (910) 911-96-23

proxmox:настроика-программного-raid-на-хосте-proxmox

mdadm software RAID ProxMox 5

Задача - сделать на хосте Proxmox 5.2.1 зеркальный mdadm RAID.
Хост - машина с загрузкой только через EFI.

Предполагаем, что на первый диск /dev/sda у нас установлен ProxMox. Он может даже иметь виртуальные машины на борту.
В итоге, в массиве RAID1 у нас будут только корень, своп и данные. Два раздела с загрузчиками Legacy BIOS и EFI будут вне массивов, однако это не страшно - содержимое этих разделов практически не меняется и обоих дисках эти разделы будут идентичны.

Устанавливаем компоненты:

apt-get update
apt-get install mdadm initramfs-tools screen

Переносим разметку на второй диск.

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

Назначаем разделу номер 3 тип Linux RAID:

echo -e "\nt\n3\n29\nw\nx" | fdisk /dev/sdb

Чистим и стартуем массивы:

mdadm --zero-superblock /dev/sdb3
yes|mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdb3 missing

Дальше нам предстоят длительные операции и, если мы не работаем на физической консоли, то, на всякий случай, запустим screen:

screen

Создаем Physycal Volume на /dev/md0, расширяем имеющуюся Volume Group новым томом, перемещаем данные с /dev/sda3 и изымаем /dev/sda3 из Volume Group:

pvcreate /dev/md0
vgextend pve /dev/md0
pvmove /dev/sda3 /dev/md0
vgreduce pve /dev/sda3

Чистим и добавляем /dev/sda3 в массив:

pvremove /dev/sda3
echo -e "\nt\n3\n29\nw\nx" | fdisk /dev/sda
mdadm --add /dev/md0 /dev/sda3

Сохраняем конфигурацию mdadm:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Добавляем модули RAID в GRUB:

echo '' >> /etc/default/grub
echo '# RAID' >> /etc/default/grub
echo 'GRUB_PRELOAD_MODULES="part_gpt mdraid09 mdraid1x lvm"' >> /etc/default/grub

Обновляем GRUB и initrmfs:

update-grub
update-initramfs -u

Ставим GRUB

mkdir /mnt/efi-boot
mount /dev/sda2 /mnt/efi-boot
grub-install /dev/sda
grub-install --target x86_64-efi --efi-directory /mnt/efi-boot

Копируем разделы 1 и 2 с /dev/sda на /dev/sdb

dd if=/dev/sda1 of=/dev/sdb1
dd if=/dev/sda2 of=/dev/sdb2

В результате, при загрузке с любого из дисков система будет работать идентично, а данные будут в зеркале.

Теперь нужно дождаться синхронизации массива и перезагрузиться.

cat /proc/mdstat

mdadm RAID для ProxMox 2.x

Несколько слов об устройстве хранилищ в proxmox. Диск хоста proxmox по умолчанию делится на два раздела. Первый - загрузочный, второй - это носитель Volume group с именем pve. В группе pve три тома - swap, root и data. Соответственно нам нада зазеркалить два раздела.

1. Ставим то что нужно. В новых версиях proxmox (начиная с версии 3) нужно закомментировать строку, описывающую коммерческий репозитарий, в файле /etc/apt/sources.list.d/pve-enterprise.list

aptitude update && aptitude install mdadm initramfs-tools

2. Останавливаем массивы, если они есть:

mdadm --stop /dev/md0
mdadm --stop /dev/md1

3. Загружаем модули:

modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

4. Очищаем таблицу разделов второго диска, копируем на второй диск таблицу разделов с первого:

dd if=/dev/zero of=/dev/sdb bs=512 count=1000
sync
sync
sfdisk -d /dev/sda | sfdisk --force /dev/sdb

5. Назначаем разделам второго диска тип fd - Linux RAID autodetect

echo -e "\nt\n1\nfd\nt\n2\nfd\nw\nx" | fdisk /dev/sdb

6. Очищаем суперблоки на втором диске (на всякий случай) и создаем массивы:

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

7. Прописываем массивы в /etc/mdadm/mdadm.conf:

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

ЭТО НЕ НАДО 8. Создаем на массиве /dev/md1 новый физический том и создаем группу томов pve1

pvcreate /dev/md1
vgcreate pve1 /dev/md1 

ЭТО НЕ НАДО 9. Смотрим какие тома уже созданы в оригинальной группе pve и создаем такие же в группе pve1

lvscan 
lvcreate --name swap --size 15G pve1
lvcreate --name root --size 96G pve1
lvcreate --name data --size 804G pve1

10. Форматируем массив /dev/md0 (он будет загрузочным):

mkfs.ext3 /dev/md0

11. Редактируем /etc/fstab и прописываем в качестве/boot массив /dev/md0

nano /etc/fstab

---------------------------------------------------------------
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext4 errors=remount-ro 0 1
/dev/pve/data /var/lib/vz ext4 defaults 0 1
/dev/md0 /boot ext4 defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0

--------------------------------------------------------------------

Добавляем в загрузку модуль raid1

echo alias md-personality-3 raid1 >> /etc/modprobe.conf

Пересоздаем образ initrd. Новый образ /boot/temp - Имена файлов могут различаться от версии к версии:

mkinitramfs -o /boot/temp -r /dev/mapper/pve-root
mv /boot/initrd.img-2.6.32-6-pve /boot/initrd.img-2.6.x-pve.bak
mv /boot/temp /boot/initrd.img-2.6.32-6-pve

ЭТО НЕ НАДО 12. Создаем конфигурационный файл для GRUB. В нем может быть понадобится изменить имена файлов /initrd.img-2.6.32-11-pve и /vmlinuz-2.6.32-11-pve на актуальные в вашей системе, которые лежат в /boot.

cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
nano /etc/grub.d/09_swraid1_setup

---------------------------------------------------------------------

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry 'Proxmox, with RAID1' --class proxmox --class gnu-linux --class gnu --class os {
    insmod raid
    insmod mdraid
    insmod part_msdos
    insmod ext2
    set root='(md/0)'
    echo    'Loading Proxmox with RAID ...'
    linux   /vmlinuz-2.6.32-11-pve root=/dev/mapper/pve1-root ro  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /initrd.img-2.6.32-11-pve
}

---------------------------------------------------------------------

13. В файле /etc/default/grub надо раскомментировать строку GRUB_DISABLE_LINUX_UUID=true

nano /etc/default/grub

15. Выполняем обновление GRUB:

update-grub 
это навреное не надо update-initramfs -u

16. Копируем существующие файлы на новые массивы

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

17. Создаем на /dev/md1 новый физический том, включаем его в группу pve, переносим данные и исключаем из группы pve том /dev/sda2

pvcreate /dev/md1
vgextend pve /dev/md1
pvmove /dev/sda2 /dev/md1
vgreduce pve /dev/sda2

ЭТО НЕ НАДО 17. После перезагрузки надо удалить старую группу томов pve и очистить /dev/sda2 от метки физического тома:

lvremove /dev/pve/root
lvremove /dev/pve/swap
lvremove /dev/pve/data
vgremove /dev/pve
pvremove /dev/sda2

17. Разделам первого диска надо назначить тип fd - Linux RAID autodetect

echo -e "\nt\n1\nfd\nt\n2\nfd\nw\nx" | fdisk /dev/sda

18. Добавляем в массив разделы первого диска:

mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2

19. Обновляем конфигурацию массивов /etc/mdadm/mdadm.conf

cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

20. Удаляем ненужное и переконфигурируем GRUB:

rm -f /etc/grub.d/09_swraid1_setup 
update-grub
update-initramfs -u

21. Устанавливаем GRUB на первые ращделы обеих дисков и перезагружаемся:

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

ВСЁ! 6Теперь ваш хост proxmox работает на программном массиве.
Важно!! Разработчики proxmox крайне отрицательно относятся к применению программных массивов на хостах proxmox.
Если в процесс что-то пошло не так, то всегда можно загрузиться с Linux Rescue CD и поправить что не так. По крайней мере удастся добраться до данных.

Discussion

Enter your comment. Wiki syntax is allowed:
B W U J P
 
proxmox/настроика-программного-raid-на-хосте-proxmox.txt · Last modified: 2018/11/09 07:36 by admin