Как вернуть объём Барракуды (из архива старых статей)

Эта статья перенесена сюда с моего старого сайта, для того, чтобы служить связующим звеном для других будущих статей. Информация по используемому ПО и моделям накопителей в ней морально устарела, однако теория актуальна до сих пор.

Винчестеры Seagate очень популярны благодаря хорошей рекламе. Как показала статистика опроса сайта HDD.BY, эти диски составляют больше половины всех имеющихся у населения винчестеров. В современных ПК основная их масса представлена моделями Barracuda 7200.7 и более новыми .8 и .9, объемом 160 Гб и выше. Как и любые изделия, выпущенные в стремительной гонке высоких технологий, диски не были избавлены от незначительных ошибок (причем, у некоторых из них корни растут еще из семейств 5-летней давности, и гнездятся в мало используемых частях АТА-стандарта). Это знают, например, разработчики драйверов, и в общем-то, давно смирились с «приколами». Но когда в микрокод HDD закладывают заведомо нестандартное поведение — это выглядит как минимум странно. Мы рассмотрим одну из таких особенностей новых «Барракуд», и постараемся дать рекомендации, чтобы эти странности не доставили Вам головную боль.

Небольшое отступление

Речь пойдет о функции HPA (Host Protected Area, защищенная область пользователя), которая существует довольно давно, и предназначена для «отрезания» произвольной части объема диска в его конце. Например, туда можно спрятать какую-нибудь информацию, и «закрыть» — после чего «обычные» программы не смогут получить к ней доступ. Пример — новые системные платы Abit и Gigabyte хранят в самом конце HDD резервную копию своего BIOS, вероятно для быстрейшего его восстановления в случае потери «оригинала». Чтобы операционная система и системные утилиты, производящие прямой доступ к диску, не разрушили эту область — ее отрезают через HPA. При этом в программах низкоуровневой диагностики винчестера, например в MHDD или Виктория будет гореть «синяя лампочка» HPA, а в паспорте отображаться объем примерно на 2200 секторов (~512 kb) меньше реального. Вы можете считать эту область, и посмотреть что в ней хранится — для этого прежде всего, нужно выключить и вновь включить питание HDD, без перезагрузки всего компьютера (иначе «открыть» не получится из-за того, что HPA — однократная процедура за power-сессию, проще говоря, на этом и основаны ее защитные свойства — прим. редактора). Далее стандартным действием PIO-чтение в файл читаем в файл содержимое этих 2200 секторов. Возвращать HPA обратно нет нужды, ибо BIOS снова «обрежет» винчестер при следующей перезагрузке.

Неприятная неожиданность

Теперь мысленно вернемся к началу статьи. Всем хороша технология HPA, но иногда она дает сбой — и винчестер «обрезается» вопреки желанию пользователя. В последнее время такие случаи заметно участились. Возможно, виноваты вирусы (теоретически, создать такой может любой программист, знакомый с АТА-стандартом и написанием драйверов), может быть, причина — внешние электромагнитные помехи, наводящиеся на интерфейсные кабели (мобильная связь?), или даже ошибки в микрокоде оборудования (включая сами HDD).

Казалось бы, хоть и мало приятного в таком «самовольстве», но все же это не смертельно. Объем винта легко вернуть в прежнее состояние, например, командой NHPA в «Виктории» (здесь и далее — речь идёт о DOS-версии — примечание автора от 08.09.2019г) или в MHDD. Но некоторые пользователи HDD Seagate столкнулись со странной проблемой — их винчестеры, будучи явно обрезанными (о чем свидетельствует лампочка HPA), отказались разблокироваться вышеприведенными программами. Этот факт заставил автора исследовать проблему глубже, что увенчалось успехом, и 16 декабря 2005 г. привело к появлению Victoria 3.5 с улучшенным механизмом HPA, и этой статьи.

Причина

Рассмотрим подробно, почему прежние версии программ не могли разблокировать эти диски, и что изменилось теперь.

