...

пятница, 16 января 2015 г.

[Из песочницы] 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 меню выбираем диск с половинкой raid

15. После удачной загрузки, переделываем 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 и можно попробовать загрузится с первого диска.

Ссылка и решение про баг:

http://ift.tt/1CeLe9P


Recommended article: Chomsky: We Are All – Fill in the Blank.

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий