Почему SSD в NAS быстро изнашивается: Docker, Frigate, Home Assistant и базы данных

NAS · SSD · NVMe · Docker · Home Assistant · Frigate

Износ SSD и NVMe в NAS: что постоянно пишет на диск и как увеличить ресурс

SSD в NAS или домашнем сервере может годами почти не менять показатель износа, а может за несколько месяцев накопить десятки терабайт записи. Причина обычно не в самом факте работы 24/7, а в характере нагрузки: базы данных, журналы, Docker, Home Assistant Recorder, Frigate, write-cache и другие сервисы постоянно создают мелкие записи. Разберём, как отличить нормальный износ от аномального и где искать источник.

TBWPercentage UsedSMARTDockerFrigateHome Assistant

TBW: что означает ресурс SSD

TBW — Terabytes Written, объём данных, который используется производителями как характеристика ресурса записи SSD. Solidigm прямо определяет TBW как количество данных, которое можно записать на накопитель за его ресурс. У многих потребительских SSD гарантия ограничивается либо сроком, либо достижением определённого TBW.

TBW — не таймер до мгновенной смерти SSDЭто характеристика endurance и гарантийный ориентир, а не точный момент физического отказа.

Поэтому SSD с рейтингом 600 TBW не обязан сломаться сразу после 600 ТБ записи, но при выборе диска под постоянную базу данных или cache этот показатель имеет гораздо больше значения, чем для обычного домашнего ПК.

Что означает NVMe SMART Percentage Used

NVM Express рекомендует использовать поле SMART Percentage Used как простой индикатор использованного ресурса накопителя. Условно остаток endurance можно оценивать как 100% минус Percentage Used.

Percentage Used = 5%Использована небольшая часть расчётного endurance
Percentage Used = 80%Накопитель уже значительно выработал расчётный ресурс

Поле может зависеть от модели и алгоритма производителя. Поэтому дополнительно полезно смотреть Data Units Written/Host Writes, media errors, available spare, unsafe shutdowns и температуру.

SSD показывает 20% износа за полгода: это много?

Возраст сам по себе почти ничего не говорит. Нужно понять скорость расходования ресурса.

Темп износа = изменение Percentage Used ÷ времяЕсли за 6 месяцев ушло 20%, при неизменной нагрузке линейная оценка даёт около 2,5 года до 100%.

Это лишь грубая экстраполяция. Нагрузка может измениться, а SMART не обязан расти идеально линейно. Но такой расчёт сразу показывает разницу между «20% за пять лет» и «20% за шесть месяцев».

Что в домашнем сервере постоянно пишет на SSD

Базы данных

SQLite, MariaDB, PostgreSQL и другие БД постоянно обновляют данные, индексы и служебные структуры.

Home Assistant Recorder

История состояний и событий записывается в recorder database.

Frigate

Видеозаписи, snapshots, metadata и служебные данные зависят от retention и числа камер.

Docker

Логи, writable layers, базы приложений и временные файлы контейнеров.

NAS services

Индексация, thumbnails, Drive, базы пакетов, поисковые индексы.

Swap и системные логи

При нехватке RAM или шумном logging запись может стать постоянной.

Docker: почему write-heavy данные лучше не оставлять в writable layer

Docker хранит изменения контейнера в writable layer поверх image layers. Официальная документация Docker рекомендует использовать volumes для write-heavy workloads вместо постоянной записи в writable container layer.

Containerwritable layer
Storage driveroverlay2 / CoW
SSDпостоянные записи

Особенно внимательно проверяйте базы данных, логи и каталоги приложений. Данные, которые должны жить долго, обычно лучше хранить в явно заданном volume/bind mount с понятным местом и политикой backup.

Home Assistant Recorder: что именно пишет на диск

Recorder хранит историю событий и состояний Home Assistant. Официальная документация указывает, что база автоматически очищается, чтобы не расти бесконечно. По умолчанию используется автоматическая purge-процедура.

Проблема чаще не в самом Home Assistant, а в слишком шумных сущностях и избыточной истории.

