Btrfs поверх mdadm raid10 или btrfs raid10 на голых устройствах?

9

У меня RAID10 под управлением mdadmи у меня есть файловая система EXT4 поверх него. Тем не менее, мне нравится BTRFS и я хотел бы преобразовать файловую систему EXT4 в BTRFS, но я думал о производительности и удобстве обслуживания. Для примера с BTRFS я не могу легко увидеть состояние, когда я удаляю / добавляю другой диск в массив, как я могу с помощью mdadm (или, возможно, я просто не знаю, как - я искал документы BTRFS и не мог найти это ).

Итак, по вашему опыту, какой выбор лучше:

  1. Просто конвертировать файловую систему EXT4 и позволить mdadm управлять RAID10?

  2. Чтобы избавиться от mdadm и позволить BTRFS все делать?

DejanLekic
источник

Ответы:

11

Пусть Btrfs сделает все.

Во-первых, Btrfs имеет свой собственный встроенный код зеркалирования, который может быть умнее madm.

Конечно, если диск выходит из строя в зеркальной паре в madm raid10, вы можете заменить плохой диск и продолжить свою жизнь (хотя и после очень сложного набора команд оболочки). Проблема в том, что если ваш диск выходит из строя немного мягче: если несколько блоков просто возвращают неправильные биты вместо того, чтобы выдавать соответствующие коды ошибок для плохого блока, то при чтении данных вы случайным образом получите неверные данные. Btrfs умнее этого: он проверяет контрольные суммы каждого бита данных. Честно говоря, я не знаю, правильнее ли говорить «каждый узел BTree» или «каждый блок», но дело в том, что когда он читает некоторые данные из зеркального массива, он проверяет контрольную сумму, прежде чем вернуть ее вашему Пользовательский процесс. Если контрольная сумма не совпадает, она сначала обращается к другому зеркалу в массиве, и если это дает правильную контрольную сумму,

В Btrfs wiki специально упоминается ваш вопрос :

Если бы Btrfs полагался на устройство отображения или MD для зеркального отображения, он не смог бы разрешить ошибки контрольной суммы путем проверки зеркальной копии . Нижние уровни не знают контрольной суммы или гранулярности блоков файловой системы, и поэтому они не могут проверить возвращаемые данные.

Наконец, даже без этого существенного преимущества рабочий процесс командной строки для работы с удаленными или добавленными устройствами Btrfs очень прост. Я даже не уверен, что смог бы получить правильные команды оболочки degraded-mount-then-fix-your-filesystem, но для Btrfs это очень четко задокументировано на странице нескольких устройств :

mount -o degraded /dev/sdb /mnt
btrfs device delete missing /mnt

На этом этапе, если у вас достаточно места на оставшихся дисках, вы всегда можете просто btrfs rebalanceи покончить с этим; не нужно заменять зеркало, как вам абсолютно необходимо сделать с Madm! И если вы хотите заменить его, вы можете сделать в btrfs device addпервую очередь.

глиф
источник
3

BTRFS все еще является экспериментальной, и вы можете получить «интересные» функции, если что-то случится. Если вы действительно хотите / хотите запустить btrfs, было бы намного безопаснее запустить его поверх программного рейда, чем просто запустить его напрямую. Когда btrfs созревает и выходит в производство, это может быть уже не так.

Waxhead
источник
Около года назад я экспериментировал с настройкой btrfs на виртуальной машине. Я смог последовательно заблокировать ядро ​​(!), Связавшись с командой rebalance. Время шло, и, надеюсь, это было исправлено.
Эйвери Пэйн