• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

Статья также доступна на украинском (перейти к просмотру).

Узнайте, как проверять состояние HDD, SSD и NVMe в Linux/FreeBSD: SMART, инструменты, тесты и настройки мониторинга

Содержание:

Во время активной и/или длительной эксплуатации дисковых носителей обычно накапливаются незначительные повреждения в виде bad-секторов или ошибок записи данных, что может в любой момент времени привести к выходу из строя и потере данных. Встроенная система SMART-контроль сама по себе не обеспечивает информирование о критическом состоянии диска, а лишь осуществляет накопление значений параметров, отражающих его состояние. Задача инструментов мониторинга прежде всего состоит в том, чтобы «вытащить» эти данные и на их основании вовремя сообщить пользователю об опасности. Но для этого нужно знать эти инструменты и уметь их настраивать в соответствии со своими потребностями.   

Ключевые метрики

Технология SMART (Self-Monitoring, Analysis and Reporting Technology) предусматривает наличие группы метрик или атрибутов для каждого из поддерживающих ее носителей. Это устройства, работающие через интерфейсы ATA и SATA, поскольку технология — часть указанных протоколов.

Технология также имеет аналог для NVMe-SSD дисков и может работать с некоторыми типами флэш-накопителей, поддерживающих спецификацию SAT (трансляция SCSI-ATA), что делает ее достаточно универсальной.

Объясним значение наиболее употребляемых SMART-атрибутов для разных типов накопителей:

Жесткий диск (SATA/SAS)

Reallocated_Sector_Ct – Сохраняет количество bad-секторов, успешно перераспределенных;

Current_Pending_Sector – Сохраняет количество нестабильных секторов, находящихся в состоянии ожидания перераспределения; 

Offline_Uncorrectable – фиксирует количество секторов, которые дисковый носитель не смог восстановить при выполнении последней операции по восстановлению данных;

UDMA_CRC_Error_Count – для диска, использующего интерфейс UltraDMA фиксирует количество ошибок передачи данных по внешнему интерфейсу в режиме UltraDMA. Повышенное значение может свидетельствовать о перекручивании кабеля и ненадежных контактах.

SSD (SATA)

Wear_Leveling_Count/Media_Wearout_Indicator/Percent_Lifetime_Used – отражает максимальное значение количества операций по очистке данных, выполняемое для одного блока флэш-памяти;

Reallocated_Sector_Ct – фиксирует количество операций по переназначению секторов. Процесс переназначения секторов или переназначение заключается в регистрации bad-секторов для дальнейшей обработки, и потому чем больше значение атрибута, тем хуже состояние поверхности накопителя;

Temperature_Celsius – текущая температура накопителя по Цельсию.

NVMe

Critical_Warning – вывод критических ошибок о состоянии накопителя;

Percentage_Used – оценивает процент использования ресурсов диска – чем меньше значение, тем выше износ;

Media_Errors – ошибки целостности данных;

Available_Spare – Текущее значение емкости резервной области для замены bad-секторов. При достижении некоторого минимального значения состояние носителя считается критическим;

Temperature_Celsius – текущая температура накопителя по Цельсию.

Инструменты

Существует несколько распространенных видов инструментов для работы с SMART-атрибутами в среде Linux/FreeBSD, применяемые в зависимости от типа накопителя и интерфейса его подключения:

  • Smartmontools: smartctl и smartd;

  • Nvme-cli (NVMe);

  • Обслуживание RAID-массивов.

Рассмотрим их более подробно.

Smartmontools: smartctl і smartd

Программный пакет Smartmontools применяется для мониторинга накопителей типа SATA/SAS и присутствует в репозиториях большинства дистрибутивов ОС Linux. Команды его установки для разных дистрибутивов выглядят следующим образом: 

Debian/Ubuntu

 $ apt update && apt install -y smartmontools'

FreeBSD

$ pkg install smartmontools

Пакет имеет два основных инструмента для работы с ним: smartctl (команда терминала) и smartd (даэмон), позволяющий автоматизировать тестирование дисковых носителей.

Приведем последовательность действий для получения первоначальной информации о состоянии носителя и доступных значений SMART-атрибутов на примере дистрибутива Debian/Ubuntu.

Вывести список всех доступных на компьютере накопителей:

lsblk

получили вывод, включая логическую структуру, чтобы вывести только устройства модифицируемую команду:

