← все статьи

NAS, день семнадцатый: ящик ничего не делает, а пишет 50 ГБ в сутки

Семнадцатый день NAS. Ящик целые сутки стоял без дела: никто ничего не копировал и не смотрел. А диски пула всё это время писали — больше 50 ГБ за день. Эта запись — как мы искали, кто пишет, и почему дело оказалось не в байтах.

Сутки без дела

Утром открыли «Сервер». Процессор — 1–3 %, память весь день ровно на 6 ГБ, кэш ZFS держится на 30 ГБ. Всё как у машины, которая отдыхает.

Кроме одной линии: запись в пул стоит ровно на ~0,6 МБ/с с полуночи до вечера. Это около 2 ГБ в час, а на сутки — больше 50 ГБ. И «занятость дисков» не опускается ниже 5 %: диски не отдыхают ни минуты.


График «Нагрузка на диски» за сутки: запись в пул Data ровно около 0,6 МБ/с, занятость дисков около 5 %
Сутки без дела: запись в пул ни на минуту не падает до нуля

Графики «Нагрузка на диски» и «Занятость дисков» появились накануне — и пул с системным диском на них разведены порознь. Без них этой истории бы просто не было: раньше запись на диски в панели не было видно вовсе.

Кто пишет

Первым делом — «Ресурсы»: там диск разложен по статьям. 55 ГБ записи за сутки ушли в статью «Система», а у базы — 0 МБ.


Экран «Ресурсы», вкладка «Диск»: «Система» — 72,5 ГБ за сутки, из них запись 55,1 ГБ; у базы — 0 МБ записи
«Ресурсы»: почти всё — «Система», у базы ноль

Подозреваемые

Дальше — по очереди, от самых вероятных. Каждого проверяли цифрами на самом ящике, только чтением.

  1. База. Postgres пишет страницами по 8 КБ, а ZFS хранит файлы блоками по 128 КБ — каждая запись могла переписывать блок в 16 раз больше. Счётчик наборов данных: в набор NAS за минуту — 12 записей и 0,07 МБ*. Мало.

  2. Время доступа (atime). Если оно включено, каждое чтение файла — тоже запись. Проверили: atime* выключен на всех наборах данных.

  3. Служебный набор TrueNAS. В .system живут графики мониторинга, журналы, служебное Samba — и он лежал на пуле. Перенесли на системный NVMe. Запись в пул не упала: 36 МБ в минуту до, 45* после.

  4. Освобождение места, тома, репликация.* Фонового освобождения нет, томов zvol нет, снимки по репликации не принимаются.

Счётчик самого ZFS

У ZFS есть журнал сбросов на диск — каждый сброс с тем, сколько данных в него пришло и сколько записано на диски. За 8,3 минуты — 98 сбросов, пришло 160 МБ, на диски ушло 302 МБ: те самые 36 МБ в минуту.

А по наборам данных за ту же минуту в пул писали всего двое: NAS — 12 записей, докер TrueNAS — 40. Вместе — около 50 мелких записей в минуту, меньше 0,2 МБ данных.

На живом графике это видно сразу: всплески по 2 МБ/с ровно каждые 5 секунд.


Живой график «Нагрузка на диски»: всплески записи в пул около 2 МБ/с каждые 5 секунд
Пульс ZFS: сброс каждые 5 секунд, весь день

Раз в 30 секунд

Рычаг один — сбрасывать реже. Частоту задаёт настройка ядра zfs_txg_timeout: по умолчанию 5 секунд, мы поставили 30. Сначала — пробой, до перезагрузки, потом — постоянно, скриптом при старте TrueNAS.


Живой график «Нагрузка на диски»: частые всплески раз в 5 секунд, после 21:23 — тишина до следующего сброса
21:23 — сбросы раз в 30 секунд: между ними пул молчит

Сбросов стало в шесть раз меньше: 2 в минуту вместо 12. Каждый крупнее, но служебная запись, которая шла с каждым сбросом, теперь бывает в шесть раз реже, а между сбросами диски пула стоят.

А было ли это бедой

Нет. Около 65 ГБ в сутки на весь пул — это примерно 11 ГБ на диск, 4 ТБ в год. Дискам IronWolf производитель закладывает 180 ТБ в год: мы были на 2 % нормы. Это нормальное поведение ZFS на RAIDZ.

Но диски, которые никогда не стоят, — это шум, тепло и износ без смысла. А главное — теперь мы знаем, откуда каждый мегабайт, и видим это на графике, а не гадаем.

Что осталось в панели

  • «Нагрузка на диски» — чтение и запись, пул и системный диск порознь, в истории и вживую.
  • «Занятость дисков» — доля времени, когда самый загруженный диск работал: у 100 % он — узкое место.
  • Плитка «диски» на «Сервере»: сколько читают и пишут прямо сейчас.

Своё железо — тоже система
Начните с брифа: четыре вопроса и честный ответ, подходим ли мы друг другу.
Пройти бриф