Когда создавалась технология HPA, объемы винчестеров были столь небольшими, что изначально предполагалась адресация 28 бит (в переводе на объем, максимальный адрес мог составлять 7FFFFFFh LBA или 128 Gb). Появление «больших» винчестеров привело к созданию адресации 48 бит, а так как схема разложения 48-битного адреса не совместима со старым стандартом, то во избежании путаницы пришлось сменить и ATA-команды для работы с HPA (а также другие команды, связанные с использованием адресации — прим. редактора). Однако, для совместимости новых дисков со старым оборудованием была оставлена совместимость «сверху вниз» со старыми командами и адресацией, естественно ограниченная все этими же 128-ю гигабайтами.

Разработчикам программ пришлось подстраиваться под двойной стандарт, чтобы обеспечить работу с любыми винчестерами. Например, в Виктория, начиная с версии 1.0 уже применялось распознавание стандарта в паспорте HDD, и автоматическое переключение на режим 48 бит при его наличии, или если объем накопителя был больше 128 Гб. Такая методика отлично работала, пока не выяснилось, что винчестеры Seagate 7200.7 не снимают HPA, если они были закрыты 28-битными командами, а открывать их пытаются 48-битными, и наоборот.

При использовании цивилизованных способов установки HPA, проблемы в общем-то не было: обычно пользователь устанавливает и снимает HPA одной и той же версией программы. А с появлением случаев самоустановки — возникло явление, описанное выше. Иногда пользователям удавалось разблокировать эти накопители, применяя все подряд, пока не достигали результата. Некоторые были вынуждены обратиться в ремонт, или даже заменить жесткий диск по гарантии, что было очень грустно, так как отнимало время и сопровождалось потерей информации.

Следствие

Как уже было сказано, Ваш покорный слуга исследовал проблему, и обнаружил способ, позволяющий извлечь из памяти винчестера то, какими командами HDD Seagate был «обрезан» в прошлый раз. Эта функция была встроена в программу Victoria 3.5. В зависимости от метода адресации, цвет индикатора HPA теперь меняется: если были применены 28-битные команды, то он выводится желтыми буквами на синем фоне. Если применялась адресация 48 бит — буквы будут ярко-белые на синем. Одновременно с этим, программа сама настраивается на нужный метод, и сразу работает им, производя разблокировку. Напомним, что ее удобно производить командой NHPA.

Victoria HDD
Включение HPA с помощью программы Victoria для DOS

Если реальный объем винчестера не превышает 128 Гб, программа разблокирует его сразу. При стечении обстоятельств, когда и объем больше 128 Гб, и диск был обрезан старым 28-битным методом — потребуется 2 этапа разблокировки, между которыми нужно выполнить рестарт питанием HDD (например, вынуть и снова вставить кабель питания в HDD). Объясняется это тем, что 28-битными командами нельзя выставить адрес выше 7FFFFFFh LBA. При этом в первую сессию программа восстановит объем 131071 Mb (неполный), а за вторую (уже после рестарта) — восстановит оставшуюся часть. Признаком успешного завершения операции будет исчезновение индикатора HPA с экрана при получении паспорта (F2).

На винчестерах других фирм работа с HPA ничем не отличается от стандартной, и осуществляется в 1 этап.

Вывод

Фирма Seagate продемонстрировала нам очередное несогласие с ATA-стандартом, введя дополнительные методы (по сути — расширение) в управлении объемом диска — Host Protected Area. Для кого-то это обернулось лишними проблемами, а кто-то, возможно, найдет и полезное применение этой особенности HDD. Зачем потребовалось так усложнять винчестер, пока не ясно. Не исключено, что существуют и другие недокументированные функции HPA, которые по мере их «открытия» помогут понять идеологию разработчиков.

Автор статьи никаким образом не претендует на эксклюзив найденной технологии разблокировки, и предполагает, что в скором времени поддержка расширений HPA Seagate появится не только в «Виктории», но и в других утилитах.

Автор: Сергей Казанский, 22 декабря 2005г.

 

Понравилась статья? Поделитесь ей:
Технический центр «Victoria» 2004-2024, Беларусь. © Сергей Казанский.
наверх