• База знань
  • /
  • Блог
  • /
  • 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 Translation), що робить її доволі універсальною.

Пояснимо значення найбільш вживаних SMART-атрибутів для різних типів накопичувачів:

HDD (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 – Фіксує кількість операцій по перепризначенню секторів. Процес перепризначення секторів або remapping полягає у реєстрації 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/sda
Перевірити загальний стан носія:
$ 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
Personalities : [raid1]
md0 : active raid1 sdb1[0] sdc1[1]
575532516 blocks super 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 by Zabbix agent 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 by Zabbix agent 2 до цільового хоста. Це можна зробити прямо із інтерфейсу Zabbix, завантаживши шаблон із сайту розробників. Якщо все гаразд, сторінка налаштувань хоста у Zabbix буде виглядати так, як показано на скриншоті нижче. 

Интерфейс Zabbix

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

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

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

Коли міняти диск

  • Одразу: Current_Pending_Sector > 0, Offline_Uncorrectable > 0, critical_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