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

mdadm — конвертация RAID1 в RAID10

Linux

У меня есть сервер с двумя дисками, собранными с помощью mdadm в RAID1. В какой-то момент времени места стало не хватать и были куплены ещё два диска, чтобы расширить массив в виде RAID10.

Забавно, но mdadm не позволяет просто сконвертировать RAID1 в RAID10. Но если пойти непростым путём, то сделать это можно. Идея простая. Конвертируем в два этапа: RAID1 → RAID0 → RAID10. Всё на лету.

Настоятельно не рекомендую этот способ на боевых системах по двум причинам:

  1. RAID10 у меня потом рассыпался через неделю. Это, возможно, из-за того, что первоначальный массив был собран в RAID1 с помощью программного RAID-контроллера PERC S140. А может и просто такая конвертация содержит логические ошибки. Или случайность.
  2. Chunk Size у RAID0 равен 8K, после конвертации в RAID10 значение останется таким же, что нежелательно для больших массивов.

Лучше всё разобрать и создать RAID10 с нуля. Это, конечно, потребует простоя сервиса, резервного копирования и восстановления данных.

Итак, мы имеем массив /dev/md127. Посмотрим детали:

mdadm --detail /dev/md127

raid

Уровень массива RAID1. В массиве два диска:

  • /dev/nvme2n1
  • /dev/nvme3n1

На сервере ещё есть два диска, которые будут использованы в итоговом массиве:

  • /dev/nvme0n1
  • /dev/nvme1n1

Конвертируем массив в RAID0:

mdadm --grow /dev/md127 --level=0 --raid-devices=2

mdadm

mdadm: level of /dev/md127 changed to raid0

Посмотрим детали:

mdadm --detail /dev/md127

mdadm

Несмотря на опцию --raid-devices=2 в массиве остался только один диск. Это ожидаемо, потому как превратить RAID1 в RAID0 можно просто откинув один диск, что мы и видим в результате. У нас и получился RAID0 из одного диска /dev/nvme2n1.

Конвертируем массив в RAID10, добавляя недостающие три диска:

mdadm --grow /dev/md127 --level=10 --raid-devices=4 --add /dev/nvme3n1 /dev/nvme0n1 /dev/nvme1n1

mdadm

mdadm: level of /dev/md127 changed to raid10

Вторая надпись мне непонятна:

raid_disks for /dev/md127 set to 5

Почему пять-то? Непонятно. В любом случае, массив сконвертировался. Посмотрим детали:

mdadm --detail /dev/md127

mdadm

Уровень массива теперь RAID10, три диска были добавлены как SPARE, один из них перестраивается. Дожидаемся окончания процесса перестроения.

mdadm

Массив перестроился. Замечу, размер массива всё ещё такой же, как у RAID1. Пришло время его увеличить:

mdadm --grow /dev/md127 --level=10 --raid-devices=4
mdadm --detail /dev/md127

mdadm

Теперь SPARE дисков нет, идёт перестроение.

mdadm

После перестроения размер массива увеличился. Можно расширять файловую систему, но это уже мелочи.

Послесловие

Снова повторюсь, что через неделю массив рассыпался, стал тормозить и отображаться как RAID0, при этом один диск из массива выпал. Не знаю с чем это связано, с такой сложной конвертацией или с чем-то ещё, но на боевых системах больше так конвертировать массивы не буду.

Разобрал всё и снова собрал сразу как RAID10, работает.

Теги

 

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

Windows 10 — генерация DKIM ключей с помощью подсистемы Linux

Воспользуемся подсистемой Linux и сгенерируем DKIM ключи в ОС Windows 10. DomainKeys Identified Mail (DKIM) — метод e-mail аутентификации, разработанный для обнаружения подделывания сообщений, пересылаемых по email. Метод дает возможность получателю проверить, что письмо действительно было отправлено с заявленного домена.