Конвертировать Linux raid из raid5 в raid6

11

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

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

ThiefMaster
источник

Ответы:

9

Нужная вам терминология - «Миграция уровня RAID».

Согласно этому , это возможно. Я не сделал этого, но процедура выглядит так, как будто вы должны добавить новый диск в качестве горячей точки к существующему массиву, а затем использовать 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.

Например, сначала добавьте новое горячее устройство / dev / sdg в массив RAID5:

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

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

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

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

Дэниел Лоусон
источник
3
Миграция с RAID 5 на RAID 6 состоит из двух медленных операций: повторное чередование данных на дисках и вычисление второго значения четности для диска с дополнительной четностью. Очистка / восстановление, вероятно, займет столько же времени, сколько и изменение размера.
Андрей
1
Это также требует определенной версии ядра. Выяснил это трудным путем.
Sirex
Так как я нахожусь на gentoo, и мое ядро, и mdadm - довольно свежие версии, так что это не должно быть проблемой.
ThiefMaster
1
Ссылка, на которую вы ссылаетесь, была написана мной. Обратите внимание: я на самом деле не читал документы о том, как на самом деле это сделать. Я просто создал виртуальную машину с 30 дисками (что-то в этом роде) и начал возиться. Так что возьмите все посты с крошкой соли, это просто мозговая штурм ...
Мартин М.
1
@ServerHorror: отметил. Более широкий Интернет, включая страницу руководства mdadm, утверждает, что миграция на уровне рейда возможна. :)
Даниэль Лоусон
7

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

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

  1. Вам понадобятся addдиски для массива:

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

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

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

    mdadm --grow /dev/md0 --level 6 --raid-devices 6 
    
Свен
источник
3

Воспользуйтесь этой --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опцией, будет игнорироваться.

Guggi
источник