SMART - описание технологии
S.M.A.R.T., расшифровывающаяся как технология самоконтроля, анализа, отчётности — это технология, позволяющая оценить состояние HDD с помощью встроенной аппаратуры самодиагностики, а также специального механизма, предсказывающего выход его из строя.
История
Первый HDD, который обладал системой самодиагностики, в 1992 г. был представлен компанией IBM в дисковых массивах IBM9337 для серверов AS400, которые использовали IBM0662 SCSI-2 диски. Технология называлась тогда Predictive Failure Analysis (сокр. PFA). При помощи технологии измерялись некоторые ключевые параметры, их оценка велась в firmware диска непосредственно. Результат ограничивался одним битом: т.е. либо все ОК, либо значение параметра сомнительно, а значит, может в скором времени способствовать выходу диска из строя.
Позднее компаниями Seagate, Compaq, Conner, Quantum была разработана новая технология, называющаяся Intelli_Safe. Для нее был характерен общий протокол выдачи информации относительно состояния HDD, однако измеряемые параметры и пороги для них каждой компанией определялись самостоятельно.
В начале 1995 г. от компании Compaq поступило предложение провести стандартизацию. IBM, Quantum, Seagate, Western Digital (не имевшая на тот момент системы слежения за параметрами HDD) и Conner предложение поддержали. В качестве основы была взята последняя на тот момент технология Intelli_Safe. Разработанный совместно стандарт получил название S.M.A.R.T.
В SMART I был предусмотрен мониторинг основных параметров, он запускался лишь после получения команды.
В ходе разработки SMART II подключившаяся Hitachi предложила методику полной самодиагностики накопителя (т.н. extended self-test), здесь же появилась функция записи ошибок.
SMART III обрел функцию обнаружения дефектов поверхности, а также возможность их восстановления, причем «прозрачно» для пользователя.
Описание
SMART производится наблюдение за главными характеристиками накопителя, в результате которого каждая из них получает оценку. Характеристики можно разделить на две группы:
- параметры, которые отражают процесс естественного старения HDD (число перемещений головок, число оборотов шпинделя, число циклов включения-выключения);
- параметры накопителя на текущий момент (количество переназначенных секторов, высота головок над поверхностью HDD, время поиска дорожки, а также число ошибок поиска).
Все данные хранятся в 16-ричном виде, который называется «raw value», пересчитываясь затем в «value» — т.е. в значение, обозначающее надёжность в сравнении с некоторым эталонным значением. Как правило, «value» попадает в диапазон от 0 до 100 (для некоторых атрибутов от 0 до 200 либо от 0 до 253).
Высокий бал свидетельствует об отсутствии изменений параметра либо медленном его ухудшении. Низкий бал, напротив, говорит о скором сбое.
Значение, которое меньше минимального, при котором производитель гарантирует безотказную работу накопителя, свидетельствует о выходе узла из строя.
Благодаря технологии SMART осуществляется:
- мониторинг параметров состояния HDD;
- сканирование его поверхности;
- сканирование поверхности с последующей автоматической заменой сомнительных секторов надёжными.
Отметим, что технология SMART достоверно предсказывает выход устройства из строя в связи с механическими неисправностями, составляющими около 60% причин, из-за которых выходят из строя винчестеры. Однако предсказывать эффект от скачка напряжения либо повреждения накопителя от удара технология SMART не умеет.
Кроме того, накопители НЕ МОГУТ сообщать нам о своём состоянии самостоятельно с помощью технологии SMART, для этого нужны специальные программы. Использование технологии SMART, таким образом, невозможно при отсутствии таких составляющих как:
- ПО, встроенного в контроллер HDD.
- Внешнего ПО, которое встроено в хост.
Программы, необходимые для отображения состояния SMART-атрибутов, работают согласно следующему алгоритму:
- Проверяют возможность поддержки технологии SMART указанным накопителем.
- Подают в HDD команду запроса на SMART-таблицы.
- Получают запрашиваемые таблицы в буфер.
- Разбирают табличные структуры, выводя из них номера атрибутов и соответствующие числовые значения.
- Переводят стандартизированные номера атрибутов в понятные человеку названия (часто это зависит от модели, типа либо фирмы-изготовителя, как, к примеру, в программе Victoria).
- Выводят значения атрибутов в удобном для восприятия человеком виде (здесь каждый программист волен делать по-своему, к примеру, конвертировать значения HEX в десятичные).
- Извлекают флаги атрибутов из таблиц (флаги – это признаки, которые характеризуют назначение атрибута в контексте конкретной firmware накопителя, к примеру, «счётчик» либо «жизненно важный»).
- На основании полученных таблиц, значений и флагов выводится общее состояние устройства.
Атрибуты SMART
Таблица стандартных атрибутов SMART:
Легенда |
|
Чем больше значение параметра, тем лучше |
|
Чем меньше значение параметра, тем лучше |
|
Красный фон строки обозначает критический параметр |
Индикатор предполагаемой скорой поломки устройства |
Hex |
№ |
Название атрибута |
Описание |
01 |
01 |
Raw_Read_Error |
Обозначает частоту ошибок при чтении с диска данных, происхождение которых связано с аппаратной частью HDD. |
02 |
02 |
Throughput_Performance |
Производительность диска (общая). Если уменьшается значение атрибута, велика вероятность, того что у HDD есть проблемы. |
03 |
03 |
Spin-Up _Time |
Скорость раскрутки пакета дисков, находящихся в состоянии покоя, до своей рабочей скорости. |
04 |
04 |
Start-Stop _Count |
Обозначает количество циклов запуск-остановка шпинделя. Причем, для дисков некоторых производителей (к примеру, Seagate) — это будет счётчик включения режима сбережения энергии. Поле raw value хранит общее число запусков-остановок диска. |
05 |
05 |
Reallocated_Sectors_Count |
Хранит количество операций переназначения секторов. Диск, обнаружив ошибку чтения-записи, помечает сектор «переназначенным», перенося затем данные в специальную резервную область. Поэтому на современных HDD нельзя увидеть т.н. bad-блоки — они спрятаны в специальных переназначенных секторах. Процесс этот называется remapping, переназначенный сектор, соответственно — remap. В raw value хранится общее число переназначенных секторов. |
06 |
06 |
Read_Channel_Margin |
Имеющий запас канала чтения. Значение этого атрибута не разъясняется и в современных HDD не используется. |
07 |
07 |
Seek_Error_Rate |
Здесь хранится частота возникновения ошибок при позиционировании магнитных головок. Большое число ошибок говорит о плохом состоянии механики и (или) поверхности HDD. На значение параметра влияет перегрев и внешние вибрации (к примеру, от соседних дисков). |
08 |
08 |
Seek_Time_Performance |
Показатель средней производительности операции позиционирования, осуществляемой магнитными головками. Уменьшение значения атрибута (т.е. замедление позиционирования) говорит об увеличении вероятности возникновения проблем в механической части привода головок. |
09 |
09 |
Power-On_Hours |
Часы (минуты, секунд, это зависит от производителя), проведённые во включенном состоянии. Пороговое значение выбирается согласно паспортному времени наработки на отказ (т.н. MTBF). |
0A |
10 |
SpinUp_Retry_Count |
Количество повторных попыток раскрутки HDD до рабочей скорости, если первая попытка оказалась неудачной. Увеличивающееся значение атрибута говорит о большой вероятности неполадок в механической части. |
0B |
11 |
Recalibration_Retries |
Показатель числа повторных запросов на рекалибровку, если первая попытка оказалась неудачной. Увеличивающееся значение атрибута говорит о большой вероятности неполадок в механической части. |
0C |
12 |
Device_Power_Cycle |
Число полных циклов включения-выключения HDD. |
0D |
13 |
SoftRead_Error_Rate |
Число ошибок при чтении, вследствие некорректной работы ПО, которые не были исправлены. Ошибки эти имеют немеханическую природу, указывая лишь на неправильную размётку либо взаимодействие с диском программ и ОС. |
B8 |
184 |
End-2-End_error |
Этот атрибут является частью технологии HP SMART_IV, обозначая, что после трансфера через кэш буфера данных паритет между HDD и хостом не совпадает. |
BB |
187 |
UNC_Reported_Errors |
Ошибки, не восстановленные при помощи методов устранения ошибок аппаратными средствами. |
BE |
190 |
Airflow_Temperature (WDC) |
t⁰ воздуха внутри корпуса HDD. Для Seagate рассчитана согласно формуле (100 — HDA_Temperature). Для дисков WesternDigital - (125- HDA). |
BF |
191 |
Gsense_error_rate |
Содержит число ошибок, возникающих вследствие ударных нагрузок. В атрибуте хранятся показания встроенного акселерометра, фиксирующего все удары, падения, толчки и даже грубую установку HDD в корпус компьютера. |
C0 |
192 |
Power-off_retract |
Количество циклов выключений либо аварийных отказов (включений-выключений питания HDD). |
C1 |
193 |
Load-Unload_Cycle |
Число циклов перевода блока магнитных головок в рабочее положение / парковочную зону. |
C2 |
194 |
HAD_temperature |
В этом атрибуте хранятся показания встроенного термо-датчика для механической части HDD, т.н. банки HDA. Информация снимается с встроенного термо-датчика, в качестве которого выступает одна из магнитных головок, как правило, нижняя в банке. Битовые поля атрибута фиксируют текущую, минимальная и максимальная t⁰. Далеко не все программы для работы со SMART могут правильно разобрать эти поля, поэтому на их показания особо не следует ориентироваться. |
C3 |
195 |
Hardware_ECC_Recovered |
Указывает на количество коррекций ошибок аппаратной частью HDD (чтение, позиционирование, трансфер по внешнему интерфейсу). На HDD с интерфейсом SATA значение часто ухудшается в случае повышения частоты системной шины, т.к. SATA весьма чувствителен к разгону. |
C4 |
196 |
Reallocation_Event_Count |
Хранит количество операций переназначения. Поле «raw value» хранит общее число попыток перенести информацию в резервную область с переназначенных секторов. Здесь учтены как успешные, так и некорректные попытки переназначения. |
C5 |
197 |
Current_Pending_Sector
|
Общее количество секторов, которые считаются кандидатами на замену. Сектора не определены как плохие, однако считывание с этих секторов отличается от чтения со стабильного сектора. В случае удачного последующего прочтения сектора, сектор исключается из этого списка. Однако если ошибочное чтение повторяется, накопитель пытается восстановить сектор и затем выполняет операцию remaping. |
C6 |
198 |
Uncorrectable_Sector_Count |
Хранит количество неисправимых ошибок, выявленных при обращении к сектору. {Вероятно, имелось в виду «количество некорректируемых секторов», однако точно не число ошибок!} Если увеличивается число ошибок (секторов?) растет вероятность появления критических дефектов поверхности либо механики накопителя. |
C7 |
199 |
Ultra DMA CRC Error Count |
Количество ошибок, которые возникают при трансфере данных по внешнему интерфейсу в UltraDMA режиме (нарушение целостности пакетов и др.). Рост значения атрибута говорит о плохом (перекрученном, мятом) кабеле либо о плохих контактах. Подобные ошибки также возникают при разгоне PCI шины, сильных электромагнитных наводках, сбоях питания, иногда даже по вине драйвера. |
C8 |
200 |
Write_Error_Rate / |
Указывает на общее число ошибок, произошедших при записи сектора. Служит показателем качества поверхности, а также механики накопителя. |
C9 |
201 |
Soft_read_error |
Кроме того, определяет частоту появления т.н. «программных» ошибок при чтении с HDD. Этот параметр указывает на частоту появления ошибок при осуществлении операций чтения с поверхности HDD, возникших по вине ПО, а не аппаратной части диска. |
Ca |
202 |
Data_Address_Mark (DAM) errors |
Число ошибок DAM, либо иное, в зависимости от производителя |
CB |
203 |
Runout_Cancel |
Число ошибок ECC. |
CC |
204 |
Soft_ECC_correction |
Число ошибок ECC, которые скорректированы программным способом. |
CD |
205 |
Thermal_asperity_rate |
Число ошибок TAR |
CE |
206 |
Flying_height |
Высота между поверхностью диска и головкой. |
CF |
207 |
Spin_high_current |
Энергия, задействованная на раскрутку диска |
D0 |
208 |
Spin_buzz |
Число прокручиваний, необходимых для раскрутки диска |
D1 |
209 |
Offline_seek_performance |
Производительность драйвера во время операций-offline |
DC |
220 |
Disk_Shift |
Расстояние смещения блока дисков по отношению к шпинделю. Возникает в основном из-за падения или удара. Увеличение атрибута быстро приводит диск в состояние неработоспособности. |
DD |
221 |
GSense_Error_Rate |
Указывает на количество ошибок, которые возникли из-за внешних ударов и нагрузок. В атрибуте хранятся показания датчика удара. |
DE |
222 |
Loaded_Hours |
Время, которое блок магнитных головок провел между выгрузкой в рабочую область диска из парковочной области и загрузкой блока назад в парковочную область. |
DF |
223 |
Load-Unload_Retry |
Число новых попыток выгрузок и загрузок блока магнитных головок в (из) парковочной области после некорректной попытки. |
E0 |
224 |
Load_Friction |
Показатель силы трения магнитных головок при выгрузке блока из парковочной области. |
E1 |
225 |
Load_Cycle_Count |
Здесь хранится число циклов перемещения блока головок в парковочную область. |
E2 |
226 |
Load_Intime |
Время, которое необходимо приводу, чтобы выгрузить магнитные головки на рабочую поверхность диска из парковочной области. |
E3 |
227 |
Torque_Amplification Count |
Число попыток скомпенсирования вращающего момент. |
E4 |
228 |
PowerOff_Retract_Cycle |
Число повторов автоматической парковки магнитных головок в результате перебоя питания. |
E6 |
230 |
GMR_Head_Amplitude |
Расстояние повторяющегося трансфера блока магнитных головок (амплитуда «дрожания»). |
E7 |
231 |
Temperature |
t⁰ жёсткого диска. |
F0 |
240 |
Head_flying_hours |
Позиционирование головки (время). |
FA |
250 |
Read_error_retry |
Количество ошибок во время чтения HDD. |