SSD и NVMe выходят из строя иначе, чем жёсткие диски: механики нет, зато есть износ ячеек, исчерпание резервной области и тепловой троттлинг. SMART помогает заметить деградацию до потери данных, если знать, какие поля смотреть. Разберём инвентаризацию, журналы NVMe, атрибуты SATA, TRIM, расчёт износа и мониторинг.
Что показывают SMART и журналы NVMe
У SATA-накопителей здоровье описывается набором атрибутов с идентификаторами: часть из них стандартизирована, часть определяется производителем. У NVMe вместо атрибутов используется страница журнала здоровья с полями critical_warning, percentage_used, available_spare и счётчиками ошибок. Показания нельзя сравнивать между разными моделями напрямую, но динамика одного и того же диска информативна.
SMART не предсказывает отказ точно: контроллер, питание и прошивка подводят и при идеальных показателях, поэтому резервная копия обязательна.
Инвентаризация: что установлено
Сначала выясняем тип подключения и модель. Поле TRAN показывает nvme или sata, ROTA равно нулю для твердотельных дисков.
lsblk -o NAME,MODEL,SERIAL,SIZE,TRAN,ROTA
sudo nvme list
sudo smartctl --scan
sudo smartctl -i /dev/nvme0
Если диск подключён через USB-адаптер, SMART может быть недоступен напрямую. Для мостов с поддержкой SAT используйте smartctl -d sat -a /dev/sdb; для некоторых контроллеров нужен тип -d usbjmicron или -d sat,12. Отсутствие ответа чаще означает ограничение адаптера, а не отказ диска.
NVMe: журнал здоровья
Основная команда — nvme smart-log. Флаг -o json удобен для скриптов и систем мониторинга.
sudo nvme smart-log /dev/nvme0
sudo nvme smart-log /dev/nvme0 -o json
sudo nvme error-log /dev/nvme0
sudo nvme id-ctrl /dev/nvme0 | grep -E "mn|sn|fr"
На что смотреть в выводе:
critical_warning— битовая маска. Ноль означает норму; бит 0 — резервная область ниже порога, бит 1 — перегрев, бит 2 — деградация надёжности, бит 3 — диск переведён в режим только чтения.percentage_used— оценка израсходованного ресурса в процентах. Значение 100 не означает мгновенную смерть, но диск пора менять.available_spareиavailable_spare_threshold— запас блоков и порог, ниже которого контроллер начинает действовать агрессивнее.media_errors— ошибки чтения/записи на уровне носителя. Любой рост — повод срочно проверить бэкапы.num_err_log_entriesиunsafe_shutdowns— ошибки в журнале и некорректные выключения.data_units_written— объём записанного хостом. Одна единица равна 512 000 байт.
Перевести единицы просто: миллион единиц — примерно 512 ГБ, точный объём равен значению, умноженному на 512000 байт.
SATA SSD: важные атрибуты
У SATA-дисков смотрим не только общий вердикт PASSED, но и конкретные строки. Идентификаторы у разных производителей трактуются по-разному, однако набор ключевых совпадает:
sudo smartctl -a /dev/sda
sudo smartctl -A /dev/sda
sudo smartctl -l selftest /dev/sda
sudo smartctl -t short /dev/sda
5 Reallocated_Sector_Ct— переназначенные секторы. Рост говорит о деградации.177 Wear_Leveling_Count— остаток ресурса по оценке контроллера (например, у Samsung).197 Current_Pending_Sectorи198 Offline_Uncorrectable— секторы, которые не читаются; критично.199 UDMA_CRC_Error_Count— ошибки кабеля или разъёма, а не самого диска.241 Total_LBAs_Written— записанный объём в логических блоках по 512 байт.9 Power_On_Hours— наработка, полезная для сопоставления с гарантией.
Пересчёт записанного объёма для SATA:
sudo smartctl -A /dev/sda | awk '/Total_LBAs_Written/ {printf "%.2f TB\n", $10*512/1e12}'
sudo smartctl -A /dev/sda | awk '/Power_On_Hours/ {print "часов:", $10}'
Значение в последнем столбце некоторые производители упаковывают в нестандартный формат. Если число выглядит абсурдно большим, сверьтесь с документацией модели.
TRIM: проверка и включение
TRIM сообщает контроллеру, какие блоки больше не нужны файловой системе. Без него контроллер перезаписывает блоки целиком, растёт усиление записи и износ. Проверяем поддержку и текущее состояние:
lsblk -D
sudo fstrim -av
systemctl status fstrim.timer --no-pager
sudo systemctl enable --now fstrim.timer
Периодический fstrim.timer предпочтительнее опции монтирования discard: он не замедляет удаление файлов и выполняется раз в неделю. Btrfs использует асинхронный discard (discard=async), а в виртуальных машинах проброс TRIM зависит от гипервизора и типа диска.
Для шифрованного раздела LUKS ситуация сложнее: по умолчанию discard не пропускается, иначе по освобождённым блокам можно судить о структуре данных. Опция allow-discards включает проброс ценой этой утечки метаданных.
Температура и троттлинг
NVMe греется заметно сильнее SATA. При перегреве контроллер снижает скорость, и система начинает «задумываться» на ровном месте. Датчики доступны через hwmon и журнал:
grep . /sys/class/nvme/nvme0/hwmon*/temp1_input
sudo nvme smart-log /dev/nvme0 | grep -i temp
dmesg -T | grep -iE "nvme|thermal|throttl"
Значения в sysfs указаны в тысячных долях градуса. Если диск долго держится выше 70 градусов, проверьте радиатор и продув корпуса; в ноутбуке помогает термопрокладка, если конструкция предусматривает место.
Ошибки, прошивка и признаки скорой замены
Рост media_errors, ненулевой critical_warning, ошибки сброса в dmesg и повторяющиеся записи в nvme error-log — плохой сигнал. Прошивку стоит обновлять через fwupdmgr, если производитель публикует обновления для Linux:
sudo nvme fw-log /dev/nvme0
sudo fwupdmgr get-devices
sudo fwupdmgr refresh
sudo fwupdmgr update
Заменяйте накопитель, если выполняются хотя бы два условия: percentage_used выше 90, резервная область приблизилась к порогу, появились неустранимые ошибки чтения. При одном только большом значении записанных терабайт диск может проработать ещё годы.
Мониторинг и обслуживание
Ручные проверки забываются, поэтому настраиваем smartd. Он отслеживает атрибуты, запускает короткие и длинные тесты и отправляет письма при изменениях.
/dev/nvme0 -H -m root
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m root
systemctl restart smartd
sudo smartctl -l selftest /dev/sda
В конфиге /etc/smartd.conf строки располагаются после комментариев. Проверьте, что почтовый агент на машине действительно отправляет письма, иначе уведомления останутся в локальном ящике.
Чек-лист диагностики
- Модель, интерфейс и прошивка зафиксированы в документации.
- Снят базовый снимок SMART и настроен еженедельный короткий тест.
fstrim.timerактивен, выводfstrim -avне пуст.- Температура под нагрузкой не превышает паспортный порог.
media_errorsиcritical_warningостаются нулевыми.- Резервная копия проверена восстановлением, а не только созданием.
Итог
Диагностика SSD и NVMe сводится к трём привычкам: смотреть журнал здоровья, а не только общий вердикт; держать TRIM включённым; следить за температурой и динамикой счётчиков. Абсолютные значения мало что говорят, а вот рост ошибок и резкое изменение запаса ячеек — достоверный сигнал. Настройка smartd и регулярный fstrim занимают полчаса и дают время спокойно перенести данные до отказа.