Представь, что твои данные на сервере TrueNAS — это библиотека редких книг. Со временем страницы могут выцветать, чернила — тускнеть. Scrub в TrueNAS — это систематическая инвентаризация, которая находит такие «дефекты» и автоматически восстанавливает их из резервных копий (зеркал или parity данных). Давай разберем, как правильно настроить этот критически важный процесс для поддержания целостности данных в ZFS.
Что такое Scrub и зачем он нужен в TrueNAS?
Scrub (от англ. «скрабирование», «чистка») — это процесс проверки всех данных в пуле ZFS на наличие тихих повреждений (silent corruption). Это ошибки, которые не обнаруживаются при обычных операциях чтения/записи, но накапливаются со временем из-за:
- Сбоев контроллера дисков или памяти (bit rot)
- Физического износа носителей (HDD/SSD)
- Проблем с кабелями или питанием
ZFS при scrub читает ВСЕ данные в пуле, вычисляет контрольные суммы и сравнивает их с эталонными. При несовпадении система автоматически восстанавливает корректный блок из зеркальной копии или данных четности (RAID-Z).
Настройка расписания Scrub в веб-интерфейсе TrueNAS
TrueNAS по умолчанию настраивает scrub раз в неделю, но давай сделаем это осознанно. Идеальное расписание зависит от нагрузки и размера пула.
Шаг 1: Переход в настройки пула
В веб-интерфейсе TrueNAS:
- Открой Storage → Pools
- Найди нужный пул и нажми кнопку ⋮ (три точки)
- Выбери Scrub Tasks
Шаг 2: Создание или редактирование задачи
Нажми ADD или редактируй существующую задачу. Критичные параметры:
| Параметр | Рекомендация | Описание |
|---|---|---|
| Pool | Выбери целевой пул | Пул для проверки |
| Schedule | 0 0 * * 0 (каждое воскресенье в 00:00) | Cron-формат. Для больших пулов — раз в 2 недели |
| Threshold days | 35 | Предупреждение, если scrub не запускался N дней |
| Description | Weekly scrub for data-pool | Человекочитаемое описание |
Ручной запуск Scrub через CLI и мониторинг
Иногда нужно запустить проверку вне расписания — после замены диска, сбоя питания или по требованию аудита.
Запуск через Shell (SSH или консоль)
# Просмотр всех пулов
zpool list
# Запуск scrub для конкретного пула
zpool scrub data-pool
# Проверка статуса выполнения
zpool status data-pool
Мониторинг прогресса
Во время выполнения команда zpool status покажет:
pool: data-pool
state: ONLINE
scan: scrub in progress since Mon Oct 16 10:00:00 2023
12.4T scanned at 1.2G/s, 4.1T issued at 450M/s
0 repaired, 33.05% done, 03:12:15 to go
Ключевые метрики:
- scanned — сколько данных проверено
- repaired — количество восстановленных ошибок (вот что нас больше всего интересует!)
- % done — прогресс выполнения
- to go — ориентировочное время до завершения
Оптимизация производительности Scrub
Scrub может серьезно нагружать систему. Вот как управлять его аппетитами:
Ограничение скорости (throttling)
# Временное ограничение скорости scrub (например, 500MB/s)
zfs set scrub_limit=500000000 data-pool
# После завершения scrub — сбросить ограничение
zfs inherit scrub_limit data-pool
Приоритизация вручную
# Приостановка scrub (если нужно срочно обслуживание)
zpool scrub -p data-pool
# Возобновление приостановленного scrub
zpool scrub data-pool
TrueNAS Scale (на базе Linux) также позволяет использовать ionice и nice для управления приоритетом ввода-вывода.
Анализ результатов и устранение ошибок
После завершения scrub проверь отчет. Вот как интерпретировать результаты:
zpool status -v data-pool
Возможные сценарии:
- 0 errors — идеально. Система здорова.
- Несколько исправленных ошибок — нормально. ZFS сделал свою работу.
- Много ошибок или неисправимые ошибки — тревожный знак. Проверь диски SMART-статусом.
Часто задаваемые вопросы (FAQ)
Как часто нужно запускать scrub?
Рекомендация от разработчиков ZFS — раз в неделю для SSD и раз в месяц для HDD. Но практика показывает: для домашних NAS достаточно раз в 2 недели, для корпоративных систем с высокой нагрузкой — еженедельно. Главное правило: scrub должен завершаться до следующего запуска.
Scrub повреждает SSD из-за износа?
Миф. Современные SSD имеют ресурс в сотни TBW (терабайт записи). Типичный scrub читает данные, а не записывает (кроме исправлений). Износ от scrub пренебрежимо мал compared to пользе от обнаружения ошибок.
Можно ли отменить запущенный scrub?
Да, но не рекомендуется. Отмена через zpool scrub -s pool приведет к тому, что следующий scrub начнет сначала. Лучше приостановить (-p) на время обслуживания.
Почему scrub такой медленный?
Скорость зависит от: 1) Самого медленного диска в пуле 2) Загрузки системы другими задачами 3) Настройки ограничений. RAID-Z2/Z3 медленнее mirror из-за вычисления четности. Скорость 100-500 MB/s — норма для HDD.
Нужен ли scrub для пула из одного диска?
Да, но с важной оговоркой: scrub обнаружит ошибки, но НЕ СМОЖЕТ их исправить (нет избыточности). Для single-disk пулов резервные копии критически важны.
Заключение: Best Practices
Давай резюмируем профессиональный подход к scrub в TrueNAS:
- Настрой расписание — автоматизируй, чтобы не забыть. Используй
0 0 * * 0(воскресенье полночь) как отправную точку. - Мониторь результаты — настрой уведомления в TrueNAS на ошибки scrub. Проверяй отчеты после каждого выполнения.
- Оптимизируй нагрузку — если scrub мешает работе, ограничь скорость или перенеси на менее загруженное время.
- Реагируй на ошибки — даже одна исправленная ошибка — повод проверить SMART дисков. Много ошибок — сигнал к замене диска.
- Не отключай scrub — это не «опциональная фича», а фундаментальный механизм целостности ZFS.