KLASS

Moderator | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Частенько на форуме, то там то здесь, народ жалуется на "пропажу" логических дисков. Думаю, девять из десяти случаев, диски пропадают из-за "падения" "Таблицы разделов". "По-кувыркавшись" пару дней, спешу поделиться своими мыслями. Открыть тему меня подтолкнул один примечательный факт, о котором я ранее нигде не читал. Ну, обо всем по-порядку... Я тут набросал кратенький перечень сокращений, для удобства понимания моего изложения: Q - объем всего диска в секторах Цитата: Generic MBR GM - Generic MBR, нулевой, абсолютный сектор физического диска GD - смещение первого сектора первичного раздела (начало раздела) GS - количество секторов раздела GDе - смещение первого сектора расширенного раздела (область пространства накопителя, в которой расположены другие разделы, назовем их логические разделы). Это сектор, где располагается первый, в цепочке "Расширенного раздела", Abstract MBR, содержащий таблицу разделов, но не содержащий кода начальной загрузки. GSе - количество секторов расширенного раздела Abstract MBR AD - смещение первого сектора, первого логического раздела в расширенном разделе AS - количество секторов логического раздела ADe - смещение первого сектора расширенного раздела (продолжение связанной цепи Extended Partition Chain) ASe - количество секторов расширенного раздела | Итак... условия. В системе один физический диск побит на первичный и расширенный раздел, в котором находятся два логических раздела (диски D и Е). Файловая система на всех разделах NTFS. Компьютер один, находится в лесу и до ближайшего районного центра пару сотен верст. Таблицу разделов в GM я обнулил полностью, а в AM, обнулил описание первого логического диска расширенного раздела (первый дескриптор) и описание цепочки расширенного раздела (второй дескриптор), оставив только код типа раздела (05) в смещении 01D2h и отправился на перезагрузку. Каково же было мое удивление, когда мой "Мультизагрузочный CD" с кучей программ, в том числе и с редактором диска, не хотел грузиться. Вот перечень программ, которые расположеы у мя на диске и которые, после моей "правки" диска, совершенно отказывались загружаться с CD: Windows XP PE Deploy Center True Image Deluxe Acronis Disk Editor Disk Commander Partition Expert Partition Magic Acronis Recovery Expert Easy Recovery Сама система ессно тоже не грузилась, ведь в "Таблице разделов" GM одни ноли. Другими словами "приплыли" на самом первом этапе восстановления таблицы разделов. Ни имидж раскатать, ни таблицу поправить... Решил я эту проблему загрузкой в DOS и установкой SyMon, у которого есть свой, внутренний редактор диска и который ставится на первую дорожку диска, и потому ему собсно по барабану, чего я там "направил", так как грузится он до того как читается весь диск. Ошибка заключалась в том, что оставленный мною код типа раздела (05) (см. выше) "мешал" опознать расширенный раздел. Пришлось и его обнулить. Как бы там ни было, но таблицу мона убить так, что даже не спасет загрузочный CD. Это и есть тот примечательный факт... Теперь диск грузился нормально. Далее собсно я хотел поведать о том, как я восстанавливал саму "Таблицу разделов". Загрузился в Disk Editor от Acronis и открыл в редакторе не физический диск, но неразмеченную область, хотя при загрузке с CD это не так важно. Первым делом ползу в конец диска записать на бумажку общий объем диска в секторах (Q). Теперь возвращаюсь в сектор GM и в режиме "Таблицы разделов" ставлю типы разделов, первый NTFS и второй Extended, а также галочку напротив первого раздела, что он является загрузочным. Секрета не открою, если скажу, что "Таблица разделов" содержит избыточную инфу, которую нам собственно восстанавливать и не обязательно. Главное, что нам надо, это начало раздела (смещение) и количество секторов в разделе. Смещение раздела GD как правило равно 63, вставляем. Теперь, чтобы выяснить объем первичного раздела переключаемся в HEX режим и ползем в абсолютный сектор 63 в смещение 0028h (4 байта) и записываем эти четыре байта на бумажку или копируем, возвращаемся в GM и вставляем их в смещение 01САh. Переключаемся в режим просмотра "Таблицы разделов" и прибавляем единицу (1) к числу которое появилось в строке "Кoличecтвo ceктopoв" (GS). Тут же высчитываем смещение первого сектора расширенного раздела по формуле GDe=GD+GS и вставляем сумму в соответствующую ячейку. Теперь вычисляем общее количество секторов расширенного раздела GSe=Q+1-GDе и вписываем на свое место. Основная "Таблица разделов" Generic MBR восстановлена для загрузки. Если теперь загрузиться, то система запустится, но не будут видны последующие логические разделы, в моем случае это диске Е. Теперь двигаем в сектор AD, который равен AD=GDе+63 и находим знакомое нам смещение 0028h (4 байта), копируем и возвращаемся чуть назад, в сектор GDе. Вставляем эти байты в смещение 01САh, далее включаем режим просмотра "Таблица разделов" и здесь добавляем единицу (1) в поле "Количество секторов" (AS), а в поле "Смещение секторов" AD прописываем 63. Также ставим "Тип раздела" NTFS, а во второй строчке типов раздела Extended. Теперь высчитываем "смещение секторов" расширенного раздела (ADe) по формуле ADe=АD+АS и вставляем сумму в соответствующую ячейку. Теперь остается выяснить "количество секторов" расширенного раздела ASe=GS-ADe. Все восстановлено и можно загружаться, все диски будут "на месте". Потренировавшись немного, можно минут за пятнадцать восстанавливать "потерянные" диски, не тратя время на многочасовое сканирование программами по вытаскиванию инфы с диска. Этот пример был приведен при условии, что при убиении "Таблицы разделов" у Вас остались целые сектора GD и AD. Но даже, если данные сектора повреждены, в конце каждого раздела NTFS хранятся копии данных секторов. Если убиты приведенные сектора, но цела основная "Таблица разделов" то поможет команда Fixboot, но если убита и "Таблица разделов", то консоль Вам уже не надо. Теперь можно будет загрузившись в редактор диска поискать резервные копии секторов вручную по сигнатуре 55 AAh, что гораздо дольше, но интересно и не придется бояться, что что-нить нарушиться прогой по сканированию, этого собсно исключать низя. Опять много настрочил... тяжело данную тему в двух строчках осветить. Думаю многим будет интересно послушать мнение людей "скушавших" на этом не один зуб. Пожалуйста высказывайтесь и делитесь Вашим бесценным опытом. При разрушении секторов GD и AD (см. выше) искать по сигнатуре их копии больно накладно получается, уж больно много совпадений. Я вот попробовал по фразе "A disk read error occurred" с установкой галочек на "Рaзличaть peгиcтp" и "Иcкaть пo cмeщeнию в ceктope" (389) так у меня на трех дисках нашлось 12 соответствий. А мне надо всего шесть, т.е. 3 рабочих смещения (по одному на диск) и 3 их копии, которые хранятся в конце каждого диска. При беглом просмотре оказалось, что в четырех найденных секторах, смещение 0028h (4 байта), оказалось просто обнуленным, значит они мне не надо. Если знать хотя бы приблизительно размер дисков до падения "Таблицы разделов" то и оставшиеся два ненужных сектора можно легко "вычислить". Другими словами процесс восстановления "Таблицы разделов" ручками оказывается намного проще и занимает значительно меньше времени, чем с использованием программ по вытаскиванию инфы с "пропавших" дисков, которым к тому же совершенно необходимо наличие другого диска и достаточное количество свободного места на нем.
| Всего записей: 11539 | Зарегистр. 12-10-2001 | Отправлено: 15:13 07-06-2003 | Исправлено: KLASS, 03:27 03-09-2003 |
|