Нужен ли RAID1 или аналогичный для btrfs / ZFS для защиты от гниения?

1790
user333556

Я использую файловый сервер с программным обеспечением Linux raid, настроенным как raid6. В качестве файловой системы я выбрал btrfs. Однако я не использую собственную реализацию raid6 от btrfs, так как она пока не очень стабильна. В общем, я использую рейд на уровне блоков вещей. Кроме того, я делаю резервные копии в другом месте действительно важных данных. Наконец, я подключил ИБП к серверу для защиты от потери питания и скачков напряжения.

Мои вопросы:

  1. Я знаю, что raid6 дает довольно хорошую защиту от сбоя жесткого диска, но действительно ли btrfs обнаружит гниль бит и исправит ее? Если да, то как это возможно без файловой системы raid1?

  2. Пройдет ли время от времени md блок raid6, чтобы найти и исправить ошибки? Нужно ли планировать это?

  3. Если я сделал что-то не так, что вы посоветуете сделать вместо этого, если я хочу иметь хорошую защиту от сбоя данных и гниения?

5

3 ответа на вопрос

4
jlliagre

1: In your configuration, btrfs should detect data corruption but won't correct it as there is no data redundancy as far as btrfs is concerned.

2: RAID6 doesn't detect nor reliably protect against bit corruption. It only protects against disk failure and in some cases might detect unused still bad blocks.

3: If btrfs RAID6 is not ready, you might consider either btrfs mirroring or ZFS RAIDZ2.

(Отвечая на вопрос, который исчез: защитит ли RAIDZ6 от гниения) Да, это сделано специально. Существует риск повреждения из-за переворачивания памяти. Полная целостность данных требует оперативной памяти ECC и рекомендуется, по крайней мере, для производственных систем. Кстати, это RAIDZ2, а не RAIDZ6. jlliagre 9 лет назад 1
4
basic6

BTRFS RAID-6 (хотя и пока еще экспериментальный) на самом деле довольно стабилен. Текущая версия даже исправляет многие типичные ошибки, включая замену неисправного / отсутствующего диска.

Как и ZFS, BTRFS выполняет контрольное суммирование, что означает, что вы всегда можете (и вам следует периодически) запускать скраб для проверки ваших данных. Если данные (данные или метаданные) на диске повреждены, BTRFS сможет обнаруживать ошибки, а при наличии избыточности (с помощью BTRFS RAID-6) он может исправить поврежденные файлы. После этого он будет знать, правильны ли восстановленные файлы, потому что у него есть контрольные суммы.

Классические (аппаратные) системы RAID, включая MD (программный) RAID, не имеют контрольных сумм. Эти системы полагаются только на четность, поэтому неудачное сочетание ошибок на нескольких дисках вполне может привести к повреждению. Поскольку контрольных сумм нет, система RAID (например, md) не сможет проверить, что все ошибки исчезли после очистки (т. Е. Что файлы правильные). Есть примеры (также некоторые видео), которые демонстрируют повреждение данных в классической системе RAID.
Важно получить уведомление, как только будет обнаружена первая ошибка четности, и устранить проблему как можно скорее (очистить). Кроме того, поскольку четность является единственным (не очень надежным) способом для системы RAID, чтобы узнать, в порядке ли ваши данные, следует использовать резервные копии батареи, чтобы предотвратить потерю всех этих ценных данных четности в дыру для записи при отключении питания. ,

Теперь, если вы используете продвинутую файловую систему, такую ​​как BTRFS, которая выполняет контрольное суммирование как единую файловую систему (без избыточности) поверх тупой системы RAID-6, эта система RAID должна обнаруживать и исправлять ошибки, потому что однажды слишком много ошибок повредило Система RAID, BTRFS НЕ сможет их исправить. Он обнаружит ошибки и поможет вам решить, что восстанавливать из резервной копии, сообщив, какие файлы (пути) повреждены. Но в противном случае было бы слишком поздно к тому времени. Вот почему эта установка может быть не очень хорошей идеей.