Датчик, меняющий состояние очень часто, может создать значительно больше строк, чем десятки спокойных сенсоров.

Полезно пересмотреть, что действительно нужно хранить в Recorder. Для части высокочастотных данных история по каждой смене состояния может не иметь практической ценности.

Что можно оптимизировать в Home Assistant

  • оставить включённым auto_purge;
  • не увеличивать retention без реальной необходимости;
  • исключить из Recorder бесполезные шумные entities;
  • проверить интеграции, которые меняют state каждую секунду;
  • не использовать database как бесконечный архив сырых данных;
  • для долгих трендов использовать long-term statistics там, где они предусмотрены.

Frigate: основной объём обычно создаёт видео, а не база

Frigate поддерживает continuous и object-based recording с отдельными retention periods. Официальная документация позволяет независимо задавать, сколько хранить обычную запись, motion, alerts и detections.

ContinuousМаксимальная запись

Камеры пишутся постоянно.

Events / detectionsМеньший объём

Дольше сохраняются только нужные фрагменты.

Snapshots также сохраняются отдельными файлами. Если SSD используется под `/media/frigate`, число камер, битрейт и retention намного сильнее влияют на Host Writes, чем размер самой служебной базы.

Почему видеозапись лучше считать заранее

Запись в сутки ≈ суммарный bitrate × 10,8 ГБ на каждый 1 Мбит/с1 Мбит/с непрерывного потока ≈ 10,8 ГБ данных в сутки без учёта служебных накладных расходов.

Например, четыре камеры по 4 Мбит/с могут создать примерно 173 ГБ видеоданных в сутки при непрерывной записи. Если это проходит через небольшой потребительский SSD, TBW будет расходоваться уже совершенно в другом масштабе, чем у Home Assistant database.

SSD cache в Synology: read-only и read-write сильно отличаются

Synology предлагает два режима SSD cache. Read-only cache хранит копии часто читаемых данных. Read-write cache принимает записи на SSD перед последующей работой с основным volume и требует отказоустойчивой конфигурации.

Read-only cacheОсновной износ от заполнения/обновления cache

Записи пользователя не зависят от SSD cache как от write-back слоя.

Read-write cacheSSD принимает рабочие записи

Для write-intensive workloads endurance становится особенно важным.

Synology прямо позиционирует SSD cache прежде всего для частого random I/O небольшими блоками. Большая последовательная видеозапись сама по себе не является идеальным сценарием для cache.

Почему SSD большей ёмкости часто выгоднее для постоянной записи

У дисков одной серии более ёмкие модели нередко имеют более высокий TBW. Кроме того, больший запас свободных NAND-блоков облегчает внутреннее управление записью. Но сравнивать нужно конкретные datasheet, а не только объём.

500 ГБ и 2 ТБ одной линейки могут иметь сильно разный endurance.

Для NAS и баз данных смотрите TBW/DWPD конкретной модели и ёмкости.

Температура NVMe в NAS

NVMe в компактном NAS может работать заметно горячее SATA SSD, особенно без воздушного потока. SMART позволяет контролировать composite temperature и thermal warnings.

  • не закрывайте M.2 плотной теплоизоляцией;
  • следите за вентиляцией NAS;
  • проверяйте throttling и temperature warnings;
  • не ставьте горячий NVMe вплотную к другим источникам тепла без необходимости.

TRIM и свободное место

SSD должен понимать, какие блоки файловая система больше не использует. TRIM помогает контроллеру эффективнее управлять NAND. Также не стоит постоянно держать рабочий SSD заполненным «под 100%»: свободное пространство полезно для служебных операций и garbage collection.

Конкретная поддержка TRIM зависит от NAS, файловой системы, RAID и режима использования SSD, поэтому проверяйте документацию своей платформы.

RAID1 не уменьшает число записей на каждый SSD

В зеркале данные записываются на оба накопителя. RAID1 повышает отказоустойчивость, но не является способом «разделить износ пополам».

Host writeодна операция
SSD 1получает запись
+
SSD 2получает запись

