Перед началом миграции у нас имеется следующее:
- Сервер с двумя 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/
Добавить комментарий