[ Пред. ] [ Содержание ] [ След. ]

SmartMonTools

[ @hdd @smart @smartmontools ]

 


Это утилита для диагностики состояния HDD.


Для условного «лечения» дисков см. fsck


Теория: Common:HowTo:Проверить:S.M.A.R.T.


Установка



Узнать «имя» проверяемого диска


Это делается через две отдельные утилиты:



Диски HDD принято именовать /dev/sda, а партиции на нём номерами:


/dev/sda
├─/dev/sda1
├─/dev/sda2


Следующий диск будет называться /dev/sdb:


/dev/sdb
├─/dev/sdb1
├─/dev/sdb2


Диски NVMe принято именовать по другому стандарту — /dev/nvme0n1, но партиции тоже называются соответственно номерам:


/dev/nvme0n1
├─/dev/nvme0n1p1
├─/dev/nvme0n1p2


Также название диска (и партиций на нём) можно узнать через «Диспетчер разделов от KDE» (partitionmanager), и там же можно получить краткий отчет по SMART: Устройство > Состояние SMART.


Проверить SMART для HDD


Допустим, hdd-устройство называется /dev/sda. Получить отчёт:


sudo smartctl -i /dev/sda


Пример ответа:


Model Family:     Western Digital Red
Device Model:     WDC WD10EFRX-68FYTN0
LU WWN Device Id: 5 0014ee 20c672def
Firmware Version: 82.00A82
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Thu Sep 24 18:13:19 2020 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Disabled

Смотрим последние строки. Диск поддерживает SMART, и он отключен. Включить:


sudo smartctl -s on /dev/sda


У SSD другие технологии (ничего не крутится).


NVMe ещё и называются по-другому, вроде:


sudo smartctl -i /dev/nvme0n1p2


Получить полный отчет


Через параметр -a (--all):


sudo smartctl -a /dev/sda


Пример ответа:


SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 135 125 021 Pre-fail Always - 4216
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 941
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 085 085 000 Old_age Always - 11285
10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 446
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 108
193 Load_Cycle_Count 0x0032 199 199 000 Old_age Always - 4258
194 Temperature_Celsius 0x0022 111 099 000 Old_age Always - 32
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0


Самые важные параметры — “Reallocated_Sector_Ct” и “Current_Pending_Sector”.


Если “Reallocated_Sector_Ct” RAW_VALUE что угодно, кроме 0, значит на hdd есть сектора, которые сдохли. Диск лучше заменить.


“Current_Pending_Sector” показывает количество плохих секторов, которые еще не были перераспределены.


Тесты SMART


Утилита smartctl выполняет разные тесты:



Параметр -t это сокращение для --test


sudo smartctl -t select,10-20


sudo smartctl -t select,0-5 -t select,5-10


sudo smartctl -t short /dev/sda


Остановить тест


smartctl -X


В ответ узнаем, сколько нужно времени, чтобы тестирование прекратилось.


Проверить результаты:


sudo smartctl -a /dev/sda


Выполнить conveyance test:


sudo smartctl -t conveyance /dev/sda


Выполнить select test:


sudo smartctl -t select,100-150 /dev/sda


Посмотреть только лог ошибок:


sudo smartctl -l error /dev/sda


Проверить SMART в OMV


Storage
> S.M.A.R.T.
> Devices
тыкнуть по нужному диску,
тыкнуть по иконке треугольника „Show Details”
> Attributes


Threshold — заданный порог.
Value — нынешнее значение.


Проверить SMART для SSD/NVMe


Тут физиологически другие технологии, поэтому иногда можно выяснить всё через smartctl:


sudo smartctl -A /dev/nvme0n1


Пример ответа smartctl:


SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        30 Celsius
Available Spare:                    100%
Available Spare Threshold:          5%
Percentage Used:                    0%
Data Units Read:                    4 871 296 [2,49 TB]
Data Units Written:                 1 976 631 [1,01 TB]
Host Read Commands:                 44 172 956
Host Write Commands:                18 955 901
Controller Busy Time:               37
Power Cycles:                       66
Power On Hours:                     39
Unsafe Shutdowns:                   25
Media and Data Integrity Errors:    0
Error Information Log Entries:      59
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               30 Celsius

…а иногда через nvme-cli:


sudo nvme smart-log /dev/nvme0n1


Пример ответа nvme-cli:


Smart Log for NVME device:nvme0n1 namespace-id:ffffffff
critical_warning : 0
temperature : 27°C (300 Kelvin)
available_spare : 100%
available_spare_threshold : 5%
percentage_used : 0%
endurance group critical warning summary: 0
Data Units Read : 48���71296 (2,49 TB)
Data Units Written : 19���76696 (1,01 TB)
host_read_commands : 441���72956
host_write_commands : 189���58638
controller_busy_time : 37
power_cycles : 66
power_on_hours : 39
unsafe_shutdowns : 25
media_errors : 0
num_err_log_entries : 59
Warning Temperature Time : 0
Critical Composite Temperature Time : 0
Temperature Sensor 1 : 27°C (300 Kelvin)
Thermal Management T1 Trans Count : 0
Thermal Management T2 Trans Count : 0
Thermal Management T1 Total Time : 0
Thermal Management T2 Total Time : 0


Самое важное значение см. в поле “critical_warning”. Если там 0 — SSD в норме. Если что-то другое — алярм.


Total Bytes Written (TBW)


Второй по-важности параметр, помогает «предсказать», сколько у диска осталось жизненных сил. Его же иногда называют или Terabytes Written, или Endurance.


Производитель «закладывает» какое-то количество рабочих циклов для каждого диска — Total Bytes Written (TBW). Обычно его максимальное значение указано в названии, например «M.2 NVMe SSD 1.0TB Kingston NV3 [PCIe 4.0 x4, R/W:6000/4000MB/s, 320TBW, 3D-NAND]»


Чем больше заявленный показатель TBW в спецификациях диска, тем лучше.


Чем меньше значение TBW в отчетах о состоянии диска, тем лучше.


На современных nvme-дисках этот параметр можно увидеть явно — см “Data Units Written”. В моём случае там указано [1,01 TB].


Условность №1

Старые модели выдают значения в байтах, тогда как воспринимать tbw надо уже в терабайтах. Поэтому раньше было удобно сразу в консоли пересчитывать значение TBW в терабайты:


sudo smartctl -A /dev/nvme0n1 | grep "Data Units Written" | awk '{print $5$6}' | tr -d []


Пример ответа:


1,01TB


Условность №2

Почему в отчёте от nvme-cli отображаются нечитаемые символы 19���76696 (1,01 TB) — данные хранятся в шестнадцатеричном формате, а выводятся в отчете в зависимости от возможностей каждого диска по-отдельности. Контроллер моего NVMe-диска не поддерживает более новый формат логов, который вызывается через команду smart-log-add:


sudo nvme smart-log-add /dev/nvme0n1


Поэтому какие-то данные конвертируются правильно, но воспринимаются не совсем адекватно. Ну и ладно.


Лечение HDD


См. fsck