S.M.A.R.T: проверка HDD — описание атрибутов, значение атрибутов, утилиты, параметры

Автор: | 02/12/2013
 

Hardware logo

S.M.A.R.T. (от англ. self-monitoring, analysis and reporting technology — технология самоконтроля, анализа и отчётности) — технология оценки состояния жёсткого диска встроенной аппаратурой самодиагностики, а также механизм предсказания времени выхода его из строя.

smartctl — утилита для чтения информации SMART;

smartd — демон SMART, постоянно работающий в системе (UNIX-системы) и отслеживающий изменения параметров, умеет отправлять письмо в случае проблем. Про её установку и настройку — в другой статье.

Узнать все возможности:

# smartctl -h | less

Если система сообщает, что:

SMART Disabled. Use option -s with argument ‘on’ to enable it.

значит SMART на этом устройстве отключен. Что бы активировать его — выполните:

# smartctl -s on /dev/sda

А если надо наоборот выключить SMART — укажите:

# smartctl -s off /dev/sda

Утилита smartctl умеет проводить собственное тестирование диска, для получения более точных данных. Тесты бывают 3-х видов:

  • Short
  • Extended (Long)
  • Conveyance

Что бы узнать, сколько времени займёт каждый из них — выполните:

# smartctl -c /dev/sda | less

В выводе будет информация такого плана:

Short self-test routine
recommended polling time:        (   2) minutes.
Extended self-test routine
recommended polling time:        (  78) minutes.
Conveyance self-test routine
recommended polling time:        (   5) minutes.

Что бы запустить проверку определённого типа — выполните:

# smartctl -t short /dev/sda

Проверка запускается в фоне, а нам сообщается что:

Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Wed Feb 13 12:24:14 2013

Через две минуты можно посмотреть лог выполнения теста командой:

# smartctl -l selftest /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-29-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== 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%         0         —

Что бы остановить выполнение проверки — выполняем:

# smartctl -X

Узнать модель жесткого диска и другую информацию о нём:

# smartctl -i /dev/sda

