Вопрос: Конвертировать Linux-рейд из raid5 в raid6


В настоящее время у меня есть файловый сервер с 3 1.5TB дисками в массиве RAID5. Поскольку он в значительной степени заполнен, у меня есть три дополнительных диска (также по 1,5 ТБ).

Теперь я хотел бы переключиться на RAID6, так как достаточно места на 6 ТБ, и я хотел бы иметь повышенную безопасность raid6. Хотя у меня есть полная резервная копия, т. Е. Я могу просто создать новый массив и восстановить резервную копию - я бы предпочел переключиться без восстановления резервной копии. Возможно ли это, и если да, то как?


11
2018-01-18 21:15


Источник




Ответы:


Терминология, которую вы ищете, - это «миграция уровня RAID».

В соответствии с это, возможно. Я не делал этого, но процедура выглядит так, как будто вы должны добавить новый диск в виде hotspare к существующему массиву, а затем использовать mdadm для обновления уровня рейда и количества устройств рейдов.

Для этого вам понадобится недавний mdadm: mdadm-2.6.9 (например, centos 5.x), похоже, не поддерживает его, но mdadm-3.1.4 (например, ubuntu 11.10):

   Grow   Grow (or shrink) an array, or otherwise reshape it in some way.  Currently supported growth options including changing the active size of component devices and
          changing the number of active devices in RAID levels 1/4/5/6, changing the RAID level between 1, 5, and 6, changing the chunk size and  layout  for  RAID5  and
          RAID5, as well as adding or removing a write-intent bitmap.

EG, сначала добавьте новое устройство hotspare / dev / sdg в массив RAID5:

$ sudo mdadm --manage /dev/md/md0 --add /dev/sdg

Затем преобразуйте в массив RAID6 и переведите его в чистое состояние. Устройства -raid 4 сообщают вам, сколько дисков у вас есть в новом массиве.

$ sudo mdadm --grow /dev/md/md0 --raid-devices 4 --level 6

Я понятия не имею, насколько это будет быстро. По моему опыту выполнения миграций уровня RAID на аппаратных RAID-контроллерах, быстрее было создать новый массив с нуля и восстановить резервную копию.


9
2018-01-18 21:55



Миграция RAID 5 в RAID 6 имеет две медленные операции - повторное чередование данных по дискам и вычисление второго значения четности для дополнительного диска четности. Вытеснение / восстановление, вероятно, займет столько же времени, сколько и размер. - Andrew
Для этого также требуется определенная версия ядра. Это нашло трудный путь. - Sirex
Поскольку я нахожусь в gentoo, оба ядра и mdadm - это довольно недавние версии, поэтому это не должно быть проблемой. - ThiefMaster
--raid-devices 4? Вы уверены, что это не 6? Из того, что я читал в man-странице, это количество активных не запасных устройств, а в RAID6 нет «запасного» устройства. - ThiefMaster
@ThiefMaster: если вы добавили три диска, это будет 6, а не 4, - Sven♦


Обязательное предупреждение: план отказа. Сохраните резервную копию и учитывайте возможность простоя. 

Кроме того, проверьте его на виртуальной машине или что-то подобное раньше, это из моих заметок, и я не делал этого в течение длительного времени. Это может быть неполным.

  1. Вам нужно будет add диски в массив:

    mdadm --manage /dev/md0 --add /dev/sdf  
    

    Сделайте это для каждого из трех дисков и соответствующим образом замените имена устройств.

  2. Вырасти массив:

    mdadm --grow /dev/md0 --level 6 --raid-devices 6 
    

7
2018-01-18 21:55





Используйте --backup-file , поэтому в случае потери мощности вы можете продолжать наращивать устройство после перезагрузки и не обеспечивать потерю данных.

mdadm --grow /dev/md0 --level=raid6 --raid-devices=6 --backup-file=/root/mdadm5-6_backup_md0

Файл резервной копии должен быть сохранен в файловой системе, не являющейся частью массива, который вы собираетесь выращивать.

--backup-file= необходимо, когда --grow используется для увеличения количества RAID-устройств в RAID5 или RAID6, если нет доступных доступных запасных устройств, или для сокращения, изменения уровня RAID или макета. См. Раздел «РЕЖИМ РОСТА» ниже в разделе «ИЗМЕНЕНИЯ RAID-УСТРОЙСТВ». Файл должен храниться на отдельном устройстве, а не на массиве RAID, который будет изменен.

--continue является дополнением к --freeze-reshape вариант для сборки. Это необходимо, когда --grow операция прерывается, и она не перезапускается автоматически из-за --freeze-reshape использование во время сборки массива. Эта опция используется вместе с -G , ( --grow ) команда и устройство для ожидающего изменения формы для продолжения. Все параметры, необходимые для продолжения изменения, будут считаны из метаданных массива. Если начальная --grow команда требовала --backup-file= параметр, который будет установлен, опция продолжения потребует наличия точно такого же файла резервной копии.

Любой другой параметр, переданный вместе с --continue опция будет проигнорирована.


1
2017-08-12 04:03