Можно ли преобразовать 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

2 ответа

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, с меньшим, чем допустимое, количеством дисков. Возможно, но не рекомендуется.

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

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%

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

  • не удаляйте и не удаляйте любые диски, которые вы хотите в конечном массиве
  • удалив -> добавив -> преобразовав, вы получите «двойную» балансировку
    • во время удаления/удаления метаданные и фрагменты данных перераспределяются на оставшиеся диски, после чего вы добавляете диск, который необходимо будет снова сбалансировать при преобразовании в 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.
Другие вопросы по тегам