0

Переход на soft raid

Переход на soft raid с минимизацией простоя.

Система Ubuntu 12 но принципиальных отличий быть не может.

Сначала нужно подключить дополнительный HDD (возможно, нужна будет перезагрузка, если нет возможности подключить «на горячую»)

В моем случае второй винт определился как /dev/sdb

Создаю на втором hhd файловую систему:
# fdisk /dev/sdb

Там по пунктам все расписано. Если есть сомнения читаем man.

Основной раздел на весь диск.
Тип файловой системы fd Linux raid autodetect
Теперь устанавливаю сам soft-raid — madadm:
# apt-get install mdadm

Мой следующий шаг — создание деградированного массива из одного второго диска:
# mdadm --create /dev/md0 --metadata=1.2 --level=1 --raid-devices=2 missing /dev/sdb1

Для того, что бы загрузка с деградированного массива прошла без рукоприкладства к локальной консоли, надо посетить пару интересных мест.

  1. dpkg-reconfigure mdadm, отвечаю, что надо загружаться с деградированного массива
  2. опцию bootdegraded=true дописываю в опции загрузки в /etc/default/grub

Следующим пунктом создаю новую файловую систему на /dev/md0
# fdisk /dev/md0

Создаю аналогичные первому диску размреры разделов.
В моем случае это корень и swap.

Создаю разделы на RAID массиве:
# mkfs.ext4 /dev/md0p1
# mkswap /dev/md0p2

Монтирую корневой раздел RAID в /mnt
# mount /dev/md0p1 /mnt

В примонтированный корневой раздел заливаю данные с первого диска:
# rsync -axu / /mnt/

Теперь нужно сделать chroot в примонтированный корневой раздел:
# mount --bind /proc /mnt/proc && mount --bind /dev /mnt/dev && mount --bind /sys /mnt/sys && mount --bind /run /mnt/run
# chroot /mnt

В chroot правлю /etc/fstab для запуска с soft-raid:
/# ls -l /dev/disk/by-uuid |grep md >> /etc/fstab
/# vim /etc/fstab

Подставляю новые UUID
В chroot обновляю GRUB на RAID и устанавливаю GRUB на второй диск(тот, что в RAID)
/# update-grub
/# grub-install /dev/sdb.

exit — выход из chroot.

Еще раз сливаю изменения с / первого диска на примонтированый /, обновляю grub
# rsync -axu / /mnt/
# update-grub

В /etc/default/grub GRUB_DEFAULT=4 для загрузки с RAID по умолчанию

# update-grub
# reboot

Вот тут самый ответственный момент. После этого, если все прошло правильно, система запуститься с подготовленного soft-raid

Если не запустилась — значит ехать и смотреть что там происходит.. Либо не удалось запуститься со второго диска, либо система сообщила, что с массивом что-то не так и ждет нажатия enter.

Проверить это можно, например, по содержанию /etc/fstab (Предварительно запомнив/записав UUID’ы )

Запустившись с массива подготавливаю первый диск
# fdisk /dev/sda
# grub-install /dev/sda
# mdadm --manage /dev/md127 --add /dev/sda1

Наблюдаю за восстановлением массива
# watch cat /proc/mdstat

Не считая подключения винта, можно обойтись одной перезагрузкой с минимальной потерей данных.

В финале следует убедиться что, на обоих винтах актуальный grub.

Все действия крайне рекомендую протестировать в виртуальной среде!

Alexey Egorychev

Alexey Egorychev

FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.