UPD март 2020: см. обновлённую версию тут>>>.
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