Диагностика винчестеров, или С
чем едят S.M.A.R.T.?
Какая "железка" самая ценная в
компьютере? Что вы боитесь потерять больше
всего? Монитор? Согласен, дорого. Но, купив
новый монитор, вы быстро забудете о потере.
Процессор? И замена процессора совсем не
фатальна. А вот выход из строя винчестера (спокойно,
мы не об огнестрельном оружии говорим, а о
девайсе, именуемом в простонародье "винт",
"веник", а на буржуйском языке — HDD)
влечет не только финансовые потери. Мы
теряем гигабайты ценнейшей информации.
Накопленные непосильным трудом огромные
объемы софта и доков бесследно исчезают. Да
и тщательно подобранные гигабайты музыки и
видео терять не очень-то хочется… "А
что же делать?" — спросите вы. Выход
винчестера из строя многие считают вещью
непредсказуемой. Но, оказывается, есть
способы и технологии, способные вычислить
хотя бы примерное время, когда ваше
хранилище ценной информации уйдет в мир
иной. Уже давно (учитывая темпы развития
компьютерных технологий — давно)
крупнейшие "винчестеропроизводители"
придумали способ помочь нам.
Но об этом чуть попозже. Для начала сделаем
небольшой экскурс в строение самого
винчестера. Что же там напихано, в этой
маленькой и довольно-таки тяжелой
коробочке? Точнее, разбираться мы будем не
со всеми железками, а рассмотрим в общих
чертах сам диск, на котором и хранится
информация.
Весь винчестер (точнее, диск) разбит на
сектора. Какой-то конкретный адрес на диске
можно задать либо через номер сектора, либо
через номер дорожки, номер головки и номер
сектора на данной дорожке. Номер сектора
вычисляется по несложной формуле: номер_сектора
= (номер_дорожки * число_головок * число_секторов_на_дорожке)
+ (номер_головки * число_секторов_на_дорожке)
+ (номер_сектора_на_дорожке — 1). Простая
арифметика… Ссылочку на калькулятор
подсказать:)? Секторы, в свою очередь,
объединяются в кластеры. Описывать
принципы деления для FAT16/32 я, пожалуй, не
буду (понадобится — сами раскопаете
документацию, ее превеликое множество).
Скажу лишь, что объединение в кластеры
понадобилось из-за неудержимого роста
размеров винчестеров, когда таблица
секторов FAT требовалась очень большая, а с
ее хранением возникли проблемы.
Есть на диске места, запретные для простого
смертного, куда Windows при всем вашем огромном
желании записывать что-либо не станет.
Почему? А потому, что знает, что, если
испортить эти записи, то не жить больше "Окошкам".
На нулевой дорожке расположен Master Boot Record. А
хранится в этом секторе информация об
активном разделе и его загрузочном секторе.
В том же секторе находится и таблица
разделов (Partition Table). В ней записана
информация о разделах диска: загрузочный
раздел или нет, адреса начала и конца
раздела, размер раздела и т.п. Подробно
останавливаться на разделах тоже не будем.
Перейдем сразу к загрузочному сектору (Boot
Sector). Загрузочный сектор есть в начале
каждого логического диска. Он содержит в
себе ссылку на загрузчик (должен же кто-то и
Windows, ну, или что там у вас стоит, загрузить).
Еще он хранит уйму полезной информации, как-то:
версия операционной системы, тип файловой
системы, число секторов в кластере (зависит
от файловой системы), размер данного
логического диска и другую важную
информацию. После загрузочного сектора
идет таблица размещения файлов или просто
FAT (File Allocation Table). Каждый элемент этой таблицы
соответствует одному кластеру. Служит она
для поиска файлов на диске. Поскольку эта
таблица имеет большую важность, то записана
она сразу в двух идентичных экземплярах,
идущих один за другим. Далее следует
корневой каталог (Root Directory). Это список
директорий и файлов. Здесь хранятся их
параметры: имя файла, расширение, дата
создания, размер, атрибуты и номер первого
кластера, по которому и ищется файл в FAT. И
только после всех этих разделов идет
область файлов. Именно здесь и находится
информация, заботясь о которой, мы,
собственно, и решили прибегнуть к помощи
S.M.A.R.T.
Теперь о том, почему же диск портится, а,
следовательно, и жизненно важная (или не
очень:)) информация теряется. Про то, что
винчестер ронять с большой высоты не
следует, надеюсь, уже все знают. Вообще-то
его и с небольшой высоты кидать не стоит…
Даже если ваш HDD достойно выдержит удар,
произойдет разбалансировка дисков
винчестера, то есть их смещение. И это
значительно приблизит кончину жесткого
диска. Хотя еще некоторое время он
прослужит вам верой и правдой.
В современных винчестерах, имеющих
скорость 7200 об/мин (про 10.000 об/мин я пока
промолчу ввиду их малой распространенности),
порой актуальна проблема высокой
температуры. Вы глубоко заблуждаетесь, если
считаете температуру в 60°C нормальной для
работы HDD. Если проблема высокой
температуры у вас существует, поставьте на
винчестер вентилятор. И ни в коем случае не
ставьте HDD рядом с CD-RW — это чревато
дополнительным нагревом.
А когда винчестер работает, малейшие удары
он воспринимает гораздо чувствительнее. Вы
знаете размеры головки винчестера? Они
исчисляются в миллиметрах и долях
миллиметра! А высота считывающей головки
над диском — вообще нанометры (для тех,
кто в танке: 1.000.000.000 нанометров = 1 метр)!
Потрясает? Конечно. А теперь представьте, к
чему приводит малейший удар по системному
блоку во время работы винчестера! Еще могу
сообщить, что расстояние между дорожками на
диске менее одного микрометра. Какая же
точность наводки считывающей головки
требуется! Все удары ведут к раскалибровке
точного и отлаженного механизма. И даже
научный гений конструкторов HDD и
многочисленные защитные механизмы не
способны спасти диск от постепенного
накапливания bad-блоков. Почему же при
тестировании винчестера различными
утилитами bad'ов почти не обнаруживается? А
тут нам помогает такая штука, как
переадресация. Хитрые господа "винчестеропаятели"
выделили специальный объем памяти на диске,
куда мы изначально ничего не можем записать,
служащий для переадресации. И создали
четыре (как минимум) дефект-листа: Primary list (P-list),
Grown list (G-list), лист сервометок и временный
лист. Дело в том, что даже на только что
изготовленном заводском диске есть bad'ы.
Изготовить идеальный диск невозможно.
Прямо на заводе с помощью специальной
аппаратуры диски тестируют, непригодные
для использования секторы отмечают как bad'ы
и помещают в P-list. Затем происходит
переадресация этих секторов в
зарезервированную специально для этого
память, о которой я только что упомянул. Вот
и получается, что диск попадает к нам без
единого bad'а (если, конечно, его на фирме не
пристукнут маленько:)). Когда на диск
производится запись информации, каждый
кластер тестируется на пригодность. Если
записать-считать информацию в кластер не
удается, он помечается как подозреваемый bad
и помещается во временный дефект-лист. Если
повторная попытка его записи-считывания
опять заканчивается неудачей, он уже
отмечается как bad, записывается в G-list и
переадресуется в резервную область. Лист
сервометок служит для записи дефектных
сервометок (сервометки были созданы для
лучшего позиционирования головок
винчестера, но и тут могут появляться
ошибки).
Небольшой экскурс в мир организации
хранения информации на диске закончен. Пора
бы уж и приступить к основной нашей теме.
Что же такое S.M.A.R.T., кто, когда и зачем его
придумал? И почему стоит о нем знать? И не
только знать, но и пользоваться. Итак…
S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) —
дословно "технология самодиагностики,
анализа и отчета". Немножко истории…
Идея самой технологии S.M.A.R.T. принадлежит
таким гигантам, как Seagate, Western Digital и Quantum (инициатором
была именно она). Они-то и разработали S.M.A.R.T.1
в 1993 году. Сколько версий создано на
сегодняшний день, я даже и не знаю… В 1995
году к этим компаниям присоединились еще
Maxtor, Samsung и IBM (некоторые источники
основателем S.M.A.R.T. называют почему-то
именно эту фирму — возможно, потому, что
момент начала бурного развития S.M.A.R.T.
совпал с моментом, когда IBM поддержала эту
технологию). Чуть попозже к ним примкнула и
Hitachi.
По сути дела, S.M.A.R.T. — это такая
микропрограмма, которая находится в
контроллере диска. Она контролирует многие
параметры работы и состояния винчестера.
Теперь введем такое понятие, как атрибуты.
Атрибуты — это специальные, обычно
численные, характеристики для описания
параметров. А параметров, по которым S.M.A.R.T.
тестирует винчестер, очень много. Причем
набор может быть различным для разных
производителей HDD. Каждая фирма сама
определяет, какие параметры являются
наиболее критичными для ее продукции. Но
основной набор идентичен для всех. Я
приведу параметры, найденные мной в
различной документации.
• Raw Read Error Rate — частота появления
ошибок при чтении данных с поверхности
диска по вине аппаратной части накопителя.
• Throughput Performance — средняя
производительность (пропускная
способность) диска. Уменьшение значения
этого атрибута с большой вероятностью
указывает на проблемы в накопителе.
• Spin Up Time — время раскрутки пакета
дисков. Среднее время раскрутки шпинделя
диска от 0 RPM до рабочей скорости. Может быть
указано в миллисекундах или секундах (зависит
от производителя винчестера и программы,
при помощи которой вы просматриваете
атрибуты).
• Start/Stop Count — количество циклов запуск/останов
шпинделя.
• Reallocated Sectors Count — количество
переназначенных секторов (о переназначении
мы уже говорили, но при большом количестве
переназначенных секторов скорость работы
винчестера может довольно ощутимо
снизиться, так как считывающим головкам
постоянно приходится переходить с дорожки
на дорожку).
• Seek Error Rate — частота появления ошибок
позиционирования головок. В случае сбоя в
механической системе позиционирования,
повреждения сервометок, сильного
термического расширения дисков и т.п.
возникают ошибки позиционирования. Чем их
больше, тем хуже состояние механики и/или
поверхности жесткого диска.
• Seek Time Performance — средняя
производительность операций
позиционирования головок. Данный параметр
показывает среднюю скорость
позиционирования привода головок на
указанный сектор. Снижение значения этого
атрибута говорит о неполадках в механике
привода.
• Power On Hours — количество отработанных
часов во включенном состоянии. Снижение
значения атрибута до критического уровня
указывает на выработку диском ресурса (MTBF
— Mean Time Between Failures). На практике даже
падение этого атрибута до нулевого
значения не всегда указывает на реальное
исчерпывание ресурса, и накопитель может
продолжать нормально функционировать.
• Spin Retry Count — количество повторов
попыток старта шпинделя диска. Данный
атрибут фиксирует общее количество попыток
раскрутки шпинделя и его выхода на рабочую
скорость при условии, что первая попытка
была неудачной.
• Recalibration Retries — количество повторов
попыток рекалибровки накопителя. Данный
атрибут фиксирует общее количество попыток
сброса состояния накопителя и установки
головок на нулевую дорожку при условии, что
первая попытка была неудачной.
• Device Power Cycle Count (Drive Power Cycle Count) —
количество полных циклов запуска/останова
жесткого диска.
• Soft Read Error Rate — частота появления
программных ошибок при чтении данных с
диска. Показывает частоту появления ошибок
при операциях чтения с поверхности диска по
вине программного обеспечения, а не
аппаратной части накопителя.
• Load/Unload Cycle Count — количество циклов
вывода головок в специальную парковочную
зону/в рабочее положение.
• Drive Temperature — температура (а вы что
думали?:)). Теоретически должна отображаться
в градусах Цельсия, но у меня выдало такую
цифру, что даже засомневался, а не Реамюры
ли это.
• Reallocation Event Count — количество операций
переназначения (ремаппинга). Поле raw value
этого атрибута показывает общее количество
попыток переназначения сбойных секторов в
резервную область, предпринятых
накопителем. При этом учитываются как
успешные, так и неудачные операции.
• Current Pending Sector Count — текущее количество
нестабильных секторов. Поле raw value этого
атрибута показывает общее количество
секторов, которые накопитель в данный
момент считает претендентами на
переназначение в резервную область (remap).
Если в дальнейшем какой-то из этих секторов
будет прочитан успешно, он исключается из
списка претендентов. Если же чтение сектора
будет сопровождаться ошибками, то
накопитель попытается восстановить данные
и перенести их в резервную область, а сам
сектор пометить как переназначенный (remapped).
Постоянно ненулевое значение raw value этого
атрибута говорит о низком качестве (отдельной
зоны) поверхности диска.
• Uncorrectable Sector Count — количество
нескорректированных ошибок. Показывает
общее количество ошибок, возникших при
чтении/записи сектора, которые не удалось
скорректировать. Рост значения в поле raw value
этого атрибута указывает на явные дефекты
поверхности и/или проблемы в работе
механики накопителя.
• UltraDMA CRC Error Count — общее количество
ошибок при передаче данных в режиме UltraDMA.
Поле raw value содержит количество ошибок,
возникших в режиме передачи данных UltraDMA в
контрольной сумме.
• Write Error Rate (Multi Zone Error Rate) — частота
появления ошибок при записи данных.
• Disk Shift — сдвиг пакета дисков
относительно оси шпинделя (часто возникает
при падении винчестера).
• G-Sense Error Rate — частота появления
ошибок в результате ударных нагрузок.
Данный атрибут хранит показания
ударочувствительного сенсора — общее
количество ошибок, возникших в результате
полученных накопителем внешних ударных
нагрузок (при падении, неправильной
установке и т.п.).
• 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-head) в рабочем состоянии.
Все эти параметры (ну, или хотя бы часть)
S.M.A.R.T. периодически тестирует и записывает.
Но до записей нужно еще добраться. Для этого
существует множество программ, которые
умеют это делать. Они в достаточно удобной
форме выводят текущие значения параметров (Value)
и их предельные допустимые значения ("обзываемые"
английским словом Threshold). Величину Threshold
каждая фирма определяет самостоятельно
исходя из особенностей строения и работы
своих винчестеров. Каждому параметру
изначально присваивается значение Value
обычно от 100 и выше. Затем по мере ухудшения
параметра его значение уменьшается. При
падении величины Value до значения Threshold
винчестер теоретически должен выйти из
строя. Но даже в такой печальной ситуации
ваш хранитель информации может успешно
продолжать работать. Однако при этом
огромен риск в любую секунду потерять все
накопленное. Некоторые параметры отмечены
значком "*". Это значит, что они
являются наиболее критическими для
нормальной работы HDD. И в случае падения
значения этого параметра ниже критического
значения наиболее вероятен выход
винчестера из строя. Каждый из параметров, в
свою очередь, имеет свой тип:
— On-line collection (OC) — означает, что
значение данного атрибута считается во
время on-line (или on-line и off-line) тестов, а не
только при off-line-тесте.
— Pre-failure (PF) — поле threshold содержит
минимально допустимое значение, ниже
которого вероятность поломки винчестера
становится очень высокой.
— Performance related (PR) — означает, что
значение атрибута зависит от
производительности накопителя по
отдельным показателям.
— Events count (EC) — атрибут является
счетчиком событий.
— Error rate (ER) — атрибут является
относительной частотой ошибок по данному
параметру.
— Self-preserve (SP) — значение атрибута
обновляется и сохраняется автоматически.
Тесты могут выполняться в двух режимах:
автономном (off-line) и монопольном (on-line). Во
время автономного тестирования винчестер
сообщает об успешном окончании теста еще до
его завершения. Затем происходит сам
процесс тестирования, причем во время
тестирования возможно выполнение других
команд. То есть тестирование происходит в
фоновом режиме. Во время монопольного
режима тестирования выполнение других
команд невозможно. Попытка исполнить
другую команду приведет к прерыванию теста.
В конце статьи хочу еще упомянуть пару
программок для получения данных S.M.A.R.T. Есть
такая хорошая программка Smartudm. У нее есть
одновременно и плюс, и недостаток — она
не идет под Windows NT/XP, а требует старый добрый
DOS. С одной стороны, это причиняет некоторые
неудобства, но зато никакая "умная"
Винда не мешает ей работать (так надежнее). Я
просто записал ее на загрузочную дискетку и
периодически при загрузке тестирую с ее
помощью состояние своего винчестера. Smartudm
выводит следующие данные: имя атрибута (Attribute),
его номер (ID), значение (Value), критическое
значение (Threshold), самое низкое значение за
все время тестирования (Worst), текущее
значение в шестнадцатеричной форме (Raw), тип
атрибута (Type). А еще она выводит такую важную
величину, как T.E.C. (Threshold Exceed Condition) —
предположительное время снижения какого-либо
параметра до критического уровня, то есть
примерное время выхода винчестера из строя.
Это не обязательно полный отказ работать
— может быть и просто снижение
производительности. К тому же, обычно
винчестеры продолжают неплохо справляться
со своей задачей, даже выработав
установленный производителем ресурс. Но
все же приближение T.E.C. — хороший повод
призадуматься о резервном копировании
ценной информации.
Ну, а если вы не любите DOS, то выход и здесь
найдется. Для вас создана программа SIGuardian (http://www.siguar-dian.com/).
Она тихо-мирно висит в трее и тестирует
винчестер через заданный вами интервал
времени. В ней можно также просмотреть
информацию о винчестере, значения
параметров, все тот же ненавистный T.E.C. Но
есть здесь и такие интересные кнопочки, как
"Имитация T.E.C." и "Имитация изменения
атрибута". Служат они для имитации
программой критических ситуаций. Но
никаких серьезных последствий в себе не
несут. Можете смело запускать (автор статьи
не несет никакой ответственности за какой-либо
вред, причиненный вашему компьютеру
описанными в статье программами, а также
кривыми руками пользователей:)). Это всего
лишь имитация. Правда, попавшая ко мне
версия SIGuardian — платная. Поэтому
некоторые функции были недоступны. А вообще
лучше всего залезть на официальный сайт
производителя вашего винчестера. Обычно
там вылаживаются S.M.A.R.T.-программы для
тестирования винчестера, написанные с
учетом особенностей именно этой марки HDD.
Все-таки "родные" программы —
надежнее.
Заранее хочу предупредить: после первого
тестирования программа T.E.C. вам не выдаст, а
вот после второго может сообщить очень
близкую дату (ближайший месяц, неделю, день).
Не пугайтесь. Через несколько дней
программа накопит достаточно данных, и,
скорее всего, дата будет существенно
перенесена в будущее. С каждым тестом T.E.C.
будет пересчитываться и уточняться.
На некоторых материнских платах в BIOS есть
пункт, в котором упоминается S.M.A.R.T. Советую
напротив него поставить enable.
Надеюсь, я вас убедил, что использовать
преимущества технологии S.M.A.R.T. очень
полезно. Возможно, это поможет вам спасти
горы нужной и ценной информации. А еще S.M.A.R.T.
логично использовать при покупке б.у.
винчестера. Эта технология легко поможет
определить действительное состояние HDD:
состояние самого диска (количество
переназначенных секторов), время
эксплуатации винчестера, существующие
проблемы и т.д. Но не забывайте, что S.M.A.R.T. не
предупредит вас о порче винчестера при
ударах во время переноски и других
внештатных ситуациях. Так что резервное
копирование информации не теряет своей
актуальности.
Сергей Юшко aka Gedemin, Gedemin@tut.by
Программы для тестирования предоставлены
Aqlex'ом
© компьютерная
газета