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

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, работает.

Теги

 

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

Резервное копирование Atlassian JIRA через GUI

Резервную копию Atlassian JIRA можно сделать в Администрирование > Система > Импорт и Экспорт > Резервное копирование. Здесь вы сможете сделать резервное копирование содержимого базы данных в доступном формате XML.

Теги

Bitvise SSH Server для Windows

Bitvise SSH Server (WinSSHD) — SSH-сервер, разработанный специально для Windows. Позволяет на Windows машине организовать сервер Secure Shell Handling 2 (SSH2) и Secure FTP (SFTP). Отличается большим количеством настроек. Бесплатно для частного использования при выборе версии Personal Edition, но с ограничениями.

Haproxy на Ubuntu 20.04 LTS

Установим и настроим балансировщик haproxy на Ubuntu 20.04 LTS. Балансировать будем в режиме roundrobin порт TCP 25 на порты localhost TCP 26, 27, 28, 29, 30. На этих портах работает postfix в режиме multi-instance, сделаем единый 25 порт, который будет балансировать нагрузку между экземплярами почтового сервера.

Теги