Здравствуй, юный Linux админ. Если ты здесь, то тебе пришла задачка расширить RAID5 массив, собранный с помощью mdadm, добавив новые диски. Я тоже столкнулся с этим, погуглил, почитал, и засучил рукава. Основная проблема — сервер останавливать надолго нельзя, поэтому расширять массив будем на бою. Вторая сложность состоит в том, что первоначально RAID5 собирал не я, поэтому в текущей структуре массива нужно разобраться.
Установка дисков
Пришли заказанные диски:
SSD 7.68 TB Intel P4610 Series SSDPE2KE076T801
К массиву из 11 дисков буду добавлять ещё три. В RAID5 сейчас 10 дисков + 1 spare. Станет 13 дисков + 1 spare. Общий объём дисков больше 100 Тб, поэтому перестроение массива будет долгим.
В самой установке нет ничего сложного. Прикручиваем к дискам салазки, устанавливаем в сервер.
Перезагружаем сервер, чтобы диски определились.
Сбор сведений
Посмотрим текущее состояние массивов.
cat /proc/mdstat
Видим следующую картину:
md0 : active raid5 nvme9n1p1[1] nvme4n1p1[5] nvme1n1p1[7] nvme3n1p1[4] nvme6n1p1[2] nvme13n1p1[11] nvme0n1p1[0] nvme5n1p1[8] nvme7n1p1[6] nvme11n1p1[10](S) nvme2n1p1[3] 67511992320 blocks super 1.2 level 5, 512k chunk, algorithm 2 [10/10] [UUUUUUUUUU] bitmap: 5/56 pages [20KB], 65536KB chunk
Массив md0 состоит из 10 дисков, вернее разделов:
- nvme0n1p1[0]
- nvme9n1p1[1]
- nvme6n1p1[2]
- nvme2n1p1[3]
- nvme3n1p1[4]
- nvme4n1p1[5]
- nvme7n1p1[6]
- nvme1n1p1[7]
- nvme5n1p1[8]
- nvme13n1p1[11]
Все диски в состоянии U (Up). Есть один spare диск:
- nvme11n1p1[10](S)
Номера дисков перемешались после добавления.
Массив в состоянии active, всё в порядке. Детальную информацию можно посмотреть командой:
mdadm --detail /dev/md0
Подготовка дисков
Судя по названию "nvme5n1p1" в массив добавлены не сами диски, а созданные на них разделы, проверим. Выводим все NVMe диски со структурой в виде дерева:
lsblk | grep nvme
Видим, что новые три диска (на них нет разделов) называются:
- nvme8n1
- nvme10n1
- nvme12n1
Не буду выдумывать, также на новых дисках создам партиции и уже её буду добавлять в массив. Создаю партиции с помощью fdisk:
- nvme8n1p1
- nvme10n1p1
- nvme12n1p1
Расширение массива
Добавляем новые разделы в массив:
mdadm /dev/md0 -a /dev/nvme8n1p1
mdadm /dev/md0 -a /dev/nvme10n1p1
mdadm /dev/md0 -a /dev/nvme12n1p1
Операция быстрая.
mdadm --detail /dev/md0
Разделы добавились как spare.
Теперь расширяем массив:
mdadm -G /dev/md0 --raid-devices=13 --backup-file=/var/backup
Где raid-devices — новое количество активных дисков (не считая spare), а backup-file — файл с сохранённой структурой массива.
mdadm --detail /dev/md0
Статус массива active, resharping. 0% complete. Массив перестраивается, при этом активно используется базой, простоя нет.
Можно узнать скорость перестроения и время до окончания процесса:
cat /proc/mdstat
Осталось 1769 минут, показан процент завершения, скорость 70 мегабайт в секунду. На следующий день картина такая:
[========>............] reshape = 40.2% (3016229888/7501332480) finish=2064.7min speed=36203K/sec
Перестроение выполнено на 40%, скорость упала, т.к. днём нагрузка на базу больше. Жду завершения процесса. Нашёл в Интернете способы ускорить перестроение, но они мне не помогли и скорость осталась прежней, поэтому не буду про них писать.
Далее планирую расширение файловой системы:
e2fsck -f /dev/md0
resize2fs /dev/md0
Напишу как пройдёт.
P.S.
Забыл, что у меня файловая система XFS, поэтому resize2fs не сработал, но сработал xfs_growfs:
xfs_growfs /u01