Миграция PROXMOX VE 3.0 в software RAID1

от автора

В данном материале описывается процесс миграции свежеустановленного гипервизора Proxmox 3.0 в программный RAID1. Разработчики Proxmox в своей wiki пишут о том, что данное решение официально не поддерживается и не рекомендуется к использованию. Взамен этого предлагается использовать решения на протестированных аппаратных raid-контроллерах. Тем не менее в сети можно найти несколько мануалов по этой теме и практики успешной эксплуатации softraid’а совместно с Proxmox’ом. К сожалению, большинство этих мануалов нельзя назвать пошаговыми руководствами к действию: все они содержат те или иные ошибки, которые мешают достигнуть требуемого результата. Взяв за основу один из таких мануалов, я попытался исправить эту ситуацию. Приведённое ниже решение несколько раз было по шагам протестировано сначала в виртуалке, а затем использовано для миграции данных на реальном железе. В результате этого получился рабочий how-to, который предлагается вашему вниманию. Кому интересно, добро пожаловать под cut.

Перед началом миграции у нас имеется следующее:

  • Сервер с двумя HDD одинаковой емкости (/dev/sda и /dev/sdb). Диски не в RAID’e.
  • Proxmox 3.0 установлен с нуля на первый HDD (/dev/sda)
  • В системе установлены все последние обновления (aptitude update && aptitude upgrade)

По окончании миграции оба HDD будут объединены в Soft RAID1, при этом мы сохраним данные, которые были на диске до начала миграции.

Миграция будет происходить в несколько этапов:
0. Установка необходимого ПО.
1. Подготовка дисков к переводу в RAID1.
2. Перенос /boot на /dev/md0.
3. Модификация /etc/fstab.
4. Модификация Grub2.
5. Перенос LVM на /dev/md1, перевод исходного диска в RAID1.

0. Установка необходимого ПО.

Ставим mdadm и screen. При установке mdadm спросит, какие модули нужно включить при загрузке. Отвечаем «all». Screen ставить не обязательно, но он поможет нам подстраховаться на 5-м этапе, когда мы будем переносить LVM.

root@kvm0:~# apt-get update root@kvm0:~# aptitude install mdadm screen 

1. Подготовка дисков к переводу в RAID1.

Копируем разметку диска sda на sdb. Здесь и далее я привожу полный вывод команд, чтобы на каждом шаге можно было свериться с результатом.

root@kvm0:~# sfdisk -d /dev/sda | sfdisk -f /dev/sdb Checking that no-one is using this disk right now ... OK  Disk /dev/sdb: 4177 cylinders, 255 heads, 63 sectors/track  sfdisk: ERROR: sector 0 does not have an msdos signature  /dev/sdb: unrecognized partition table type Old situation: No partitions found New situation: Units = sectors of 512 bytes, counting from 0     Device Boot    Start       End   #sectors  Id  System /dev/sdb1   *      2048   1048575    1046528  83  Linux /dev/sdb2       1048576  67108863   66060288  8e  Linux LVM /dev/sdb3             0         -          0   0  Empty /dev/sdb4             0         -          0   0  Empty Warning: partition 1 does not end at a cylinder boundary Warning: partition 2 does not start at a cylinder boundary Warning: partition 2 does not end at a cylinder boundary Successfully wrote the new partition table  Re-reading the partition table ...  If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).) 

Помечаем разделы диска sdb, как «Linux raid auto».

root@kvm0:~# sfdisk -c /dev/sdb 1 fd Done root@kvm0:~# sfdisk -c /dev/sdb 2 fd Done 

Чтобы убедиться, что на диске нет информации о ранее созданных RAID-массивах, делаем следующее.

root@kvm0:~# mdadm --zero-superblock /dev/sdb1 mdadm: Unrecognised md component device - /dev/sdb1 root@kvm0:~# mdadm --zero-superblock /dev/sdb2 mdadm: Unrecognised md component device - /dev/sdb2 

Если диск чист, то видим вышеприведённые сообщения. В противном случае вывод команды будет пустой.

Создаем RAID-массив.

root@kvm0:~# mdadm --create -l 1 -n 2 /dev/md0 missing /dev/sdb1 --metadata=1.1 mdadm: array /dev/md0 started. root@kvm0:~# mdadm --create -l 1 -n 2 /dev/md1 missing /dev/sdb2 --metadata=1.1 mdadm: array /dev/md1 started. 

Добавляем информацию о массиве в mdadm.conf

root@kvm0:~# cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig root@kvm0:~# mdadm --examine --scan >> /etc/mdadm/mdadm.conf 

2. Перенос /boot на /dev/md0.

Создаём файловую систему на /dev/md0. Монтируем её в /mnt/md0 и копируем туда содержимое /boot.

