Создание ZFS-пула - только начало. Чтобы данные оставались целыми, а хранилище работало стабильно, нужна регулярная проверка и обслуживание. В этом руководстве собраны практические команды и процедуры: от быстрой диагностики до замены диска.
Быстрая проверка состояния пула: команда zpool status
Основной инструмент диагностики - zpool status. Она показывает состояние пула, ошибки и статус каждого диска. Запустите её сразу после создания пула, чтобы убедиться в корректной работе.
zpool statusПример вывода для здорового пула:
pool: tank
state: ONLINE
scan: scrub repaired 0B in 00:05:12 with 0 errors on Sun Sep 6 12:34:56 2026
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
errors: No known data errorsКлючевые поля:
- state: общее состояние пула.
ONLINEозначает нормальную работу,DEGRADED- пул работает, но есть отказ или ошибки,FAULTED- пул недоступен. - status: дополнительная информация о проблемах, если есть.
- action: рекомендуемое действие для устранения проблемы.
- scan: результаты последней операции scrub или resilver.
- errors: известные ошибки данных.
- config: список vdev и дисков с их состоянием и счетчиками ошибок чтения, записи и контрольных сумм.
Интерпретация вывода zpool status
Счетчики READ, WRITE и CKSUM показывают количество ошибок ввода-вывода и несовпадений контрольных сумм. Ненулевые значения указывают на проблемы с диском или кабелем. Если ошибки растут, диск, скорее всего, выходит из строя.
Состояние диска может быть:
ONLINE- диск работает нормально.DEGRADED- диск работает с ошибками, но данные доступны.FAULTED- диск полностью отказал или отключен.OFFLINE- диск отключен администратором.UNAVAIL- диск недоступен.
Для просмотра использования емкости используйте zpool list:
zpool listОна покажет размер, занятое и свободное место, а также процент использования. Рекомендуется держать свободным не менее 20-30% емкости пула для стабильной производительности.
Запуск scrub: проверка целостности данных
Scrub - это фоновая проверка всех данных и метаданных в пуле. Она сверяет контрольные суммы и при наличии избыточности (mirror или raidz) автоматически исправляет поврежденные блоки. Регулярный scrub помогает выявить «тихие» ошибки до того, как они приведут к потере данных.
Запуск scrub вручную:
zpool scrub tankПроверить прогресс:
zpool status tankВ выводе появится строка scan: scrub in progress с процентом выполнения. После завершения будет указано количество исправленных ошибок.
Настройка регулярного scrub
Автоматизируйте scrub, чтобы не забывать. Для этого используйте cron или systemd timers. Пример cron-задачи для еженедельного scrub в воскресенье в 2 часа ночи:
0 2 * * 0 /sbin/zpool scrub tankДля систем с systemd можно создать timer. Выберите время низкой нагрузки, так как scrub интенсивно использует диски и может снизить производительность.
Рекомендуемая частота: для домашних систем - еженедельно, для критичных серверов - дважды в неделю или чаще, в зависимости от важности данных.
Признаки деградации пула: на что обращать внимание
Раннее обнаружение проблем предотвращает потерю данных. Следите за следующими признаками:
- Увеличение счетчиков ошибок чтения, записи или контрольных сумм в
zpool status. - Изменение состояния пула на
DEGRADEDили диска наFAULTED. - Сообщения в системном журнале (
dmesg,/var/log/messages) о ошибках диска. - Рост SMART-атрибутов, указывающих на проблемы (Reallocated Sectors, Pending Sectors и т.д.).
Мониторинг SMART-параметров дисков
SMART (Self-Monitoring, Analysis and Reporting Technology) предоставляет информацию о состоянии диска. Используйте smartctl из пакета smartmontools:
smartctl -a /dev/sdaКлючевые атрибуты:
- 5 Reallocated_Sector_Ct - количество переназначенных секторов. Рост указывает на деградацию поверхности.
- 196 Reallocated_Event_Count - количество операций переназначения.
- 197 Current_Pending_Sector - сектора, ожидающие переназначения из-за ошибок чтения.
- 198 Offline_Uncorrectable - сектора, которые не удалось прочитать.
Если значения этих атрибутов растут, диск скоро выйдет из строя. Запланируйте замену.
Настройка мониторинга и оповещений
Ручная проверка неэффективна. Настройте автоматические уведомления о проблемах. Варианты:
- Встроенный ZFS Event Daemon (zed) для реакции на события.
- Скрипты, запускаемые по cron, для проверки статуса и отправки email.
- Интеграция с системами мониторинга (Zabbix, Prometheus).
Использование ZFS Event Daemon (zed)
Zed запускается автоматически и может выполнять действия при событиях ZFS. Настройте его для отправки уведомлений. Отредактируйте /etc/zfs/zed.d/zed.rc:
ZED_EMAIL_ADDR="admin@example.com"
ZED_NOTIFY_VERBOSE=1Перезапустите сервис:
systemctl restart zedТеперь при ошибках пула вы получите email. Для более сложных сценариев используйте готовые решения, например, настройку уведомлений в TrueNAS или мониторинг ZFS с Prometheus и Grafana.
Первые действия при обнаружении ошибок
Если zpool status показывает ошибки, действуйте по алгоритму:
- Оцените серьезность: выполните
zpool status -vдля детализации ошибок. - Проверьте SMART проблемного диска:
smartctl -a /dev/sdX. - Если ошибки некритичны (например, единичные ошибки контрольной суммы), можно очистить счетчики командой
zpool clear tank. Но сначала устраните причину. - Если диск отказывает, замените его (см. ниже).
- Проверьте наличие резервных копий важных данных.
Не паникуйте и не выполняйте поспешных действий, таких как удаление пула или отключение дисков без необходимости.
Замена неисправного диска
Процедура замены диска в зеркале или raidz:
- Определите отказавший диск по
zpool status. - Переведите диск в офлайн (если он еще отвечает):
zpool offline tank sda. - Физически замените диск.
- Выполните замену в пуле:
zpool replace tank sda /dev/sdb(где sdb - новый диск). - Дождитесь завершения resilver (перестроение данных). Прогресс виден в
zpool status. - После завершения проверьте, что пул снова ONLINE и ошибок нет.
Для дисков с горячей заменой можно сразу выполнить zpool replace без предварительного offline.
Регулярное обслуживание пула: чек-лист
Выполняйте эти задачи регулярно:
- Еженедельный scrub для проверки целостности данных.
- Мониторинг SMART всех дисков (можно автоматизировать скриптом).
- Проверка емкости: следите, чтобы свободное место не опускалось ниже 20%.
- Обновление системы: устанавливайте обновления ZFS и ОС.
- Создание снапшотов: регулярные снимки для быстрого восстановления.
Дополнительные материалы по теме: восстановление ZFS после сбоев и типичные ошибки при работе с ZFS.