smartctl 5.43 2012-06-30 r3573 [i686-linux-3.5.3-pmagic] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.12
Device Model: ST3750528AS
Serial Number: 6VP9QAXZ
LU WWN Device Id: 5 000c50 030b008b0
Firmware Version: CC44
User Capacity: 750,156,374,016 bytes [750 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Tue Feb 12 08:41:30 2013 UTC
SMART support is: Available — device has SMART capability.
SMART support is: Enabled

Быстро получить общую информацию о здоровье диска можно с ключём -H:

# smartctl -H /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-29-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

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

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE
1 Raw_Read_Error_Rate POSR— 117 099 006 — 151585789
3 Spin_Up_Time PO—- 098 095 000 — 0
4 Start_Stop_Count -O—CK 100 100 020 — 994
5 Reallocated_Sector_Ct PO—CK 100 100 036 — 0
7 Seek_Error_Rate POSR— 086 060 030 — 427014129
9 Power_On_Hours -O—CK 089 089 000 — 10425
10 Spin_Retry_Count PO—C- 100 100 097 — 0
12 Power_Cycle_Count -O—CK 100 100 020 — 994
183 Runtime_Bad_Block -O—CK 100 100 000 — 0
184 End-to-End_Error -O—CK 100 100 099 — 0
187 Reported_Uncorrect -O—CK 098 098 000 — 2
188 Command_Timeout -O—CK 100 097 000 — 12885098553
189 High_Fly_Writes -O-RCK 100 100 000 — 0
190 Airflow_Temperature_Cel -O—K 067 057 045 — 33 (Min/Max 22/33)
194 Temperature_Celsius -O—K 033 043 000 — 33 (0 12 0 0 0)
195 Hardware_ECC_Recovered -O-RC- 041 029 000 — 151585789
197 Current_Pending_Sector -O—C- 100 100 000 — 0
198 Offline_Uncorrectable —-C- 100 100 000 — 0
199 UDMA_CRC_Error_Count -OSRCK 200 200 000 — 0
240 Head_Flying_Hours —— 100 253 000 — 192212671410811
241 Total_LBAs_Written —— 100 253 000 — 243267056
242 Total_LBAs_Read —— 100 253 000 — 1655697341
||||||_ K auto-keep
|||||__ C event count
||||___ R error rate
|||____ S speed/performance
||_____ O updated online
|______ P prefailure warning

Так же, полезно использовать ключ -a, который выводит всю имеющуюся в SMART-контроллере информацию, среди прочего в ней имеются такие данные, которые помогут определить состояние диска:

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 117 099 006 Pre-fail Always — 151585789
3 Spin_Up_Time 0x0003 098 095 000 Pre-fail Always — 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always — 994
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always — 0
7 Seek_Error_Rate 0x000f 086 060 030 Pre-fail Always — 427014129
9 Power_On_Hours 0x0032 089 089 000 Old_age Always — 10425
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always — 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always — 994
183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always — 0
184 End-to-End_Error 0x0032 100 100 099 Old_age Always — 0
187 Reported_Uncorrect 0x0032 098 098 000 Old_age Always — 2
188 Command_Timeout 0x0032 100 097 000 Old_age Always — 12885098553
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always — 0
190 Airflow_Temperature_Cel 0x0022 067 057 045 Old_age Always — 33 (Min/Max 22/33)
194 Temperature_Celsius 0x0022 033 043 000 Old_age Always — 33 (0 12 0 0 0)
195 Hardware_ECC_Recovered 0x001a 041 029 000 Old_age Always — 151585789
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always — 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline — 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always — 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline — 118962004177531
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline — 243267056
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline — 1655697341

Так же, имеется информация об ошибках на старом диске, с которого взяты примеры (кстати, он вскоре умер):

ATA Error Count: 2
Error 2 occurred at disk power-on lifetime: 9578 hours (399 days + 2 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
— — — — — — —
40 51 00 da e4 3a 07 Error: UNC at LBA = 0x073ae4da = 121300186
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
— — — — — — — — —————- ———————
25 00 08 d8 e4 3a e7 00 00:00:42.136 READ DMA EXT
25 00 08 d8 e4 3a e7 00 00:00:39.524 READ DMA EXT
25 00 08 d0 f9 0a e0 00 00:00:39.511 READ DMA EXT
25 00 08 a8 d5 60 e0 00 00:00:39.511 READ DMA EXT
25 00 08 c0 17 92 e0 00 00:00:39.505 READ DMA EXT

Error 1 occurred at disk power-on lifetime: 9578 hours (399 days + 2 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
— — — — — — —
40 51 00 da e4 3a 07 Error: UNC at LBA = 0x073ae4da = 121300186
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
— — — — — — — — —————- ———————
25 00 08 d8 e4 3a e7 00 00:00:39.524 READ DMA EXT
25 00 08 d0 f9 0a e0 00 00:00:39.511 READ DMA EXT
25 00 08 a8 d5 60 e0 00 00:00:39.511 READ DMA EXT
25 00 08 c0 17 92 e0 00 00:00:39.505 READ DMA EXT
25 00 08 a0 d5 60 e0 00 00:00:39.505 READ DMA EXT

Налицо проблемы с LBA:

LBA (англ. Logical block addressing) — механизм адресации и доступа к блоку данных на жёстком диске, при котором системному контроллеру нет необходимости учитывать геометрию самого жесткого диска (количество цилиндров, сторон, секторов на цилиндре). Контроллеры современных IDE-дисков в качестве основного режима трансляции адреса используют LBA.

Далее этот диск пошёл под тестирование Victoria — но это уже тема другой статьи, хотя лог Victoria можете оценить тут>>>.

Вернёмся к SMART.

Результаты SMART представлены в виде атрибутов (первая часть таблицы SMART Attributes Data Structure) и их значений — колонки VALUE, WORST, THRESH, TYPE и других.

Последние две колонки — WHEN_FAILED и RAW_VALUE обозначают «Когда выйдет из строя» и «Текущее значение«.

Наиболее важным для нас являются колонки «VALUE» («Normalized Value»), «RAW» («Raw Value»)  и «THRESH» («Threshold»).

Если значение атрибута Normalized Value меньше или равно значения Threshold — то у диска уже есть или скоро будут большие проблемы в работе и использовать его нежелательно. Максимальное значение (от 1 до 100) атрибута означает максимальную стабильность. Чем значение ниже, тем быстрее текущий параметр деградирует.

Threshold — значение, которого должен достигнуть Normalized Value этого же атрибута, чтобы состояние атрибута было признано критическим. Проще говоря, Threshold — это порог: если Normalized Value больше Threshold — атрибут в порядке; если меньше либо равен — с атрибутом проблемы. Именно по такому критерию утилиты, читающие SMART, выдают отчёт о состоянии диска либо отдельного атрибута вроде «Good» или «Bad». При этом они не учитывают, что даже при Normalized Value, большем Threshold, диск на самом деле уже может быть умирающим с точки зрения пользователя, а то и вовсе ходячим мертвецом, поэтому при оценке здоровья диска смотреть стоит всё-таки на другой класс атрибута, а именно — RAW. Однако именно значение Value, опустившееся ниже Threshold, может стать легитимным поводом для замены диска по гарантии. Т. е. при значении Normalized Value, большем Threshold, сам диск считает, что атрибут здоров, а при меньшем либо равном — что болен.  Threshold — постоянный параметр, зашитый производителем в диске.

Каждый производитель использует собственные алгоритмы для вычисления параметра Normalized Value исходя из значения Raw Value.

Это относится и к другим атрибутам. К примеру, производитель Hitachi выводит информацию атрибута Power-on hours в минутах, а не часах.

Параметр «WORST» — наименьшее (наиболее близкое к показателю выхода из строя) значение. Можно использовать просто для ознакомления.

Колонка «TYPE» содержит, как правило, два параметра — Pre-fail или Old-age. Ни тот, ни другой не означают что диск скоро «умрёт. Когда параметры действительно опасны — значение колонки «WHEN_FAILED» изменится на «FAILING_NOW».

Если значение «WHEN_FAILED» тире (‘-‘) это означает что с данным атрибутом всё в порядке.

Параметр Raw Value — это текущее значение атрибута. Например, значение Raw Value 365 для Power-cycled значит, что диск включался каждый день в течении последнего года. Вообще — это самый интересный, важный и нужный для оценки показатель. В большинстве случаев он содержит в себе реальные значения, выражаемые в различных единицах измерения, напрямую говорящие о текущем состоянии диска. Основываясь именно на этом показателе, формируется значение Normalized Value. Именно умение читать и анализировать поле Raw Value даёт возможность объективно оценить состояние винчестера.

Значения атрибутов:

Примечание: БМГ — блок магнитных головок, которые производят непосредственно чтение информации с поверхности «блинов» жесткого диска.

Raw Read Error Rate — частота появления ошибок при чтении данных с диска. Данный параметр показывает частоту появления ошибок при операциях чтения с поверхности диска по вине аппаратной части накопителя;

Spin Up Time — время раскрутки шпинделя. Среднее время раскрутки шпинделя диска от 0 до рабочей скорости (как правило — 7200 об/мин, RPM — Revolution Per Minute). Предположительно, в поле Raw Value содержится время в миллисекундах/секундах;

Reallocated Sector Count — количество переназначенных секторов. Когда жесткий диск встречает ошибку чтения/записи/верификации — он пытается переместить данные из него в специальную резервную область (Spare Area) и, в случае успеха, помечает сектор как «переназначенный». Также, этот процесс называют Remapping, а переназначенный сектор — Remap. Благодаря этой возможности, на современных жестких дисках очень редко видны (при тестировании поверхности) так называемые Bad Block. Однако, при большом количестве Remaps, на графике чтения с поверхности будут заметны «провалы» — резкое падение скорости чтения (до 10% и более). Поле Raw Value содержит общее количество переназначенных секторов;

Throughput Performance — средняя производительность (пропускная способность) диска. Уменьшение значения Normalized Value этого атрибута с большой вероятностью указывает на проблемы в накопителе;

Start/Stop Count — количество циклов запуск/останов шпинделя. Поле Raw Value хранит общее количество включений/выключений диска;

Read Channel Margin — запас канала чтения. Назначение этого атрибута не документировано и в современных накопителях не используется;

Seek Error Rate — частота появления ошибок позиционирования БМГ. В случае сбоя в механической системе позиционирования, повреждения сервометок (Servo), сильного термического расширения дисков и т.п. возникают ошибки позиционирования. Чем их больше — тем хуже механика и/или поверхности жесткого диска;

Seek Time Performance — средняя производительность операций позиционирования БМГ. Данный параметр показывает среднюю скорость позиционирования привода БМГ на указанный сектор. Снижение значения этого атрибута говорит о неполадках в механике привода;

Power-On Hours — количество отработанных часов во включенном состоянии. Поле Raw Value этого атрибута показывает количество часов (минут, секунд — в зависимости от производителя), отработанных жестким диском. Снижение значения (Normalized Value) атрибута до критического уровня (Threshold) указывает на выработку диском ресурса (MTBF — Mean Time Between Failures). На практике, даже падение этого атрибута до нулевого значения не всегда указывает на реальное исчерпывание ресурса и накопитель может продолжать нормально функционировать;

Spin Retry Count — количество повторов попыток старта шпинделя диска. Данный атрибут фиксирует общее количество попыток раскрутки шпинделя и его выхода на рабочую скорость, при условии, что первая попытка была неудачной. Снижение значения этого атрибута говорит о неполадках в механике привода;

Recalibration Retries — количество повторов попыток рекалибровки накопителя. Данный атрибут фиксирует общее количество попыток сброса состояния накопителя и установки головок на нулевую дорожку, при условии, что первая попытка была неудачной. Снижение значения этого атрибута говорит о неполадках в механике привода;

Device Power Cycle Count — количество полных циклов запуска/остановки жесткого диска;

Soft Read Error Rate — частота появления «программных» ошибок при чтении данных с диска. Данный параметр показывает частоту появления ошибок при операциях чтения с поверхности диска по вине программного обеспечения, а не аппаратной части накопителя;

End-to-End error — данный атрибут-часть технологии HP SMART IV, это означает, что после передачи через кэш памяти буфера данных паритет данных между хостом и жестким диском не совпадают;

Reported UNC Errors — ошибки, которые не могли быть восстановлены, используя методы устранения ошибки аппаратными средствами;

Load/Unload cycle count — количество циклов вывода БМГ в специальную парковочную зону/в рабочее положение. Подробнее — см. описание технологии Head Load/Unload Technology тут>>>;

Drive Temperature — температура. Данный параметр отражает в поле Raw Value показание встроенного температурного сенсора в градусах Цельсия;

Reallocation Event Count — количество операций переназначения (Remapping). Поле Raw Value этого атрибута показывает общее количество попыток переназначения сбойных секторов в резервную область, предпринятых накопителем. При этом, учитываются как успешные, так и неудачные операции;

Current Pending Sector Count — текущее количество нестабильных секторов. Поле Raw Value этого атрибута показывает общее количество секторов, которые накопитель в данный момент считает претендентами на переназначение в резервную область (Remap). Если в дальнейшем какой-то из этих секторов будет прочитан успешно, то он исключается из списка претендентов. Если же чтение сектора будет сопровождаться ошибками, то накопитель попытается восстановить данные и перенести их в резервную область, а сам сектор пометить как переназначенный (Remapped). Постоянно ненулевое значение Raw Value этого атрибута говорит о низком качестве (отдельной зоны) поверхности диска;

Uncorrectable Sector Count — количество нескорректированных ошибок. Атрибут показывает общее количество ошибок, возникших при чтении/записи сектора и которые не удалось скорректировать. Рост значения в поле Raw Value этого атрибута указывает на явные дефекты поверхности и/или проблемы в работе механики накопителя;

UltraDMA CRC Error Count — общее количество ошибок CRC в режиме UltraDMA. Поле Raw Value содержит количество ошибок, возникших в режиме передачи данных UltraDMA в контрольной сумме (ICRC — Interface CRC). Практика, собранная статистика и изучение журналов ошибок SMART показывают: в большинстве случаев ошибки CRC возникают при сильном завышении частоты PCI (больше номинальных 33.6 MHz), сильно перекрученом кабеле, а также — по вине драйверов ОС, которые не соблюдают требований к передачи/приему данных в режимах UltraDMA;

Write Error Rate (Multi Zone Error Rate)— частота появления ошибок при записи данных. Показывает общее количество ошибок, обнаруженных во время записи сектора. Чем больше значение в поле Raw Value (и ниже значение Normalized Value), тем хуже состояние поверхности диска и/или механики привода;

Disk Shift — сдвиг пакета дисков относительно оси шпинделя. Актуальное значение атрибута содержится в поле Raw Value. Единицы измерения — не известны. Подробности — см. в описании технологии G-Force Protection, например — тут>>>. Сдвиг пакета дисков возможен в результате сильной ударной нагрузки на накопитель в результате его падения или по иным причинам;

G-Sense Error Rate — частота появления ошибок в результате ударных нагрузок. Данный атрибут хранит показания ударочувствительного сенсора — общее количество ошибок, возникших в результате полученных накопителем внешних ударных нагрузок (при падении, неправильной установки, и т.п.). Подробнее — см. описание технологии G-Force Protection;

Loaded Hours — нагрузка на привод БМГ, вызванная общей наработкой часов накопителем. Учитывается только период, в течении которого головки находились в рабочем положении;

Load/Unload Retry Count — нагрузка на привод БМГ, вызванная многочисленными повторениями операций чтения, записи, позиционирования головок и т.п. Учитывается только период, в течении которого головки находились в рабочем положении;

Load Friction — нагрузка на привод БМГ, вызванная трением в механических частях накопителя. Учитывается только период, в течении которого головки находились в рабочем положении;

Load/Unload Cycle Count — общее количество циклов нагрузки на привод БМГ. Учитывается только период, в течении которого головки находились в рабочем положении;

Load-in Time — общее время нагрузки на привод БМГ. Предположительно — данный атрибут показывает общее время работы накопителя под нагрузкой, при условии, что головки находятся в рабочем состоянии (вне парковочной зоны);

Torque Amplification Count — количество усилий вращающего момента привода;

Power-Off Retract Count — количество зафиксированных повторов включения/выключения питания накопителя;

GMR Head Amplitude — амплитуда дрожания GMR-головок (GMR-Head) в рабочем состоянии.

ВАЖНО: для всех атрибутов лучше меньшее (или уменьшающееся) значение, что можно определить периодически проводя проверки. Исключение — следующие атрибуты:

Throughput Performance — общая производительность диска. Если значение атрибута уменьшается, то велика вероятность, что с диском есть проблемы.

и:

Seek Time Performance — средняя производительность операции позиционирования магнитными головками. Если значение атрибута уменьшается (замедление позиционирования), то велика вероятность проблем с механической частью привода головок.

Критичные атрибуты, на которые необходимо обращать особое внимание:

* Raw Read Error Rate
* Spin Up Time
* Spin Up Retry Count
* Seek Error Rate
* Reallocated Sector Coun

Для сравнения с результатами SMART, приведёнными в статье выше — результат с диска, который был только что распечатан:

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   100   253   051    Pre-fail  Always       —       0
3 Spin_Up_Time            0x0027   100   253   021    Pre-fail  Always       —       0
4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       —       1
5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       —       0
7 Seek_Error_Rate         0x002e   100   253   000    Old_age   Always       —       0
9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       —       0
10 Spin_Retry_Count        0x0032   100   253   000    Old_age   Always       —       0
11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       —       0
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       —       1
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       —       1
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       —       3
194 Temperature_Celsius     0x0022   118   116   000    Old_age   Always       —       25
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   253   000    Old_age   Always       —       0
200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      —       0

SMART Error Log Version: 1
No Errors Logged

И пара полезных примеров работы утилиты dd.

Иногда требуется удалить все данные с диска, для этого — «забьём» диск нулями — например, во время выполнения тестов на нём, или — что бы скрыть информацию:

# dd if=/dev/zero of=/dev/sda

Быстрый способ проверить HDD на наличие Bad-Blocks («битых» блоков):

# dd if=/dev/sda of=/dev/null bs=512

Полезные ссылки по теме:

http://ru.wikipedia.org
http://www.ixbt.com
http://www.overclockers.ru
http://forum.oszone.net
http://www.thg.ru
https://help.ubuntu.com
http://forum.ixbt.com