Проверка и обслуживание ZFS-пула после создания: практическое руководство | AdminWiki

Проверка и обслуживание ZFS-пула после создания: практическое руководство

07 сентября 2026 4 мин. чтения

Создание 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 показывает ошибки, действуйте по алгоритму:

  1. Оцените серьезность: выполните zpool status -v для детализации ошибок.
  2. Проверьте SMART проблемного диска: smartctl -a /dev/sdX.
  3. Если ошибки некритичны (например, единичные ошибки контрольной суммы), можно очистить счетчики командой zpool clear tank. Но сначала устраните причину.
  4. Если диск отказывает, замените его (см. ниже).
  5. Проверьте наличие резервных копий важных данных.

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

Замена неисправного диска

Процедура замены диска в зеркале или raidz:

  1. Определите отказавший диск по zpool status.
  2. Переведите диск в офлайн (если он еще отвечает): zpool offline tank sda.
  3. Физически замените диск.
  4. Выполните замену в пуле: zpool replace tank sda /dev/sdb (где sdb - новый диск).
  5. Дождитесь завершения resilver (перестроение данных). Прогресс виден в zpool status.
  6. После завершения проверьте, что пул снова ONLINE и ошибок нет.

Для дисков с горячей заменой можно сразу выполнить zpool replace без предварительного offline.

Регулярное обслуживание пула: чек-лист

Выполняйте эти задачи регулярно:

  • Еженедельный scrub для проверки целостности данных.
  • Мониторинг SMART всех дисков (можно автоматизировать скриптом).
  • Проверка емкости: следите, чтобы свободное место не опускалось ниже 20%.
  • Обновление системы: устанавливайте обновления ZFS и ОС.
  • Создание снапшотов: регулярные снимки для быстрого восстановления.

Дополнительные материалы по теме: восстановление ZFS после сбоев и типичные ошибки при работе с ZFS.

Поделиться:
Сохранить гайд? В закладки браузера