root@kvm0:~# mkfs.ext3 /dev/md0 mke2fs 1.42.5 (29-Jul-2012) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 131072 inodes, 522944 blocks 26147 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67633152 64 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group Superblock backups stored on blocks:  	8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409  Allocating group tables: done                             Writing inode tables: done                             Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done root@kvm0:~# mkdir /mnt/md0 root@kvm0:~# mount /dev/md0 /mnt/md0 root@kvm0:~# cp -ax /boot/* /mnt/md0 

3. Модификация /etc/fstab.

Комментируем в /etc/fstab монтирование boot-раздела через UUID и прописываем монтирование раздела через /dev/md0.

root@kvm0:~# sed -i 's/^UUID/#UUID/' /etc/fstab root@kvm0:~# echo '/dev/md0 /boot ext3 defaults 0 1' >> /etc/fstab 

В итоге /etc/fstab должен выглядеть так.

root@kvm0:~# cat /etc/fstab # <file system> <mount point> <type> <options> <dump> <pass> /dev/pve/root / ext3 errors=remount-ro 0 1 /dev/pve/data /var/lib/vz ext3 defaults 0 1 #UUID=eb531a48-dea8-4356-9b56-8aa800f14d68 /boot ext3 defaults 0 1 /dev/pve/swap none swap sw 0 0 proc /proc proc defaults 0 0 /dev/md0 /boot ext3 defaults 0 1 

Перезагружаемся!

4. Модификация Grub2.

Добавляем поддержку RAID1.

root@kvm0:~# echo 'GRUB_DISABLE_LINUX_UUID=true' >> /etc/default/grub root@kvm0:~# echo 'GRUB_PRELOAD_MODULES="raid dmraid"' >> /etc/default/grub  root@kvm0:~# echo raid1 >> /etc/modules root@kvm0:~# echo raid1 >> /etc/initramfs-tools/modules 

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

root@kvm0:~# grub-install /dev/sda --recheck Installation finished. No error reported. root@kvm0:~# grub-install /dev/sdb --recheck Installation finished. No error reported. root@kvm0:~# update-grub Generating grub.cfg ... Found linux image: /boot/vmlinuz-2.6.32-20-pve Found initrd image: /boot/initrd.img-2.6.32-20-pve Found memtest86+ image: /memtest86+.bin Found memtest86+ multiboot image: /memtest86+_multiboot.bin done root@kvm0:~# update-initramfs -u update-initramfs: Generating /boot/initrd.img-2.6.32-20-pve 

5. Перенос LVM на /dev/md1, перевод исходного диска в RAID1.

Добавляем boot-раздел на исходном диске /dev/sda в RAID1.

root@kvm0:~# sfdisk -c /dev/sda 1 fd Done root@kvm0:~# mdadm --add /dev/md0 /dev/sda1 mdadm: added /dev/sda1 

Теперь нам нужно перенести данные с LVM-раздела /dev/sda2 в /dev/md1. Перенос данных при помощи pvmove занимает довольно большое время, поэтому дальнейшие действия выполняем в screen’е.

root@kvm0:~# screen bash root@kvm0:~# pvcreate /dev/md1   Writing physical volume data to disk "/dev/md1"   Physical volume "/dev/md1" successfully created root@kvm0:~# vgextend pve /dev/md1   Volume group "pve" successfully extended root@kvm0:~# pvmove /dev/sda2 /dev/md1   /dev/sda2: Moved: 2.0%   /dev/sda2: Moved: 14.5%   /dev/sda2: Moved: 17.5%   /dev/sda2: Moved: 19.2%   /dev/sda2: Moved: 20.3%   /dev/sda2: Moved: 24.7%   /dev/sda2: Moved: 31.4%   /dev/sda2: Moved: 32.5%   /dev/sda2: Moved: 43.6%   /dev/sda2: Moved: 63.3%   /dev/sda2: Moved: 81.4%   /dev/sda2: Moved: 100.0% root@kvm0:~# vgreduce pve /dev/sda2   Removed "/dev/sda2" from volume group "pve" 

Добавляем второй раздел исходного диска в RAID1.

root@kvm0:~# sfdisk --change-id /dev/sda 2 fd Done root@kvm0:~# mdadm --add /dev/md1 /dev/sda2 mdadm: added /dev/sda2 

Наливаем себе чашечку кофе и наблюдаем за синхронизацией массива через cat /proc/mdstat.
На этом миграция Proxmox 3.0 VM в software RAID1 завершена.

URLs:
pve.proxmox.com/wiki/Software_RAID
pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Wheezy
dominicpratt.de/proxmox-ve-3-0-software-raid/
www.howtoforge.com/proxmox-2-with-software-raid
www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-system-incl-grub2-configuration-debian-squeeze

ссылка на оригинал статьи http://habrahabr.ru/post/186818/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *