Найти в Дзене

Насколько критично использовать ECC-память для ZFS

Часть_1 Вопрос использования ECC-памяти для ZFS вызывает в обществе множественные споры , а мнения спорящих кардинально расходятся, кто-то говорит, что ECC там даром не нужна, другие возражают, что отсутствие ECC это гарантированный способ полностью убить ZFS. Начнем с того, что один из соавторов ZFS Мэтью Аренс высказался достаточно однозначно: В ZFS нет ничего особенного, что требовало бы или поощряло использование ECC‑памяти (памяти с коррекцией ошибок) в большей степени, чем в случае с любой другой файловой системой. Т.е. никакого особенного требования для использования именно ECC-памяти в ZFS нет, но есть определенные моменты. ZFS – система с контролем целостности и мы ожидаем, что она будет надежно хранить наши данные. В большинстве случаев так оно и есть, при чтении ZFS проверяет контрольную сумму данных, чтобы быть уверенной, что она отдает именно то, что было записано. Но здесь появляется дополнительный риск в виде памяти. Если данные в момент чтения в память или записи

Насколько критично использовать ECC-память для ZFS. Часть_1

Вопрос использования ECC-памяти для ZFS вызывает в обществе множественные споры , а мнения спорящих кардинально расходятся, кто-то говорит, что ECC там даром не нужна, другие возражают, что отсутствие ECC это гарантированный способ полностью убить ZFS.

Начнем с того, что один из соавторов ZFS Мэтью Аренс высказался достаточно однозначно:

В ZFS нет ничего особенного, что требовало бы или поощряло использование ECC‑памяти (памяти с коррекцией ошибок) в большей степени, чем в случае с любой другой файловой системой.

Т.е. никакого особенного требования для использования именно ECC-памяти в ZFS нет, но есть определенные моменты. ZFS – система с контролем целостности и мы ожидаем, что она будет надежно хранить наши данные.

В большинстве случаев так оно и есть, при чтении ZFS проверяет контрольную сумму данных, чтобы быть уверенной, что она отдает именно то, что было записано. Но здесь появляется дополнительный риск в виде памяти.

Если данные в момент чтения в память или записи из нее на диск окажутся повреждены, то ZFS может записать такой блок считая его нормальным. Сама же память без коррекции ошибок неспособна выполнять такие проверки.

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

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

Отягчающими факторами становится разгон, плохой тепловой режим, общий износ ячеек, плохие контакты. И основной единицей возникновения ошибки тут является не общий объем памяти, а количество физических модулей.

В дальнейших расчетах мы опирались на статистический материал от Google: DRAM errors in the wild: a large-scale field study

Согласно этим данным, вероятность ошибки в течении одного года составляет для:

▫️ 1 DIMM – 8.2%

▫️ 4 DIMM – 28.98%

▫️ 8 DIMM – 49.56%

▫️ 16 DIMM – 74.56%

Давайте возьмем типичную платформу для домашней лаборатории или сервера небольшой рабочей группы – 4 DIMM, вероятность ошибки составит:

▫️ 1 год – 29%

▫️ 3 года -63%

▫️ 5 лет – 82%

Если взять средний срок эксплуатации системы до апгрейда в 5 лет, но ошибка имеет достаточно большую, но не абсолютную вероятность произойти в течении этого срока.

Что это значит? А это не обязательно говорит о том, что ваши данные будут обязательно повреждены. Если ошибка произошла при чтении, то приложение может просто упасть, не заметить ее (если это стриминговый поток) или откорректировать собственными средствами коррекции ошибок.

Т.е. вероятность того, что ошибочные данные будут записаны на диск, окажется существенно ниже вероятности возникновения ошибки.

Но уже начиная с 16 DIMM риски становятся более серьезными и вероятность ошибки стремится к единице на отрезке времени от 2 лет и более. Но обычно с таким объемом памяти работают серверные системы и ECC там используется по умолчанию.

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

При этом распределение ошибок далеко не равномерное, статистика Google показывает сильный перекос в сторону отдельных модулей:

🔸 Лишь 8,2% всех DIMM сталкиваются с хотя бы одной исправимой ошибкой за год

🔸 Среди «проблемных» DIMM медианное количество ошибок - 64 в год, среднее - 3 751 (сильный перекос из-за небольшого числа модулей с тысячами ошибок)

🔸 Распределение ошибок подчиняется степенному закону: 20% затронутых DIMM генерируют >94% всех ошибок

Таким образом вам скорее повезет, чем не повезет, а если не повезло, то скорее всего такой модуль вы просто отбракуете и замените.

Как видим ничего критичного для ZFS в применении ECC-памяти нет, все ровно тоже самое, что и в других файловых системах.

В следующей части мы разберем, на основе все той же статистики Google вероятность выхода из строя всей ZFS.