[ @hdd @smart @smartmontools ]
Это утилита для диагностики состояния HDD.
Для условного «лечения» дисков см. fsck
Теория: Common:HowTo:Проверить:S.M.A.R.T.
Установка
Узнать «имя» проверяемого диска
Это делается через две отдельные утилиты:
- lsblk (вкратце)
- sudo fdisk -l (детально)
Диски 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 выполняет разные тесты:
- short — быстрый, минут на 10
- long — детальный; иногда десяток минут, иногда не меньше часа
- conveyance — помогает узнать, если hdd перетрясли при транспортировке; ATA devices only
- select — как и conveyance, но тут проверяют определенный диапазона LBA (адресов логических блоков), который указывается при запуске теста; тоже ATA devices only
Параметр -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