SMART обнаружил неустранимую ошибку чтения на одном из моих дисков, но zpool status
все диски отображаются как ONLINE (т.е. не DEGRADED).
- Знаете, почему это может быть? Я думал, что ZFS узнает о любых ошибках как можно скорее...
- Нужно ли мне запускать очистку, чтобы перепроверить состояние всех дисков?
- Можно ли как-то настроить автоматическую отправку SMART-данных в ZFS?
решение1
- Знаете, почему это может быть? Я думал, что ZFS узнает о любых ошибках как можно скорее...
- Нужно ли мне запускать очистку, чтобы перепроверить состояние всех дисков?
- Можно ли как-то настроить автоматическую отправку SMART-данных в ZFS?
- Нет, он не проверяет все блоки все время, он просто гарантирует, что каждый записанный блок может быть учтен (и восстановлен, если доступна избыточность) как только он понадобится/к нему будет получен доступ. Пустое пространство вообще не проверяется (потому что у вас там нет ценных данных, так что это было бы пустой тратой времени), а обычные данные проверяются только при чтении (поскольку запись — это только добавление). Как правильно сказал mmusante, вы получите сообщения об ошибках только в том случае, если ошибка критическая и не может быть восстановлена автоматически (в противном случае вы просто увидите уведомление и количество ошибок в
zpool status
). - Да.
Может быть проще просто регулярно (через cronjob) чистить пул. Обычно рекомендуется делать это примерно раз в месяц для дисков корпоративного уровня и раз в неделю для дисков потребительского уровня. В противном случае вы можете запустить ручную очистку с помощьюскрипт от smartmontools:
В большинстве случаев вам нужно только поместить скрипт в /etc/smartmontools/run.d/. Всякий раз, когда smartd хочет отправить отчет, он запускает smart-runner, а последний запускает ваш скрипт.
У вас есть несколько переменных, доступных для вашего скрипта (опять же, см. man-страницу smartd). Они получены в результате тестового запуска:
SMARTD_MAILER=/usr/share/smartmontools/smartd-runner SMARTD_SUBJECT=SMART error (EmailTest) detected on host: XXXXX SMARTD_ADDRESS=root SMARTD_TFIRSTEPOCH=1267409738 SMARTD_FAILTYPE=EmailTest SMARTD_TFIRST=Sun Feb 28 21:45:38 2010 VET SMARTD_DEVICE=/dev/sda SMARTD_DEVICETYPE=sat SMARTD_DEVICESTRING=/dev/sda SMARTD_FULLMESSAGE=This email was generated by the smartd daemon running on: SMARTD_MESSAGE=TEST EMAIL from smartd for device: /dev/sda
Ваш скрипт также имеет временную копию отчета, доступную как "$1". Она будет удалена после того, как вы закончите, но то же самое содержимое будет записано в /var/log/syslog.
Затем вам просто нужно сопоставить имя устройства с вашим пулом (можно выполнить парсинг
zpool status
).