[Из песочницы] Centos 7 convert to software RAID 1
Тема, которую я хочу затронуть, довольно популярная и рассмотрена на многих ресурсах, но для другой версии загрузчика «GRUB» и для другой версии ОС.ПреамбулаПотребовалось перенести установленный Centos 7 на software raid level 1 в ручном режиме, так как сама система ставилась через kickstart. Поискав информацию по данному вопросу, нашел материал только по старым версия ОС и по первой версии загрузчика «GRUB».Решив, что методы аналогичные, лишь с изменением команд, взялся за дело и наткнулся на нюансы с «dracut».По какой-то причине initramfs созданый «dracut» не видит собранного raid и отказывается грузится. Версия «dracut» 033.
Фабула Решение было найдено и заключается оно в включении и посылке ядру опции «rd.auto=1» (опция заставляет автоматически определить и запустить все raid устройства которые есть в наличии), которая отключена по умолчанию в «dracut» начиная с версии 024.Ниже я приведу набор команд для перевода установленной ОС на software raid level 1, для осуждения или помощи нуждающимся.
Исходные данные Диск /dev/sda, на /dev/sda1 стоит система, размером в 4Гб.Диск /dev/sdb полностью чистый.Команды 1. Копируем полностью разделы, с sda на sdb: sfdisk -d /dev/sda | sfdisk /dev/sdb 2. Через fdisk меняем id 83 на fd на sdb1: fdisk /dev/sdb 3. Делаем raid level 1 с одним диском: mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1 4. Форматируем получившийся /dev/md0: mkfs.ext4 /dev/md0 5. Монтируем наш /dev/md0: mount /dev/md0 /mnt/ 6. Копируем текущую сис-му на /dev/md0: rsync -axu / /mnt/ 7. Монтируем информацию о текущей системе в наш новый корень и делаем chroot в него: mount --bind /proc /mnt/proc && mount --bind /dev /mnt/dev && mount --bind /sys /mnt/sys && mount --bind /run /mnt/run && chroot /mnt/ 8. Получаем uuid /dev/md0 и вносим его в fstab, где заменяем uuid sda1 на uuid md0: ls -l /dev/disk/by-uuid |grep md >> /etc/fstab && vim /etc/fstab 9. Создаем конфиг для mdadm, чтоб md0 не сменил имя при перезагрузке: mdadm --detail --scan > /etc/mdadm.conf 10. Делаем новый initramfs, с нужными модулями (вот тут-то dracut и подкачал): mv /boot/initramfs-3.10.0–123.el7.x86_64.img /boot/initramfs-3.10.0–123.el7.x86_64.img.bak dracut /boot/initramfs-$(uname -r).img $(uname -r) 11. Передаем ядру опцию «rd.auto=1» явно через «GRUB», для этого, добавляем ее в «GRUB_CMDLINE_LINUX»: vim /etc/default/grub 12. Перепишем конфиг «GRUB» и установим его на наш диск sdb: grub2-mkconfig -o /boot/grub2/grub.cfg && grub2-install /dev/sdb 13. Убеждаемся, что uuid md0 и опция «rd.auto=1» точно записались: cat /boot/grub2/grub.cfg 14. Производим reboot машины и через bios boot меню выбираем диск с половинкой raid15. После удачной загрузки, переделываем sda в часть raid. Меняем id 83 на fd через fdisk, добавляем диск в raid и переустанавливаем «GRUB» на диск:
fdisk /dev/sda mdadm --manage /dev/md0 --add /dev/sda1 grub2-install /dev/sda После этого смотрим как собирается raid через /proc/mdstat и можно попробовать загрузится с первого диска.Ссылка и решение про баг: https://bugs.debian.org/cgi-bin/bugreport.cgi? bug=725759