ZFS и битая память на практике

Mar 25, 2015 00:45

Рекомендация использовать ECC память в корпоративных системах известна. Дома почти все обходятся памятью без контроля чётности. А что всё же происходит с zfs пулом, расположенным на системе с дефектной памятью без контроля чётности? Будут лезть ошибки, проблемы будут молча накапливаться, всё встанет колом? Тем более, что есть известная работа DRAM Errors in the Wild: A Large-Scale Field Study. В которой авторы пишут "Примерно на трети машин или примерно на 8% DIMM планок в нашем исследовании была зафиксирована как минимум одна поддающаяся коррекции ошибка за год" Цифры пугающие. И вот в нашей конфе подкинули ссылочку как раз на практический случай.

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

Результат после scrub проблемного пула

root@kvm2:~# zpool status
pool: zroot
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 0 in 5h25m with 0 errors on Tue Mar 10 04:05:24 2015
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 9
mirror-0 ONLINE 0 0 19
ata-WDC_WD20EARS-00S8B1_WD-WCAVY4199811 ONLINE 0 0 19
ata-WDC_WD20EARS-00S8B1_WD-WCAVY4452032 ONLINE 0 0 20

errors: 3 data errors, use '-v' for a list

То, что проблема в памяти он установил пост-фактум, а нам можно полюбопытствовать что собственно произошло.

Видно, что на одном из дисков зеркала вылезло 20 ошибок контрольных сумм, а на другом - 19. При этом на пуле осталось не исправлено 9. Могу объяснить уменьшение тем, что половина ошибок была скорректирована. Далее, на данные пришлось только 3 неисправимых ошибки. Не могу утверждать, но возможно часть ошибок была скорректирована за счёт хранения боле одной копии метаданных.

Отчёт о том, какие файлы повреждены.

root@kvm2:~# zpool status -v
...
errors: Permanent errors have been detected in the following files:

/zroot/kvm1/copy500/copy500.qcow2
/zroot/kvm2/prd2/prd2.qcow2

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

После публикации этой ссылки в нашей конфе несколько камрадов поделились (отсюда несколько постов и далее) личным опытом по теме битой памяти на zfs системе. Цитирую камрадов с сокращениями.
[Подробнее]
Power User: "у меня как то плашка памяти сдохла, тысячи (если не десятки тысяч) ошибок - я уж и не помню - то ли READ то ли CKSUM. Но быстро заметил, ни одного файла не потерял...

а как заметил?
Есть у меня еще с до-зед-эф-эсных времен привычка, скачал что то полезное, сделал контрольную сумму всех файлов в папке, потом уже кладу на НАС. Тут что-то надо было установить, делаю установку оно вываливается, проверил контрольную сумму - битая, другой архив проверил (который писал хороших пару лет назад) - он тоже битый - ну у меня паника... После пары экспериментов - выяснилось что убитые файлы каждый раз разные (мелкие)...
Потом уже zpool status - новая паника - ошибки по всем дискам - я его прямо на горячую и дернул из UPS... Ну и только потом дошло память почекать..."

jenci: "у меня была проблема с памятью. всего 1 бит побился (время отвремени)... были периодически исправлены по scrub-у пару блоков на zfs. я подумал что это мой диск один проблемный подыхает в raidz2. выяснилось все "проще" планка одна битая."

OverLocker: "У меня тоже была трабла когда иногда появлялись несколько байт ошибок. Скраб их правил. Причиной являлась тоже битая память."




Итого, можно видеть, что zfs - не панацея от битой памяти, и появление ошибок из-за неё реально. Но значительная доля ошибок (порядка 90% в примере выше) всё же устраняется zfs. В условиях характерной для дома низкой нагрузки ввода-вывода (записал - и хранишь, изредка читаешь) проводя регулярный скраб и наблюдая возникающие ошибки вполне реально отловить сбойную память до того, как данные серьёзно пострадают. А единичные спорадические сбои, подобные возникающим из-за космических лучей и естественного радиационного фона, zfs со значительной вероятностью корректирует.

Так что я лично, пожалуй, окончательно успокоюсь насчёт ECC памяти. Она точно нужна в production, под значительной нагрузкой. Дома - обойдёмся обычной.

nas, nas4free, zfs

Previous post Next post
Up