Конвертировать btrfs RAID10 в RAID0

Итак, я начал получать ошибки файловой системы на моем btrfsck массиве btrfsck , и btrfsck безуспешно восстанавливал их (зацикливался на бесконечный цикл, btrfsck и btrfsck же выходные дни).

Подавляющее большинство данных по-прежнему читаемы, поэтому восстановление файловой системы представляется наиболее разумным способом продвижения вперед.

Учитывая, что под рукой нет запасных дисков, план до сих пор выглядит примерно так:

  1. Снижение избыточности и «преобразование» RAID10 в RAID0, освобождая два диска;
  2. Отформатируйте заново освобожденные диски заново;
  3. Скопируйте читаемые данные из старой файловой системы в новую ( rsync / btrfs send | btrfs receive );
  4. Nuke старой файловой системы;
  5. Добавьте старые диски и восстановите баланс новой файловой системы, вернув ее к RAID10.

Вопрос в том, как сделать первый шаг. Как я понимаю, btrfs device delete здесь не подходит, потому что оно будет пытаться удовлетворить профиль RAID1. И как определить, какие два диска могут быть удалены, чтобы минимизировать объем перетасовки данных, который потребуется для этого?

Чтобы преобразовать RAID10 в RAID0:

  1. Запустите man btrfs-balance чтобы ознакомиться с командой, которая выполнит основную часть работы. Существуют некоторые предупреждения о версии ядра, а также предупреждения, связанные с тем, используете ли вы смешанные чанки или нет.
  2. Используйте btrfs balance start -mconvert=raid0 -dconvert=raid0 /path для преобразования метаданных и данных файловой системы (системные блоки также будут преобразованы). Как указывается в руководстве, для раздельного преобразования требуется много свободного места на каждом диске, поэтому вы можете преобразовать метаданные и данные по отдельности.
  3. Используйте btrfs device delete /dev/somedevice для удаления рассматриваемого устройства.

Что касается определения, какие диски следует удалить в зависимости от использования, вы можете использовать btrfs fi usage /path use btrfs fi usage /path