Если вы используете BTRFS так, как это предполагается, создав файловую систему BTRFS RAID-6 (без MD RAID) с прямым доступом к вашим дискам, она сможет надежно исправлять ошибки и будет знать, действительно ли ошибки исчезли. потому что у него есть контрольные суммы. Он сообщит вам, на каких дисках произошли эти ошибки, чтобы вы знали, какой диск неисправен (вы можете заменить его с помощью команд btrfs). Дело в том, что независимо от того, поврежден ли диск или нет его, и нужно ли его заменить или если диск частично поврежден (потому что он скоро умрет), BTRFS будет надежно обнаруживать ошибки. Конечно, периодические операции очистки так же важны, как и в других системах RAID, для обнаружения тихого повреждения (подсказка: cronjob ).

Итак, опять же, BTRFS RAID-6 все еще считается экспериментальной, но благодаря наличию контрольных сумм он уже предлагает надежный способ обнаружения (а затем исправления) ошибок. Он экспериментальный, поэтому в некоторых случаях может привести к сбою, тогда вам следует попробовать более новую версию ядра, которая устраняет многие проблемы с BTRFS. Будьте в курсе вашего ядра (4.3 на момент написания, не используйте ничего более старого, чем это для RAID-6). Но типичные сценарии использования RAID (просто хранение большого количества данных и в какой-то момент замена диска - отказ нескольких дисков может отличаться) уже работают с BTRFS.


Вы отметили свой вопрос с помощью . ZFS не входит в ядро ​​Linux, поэтому его придется устанавливать вручную - порт ZFSonLinuxработает очень хорошо. Может потребоваться переустановить его или сделать другое исправление после установки новой версии ядра, но это сейчас не важно. Конечно, есть некоторые вещи, которые работают по-другому в ZFS. Кроме того, в отличие от файловой системы BTRFS, размер zpool ZFS RAIDZ2 (например, RAID-6) нельзя изменить (существуют «хитрости», но суть в том, что raidz2 vdev не может быть увеличен путем добавления диска), поэтому существующая система не может легко расширить с помощью большего количества дисков. Однако, что касается стабильности, ZFS, вероятно, лучший выбор из всех. С помощью контрольных сумм он обеспечивает надежную защиту данных, как описано, и достаточно зрелый, чтобы справиться практически со всем (множественные отказы дисков, ненадежный контроллер, ZFS выживает практически во всем и может защитить / исправить ваши данные, если у вас достаточно хороших дисков).

Стоит отметить: RAID 5/6 более или менее полнофункциональный, но RAID 5, по крайней мере, намного медленнее, чем RAID 1/10 для очистки. Мой массив RAID 5 размером 4x4 ТБ занимает 2 дня для очистки, тогда как раньше с теми же дисками на RAID 1 это занимало около 10 часов. Я не уверен, как сравниваются тесты ввода-вывода в наше время, но раньше они тоже были довольно медленными. Не может использоваться для медиа-раздела, но, возможно, является проблемой для варианта использования OP. Mikkel 7 лет назад 1
@Mikkel: Да, вы правы. Очистка RAID-5/6 fs занимает больше времени, чем очистка RAID-1 fs. Высокая нагрузка на диски также увеличивает риск сбоя другого диска во время очистки, поэтому вместо RAID-5 следует использовать RAID-6. Тем не менее, система остается работоспособной в любое время. basic6 7 лет назад 0
Похоже, что RAID-массив btrfs будет автоматически восстанавливаться после повреждения одного зеркала, пока данные доступны на другом зеркале. В вики сказано, что, если чтение встретит это, оно даже автоматически восстановит сломанное устройство. Но вам все еще нужно выполнить ручную очистку, чтобы быть безопасным, потому что оптимизация чтения RAID1 может прочитать хорошую копию и не заметить плохую копию и исправить ее волшебным образом. binki 7 лет назад 0
2
kim0

In your setup it would not.

What I would recommend is using ZFS built-in RAID-z2, which is then able to perform bit-rot recovery. Enabling lz4 compression will also provide better performance, as well as space savings.

Похожие вопросы