В предыдущей статье мы выяснили причины появления бэд-блоков. Мы поняли, что явление это далеко не самое приятное. А с неприятностями обычно принято бороться. Поэтому сегодня, мы будем говорить о том, какими средствами и как это нужно делать, да и собственно нужно ли.
Первый и самый простой вид ошибок, который мы будем лечить - ошибки файловой системы. Как уже было сказано это всего лишь неверно помеченный сектор в файловой системе. Вывод напрашивается сам собой - его нужно пометить правильно.
Способ первый: логические размышления подсказывают - необходим инструмент умеющий создать на диске нормальную файловую систему. Такой инструмент доступен всем в составе операционной системы - утилита format. Нужно загрузиться в MS-DOS и выполнить полное (именно полное) форматирование диска (команда format x: /c, x - диск с неправильной FAT, c - ключ включающий проверку кластеров поме-ченных как поврежденные). Быстрое форматирование здесь не годиться, так как оно производит лишь очистку оглавления и сохраняет информацию о бэдах. Форматирование можно выполнить и из Windows, правда для меня методы его работы до сих пор остаются загадкой и результат порой получается непредсказуем (сталкивался с тем, что снимался статус дефектного даже с физически поврежденных секторов, что приводит к более сложным проблемам. Похоже, что "Окна" просто сбрасывают статус дефектности в FAT, не вдаваясь в подробности, хотя и не всегда).
С обычным format такого не наблюдалось. Этот способ прост и доступен, но его недостатком является разрушение всей информации на диске. Да и если на диске небольшое число таких секторов, это все равно что стрелять из пушки по воробьям.
Способ второй состоит в приобретении программы Power Quest Partition Magic, в которой есть функция Bad Sector Retest. Она проверит именно помеченные бэд сектора, и оставит нетронутой информацию на диске.
Более продвинутые пользователи могут воспользоваться Norton Disk Editor или любым другим редактором диска и вручную пометить/разотметить нужные сектора. Программу для этих целей несложно написать и самостоятельно. Но нет нужды. Как узнать что имеющийся дефектный блок именно этого вида? Никак. Можно только попробовать (при отсутствии уверенности настоятельно рекомендую пользоваться первыми двумя методами, так как двумя последними можно ввести в обращение сбойный или нестабильный блок, нажив тем самым себе большую проблему). Если это его тип - он исчезнет и больше никак проявляться не будет. Если же нет - пробовать другие способы.
Второй вид излечимых сбойных кластеров - логические, у которых данные не соответствуют ECC. Методы борьбы с этим видом несколько сложнее. Этот вид дефектов не может быть исправлен программными средствами использующими стандартные команды и средства BIOS. Дело в том, что при использовании таких средств перед записью на диск происходит предварительная проверка области записи, чтобы убедиться что с ней все в порядке, а поскольку там существует ошибка, то запись отклоняется (такая проверка не только является расточительностью, так как данные не будут записаны сразу же, их запись станет возможной только на втором проходе (видимо это является одной из причин, по которой скорость записи обычно несколько ниже скорости чтения).
Логичнее было бы вместо такого механизма делать запись с верификацией (проверкой по русски). При этом, в блоке магнитных головок можно осуществлять за один проход запись и проверку чтением, что давало бы гарантию правильной записи данных. И в принципе, если бы и не исключало возникновение бэд секторов рассматриваемого типа вообще, то, во всяком случае, значительно ее снижало, так как в случае сразу же обнаруженной ошибки можно было бы повторить запись.
И хотя мы немного больше разобрались с тем, чем обусловлена ошибка, легче не стало, так как мы выяснили, что ее нельзя исправить обычными средствами. Необычными средствами являются программы, обращающиеся к накопителю не через функции ОС и BIOS, а через порты ввода-вывода. Таких программ на самом деле море, в большинстве случаев осуществляют принудительную запись какого-то содержимого в сектор (обычно нулей), накопитель подсчитывает и записывает ECC. После этого нужно осуществить проверку прочитав сектор - ошибки нет - хорошо, сектор оказался именно таким, как мы ожидали и был успешно излечен. Нет - увы… Видимо, раз здесь не ошибка FAT и не излечился , он, видимо, имеет физическую природу.
Утилиты выполняющие такую функцию - это wdclear, fjerase, zerofill, такая функция есть в DFT. В большинстве случаев такие утилиты универсальны, так как не используют каких-то специфических функций накопителя. Работа с ними тоже не требует специальных навыков. Зачастую такие обнулители распространяются на сайтах производителей как программы низкоуровневого форматирования, хотя не имеют к нему никакого отношения. Производители рекомендуют использовать их в случае возникновения проблем прежде, чем обращаться в сервисный центр. Если не считать разрушения информации, они безобидны.
Кроме производителей винчестеров выпуском сервисных программ занимаются сторонние компании и просто энтузиасты. Так бесплатно доступна очень полезная программа неписанная нашим программистом - MHDD (скачать ее можно здесь. На момент написания статьи была доступна версия 2.9), которая может помочь в данной ситуации. Схема действий следующая: программу записываем на системную дискету и загружаемся с нее. Изучаем состояние SMART с помощью внешнего SMART-монитора (бесплатным SMARTUDM например) и не полагаясь на свою память, сохраняем результаты в файл.
Загружаем MHDD и инициализируем нужный диск нажав F2. В консоли вводим команду erase или aerase (используют разные алгоритмы, aerase работает медленнее, но иногда справляется с тем, с чем не справилась erase, поэтому рекомендую сначала использовать erase и потом при неудаче aerase). Предварительно необходимо было сохранить всю информацию с винчестера, так как она будет разрушена (имея опыт можно обнулять нужную часть, не разрушая остальные данные, но ведь предполагается что у нас его нет).
По завершении производим проверку поверхности диска -нажимаем F4 и выби-раем и в верхней строчке выбираем наш режим работы (скорее всего это будет LBA, но вам видней), и еще раз жмем F4 (можно ввести в консоли команду SCAN). Смотрим на предмет наличия наших бэдов.
Потом изучаем показания SMART. Если число переназначенных секторов осталось прежним, бэды исчезли, то они имели логический характер и были вылечены. Если же нет - их природа не логическая. MHDD подробно рассмотрим в другой статье.
Вполне может быть, что у вас возник вопрос, а почему же нельзя использовать как в предыдущем случае команду format с ключом /c, который выполняет проверку бэдов? Ответ уже в принципе звучал: эта программа использует стандартные средства BIOS и не может произвести запись в бэд. Видимо, разработчикам из Microsoft не захотелось себя особенно утруждать. Попытка восстановления такого сектора о которой сообщает формат есть просто многократная попытка его чтения (сколько бы раз он ни читался, он не прочитается, контроллер уже признал этот факт!). Осуществить полноценную проверку такого бэда format не может, так как не может произвести в него запись. Единственное для чего он пригоден - это восстановление плохих секторов являющихся ошибками файловой системы.
На этом пожалуй заканчивается та часть статьи, которую могли читать и пользоваться приведенной информацией все. Все описанное до этого было просто и безобидно. Описываемое далее этими свойствами не обладает. Будьте осторожны.
Если ни один из описанных методов не помог, то, вероятно, имеем дело с самым тяжелым случаем - физическим повреждением. Такие сектора можно скрыть или переназначить. Как известно, современные винчестеры имеют резервную поверхность. На нее можно "перевести стрелки" при обращении к сбойному сектору, т.е. когда нужно обратится к сектору, который признан сбойным, на самом деле обращение произойдет к сектору из резервной поверхности, назначенным на замену.
Существуют различные методы. Метод резервного сектора подразумевает размещение на каждой дорожке накопителя недоступного в обычном режиме сектора. При обнаружении дефектного сектора на этой дорожке есть возможность использовать вместо него сектор находящийся на этой же дорожке. Достоинство метода, что он практически никак не сказывается на производительности. Недостаток в том, что емкость диска используется слишком расточительно, так как в независимости от того, есть ли на этой дорожке сбойный сектор или нет, резервный сектор все же присутствует. Во-вторых, он не эффективен при более чем одном плохом секторе на дорожке (существуют другие модификации метода, в которых резервный сектор выделяется на цилиндр, но тем, не менее, эффективными их это не делает).
Метод резервной дорожки подразумевает наличие за пределами рабочей зоны какого-то количества резервных дорожек. При обнаружении дефектов на дорожке, вся дорожка исключается из работы, вместо нее включается резервная. Недостаток метода в том, что снова таки, пространство используется расточительно, так как даже при одном сбойном секторе из обращения исключается дорожка целиком и целиком занимается новая. Так же для обращения в резервную область головке требуется совершить значительное перемещение, что отрицательным образом сказывается на производительности.
В методе пропуска дефектной дорожки, как и в предыдущем, подразумевается наличие вне рабочей зоны определенного количества дорожек. Но характер использования другой. В этом методе при определении действительного номера дорожки складывается ее вычисленный номер с числом дефектов встретившихся до нее, полученным из дефект-листа, наблюдается смещение рабочей области к центру. Достоинство по сравнению с предыдущим - отсутствие необходимости перехода в резервную область, следовательно рост производительности.
Метод пропуска дефектного сектора похож на метод пропуска дефектной дорожки с той лишь разницей, что оперирует вместо дорожек секторами, и может быть применен только к винчестерам использующим транслятор. Физический адрес сектора вычисляется по таблице транслятора. Первые три метода обладают рядом недостатков и практически никогда не используются при заводском скрытии бэдов (а в силу особенностей новых винчестеров некоторые вовсе не могут быть применены). Как правило используется последний четвертый, он позволяет скрыть практически любое число сбойных секторов, и экономично использовать пространство.
Заводское тестирование винчестеров для выявления сбойных участков происходит на специальном оборудовании в специальном технологическом режиме, составляется список всех секторов не пригодных для использования. Он заносится в служебную область, где хранится все время использования накопителя. Заводской список дефектов называется P-list (Primary-list). После получения дефект-листа, формируют транслятор, устанавливающий соответствие между логическими но-мерами секторов следующими непрерывно и по-порядку и их физическим адресом, пропуская при этом найденные сбойные сектора и используя следующий за ним рабочий.
Этот процесс называется внутренним форматированием, происходит без внешнего участия под действием программы винчестера. Кроме заводского P-list'a дефектов накопитель имеет еще G-list (Grown-list) - в него заносятся сведенья о бэд-секторах обнаруженных в процессе эксплуатации. В домашних условиях единственное, что можно сделать - это лишь переназначить обнаруженный дефект в резервную область со всеми вытекающими отсюда последствиями (падение производительности).
Сразу же сделаем несколько оговорок. Размер G-list не велик и ремап (remap, т.е. переназначение) не может происходить до бесконечности: только до тех пор пока в G-list'е есть место. Или пока не исчерпалась резервная поверхность. Также нужно помнить, что чем большее число секторов переназначено, тем чаще будет происходить позиционирование в резервную область, тем медленнее будет работа. Стоит серьезно подумать над тем, нужно ли это делать: стоит ли небольшая потеря пространства и красивая не испорченной буквами B картинка в Scandisk ощутимой (в зависимости от числа выполненных перена-значений) производительности. Быть может лучше просто оставить его в явном виде и радоваться жизни. Процесс ремапа необратимый. Если что-то не устроит, вернуть из-менения не получится.
Если же ответ отрицательный, необходимо запастись одной из следующих программ: HDD Speed, HDD Utility, или опять же MHDD. Кроме того нужна какая-нибудь программа просмотра SMART атрибутов: такая есть составе HDD Speed, но можно взять стороннюю (SMARTUDM). Предполагается, что вы уже пробовали лечить логические бэды, попытки окончились неудачно, и мы теперь пытаемся скрыть физические. Рассмотрим снова пример MHDD. Механизм действий будет почти такой же, как и в прошлый раз. Запустившись с дискеты изучаем состояние SMART. Потом запускаем MHDD, выбираем нужный привод.
Информацию с винчестера сохранять не нужно (но можно), так как она не будет разрушена. Инициализируем привод нажатием F2. Нажав F4 выбираем нужный параметр верхней строчке LBA или CHS, и включаем функцию ремапа, и запускаем запускаем проверку поверхности диска повоторным нажатием F4 (или вводим в консоли команду SCAN).
Смотрим на предмет наличия наших бэдов. В тех местах где были переназначены бэды появляется надпись [ok]. После первой про-верки, в которой выполнялось переназначение, запускаем еще одну проверку. Если о выполнении переназначения не сообщалось, второй раз пускать не нужно. Потом изу-чаем показания SMART.
Возможны следующие варианты: показатель переназначенных секторов увеличился, бэды исчезли - это означает, что мы добились того, чего хотели, сбойные сектора были заменены резервными; число переназначенных секторов осталось прежним, бэды не исчезли: такое может быть по следующим причинам - природа не та, что мы предположили, или сектор нельзя заместить; контроллер не увидел, что это действительно сбойный сектор (а указать прямо ему на это нет никакой возможности при работе винчестера в пользовательском режиме, можно лишь всячески пытаться намекнуть ему на это, делая попытки записи и чтения нужного сектора), G-list полон (по показаниям SMART должно быть видно), винчестер не поддается ремапу..
В первом случае остается только копать дальше. Если оказался полон G-list, то можно либо смириться с не переназначаемыми секторами, либо обратиться к специалистам, которые смогут запустить внутренне форматирование: тогда существующие бэды будут добавлены в P-list, а G-list будет чист. Это самый лучший вариант, так как в этом случае нет побочных эффектов ремапа. В домашних условиях запустить его не удастся, да и угробить винт вероятность высока, если процесс форматирования прервется (винчестер останется просто без транслятора, это поправимо, но все же) - питание пропадет например или скокнет (ведь по закону подлости это всегда происходит в самый не подходящий момент), поэтому производители дисков стараются не давать такие функции в руки обывателю.. Если винчестер не поддается ремапу вообще с этим сделать ничего нельзя, но если функция ремапа выключена в нем самом, тогда нужно просто включить его с помощью фирменной утилиты (их искать на сайте производителя нужно).
Решение для борьбы с бэдами приходящим на ум большинству пользователей, где-то что-то когда-то читавших/слышавших является низкоуровневое форматирование диска. Существует легенда, что этот особый вид форматирования позволяет их вылечить, и то и дело на разных форумах всплывают вопросы, типа "подскажите пожалуй-ста, где можно взять утилиту для низкоуровневого винчестера, а то бэды появились" В том числе и у нас недавно. Посмотрим, что это такое и действительно ли оно так полезно.
Связано форматирование на низком уровне с командой 50h стандарта ATA, пришедшей туда от интерфейса ST506/412. Она должна выполнять форматирование дорожки с заданными физическими параметрами. Однако, на низком уровне все современные винты очень сильно разняться, так как этот уровень целиком разрабатывается производителем самостоятельно. Транслятор скрывает внутреннюю структуру, и потому в этой команде нет смысла. Большинство современных винчестеров поддерживают ее для совместимости. Но так как ее изначальная функция уже не актуальна, то реагируют на не совершенно по разному. Во-первых, команда может быть полностью проигнорирована Во-вторых в некоторых старых накопителях команда способна затереть области служебных данных (очевидно отсюда и слухи о его разрушающем действии Low Level Format). А кроме этого, в третьих, она может осуществить запись всех нулей в область пользовательских данных, или, в четвертых, произвести переназначение сектора, что важно для нас в конетксте этой статьи. Разговоры о чудодейственности такого форматирования происходят видимо от того, что порой удается полечить с ее помощью логические бэды или сделать переназначение для физических. Именно это есть суть такого форматирования-лечения. Не более того. Но у нас уже есть необходимые средства. За-чем искать приключений?
Пожалуй это все операции, которые мог осуществить неподготовленный пользователь. При некоторых видах проявления дефектов можно придумать иной способ их устранения. Например если бэды появляются одним сплошным блоком в середине диска или в начале, можно разбить его таким образом, что бы он составляли раздел, который будет недоступен, при бэдах в конце можно специальными программами (все той же MHDD например), обрезать хвост у винчестера: уменьшиться емкость, но вместе с тем уйдут из обращения бэды, при якобы бэдах, обусловленных обрывом головки, ее можно отключить (правда это уже не пользовательская операция). В общем, большой простор для творческой фантазии. Правда, не зафантазируйтесь и не забывайте иногда обращаться к специалистам.