Как найти, кто именно пишет на SSD

  1. Снимите SMART/NVMe SMART сейчас. Запишите Percentage Used и Host Writes/Data Units Written.
  2. Повторите через 24 часа. Получите реальную запись за сутки.
  3. Посмотрите disk I/O процессов и контейнеров.
  4. Проверьте каталоги Docker volumes.
  5. Проверьте размер Home Assistant database.
  6. Проверьте retention и путь записи Frigate.
  7. Проверьте swap и системные журналы.
  8. Временно отключайте подозрительные сервисы по одному.
  9. Снова сравните Host Writes.

Как посчитать текущий темп и прогноз ресурса

Запись в сутки = Δ Host Writes / число днейДалее: оставшийся TBW ÷ текущая запись в сутки = грубое число дней до достижения rating.

Например, если SSD с рейтингом 600 TBW уже получил 120 TB host writes, остаётся условно 480 TB до паспортного TBW. При 200 ГБ/сутки это около 2400 суток, то есть примерно 6,6 года. При 1 ТБ/сутки — уже около 1,3 года.

Это только модель.

Host Writes и внутренние NAND Writes не всегда совпадают, нагрузка меняется, а TBW не является гарантированным моментом отказа. Но такой расчёт полезнее предположений «SSD новый, значит всё хорошо».

Как уменьшить ненужную запись

Home Assistant

Уменьшить шум Recorder и разумно выбрать retention.

Frigate

Пересмотреть continuous recording, bitrate и retention.

Docker

Использовать volumes для write-heavy persistent data и контролировать logging.

Logs

Настроить rotation и устранить сервис, который пишет одну ошибку тысячи раз.

Swap

Понять причину постоянного swapping, а не просто переносить swap.

Cache

Не включать read-write SSD cache без задачи, которая действительно от него выигрывает.

Что не нужно оптимизировать вслепую

  • не отключайте journaling файловой системы ради SSD wear;
  • не переносите критичную БД в RAM без надёжной persistence-схемы;
  • не отключайте fsync у базы данных ради уменьшения записи;
  • не убирайте резервирование только ради TBW;
  • не отключайте системные логи полностью;
  • не меняйте SSD только потому, что Percentage Used стал больше нуля.

Частые вопросы

Percentage Used 100% означает, что SSD завтра сломается?

Нет. Это оценка использованного endurance, а не таймер мгновенного отказа. Но такой накопитель уже требует повышенного внимания и плана замены.

Home Assistant действительно «убивает SSD»?

Не обязательно. Recorder действительно пишет базу, но аномальный wear чаще связан с шумными сущностями, слишком большой retention, логами, swap или другими сервисами на том же диске.

Frigate лучше писать на HDD?

Для длительной непрерывной видеозаписи HDD часто рациональнее по стоимости и endurance. SSD полезен там, где нужна высокая random I/O производительность, но конкретная архитектура зависит от числа камер и задач.

Нужно ли использовать enterprise SSD?

Не всегда. Сначала измерьте реальную запись в сутки и сравните с endurance конкретного потребительского SSD. Для тяжёлого write-intensive режима enterprise/NAS-oriented модели могут быть оправданы.

Почему 2 ТБ SSD может жить дольше 500 ГБ?

У большей ёмкости одной серии часто выше TBW и больше NAND для распределения износа. Проверяйте datasheet конкретных вариантов.

Read-only SSD cache тоже изнашивает SSD?

Да, cache периодически заполняется и обновляется, но профиль записи отличается от read-write cache, через который проходят рабочие записи.

Вывод

Износ SSD в NAS нужно оценивать по данным, а не по ощущениям. Главные показатели — Host Writes/Data Units Written, NVMe Percentage Used, TBW конкретной модели и реальный темп записи за сутки.

Если wear растёт слишком быстро, сначала найдите источник I/O. В домашнем сервере им часто оказываются видеозапись, базы данных, Docker logs, Home Assistant Recorder, swap или read-write SSD cache. После этого оптимизируйте именно источник, а не отключайте полезные механизмы надёжности вслепую.