Можно ли преобразовать 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, с меньшим, чем допустимое, количеством дисков. Возможно, но не рекомендуется.
Также обратите внимание, что это займет некоторое время в зависимости от того, сколько данных у вас есть на дисках. Существует также небольшая вероятность того, что баланс выйдет из строя и приведет к полному уничтожению массива или переводу его в нестабильный режим только для чтения. Как всегда, сохраняйте резервные копии.
- Для 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 могут быть:
- одинокий
- рейд0
- рейд01
- рейд1
- рейд5
- рейд6
- рейд1c3
- рейд1c4
Можно использовать команды для паузы, возобновления, отмены или получения статуса.
btrfs balance pause /mnt
btrfs balance resume /mnt
btrfs balance cancel /mnt
btrfs balance status -v /mnt
Предостережения
- В зависимости от того, сколько данных у вас на дисках, балансировка занимает время.
- Существует вероятность того, что баланс выйдет из строя и повредит массив и/или переведет его в нестабильный режим только для чтения.
- Резервное копирование данных перед конвертацией.
- Убедитесь, что вы используете последнюю стабильную версию ядра Linux.