Винчестеры постепенно стали обзаводиться способностью вести протоколы событий, и хранить их внутри себя. Поначалу это были специальные модули в микрокоде, в которые накопители регулярно сбрасывали различные параметры с датчиков: ошибки позиционирования, уровни сигналов, температуру, напряжение, и т.д.. Содержимое этих логов было недоступно ни пользователю, ни массовому прикладному ПО.
Однако, когда винчестеры выходили из строя, и возвращались на завод-изготовитель, то могли быть направлены в отдел анализа отказов при конструкторском бюро — лабораторию Failure Analysis, или сокращённо — FA-отдел. Их сотрудники переводили накопитель в технологический режим, считывали FA-журналы, интерпретировали их, и это облегчало устранение недостатков продукции.
У подавляющего большинства пользователей, аббревиатура S.M.A.R.T. ассоциируется со смарт-атрибутами — набором числовых параметров, характеризующих степень физического износа и исправности накопителя. Выглядит это примерно так: Но на самом деле система SMART включает ещё как минимум, две важных составляющих. Это встроенные в накопитель SMART-тесты и… «те самые» журналы.
И если со SMART-тестами всё относительно понятно, возможность их запуска проста в реализации, многократно описана и встроена во многие популярные программы, то с журналами всё гораздо более туманно… Попытки поиска нужной информации по ключевым фразам в поисковиках — оканчиваются неудачей. А значит…
Пришло время немного приоткрыть тайну, и рассказать, что же всё-таки это такое.
Возможность работать с журналами накопителей появилась, начиная с 2000 г, в стандарте ATA/ATAPI-5 от комитета t13. Стандарт носил в основном, рекомендательный характер, и предлагал во всех новых разработках использовать 4 вида журналов:
- SMART error log или его более распространённый вариант — Comprehensive SMART Error log: журнал ошибок, найденных системой самодиагностики накопителя в процессе обычной работы.
- SMART self-test log: журнал результатов самотестов накопителя, искусственно запускаемых пользователем.
- Host vendor specific: журнал, открытый на запись, в котором пользователи или программы могут хранить какие-то свои данные, например результаты работы тестирующего диск ПО.
- Device vendor specific: специальный журнал, который используется изготовителем винчестера на своё усмотрение как расширение стандарта, но при этом доступен для получения всем желающим.
В первой половине 2000-х годов ёмкости накопителей перешагнули рубеж 128 Гб, и получили 48-битную адресацию. В результате чего в стандарте были пересмотрены форматы журналов, которые получили приставку Ext — от слова Extended, т.е. расширенные.
Наибольший практический интерес в настоящее время представляет журнал с названием «Ext Comprehensive SMART Error log». Именно в него большинство накопителей складывают информацию о том, когда, и на каких адресах у них возникли проблемы с чтением-записью, а попросту — бэд-блоки.
Таким образом, посмотрев в этот журнал, можно увидеть, есть ли вообще дефекты на накопителе, где и как они локализованы, без запуска каких-либо тестов и затрат времени. Это может быть особенно полезно перед восстановлением данных, где важна скорость предварительной диагностики и максимально бережное обращение с накопителем.
Рассмотрим работу с Extended Comprehensive SMART Error log в программе Victoria версии 4.75. Для проведения эксперимента важно, чтобы накопитель был НЕ новым, иначе все его логи будут пустыми, и ничего интересного мы в них не увидим. В качестве подопытного кролика был взят изрядно потрёпанный жизнью винчестер USB 3.0 фирмы ADATA. Программа Victoria определила, что на самом деле это накопитель HGST с интерфейсом SATA III, подключенный через USB-SATA мост. А значит, он поддерживает технологию SMART, и всё, что с ней связано.
Переходим на вкладку SMLogs и щёлкаем по заголовку левого окна (или по кнопке Get directory, что равнозначно). Мы получим оглавление журналов — список всех SMART-журналов, которые имеются в накопителе.
Затем находим журнал под номером 03 с нужным нам названием — Extended Comprehensive log, и щёлкаем по нему. Программа начнёт чтение журнала из накопителя (иногда это может занять несколько секунд). После чего в правом окне появится интерпретация содержимого журнала.
Мы видим список из одинаковых структур, сгруппированных по 5 штук. Это 5 команд, которые принял накопитель перед той командой, что предшествовала ошибке. Если прокрутить список немного вниз, то мы увидим шестую, завершающую структуру. В ней указано время жизни по 9-му атрибуту SMART на момент ошибки, код ошибки и адрес ошибки.
И наконец, в самом конце списка находится суммарное количество ошибок, которые пережил накопитель.
К сожалению, не у всех накопителей журнал заполняется корректно. В частности, у некоторых экземпляров HDD Seagate вместо адресов могут быть числа, многократно превосходящие объём диска. Причина этого мне пока неизвестна уже известна. Ждите обновление версии до 4.76 =)
Журнал может состоять из множества секторов, а количество записей достигать нескольких тысяч. В таком случае, просматривать его вручную довольно утомительно. Для практического применения его содержимого — в меню, вызываемом по правой кнопке мыши, есть пункт «генерировать скрипт для тестов».
Выполнив это действие, мы получим список диапазонов в виде текстового лог-скрипта. Файл сохраняется в папке с названием модели накопителя, с учетом настроек путей к логам, заданных в Setup.Указанные в файле участки диска могут быть автоматически проверены сканом поверхности.
- Открываем Tests, и на кнопке Scan вызываем меню.
- В меню выбираем «Open defect log as script» и открываем файл.
- Надпись на кнопке заменится на «Start script»
- Запускаем скрипт, нажав кнопку.
Будут автоматически проверены те места, которые были занесены в SMART-журнал.
Если во время проверки будут найдены ошибки, то по ним будет построен еще один список, который допишется в конец того же файла. И его можно снова подгрузить в скан, включить опции ремонта (например remap), и попытаться вылечить дефектные места. При каждом запуске скрипта будет использована лишь последняя его сессия, а вышестоящие и пустые проигнорированы. Файл текстовый, и при необходимости его сессии можно подправить в блокноте. Формат скрипта следующий:— 1-я строка: обязательный заголовок «Victoria defects log 1.0».
— Затем через произвольное количество пустых строк — разделительная строка с датой и временем вида «Start: 30.08.2019 17:16:52» (слово «Start» — обязательно).
— Далее идут подряд строки заданий вида: [адрес], [количество секторов], необязательный комментарий.
Несколько идущих подряд строк образуют сессию. Пустая строка означает конец сессии.
В следующих статьях будут рассмотрены другие журналы SMART и их практическое применение.
Сергей Казанский, 06.09.2019г.