Насколько полезны самовосстанавливающиеся файловые системы для общего использования?

Насколько полезны самовосстанавливающиеся файловые системы для общего использования?

Недавно я изучал современные файловые системы (Btrfs, ZFS) на предмет избыточности и доступности данных и заинтересовался дополнительными функциональными возможностями, которые они предоставляют, особенно их возможностями «самовосстановления» при повреждении данных.

Однако я думаю, что мне нужно сделать шаг назад и попытаться понять, перевешивает ли это преимущество недостатки (ошибки Btrfs и нерешенные проблемы, а также доступность и влияние производительности ZFS) для общего домашнего/SMB-использования по сравнению с обычным решением mdadm-Raid1 + Ext4. Зеркальная резервная копия доступна в любом случае.

Предположим, у меня есть несколько файловых серверов, которые используются для архивных целей и имеют ограниченные ресурсы, но память ECC и стабильный источник питания.

  1. Насколько вероятно, что я вообще столкнусь с реальным повреждением данных, из-за которого файлы станут нечитаемыми? Каким образом?
  2. Может ли Ext4 или системный файловый менеджер обнаруживать ошибки данных при операциях копирования/перемещения, по крайней мере давая мне знать о проблеме?
  3. Что произойдет, если один из дисков madam-Raid1 будет содержать разные данные из-за того, что на одном из дисков есть плохие сектора? Смогу ли я все равно получить правильный файл или массив не сможет определить, какой файл правильный, и потеряет его полностью?

решение1

Да, функциональная файловая система с контрольной суммой — это очень хорошая вещь. Однако настоящая мотивация не в мифическом «битроте», который, хотя иделаетслучается, очень редко. Скорее, главное преимущество в том, что такая файловая система обеспечивает исквозная контрольная сумма данных, активно защищая вас от ошибочного поведения диска, такого как неправильно направленная запись и повреждение данных, связанное со сбоем и/или неправильным поведением собственного кэша DRAM диска из-за проблем с питанием.

Я столкнулся с этой проблемой лично, когда массив Linux RAID 1 вышел из строя из-за проблем с питанием. Кэш одного диска начал портить данные, а ECC, встроенный в сами секторы диска, ничего не поймал, просто потому, что записанные данныебыли уже испорченыи ECC был рассчитан на основе самих поврежденных данных.

Благодаря журналу контрольной суммы, который обнаружил что-то странное и приостановил файловую систему, XFS ограничила ущерб; однако некоторые файлы/каталоги были непоправимо повреждены. Поскольку это была резервная машина, не столкнувшаяся с немедленным давлением простоя, я восстановил ее с помощью ZFS. Когда проблема возникла снова, во время первой очистки ZFS исправила затронутый блок, прочитав хорошие копии с других дисков. Результат: без потери данных и без простоя. Это две очень веские причины использовать файловую систему с контрольной суммой.

Стоит отметить, что контрольная сумма данных настолько ценна, что для ее предоставления был создан картограф устройства (эмулируя спецификации T-10 DIF/DIX), называемыйdm-целостность, был разработан именно для того, чтобы распространить эту защиту на классические блочные устройства (особенно избыточные, такие как RAID1/5/6). БлагодаряПроект Стратис, он будет интегрирован в комплексный CLI/API управления.

Однако вы считаете, что любое потенциальное преимущество, приносимое такой файловой системой, следует сравнивать с недостатком, который она унаследовала. Основная проблема ZFS в том, что она не включена в стандартное ядро, но в остальном она очень быстра и стабильна. С другой стороны, BTRFS, хотя и включена в ядро,имеет много важных вопросови проблема с производительностью (обычное предложение для баз данных или виртуальных машин — отключить CoW, что, в свою очередь, отключает контрольную сумму — что, честно говоря, не является приемлемым ответом). Вместо использования BTRFS я бы использовал XFS и надеялся на лучшее или использовал бы устройства с защитой dm-integrity.