~# lsblk | grep '^[a-zA-Z]'| grep disk
sda       8:0    0 223.6G  0 disk  
sdb       8:16   0 223.6G  0 disk  
sdc       8:32   0   3.6T  0 disk  
sdd       8:48   0   3.6T  0 disk 

Просмотрите основную техническую информацию о выбранном диске и убедитесь, что механизм SMART поддерживается системой и включен:

$ sudo smartctl -i /dev/sda
  smartctl 7.4 2024-10-15 r5620 [x86_64-linux-6.17.2-1-pve] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family:     Intel 730 and DC S35x0/3610/3700 Series SSDs
Device Model:     INTEL SSDSC2BB240G4
Serial Number:    PHWL4476005Z240NGN
LU WWN Device Id: 5 5cd2e4 04c456a3c
Firmware Version: D2012370
User Capacity:    240,057,409,536 bytes [240 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database 7.3/5528
ATA Version is:   ACS-2 T13/2015-D revision 3
SATA Version is:  SATA 2.6, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Fri Nov 21 12:12:35 2025 EET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

В данном случае механизм SMART  включен. Если бы это было не так, включить его можно с помощью следующей команды:

$ sudo smartctl -s on /dev/sda

Выключить при необходимости командой:

$ sudo smartctl -s off /dev/sd

Проверить общее состояние носителя:

$ sudo smartctl -H /dev/sda

=== START OF READ SMART DATA SECTION ===

SMART overall-health self-assessment test result: PASSED

Результат теста (PASSED) говорит о том, что диск в норме.

Отобразить значения всех доступных SMART-атрибутов для sda1:

$ sudo smartctl -A /dev/sda
 
smartctl 7.4 2024-10-15 r5620 [x86_64-linux-6.17.2-1-pve] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org
 
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       92494
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       38
170 Available_Reservd_Space 0x0033   100   100   010    Pre-fail  Always       -       0
171 Program_Fail_Count      0x0032   100   100   000    Old_age   Always       -       0
172 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
174 Unsafe_Shutdown_Count   0x0032   100   100   000    Old_age   Always       -       24
175 Power_Loss_Cap_Test     0x0033   100   100   010    Pre-fail  Always       -       642 (548 2701)
183 SATA_Downshift_Count    0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   090    Pre-fail  Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
190 Temperature_Case        0x0022   088   081   000    Old_age   Always       -       12 (Min/Max 10/19)
192 Unsafe_Shutdown_Count   0x0032   100   100   000    Old_age   Always       -       24
194 Temperature_Internal    0x0022   100   100   000    Old_age   Always       -       21
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
199 CRC_Error_Count         0x003e   100   100   000    Old_age   Always       -       0
225 Host_Writes_32MiB       0x0032   100   100   000    Old_age   Always       -       2075149
226 Workld_Media_Wear_Indic 0x0032   100   100   000    Old_age   Always       -       22221
227 Workld_Host_Reads_Perc  0x0032   100   100   000    Old_age   Always       -       54
228 Workload_Minutes        0x0032   100   100   000    Old_age   Always       -       5549417
232 Available_Reservd_Space 0x0033   100   100   010    Pre-fail  Always       -       0
233 Media_Wearout_Indicator 0x0032   079   079   000    Old_age   Always       -       0
234 Thermal_Throttle        0x0032   100   100   000    Old_age   Always       -       0/0
241 Host_Writes_32MiB       0x0032   100   100   000    Old_age   Always       -       2075149
242 Host_Reads_32MiB        0x0032   100   100   000    Old_age   Always       -       2459155

Для FreeBSD аналогичная команда будет выглядеть так:

$ smartctl -a /dev/ada0 

Для получения более полной информации по атрибутам можно воспользоваться командой:

$ sudo smartctl --all /dev/sda

После оценки полученных значений атрибутов сделать выводы о состоянии диска и при необходимости запустить сокращенное (Short) самотестирование устройства:

 $ sudo smartctl -t short /dev/sda
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Tue Nov 18 15:33:05 2025

Подождать несколько минут и получить результаты тестирования с помощью команды:

$ sudo smartctl -l selftest /dev/sda
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description   Status      Remaining           LifeTime(hours)   LBA_of_first_error
# 1 Short offline      Completed  without error  00%   32685                               -

В зависимости от результатов сокращенного тестирования при необходимости можно запустить длительное расширенное самотестирование (Long/extended), которое проведет более полный анализ поверхности носителя. Это можно сделать с помощью команды:

$ sudo smartctl -t long /dev/sda

Продолжительность тестирования может занять несколько часов в зависимости от скорости работы носителя и его емкости. Проверить результаты можно с помощью команды:

$ sudo smartctl -c /dev/sda

Настроить автоматический SMART-мониторингсостояния накопителя в режиме smartd, для чего включить нужные типы носителей в файл /etc/smartd.conf:

$ sudo nano /etc/smartd.conf
# First two SCSI disks.  This will monitor everything that smartd can
# monitor.  Start extended self-tests Wednesdays between 6-7pm and
# Sundays between 1-2 am
/dev/sda -d scsi -s L/../../3/18

В этом случае самотестирование sda-диск будет осуществляться каждую среду с 18 до 19 часов и каждое воскресенье с 1 до 2 часов.

Завершить настройки командами:

$ sudo systemctl enable smartd
$ sudo systemctl start smartd

Nvme-cli (NVMe)

В настоящее время отсутствует поддержка пакетом Smartmontools файловых хранилищ на базе NVMe, то есть, нет универсального средства мониторинга всех существующих типов носителей. И потому для работы с NVMe-SSd-дисками обычно используется пакет Nvme-cli, специально разработанный для Linux-систем. Он использует IOCTL, которые определяются основным драйвером ядра и применяется для работы с хранилищами NVMe в терминальном режиме.

Общий синтаксис команд утилиты выглядит следующим образом:

nvme <команда> <устройство> [<аргументы>]

Здесь<устройство> – обязательный параметр, который может быть символьным (/dev/nvmeX) или блочным устройством (/dev/nvmeXn1) пространства имен.

Просмотреть список всех команд и их синтаксис можно с помощью команды терминала:

$ nvme help

Установить пакет:

$ sudo apt install nvme-cli

Получить данные об установленных в системе устройствах NVMe:

$ nvme list
 
Node         SN               Model                                Version  Namespace Usage                  Format       FW Rev
---------------- -------------------- ---------------------------------------- -------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 S3DETCNHB01582C  Samsung SSD 960 PRO 1TB              1.3  1     677.52  GB /   1.03  TB512   B +  0 B   1M3QZXP8

Вывести для устройства nvme0 страницу журнала SMART в удобном для восприятия человеком формате:

 $ nvme smart-log /dev/nvme0 
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                : 0
temperature                     : 33 C
available_spare                 : 100%
available_spare_threshold       : 9%
percentage_used                 : 1%
data_units_read                 : 3,531,278
data_units_written              : 9,051,597
host_read_commands              : 88,921,356
host_write_commands             : 126,562,383
controller_busy_time            : 312
power_cycles                    : 12
power_on_hours                  : 19
unsafe_shutdowns                : 7
media_errors                    : 0
num_err_log_entries             : 2
Warning Temperature Time        : 0
Critical Composite Temperature Time : 0
Temperature Sensor 1            : 33 C
Temperature Sensor 2            : 42 C
Temperature Sensor 3            : 0 C 

Вывести в файл необработанный журнал SMART для устройства nvme0:

$ nvme smart-log /dev/nvme0 --raw-binary > smart_log.raw

Обслуживание RAID-массивов

Технология RAID (Redundant Array of Independent Disks) обеспечивает избыточный массив независимых друг от друга носителей для их объединения в одно хранилище данных. Они могут быть реализованы на программном (виртуализированном) или аппаратном уровне.

Для мониторинга работы RAID-массивов можно использовать различные средства в зависимости от типа RAID.

Для контроля SMART-параметров дисков RAID-массива можно использовать те же команды утилиты Smartmontools, что и в случае их единичного использования.  

Debian/Ubuntu

$ sudo smartctl -A /dev/sda

Вывести текущее состояние всех зарегистрированных в системе RAID-массивов можно с помощью команды:

$ cat /proc/mdstat

Личности

[raid1]
md0 : активный raid1 sdb1[0] sdc1[1]
575532516 блоков супер 1.2 [2/2] [UU]

Команда вывела статус дисков (active); имя raid-устройства (md0); символьные имена дисков, входящих в состав устройства; имя созданного массива (raid1); количество носителей, работающих в массиве ([2/2] [UU]).

Иногда могут возникать сложности в получении значений SMART-атрибутов, если RAID-массив построен на аппаратном уровне. В таком случае следует использовать утилиты производителей оборудования, например, storcli, megacli или arcconf.

Вместе с тем, не следует игнорировать использование инструмента smartctl для проверки состояния носителей и создания восстановительных точек для быстрого восстановления данных.

Мониторинг дисков с помощью Zabbix

Система мониторинга статусов сетевых сервисов и компьютерного оборудования Zabbix соединила в себе возможности утилиты Smartmontools со своими технологическими решениями. Ее можно использовать для сбора значений SMART-параметров дисков разного типа: HDD, SSD, NVMe с включенной SMART-функцией.  

Zabbix поддерживает два подхода к управлению SMART-атрибутами устройств:

  • С помощью пользовательских параметров (UserParameter);

  • С помощью механизма низкоуровневого обнаружения LLD (Low-Level Discovery).

Первый подход в основном использовался в первых версиях программы и имеет ряд недостатков, среди которых ручное управление элементами данных и другими сущностями, а также избыточные запуски smartctl с периодическим обращением к контроллерам накопителей, что снижает эффективность работы программы.

Второй подход основан на правилах обнаружения LLD и обеспечивает автоматическое создание элементов данных, триггеров и графиков любого типа сущностей с автоматическим запуском мониторинга системы. Пользователь имеет возможность определить собственные типы обнаружения устройств на основе JSON-файл. Подход более эффективен, упрощает настройки, и поэтому целесообразно использовать именно его.

В  git-репозитории разработчиков присутствует шаблон SMART от Zabbix агент 2 с реализацией SMART-функция для последней версии Zabbix-агента, построенный на базе LLD и сконфигурирован на автоматическое обнаружение всех HDD, SSD, NVMe накопителей, а также считывание всех атрибутов, специфичных для поставщика оборудования. Его применение не требует внешних скриптов и потому очень удобно для практического использования. Просмотреть информацию о совместном использовании Zabbix-агента с указанным шаблоном можно здесь.

Приведем последовательность действий для практического использования инструмента Zabbix для мониторинга всех типов накопителей целевого хоста:

  1. Установить сервер Zabbix версии 6.2+. Загрузить установочный файл можно с сайта разработчиков.

  2. Установить агент Zabbixagent 2 на целевой хост.

  3. Установить пакет Smartmontools версии 7.1+ на целевой хост.

  4. Предоставить агенту Zabbixagent 2 права суперпользователя для запуска команд smartctl. Для этого следует добавить в файл /etc/sudoers целевого хоста следующую строчку: zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl.

  5. Проверить статус Zabbix-агента на хосте. Это можно сделать с помощью команды:$ service zabbix-agent2 status.

  6. Подключить шаблон SMART от Zabbixagent 2 к целевому хосту. Это можно сделать прямо из интерфейса Zabbix, загрузив шаблон с сайта разработчиков. Если все хорошо, страница настроек хоста в Zabbix будет выглядеть так, как показано на скриншоте ниже.

Интерфейс Zabbix

  1. Через 5-6 часов после выполнения указанных настроек проверить результаты мониторинга в главном окне программы (см. скриншот). 

Результаты мониторинга в главном окне программы

Полная документация по продукту находится здесь.

Когда менять диск

  • Одразу: Current_Pending_Sector > 0, Offline_Uncorrectable > 0, critic_warning != 0, поява media_errors.
  • Планово: стабильный рост Reallocated_Sector_Ct, износ SSD/NVMe ≥80%, повторные UDMA_CRC (после проверки кабелей/порта).

FREEhost.UA помогает не пропустить проблему с диском

Мы понимаем, что не каждый администратор ежедневно изучает SMART-отчёты. Поэтому на серверах, которые клиенты арендуют у FREEhost.UA, мы настраиваем небольшой сервис, который контролирует состояние физических дисков и автоматически уведомляет наших инженеров при обнаружении потенциальных сбоев. Это позволяет заменять диск до отказа и избегать простоев.

Кроме того, мы рекомендуем клиентам придерживаться двух базовых правил: делайте резервные копии и используйте RAID. Это самая надёжная защита от потери данных в любой инфраструктуре.

Узнайте больше об аренде серверов в дата-центре FREEhost.UA.

Подписывайтесь на наш телеграмм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов

Смотрите наш канал Youtube на https://www.youtube.com/freehostua.

Мы в чем ошиблись, или что-то пропустили?

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

Дата: 27.11.2025
Автор: Александр Ровник
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
navigate
go
exit
Спасибо, что выбираете FREEhost.UA