Перейти к основному содержанию

mdadm — добавляем диски в RAID5 массив

Linux

Здравствуй, юный Linux админ. Если ты здесь, то тебе пришла задачка расширить RAID5 массив, собранный с помощью mdadm, добавив новые диски. Я тоже столкнулся с этим, погуглил, почитал, и засучил рукава. Основная проблема — сервер останавливать надолго нельзя, поэтому расширять массив будем на бою. Вторая сложность состоит в том, что первоначально RAID5 собирал не я, поэтому в текущей структуре массива нужно разобраться.

Установка дисков

Пришли заказанные диски:

SSD 7.68 TB Intel P4610 Series SSDPE2KE076T801

ssd

ssd

К массиву из 11 дисков буду добавлять ещё три. В RAID5 сейчас 10 дисков + 1 spare. Станет 13 дисков + 1 spare. Общий объём дисков больше 100 Тб, поэтому перестроение массива будет долгим.

В самой установке нет ничего сложного. Прикручиваем к дискам салазки, устанавливаем в сервер.

ssd

Перезагружаем сервер, чтобы диски определились.

Сбор сведений

Посмотрим текущее состояние массивов.

cat /proc/mdstat

mdadm

Видим следующую картину:

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 дисков, вернее разделов:

  1. nvme0n1p1[0]
  2. nvme9n1p1[1]
  3. nvme6n1p1[2]
  4. nvme2n1p1[3]
  5. nvme3n1p1[4]
  6. nvme4n1p1[5]
  7. nvme7n1p1[6]
  8. nvme1n1p1[7]
  9. nvme5n1p1[8]
  10. nvme13n1p1[11]

Все диски в состоянии U (Up). Есть один spare диск:

  1. nvme11n1p1[10](S)

Номера дисков перемешались после добавления.

Массив в состоянии active, всё в порядке. Детальную информацию можно посмотреть командой:

mdadm --detail /dev/md0

mdadm

Подготовка дисков

Судя по названию "nvme5n1p1" в массив добавлены не сами диски, а созданные на них разделы, проверим. Выводим все NVMe диски со структурой в виде дерева:

lsblk | grep nvme

mdadm

Видим, что новые три диска (на них нет разделов) называются:

  • 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

mdadm

Разделы добавились как spare.

Теперь расширяем массив:

mdadm -G /dev/md0 --raid-devices=13 --backup-file=/var/backup

Где raid-devices — новое количество активных дисков (не считая spare), а backup-file — файл с сохранённой структурой массива.

mdadm --detail /dev/md0

mdadm

Статус массива active, resharping. 0% complete. Массив перестраивается, при этом активно используется базой, простоя нет.

Можно узнать скорость перестроения и время до окончания процесса:

cat /proc/mdstat

raid

Осталось 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

mdadm

Теги

 

Похожие материалы

Seafile — установка на Ubuntu 18.04 LTS

Seafile — это личное облачное хранилище для хранения данных в стиле Dropbox. Сегодня мы развернём это хранилище на виртуальном сервере. В качестве гипервизора у нас ESXi 6.7 Update 1.