решение2

  1. У меня был Seagate HDD, который начинал давать сбой контрольных сумм каждый раз, когда я запускал zfs scrap. Он дал сбой через несколько недель. ZFS и Btrfs имеют контрольные суммы для данных и метаданных. ext4 имеет только контрольные суммы метаданных.

  2. Только ошибки CRC и ошибки контрольной суммы метаданных. Может произойти повреждение данных.

  3. Если у него есть плохие сектора, то это не проблема. Весь диск будет "сбойным", но у вас есть другой диск, который "в порядке". Проблема в том, что данные имеют правильный CRC, но данные повреждены. Это может происходить случайным образом из-за больших дисков.

решение3

Я использую ZFS в производстве, как для серверов, так и для домашнего офисного NAS, как под Linux, так и под FreeBSD, уже более 6 лет. Я обнаружил, что это стабильно, быстро, надежно, и я лично видел, как это обнаруживает и (когда это возможно) исправляет ошибки, которые простое mdустройство или ext4файловая система не смогли бы исправить.

Однако я думаю, что мне нужно сделать шаг назад и попытаться понять, перевешивает ли это преимущество недостатки (ошибки Btrfs и нерешенные проблемы, а также доступность и влияние на производительность ZFS).

Что касается лицензирования, ZFS — это система с открытым исходным кодом, она просто выпущена под лицензией CDDL, которая не являетсязаконносовместимо с лицензией GPLv2, под которой выпущено ядро ​​Linux.Подробности здесь. Это не означает, что он находится в состоянии «лицензирования-подвешенности на некоторое время», и не означает, что есть какие-либотехническийнесовместимость. Это просто означает, что в исходном коде основного ядра Linux нет модулей, и их нужно извлечь откуда-то, напримерhttps://zfsonlinux.org.Обратите внимание, что некоторые дистрибутивы, такие как Debian, включают ZFS в свой дистрибутив.Установка ZFS в Debian / Ubuntu обычно может быть выполнена с помощью одной aptкоманды.

Что касается производительности, то при достаточном объеме оперативной памяти производительность ZFS для меня находится где-то в диапазоне от близкой к ext4 до превосходящей ext4, в зависимости от памяти, доступного пространства пула и сжимаемости данных. Самым большим недостатком ZFS, по моему мнению, является использование памяти: если у вас менее 16 ГиБ оперативной памяти для производственного сервера, вам, возможно, стоит избегать ZFS. Это слишком упрощенное правило; в Интернете много информации о требованиях к памяти для ZFS. Я лично использую пул на 10 ТБ и пул на 800 ГБ вместе с несколькими резервными пулами на домашней офисной системе Linux с 32 ГБ оперативной памяти, и производительность отличная. Этот сервертакжезапускает LXC и имеет несколько запущенных служб.

Возможности ZFS выходят далеко за рамки возможностей контрольной суммы данных и самовосстановления; его мощные снимки намного лучше снимков LVM, а его встроенное сжатие lz4 может фактически повысить производительность за счет сокращения записи на диск. Лично я достиг экономии в 1,55 раза на пуле 10 ТБ (хранение 9,76 ГиБ данных всего в 6,3 ГиБ пространства на диске)

По моему опыту, производительность ZFS ухудшается, когда пул достигает 75% или 80% использования. Пока вы остаетесь ниже этой точки, производительности должно быть более чем достаточно для общего домашнего/SMB-использования.

В случаях, когда я видел, как ZFS обнаруживала и исправляла плохие данные, первопричина была неясна, но, скорее всего, это был плохой блок диска. У меня также есть память ECC, и я использую ИБП, поэтому я не верю, что данные были повреждены в ОЗУ. На самом деле, вам нужна ОЗУ ECC, чтобы получить выгоду от контрольных сумм ZFS. Однако за последние 6 лет я видел несколько (~10-15) случаев, когда блоки не прошли контрольные суммы.Одним из главных преимуществ ZFS по сравнению с md RAID является то, что ZFS знает, на какие файлы повлияла ошибка контрольной суммы.. Таким образом, в случаях, когда резервный пул без избыточности имел ошибку контрольной суммы, ZFS сообщал мнеточныйфайлы, которые были затронуты, что позволило мне заменить эти файлы.

