Antech
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору NOTOV Рад снова видеть Вас, тем более с таким энтузиазмом. По поводу алгоритма (п. 1). Про работу Part manager - вполне возможно. Про Чекдиск - нет. Он не знает о старой и новой MFT. Для него есть только одна MFT - та, на которую указывает MFT Start Cluster в BS раздела. А разделы он определяет по таблице разделов, существующей на данный момент. Так что, если прога действовала по Вашему алгоритму (с созданием новой MFT), то непонятно, почему испорчена (но не затерта) старая MFT. Возможно, алгоритм был такой: 1. Исправить все записи в MFT второго раздела с учетом смещения вниз. 2. Сместить содержимое второго раздела вниз. [3. Скопировать старую MFT на новое место, примерно в 3 ГБ от начала нового, объединенного раздела.] И вот если на п. 2 ее выключили, то она исправила всю старую MFT и начала переносить содержимое файлов (простым смещением). Когда ее отключили, часть содержимого файлов уже была перенесена на новое место, а оставшаяся часть - осталась где была. Насчет Ваших вопросов. Я не могу почти ни на что ответить. Я ведь не знаю, что сейчас в таблице разделов. Я не уверен в алгоритме программы, а значит нужно лазить по всему винту, проверяя гипотезы. Я не знаю, где и какие фрагменты MFT сейчас расположены. Я не имею доступа к винту... Как проверить целостность старой записи MFT Проверить MFT на поврежденном разделе - только своим софтом (у меня пока что нет такого, но если будет, он будет бесплатным и opensource, скорее всего). Чтобы сработал ЧекДиск (без параметра /f, ессно), нужно сконструировать раздел в таблице разделов (PT). У него в начальном секторе (куда PT указывает) должен быть корректный бутсектор NTFS, а MFT Start Cluster должен указывать на проверяемую MFT. Чекдиск может отказаться от проверки, если найдет определенные ошибки в метафайлах. Что лучше сделать А вот делать надо после того, как Вы определите, что именно произошло. От этого зависят дальнейшие действия. Как найти старый Boot record По слову NTFS (подробнее - файл $Boot в спеках Linux NTFS). На NTFS разделах, форматированных Виндой, копия BS всегда есть в последнем секторе раздела. При форматировании другим софтом, типа Партишн Мэджика, может быть что угодно. Как определить и записать его расположение в MBR Ну как определить его расположение - это предыдущий вопрос. Но в контексте конструирования раздела вот что Важно. Про таблицу разделов можно пока что забыть (хотя мануальчик изучить придется). Вначале следует сконструировать раздел. Допустим, Вы знаете, что и куда смещалось, и готовы попытаться восстановить. Тогда делаете так. На новом винте создаете один раздел размером на весь винт (подробнее в мануале, на CHS координаты разделов забить или вписать единицы). Начало раздела - сектор 63 (так принято). Ставите байты 55 AA в конце MBR. Для приличия кладете стандартный Виндовый загрузчик в начало MBR (скопируете с любого живого MBR, Вы ведь Винду откуда-то будете грузить). Теперь идете в сектор 63 и кладете туда BS раздела (найденный и исправленный, либо самостоятельно сконструированный). После этого записываете MFT. Она может лежать где угодно, но стандарт - MFT Start Cluster == 786432 (не перепутайте с сектором, стандартный (при кластете 8 секторов) начальный сектор MFT == 600000 HEX, нумерация секторов в NTFS разделе - с нуля). Естественно, MFT Start Cluster в BS раздела должен указывать на то место, куда Вы положили MFT. Теперь Вам нужно записать кусок раздела, на котором были смещенные файлы, на новое место. Вот здесь уже Вы используете результаты анализа текущего состояния винта и скопируете с нужным смещением. Часть файлов (которая сейчас читается), конечно, будет неправильной. Но она Вам и не нужна, Вы их даже сейчас скопировать можете. Зато должна нормально читаться недоступная сейчас часть файлов. Как проводить анализ MFT? Нужно найти имеющиеся фрагменты MFT, определить предполагаемое расположение старой MFT по файлу $MFT (самая первая запись в MFT, смотрите ее ранлист (список экстентов) в атрибуте $DATA). После этого выбрать "неоткрывающийся" файл известного формата (а лучше - содержимого, например MP3) и с помощью браузера WinHex на старом винте посомтреть его File Record (правая кнопка - GoTo File Record). Там полюбоваться на ранлист. После этого попытаться найти заголовок этого файла, приняв определенный сценарий работы Partition Manager'а и предположив примерное расположение файла, а более точный поиск провести по сигнатуре. Но лучше - текстовый файл известного содержимого или системный файл (также содержимое известно). Тут прямым поиском определите его начало. Если Вы на одном из файлов найдете смещение, проверьте это на других "нечитаемых". Попадаете при принятом смещении точно на файл? Значит победа, переносим содержимое файлов (WinHex -> Clone Disk) на новый винт и проверяем результат. Иначе где-то ошибка, надо разбираться и пробовать еще раз, например на другом файле. |