btrfs / ZFS делает ECC RAM устаревшей?

ECC RAM рекомендуется использовать на сервере, чтобы минимизировать / предотвратить повреждение данных.

Будет ли ECC RAM устаревшей, если ваш сервер использует btrfs (или ZFS) в качестве файловой системы (которая, как говорят, предотвращает повреждение данных)?

2
задан 7 August 2017 в 03:57

2 ответа

Я не уверен в btrfs, но ZFS и RAM ECC похожи на тост и масло..., но ZFS без ECC также похож на тост с маслом.

TL; DR - Используя RAM ECC с ZFS хорош (потому что использование RAM ECC находится в общей пользе), но это не собирается причинять Вам боль для не использования RAM ECC с ZFS, потому что ZFS просто настолько хорош. Я не сказал бы, что RAM ECC является устаревшей, хотя, потому что там больше продолжается, чем просто устройство хранения данных файловой системы. Ошибки где угодно плохи. ZFS просто помогает ограничить ошибки в файловой системе. Ниже то, как / почему...

см. http://jrs-s.net/2015/02/03/will-zfs-and-non-ecc-ram-kill-your-data/ и читайте тесно. Спасибо Jim Salters для того, что ниже.

я отправлю соответствующие биты в случае, если существует потеря того сайта:

Сначала: ECC RAM

What’s ECC RAM? Действительно ли это - хорошая идея?

ECC обозначает Контрольную сумму С коррекцией ошибок. Короче говоря RAM ECC является специальным видом памяти класса сервера, которая может обнаружить и восстановить некоторые наиболее распространенные виды повреждения в оперативной памяти. Для большего количества детали о том, как RAM ECC делает это, и какие типы ошибок она может и не может исправить, кролик hole’s здесь .

Теперь, когда мы знаем, какова RAM ECC, действительно ли это - хорошая идея? Абсолютно. Ошибки в оперативной памяти, являются ли из-за отказов в аппаратных средствах или к влиянию космического излучения (да, действительно) вещью. Они действительно происходят. И если это произойдет в особенно стратегическом месте, то Вы потеряете данные ему. Период. There’s никакое утверждение этого.

1139-секундный: What’s ZFS ZFS

? Действительно ли это - хорошая идея?

ZFS является, среди прочего, файловой системой вычисления контрольной суммы. Это означает, что для каждого блока согласился на устройство хранения данных, сильный хеш (несколько обманчиво иначе контрольная сумма) для содержания того блока также записан. (Хеш проверки записан в указателе на сам блок, который также проверен суммированием в продвижении указателя к себе и т. д. и т. п. Черепахи It’s полностью вниз. Кроличья нора начинается здесь для этого.)

это хорошая идея? Абсолютно. Объедините вычисление контрольной суммы ZFS с дублированием или четностью, и теперь у Вас есть самовосстанавливающийся массив. Если блок будет поврежден на диске, в следующий раз it’s чтение, то ZFS будет видеть, что это doesn’t соответствуют его контрольной сумме и загрузят избыточную копию (в случае зеркала vdevs, или несколько копируют устройство хранения данных), или восстановите копию четности (в случае RAIDZ vdevs), и предположив, что копия блока соответствует своей контрольной сумме, тихо подаст Вас корректная копия и зарегистрирует ошибку контрольной суммы против первого блока это передача didn’t.

ZFS также поддерживает кусты, которые станут важными в следующем разделе. Когда Вы говорите ZFS вычищать устройство хранения данных, он читает каждый блок, который он знает о †“включая избыточные копии †“и проверяет их по сравнению с их контрольными суммами. Любые провальные блоки автоматически перезаписываются с хорошими блоками, предполагая, что хорошая (передающая) копия существует, или избыточный или, как восстановлено от четности. Регулярные кусты являются значительной частью поддержания пула хранения данных ZFS против долгосрочного повреждения.

ситуация / Проблема