Несмотря на то, что лицензия ZFS несовместима с ядром Linux, установка модулей очень проста (по крайней мере, на Debian), и после знакомства с набором инструментов управление становится простым. Несмотря на то, что многие люди в Интернете опасаются полной потери данных с ZFS, яникогдапотерял все данные с момента перехода на ZFS, а сочетание снимков ZFS и контрольных сумм/избыточности данных лично меня спасло от многократной потери данных. Это явная победа, и я лично никогда не вернусь к массиву md.

решение4

Могу добавить, что ZFS невероятно надежна, в основном благодаря своему происхождению (она была разработана Sun Microsystems еще в 2001 году). Текущая версия с открытым исходным кодом — это ответвление одной из последних версий с открытым исходным кодом, выпущенной Sun Microsystems около 10 лет назад, которая была дополнительно разработана сообществом разработчиков программного обеспечения с открытым исходным кодом после того, как Oracle закрыла исходный код ZFS после приобретения Sun Microsystems.

Сама Oracle по-прежнему поддерживает закрытую версию ZFS, которая используется в ее корпоративных системах хранения данных.

Однако ZFS требует некоторого обучения, поскольку она довольно мощная, в ней можно настроить довольно много вещей. Кроме того, это одна из немногих систем хранения файлов, с которыми я работал, где обслуживание на самом деле простое. У меня был один случай, когда нужно было перенести пул из конфигурации RAID5 в RAID6 (или, точнее, из RAID-Z1 в RAID-Z2). Обычно такая операция подразумевает копирование всех данных, перенастройку RAID и копирование данных обратно. В ZFS вы подключаете вторичное хранилище и копируете пул одной командой, перенастраиваете массив по своему усмотрению и копируете пул обратно другой командой.

Однако есть несколько подводных камней:

  1. Чтобы получить какую-либо выгоду от ZFS, вам нужно позволить ZFS управлять самими дисками. Поэтому ваш контроллер дисков должен поддерживать JBOD, чтобы ZFS видела диски напрямую. Все конфигурации RAID обрабатываются в ZFS, так как она использует данные четности для очистки и других задач, она не может скрыть их контроллером RAID.
  2. Как уже отмечалось, память ECC — этонастоятельно рекомендуется. ZFS не требует этого, но полностью ожидает, что все, что записано в ОЗУ, является неизменяемым и не будет повреждено. Поэтому, если вы запустите его в системе с не-ECC ОЗУ и ваша память выйдет из строя, ZFS может фактически повредить ваши данные во время очистки массива (очистка означает, что ZFS считывает данные из пула, вычисляет, что она должна была прочитать из информации о четности, сохраненной на других дисках, и исправляет любые ошибки, которые она находит).
  3. Несмотря на то, что ZFS отлично справляется с предотвращением потери данных, ее RAID-Z1 по-прежнему страдает от тех же проблем, что и RAID5, а именно, что большие массивы больших (1 ТБ+) дисков могут полностью выйти из строя после отказа одного диска при восстановлении массива, если скорость URE дисков слишком высока, так как простое чтение всех данных из четности с остальных дисков при математическом восстановлении почти гарантирует неустранимую ошибку чтения из-за размера дисков. Запустите RAID6 / RAID-Z2, если вы не являетесь экспертом в работе с системами хранения данных и знаете, что делаете.

Для новичков и домашних сред я обычно рекомендую FreeNAS, он очень хорошо поддерживается и прост в настройке, что хорошо для новичка.

Связанный контент