Программный RAID в Linux. Расширение массива






Как известно, дискового пространства много не бывает и, рано или поздно, многие сталкиваются с необходимостью добавления в массив новых дисков. О том, как это делается при использовании драйвера md — в сегодняшней заметке.




Расширение массива, которое можно проводить для всех уровней RAID, кроме нулевого, состоит из двух (трёх для RAID 4/5) этапов: добавления нового устройства, расширения массива (и, для RAID 5/6, расширения файловой системы). Обо всём по порядку.

Добавление нового устройства

Допустим, у нас имеется массив RAID-5 общей ёмкостью 16GiB, состоящий из трёх устройств, ёмкостью по 8 GiB каждое:

и к нему понадобилось добавить новый диск, находящийся за файлом /dev/sde, ёмкостью также 8 GiB. На устройстве /dev/md0 в данный момент у нас расположена файловая система ext4, размеров 16 GiB. Целью добавления нового устройства является увеличение размера файловой системы.

Добавить новое устройство к массиву очень просто:

Посмотрим на состояние массива:

Как видим, диск /dev/sde добавился как запасной, то есть, он зарезервирован для массива на случай выхода из строя одного из дисков, и не используется. Теперь. когда в массиве есть свободное (неактивное) устройство, можно расширить массив:

Обратите внимание на опцию --backup-file. Значением этой опции является путь к файлу, в который записываются критически-важные данные, пока массив расширяется. Содержимое этого файла пригодится вам в случае, если вдруг в момент расширения массива процесс будет внезапно прерван отключением питания сервера или чем-то подобным. Логично этот файл сохранять на диске, который не является частью расширяемого массива :)

Посмотрим на состояние массива теперь:

Как видим, ёмкость массива осталась (пока) прежней, количество активных устройств увеличилось, как мы и просили, статус массива сменился на recovering, поскольку драйвер md занялся перестроением массива:

После того, как процесс расширения будет завершён, посмотрим на размер массива:

чего мы, собственно, и ожидали. Однако, как обстоят дела с файловой системой?

Как видно, файловая система осталась прежнего размера, поскольку ей ничего неизвестно о наших операциях с массивом.

Расширение файловой системы

Чтобы изменить размер файловой системы ext2/¾, необходимо воспользоваться утилитой resize2fs, которая умеет изменять размер ФС на лету, если у вас ядро >= 2.6. Вызванная без параметров, утилита расширит файловую систему до максимально возможного размера:

Умножив 6290304 блока на 4 KiB, получим 25162416 KiB или же 24 GiB, что соответствует размеру массива.