Добавить в корзинуПозвонить
Найти в Дзене

mdadm — конвертируем RAID1 в RAID10

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

У меня есть сервер с двумя дисками, собранными с помощью 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
-2

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

  • /dev/nvme2n1
  • /dev/nvme3n1

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

  • /dev/nvme0n1
  • /dev/nvme1n1

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

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

mdadm: level of /dev/md127 changed to raid0

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

mdadm --detail /dev/md127
-4

Несмотря на опцию --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
-5

mdadm: level of /dev/md127 changed to raid10

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

raid_disks for /dev/md127 set to 5

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

mdadm --detail /dev/md127
-6

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

-7

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

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

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

-9

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

Послесловие

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

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

Источник:
https://internet-lab.ru/mdadm_raid1_to_raid10

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь