Расширение дзеркального программного RAID1 масиива

Всем известно: один бекап - хорошо, а два - всё же лучше. А постоянно обновляющийся бекап - это вообще отлично. Наверное поэтому в некотором смысле популяным является использование массивов RAID1. Суть такова - есть два винта и на каждом из них хранится одинаковая информация. В случае выхода из строя одного винта, второй останется поддержать массив (только нужно не забыть заменить вылетевший винт). Такой RAID1 можно организовать на аппаратном уровне, за счёт RAID-контроллера, но так как при использовании аппаратного контроллера к винтам ставятся особые требования, то есть смысл делать это программным путём (конечно же всё заботы по поддержанию массива лягут на ядро ОС). В Linux это сделать как два пальца. Но вот когда это сделано, иногда появляется надобность добавить в этот массив ещё один винт (см. первое предложение заметки)...

Так как классическая конфигурация программного RAID1 такова, что на всех винтах одинаковая разметка и зеркалируются просто разделы, то рассмотрим именно этот случай.

Шаг 1. Копируем разметку винта

В копировании разметки нам поможет программа sfdisk. Для начала просморим вывод:

# sfdisk -d /dev/sda

Если фатальных ошибок нет - это очень хорошо. Хотя если они есть - лучше ещё раз проверьте правильность ввода команды. Винт /dev/sda тут указан условно, как источник подойдёт любой, участвоющий в рассматриваемом RAID-массиве. Когда всё хорошо, можно копировать разметку:

# sfdisk -d /dev/sda | sfdisk /dev/sdc

Где /dev/sdc - новый винт, который мы будем добавлять. Копирование не отнимет много времени, так как это только разметка. Проверим, что всё нормально:

# fdisk -l /dev/sdc

В выводе этой команды мы увидим те же самые разделы, что и на исходном (/dev/sda) винте.

Шаг 2. Присоединение разделов.

Этот шаг нужно повторить для всех разделов на винте. Покажу пример на одном. Допустим у меня есть массив /dev/md9, который состоит из разделов /dev/sda9 и /dev/sdb9. Логично, что сюда нужно присоединить раздел /dev/sdc9 (напомню: разметку мы копировали, а значит номера разделов совпадут). Собственно присоединяем (используем mdadm):

# mdadm /dev/md9 --add /dev/sdc9
# mdadm --grow /dev/md9 --raid-devices=3

Где --raid-devices=3 - указание расширить массив на три устройства. Если присоединяеться четвертый, пятый и тп раздел - исправьте цифру на нужную Вам. Раздел мы присоединили, как раз началась синхронизация разделов (точнее перелив информации на /dev/sdc9). За этим процессом можем понаблюдать, если нужно:

# watch cat /proc/mdstat

Если массив Вы создавали сами, то знаете, что там искать. Для тех, кто в танке: следим за полоссой прогресса и индикатором процентов. Этот процесс лучше подождать и ничего не делать, пока массив не синхронизируется. Когда синхронизация закончена - нажимаем Ctrl+C и идём дальше.

Шаг 3. Правка конфигурации

Если в /etc/mdadm.conf у Вас массивы прописано по UUID то править ничего не нужно вовсе. Ну а если всё же разделы там явно прописаны (секция devices=/dev/sda9,/dev/sdb9), то допишите туда нужные разделы. И не забудьте перегенерировать initramfs если у Вас сборка массива начинается ещё на раннем этапе загрузки.

Вот так мы расширили массив и заодно увеличили надёжность.