Я установил ZFS на Ubuntu (через предохранитель) для домашнего хранилища, и он отлично работает уже почти год, несмотря на его статус «бета». Я вхожу в систему и время от времени проверяю массив, используя:
zpool status
Что приводит к:
NAME STATE READ WRITE CKSUM
media ONLINE 0 0 0
raidz1 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
errors: No known data errors
Это все нормально, но я хотел бы автоматизировать способ проверки время от времени, чтобы убедиться, что мой пул не содержит ошибок.
В моем распоряжении есть cacti и zabbix. Полагаю, я мог бы также написать программу, которая обрабатывает этот вывод, и если она не находит фразу «Нет известных ошибок данных», отправьте мне электронное письмо.
Однако есть ли какой-либо уже сделанный пакет, который делает это, или спецификации того, как я могу получить некоторые показатели производительности из этого массива?
zpool status -x - предпочтительный способ проверить состояние пулов с помощью сценария. Его вывод будет «все пулы исправны», если нет проблем, которые немного упрощают его использование в качестве теста. В противном случае, когда вы получите более одного пула, ваш скрипт проверки и greps станут более сложными. Таким образом, вы можете настроить задание cron для запуска сценария и убедиться, что он имеет статус «все пулы исправны», и в противном случае отправить электронное письмо с предупреждением о выходе.
Вы даже можете настроить плагин nagios, который сделает это за вас. Я предполагаю, что zabbix следует расширять таким же образом.
Также убедитесь, что вы регулярно запускаете zpool scrub ... Я бы также установил это в задании cron. Это позволит обнаружить и исправить любые проблемы, которые он обнаруживает в пуле в областях файловой системы, к которым нечасто обращаются, и может выявить и исправить проблемы до того, как они приведут к повреждению данных.
Чтобы получить показатели производительности, вы можете использовать zpool iostat [секунды между обновлениями] Я не знаю, как связать это с кактусами, но уверен, что это возможно.
предполагая, что инструменты zabbix и gnu ... добавьте в файл конфигурации демона агента zabbix следующее:
UserParameter = zpool.status, статус zpool | grep -q "Нет известных ошибок данных" && echo 1 || эхо 0
теперь в zabbix добавьте элемент с ключом "zpool.status", создайте триггер против него (используя функцию типа ".last (0) = 0"), и все готово - триггер будет срабатывать всякий раз, когда эта строка отсутствует в вывод состояния zpool.
это также предполагает, что 'zpool' будет на пути пользователя zabbix, и что этому пользователю будет разрешено запускать zpool. если нет, укажите полный путь и используйте sudo. другой уловкой может быть оболочка по умолчанию, которая не поддерживает используемый синтаксис, и в этом случае вы можете либо переписать пользовательский параметр, либо заставить его использовать bash.
если возможно, также сделайте iostat -xCzn и grep для любых ошибок HW или транспорта на дисках или контроллере.