Можно ли преобразовать btrfs RAID5 в RAID6 с теми же дисками без потери данных?

Можно ли преобразовать btrfs RAID5 в RAID6 с теми же дисками без потери данных?

Как преобразовать существующую конфигурацию RAID5 (с одинарной четностью) btrfs в конфигурацию RAID6 с двойной четностью при наличии достаточного свободного места на диске, используя те же диски и не выгружая данные?

По сути, это должно быть просто удаление диска и сохранение резервного диска, чтобы Btrfs перераспределила все данные на оставшиеся диски, а затем повторное добавление удаленного диска?

Так какой же процесс рекомендуется?

Я думал о чем-то подобном

btrfs device delete /dev/sdx /mnt/fs
btrfs balance start -dconvert=raid6 -mconvert=raid6 /mnt/fs
btrfs device add /dev/sdx /mnt/fs

Нужно ли мне вообще удалять и добавлять диск, или я могу просто преобразовать установку напрямую?

btrfs balance start -dconvert=raid6 -mconvert=raid6 /mnt/fs

решение1

https://www.howtoforge.com/a-beginners-guide-to-btrfs-p2

Это утверждает, что вы можете изменить уровень рейда на работающем массиве, предполагая, что у вас достаточно свободного места. Убедитесь, что вы используете последнее стабильное ядро ​​Linux.

Пример (по ссылке): btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

-dconvert — для данных

-mconvert — для метафайла (вы хотите, чтобы он был продублирован, поверьте мне)

/mnt — это место, где смонтирован том BTRFS. Вы можете сделать это без монтирования, но я не пробовал и хочу быть честным.

У вас есть raid0, raid1, raid5 и raid6. Если у вас достаточно свободного места, я полагаю, что это n-2 или количество дисков [свободное место] минус 2 для raid6. Хотя с BTRFS вы можете обойтись меньшим и вместо этого использовать данные для измерения. Возможно иметь функции, подобные raid6, с меньшим, чем приемлемое, количеством дисков, если вы храните небольшой объем данных. Возможно, но не рекомендуется.

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

решение2

RAID6 - Википедия

  • RAID5 требует 3+ дисков(n) с эффективностью пространства 1-1/n
  • RAID6 требует 4+ дисков(n) с эффективностью пространства 1-2/n

Общее пространство (приблизительное) массива размером 1 ТиБ и изменение (%) от RAID5 до RAID6:

  • 4 x 250 ГиБ ~ 1 ТиБ -> RAID5 ~ 768 ГиБ -> RAID6 ~ 512 ГиБ -> -50%
  • 5 x 200 ГиБ ~ 1 ТиБ -> RAID5 ~ 819,2 ГиБ -> RAID6 ~ 614,4 ГиБ -> -25%
  • 6 x 170 ГиБ ~ 1 ТиБ -> RAID5 ~ 853,3 ГиБ -> RAID6 ~ 682,6 ГиБ -> -20%

Вы можете изменить уровень RAID на работающем массиве, если у вас достаточно свободного места и дисков.

  • не удаляйте и не убирайте какие-либо диски из конечного массива
  • путем удаления -> добавления -> преобразования вы получите «двойную» балансировку
    • Во время удаления метаданные и фрагменты данных перераспределяются на оставшиеся диски, затем вы добавляете диск, который необходимо будет снова сбалансировать при преобразовании в RAID6.

Если вам необходимо добавить диск(и), добавьте их все перед балансировкой/конвертацией.

btrfs device add /dev/sdc /mnt
btrfs device add /dev/sdd /mnt

Фильтры балансировки - btrfs.wiki.kernel.org

Пример «конвертации» баланса btrfs по ссылке (обновлено):

btrfs balance start -dusage=90 -dconvert=raid6 -mconvert=raid6 /mnt

-dusage — это пороговое значение использования для балансировки фрагментов данных.

-dconvert — для данных

-mconvert — для метаданных

/mnt — это место, где смонтирован том BTRFS. Вы не можете сделать это без монтирования.

Данные и/или метаданные btrfs могут быть:

  1. одинокий
  2. рейд0
  3. рейд01
  4. рейд1
  5. рейд5
  6. рейд6
  7. рейд1c3
  8. рейд1c4

Можно использовать команды для приостановки, возобновления, отмены или получения статуса.

btrfs balance pause /mnt
btrfs balance resume /mnt
btrfs balance cancel /mnt
btrfs balance status -v /mnt

Предостережения

  1. В зависимости от объема данных на дисках восстановление может занять некоторое время.
  2. Существует вероятность сбоя балансировки и повреждения массива и/или перевода его в нестабильный режим «только чтение».
  3. Перед конвертацией сделайте резервную копию данных.
  4. Убедитесь, что вы используете последнюю стабильную версию ядра Linux.

Связанный контент