Задача - сделать на хосте 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