Является ZFS и не-ECC, хуже, чем не-ZFS и не-ECC? Что относительно Куста Смерти?

хорошо, it’s довольно легкий продемонстрировать, что зеркально отраженный бит в RAM означает повреждение данных: если Вы пишете, что зеркально отразил, воздержался к диску, поздравляю, Вы просто записали неправильные данные. There’s никакое утверждение это. Реальная проблема здесь isn’t, хорошо ли ECC иметь, it’s, особенно ли не-ECC проблематичен с ZFS. Сценарий, обычно выводимый, является очень страшным Кустом Смерти.

TL; версия DR сценария: ZFS находится в системе с RAM не-ECC, которая имеет застрявший бит, его пользователь инициирует куст, и в результате повреждения в оперативной памяти хорошие блоки проваливают тесты контрольной суммы и перезаписываются с поврежденными данными, таким образом немедленно убивая весь пул. Насколько я могу сказать, эта идея происходит с очень продуктивным пользователем на форумах FreeNAS под названием Киберспортсмен, и он размечает ее в этом поток здесь . It’s страшная идея †“, что, если самая вещь that’s предполагаемый бережно хранить Вашу систему уничтожает его? Куст сходится с ума! Nooooooo!

проблема, сценарий, как записано doesn’t на самом деле имеют смысл. С одной стороны, даже если у Вас есть конкретный адрес в RAM с застрявшим битом, Вы aren’t, собирающийся пробегать Вашу всю файловую систему тот адрес. That’s не, как управление памятью работает, и если это было, как управление памятью работает, Вы wouldn’t даже, удалось загрузить систему: это отказало бы и горело бы ужасно, когда этому не удалось загрузить операционную систему во-первых. Так не, Вы могли бы повредить блок тут и там, но you’re, не собирающийся скручивать всю файловую систему через блок шинковки драгоценным блоком.

, Но we’re, являющийся дешевым здесь. Скажите, что Вы только повреждаете один блок 5 000 этих способов. Это все еще было бы hellacious. Таким образом, let’s исследуют более разумную идею повредить некоторые данные из-за плохой RAM во время куста. И let’s предполагают, что у нас есть RAM, что не только isn’t рабочие 100% правильно, но и активно проклятое зло и попытка его наивного, но восторженного лучше всего для специфического уничтожения данных во время куста:

Первый, Вы читаете блок. Этот блок хорош. Это - совершенно хорошие данные, записанные в совершенно хороший диск с отлично соответствующей контрольной суммой. Но тот блок читается в злую RAM, и злая RAM зеркально отражает некоторые биты. Возможно, те биты находятся в самих данных, или возможно те биты находятся в контрольной сумме. Так или иначе Ваш совершенно хороший блок теперь, кажется, не соответствует своей контрольной сумме, и так как we’re вычищение, ZFS попытается на самом деле восстановить “bad” блок на диске. Мм о! Что теперь?

Затем, Вы читаете, копия того же блока †“эта копия могла бы быть избыточной копией, или это могло бы быть восстановлено от четности, в зависимости от Вашей топологии. Избыточная копия легка визуализировать †“, Вы буквально сохранили другую копию блока на другом диске. Теперь, если Ваша злая RAM оставит этот блок в покое, то ZFS будет видеть, что вторая копия соответствует своей контрольной сумме, и таким образом, это перезапишет первый блок с теми же данными, это имело первоначально †“никакие данные, был потерян здесь, всего несколько потраченных впустую дисковых циклов. Хорошо. Но что, если Ваша злая RAM зеркально отражает немного во второй копии? Начиная с него doesn’t соответствуют контрольной сумме также, ZFS doesn’t перезаписывают что-либо. Это регистрирует неисправимую ошибку данных для того блока и оставляет обе копии нетронутыми на диске. Никакие данные не были повреждены. Более поздний куст попытается прочитать все копии того блока и проверить их, как если бы ошибки никогда не происходило, и если на этот раз любая копия передаст, то ошибка будет очищена, и блок будет отмечен допустимый снова (с любыми копиями, что don’t передают проверку, перезаписываемую от той, которая сделала).

ну, ха. Это doesn’t звучит настолько плохо. Таким образом, что Ваша злая RAM должна сделать для фактической перезаписи хороших данных с поврежденными данными во время куста? Ну, сначала это должно зеркально отразить некоторые биты во время начального чтения каждого блока, который это хочет повредить. Затем на втором чтении копии блока от четности или дублирования, это должно не только зеркально отразить биты, это должно зеркально отразить их таким способом, которым Вы получаете хэш-коллизию. Другими словами, случайные поразрядные операции won’t делают †“, Вам нужны некоторые поразрядные операции в данных (с или еще без некоторых поразрядных операций в контрольной сумме), который составляет в целом поврежденные данные, правильно хеширующие к значению в контрольной сумме. По умолчанию ZFS использует 256-разрядные хеши проверки SHA, что означает, что единственное разрядное зеркальное отражение имеет 1 в 2^256 шанс предоставления Вам поврежденный блок, который теперь соответствует его контрольной сумме. Честно говоря, we’re с помощью злой RAM здесь, таким образом, it’s, вероятно, собирающийся сделать большое экспериментирование, и это попытается зеркально отразить биты и в данных и в самой контрольной сумме, и это сделает так многократно для любого единственного блока. Однако that’s приблизительно 1 в 2^256 (иначе примерно 1 в 10^77) возможности, который все еще делает его очень вряд ли к на самом деле happen†¦ и если Ваша RAM то, что чертовски злая, it’s собирающийся уничтожать Ваши данные ли you’re с помощью ZFS или нет.

Ре: Вычищение

Здесь вводит обоснованную озабоченность о потере данных. Примите во внимание!

, Но что, если I’m, не вычищающий?

ну, если Вы вычищение aren’t, затем Ваша злая RAM должна будет ожидать Вас для фактической записи в рассматриваемые блоки, прежде чем это сможет повредить их. К счастью, для него, тем не менее, Вы пишете в устройство хранения данных в значительной степени весь день long†¦ включая к метаданным, которые организуют целый набор и компанию. В первый раз Вы обновляете каталог, что Ваши файлы содержатся в, BAM! Глюк It’s! Если Вы останавливаетесь и думаете об этом, в этом злом сценарии RAM ZFS невероятно полезный, потому что Ваша RAM теперь не только злая, но достаточно яркая для последовательного осуществления нападений коллизии. Таким образом, если you’re рабочая RAM не-ECC, которая оказывающаяся ужасающе, зло Lovecraftianishly, ZFS, смягчает повреждение, не усиливает его.

, Если Вы использующие ZFS и Вас вычищение aren’t, между прочим, you’re установка себя для долгосрочного отказа. Если Вы имеет дисковое повреждение, куст устраняет его только, пока Вы действительно имеет избыточную копию или копию четности поврежденного блока, который хороший. После того как Вы повреждает все копии данного блока, it’s слишком поздно, чтобы восстанавливать его †“it’s уведенный. Don’t бояться вычищения. (Ну, возможно, немного опасающийся влияния производительности вычищения в течение пользующихся высоким спросом времен. Но don’t волновал по поводу вычищения уничтожения Ваших данных.)

Еще раз, благодаря Jim Salters для публикации этого.

2
ответ дан 7 August 2017 в 13:57

ECC является циклическим кодированием как компактная контрольная сумма, которая также может исправить значение.

См. https://en.wikipedia.org/wiki/Hamming_code#Hamming_codes_with_additional_parity _ (SECDED) и https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction для получения дополнительной информации.

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

Как Вы видите теперь, приложение ECC к FS и RAM независимо.

Также RAID6 позволяют Вам использовать ECC с любым FS.

0
ответ дан 2 December 2019 в 03:37

Другие вопросы по тегам:

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