Главная BIOS Новости Матплаты Программы Программирование FAQ

FAQ: Восстановление данных


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

Как часто и что именно портится?


Все повреждения делятся на две категории - логические и физические. Статистика говорит о том, что физические причины потери данных (отказ аппаратуры, стихийные бедствия и т. д.) составляют 45 % от общего числа, а остальные 55% - продукт деятельности программ и вирусов (12% и 8% соответственно) или ошибки пользователей (35%). И если с физическими повреждениями все более или менее понятно (работает - не работает), то повреждений логических структур файловой системы существует достаточно много, и чем более совершенна файловая система, тем сложнее решать ее проблемы вручную. Мы не будем касаться высокопроизводительных систем HPFS и NTFS, так как чтобы понять принципы их работы потребуется отдельная лекция, а остановимся на домашней классике - FAT. Разновидностей FAT несколько, но их связывает одно - линейная структура организации дискового пространства. Естественно, повреждение каждого элемента из этой структуры влечет за собой те или иные последствия. Особенностей повреждений FAT мы коснемся чуть позже, а пока разберем с самого начала процесс загрузки.

Главная загрузочная запись (MBR - Master Boot Record) является самым первым сектором жесткого диска и представляет собой программу, которая заведует дальнейшей загрузкой OC после передачи ей управления от BIOS. Соответственно, если сама программа отсутствует, то и загрузка системы производиться не будет. К счастью, эта программа в большинстве случаев стандартна, поэтому восстановить ее не составляет труда, если не использовалась какая-то другая специфическая программа загрузки или защиты диска. В конце этого сектора располагаются следующие элементы - таблица разделов жесткого диска. В этой таблице находятся сведения о размере, местоположении и назначении раздела. По стандарту их всего не больше четырех. Соответственно, потеря данных в этом месте грозит потерей местоположения и размерности разделов, а восстановление возможно или при ручном или программном поиске начальных структур разделов.

После того, как программа MBR прочитала необходимые сведения, управление передается программе, записанной в первом секторе активного раздела (Boot-record). Кстати, на дискетах Boot-record располагается первым (MBR на дискетах отсутствует) и также содержит программу, собственно загружающую систему. На дискеты эта область, а также системные фалы прописываются командой sys.

Файловая система FAT состоят из следующих элементов: Boot-Sector, зарезервированные сектора, две копии таблицы FAT, расположенные одна за другой, корневой каталог и область данных. Повреждение таблиц FAT имеет самые печальные последствия, т.к. именно они и являются теми жизненно важными схемами расположения файлов. Повреждение одной из этих таблиц не фатально, т.к. обычно дублирующиеся данные можно взять из резервной таблицы, ну а если повреждены обе, то вся область данных является морем информации без каких-либо указателей. Единственное, что может спасти в восстановлении структур данных, - сохраненные копии FAT специальными программами - реаниматорами.

Корневой каталог является основным и содержит все ссылки на каталоги следующего уровня, а также на файлы, находящиеся в нем. Его повреждение сопровождается появлением странных директорий и файлов. Вероятность восстановления данных при их искажении в нем велика, однако логическая структура директорий, а также многие файлы могут быть потеряны безвозвратно.

Далее располагается область данных, где кроме них находятся еще и каталоги следующего уровня. Их повреждения локальны и при желании легко излечиваются стандартными средствами вроде NDD.

Стер файл, но в корзине его не обнаружил, что делать?


Он, наверняка, оказался слишком большим и просто туда не поместился, а может быть, включена функция прямого стирания. В любом случае, как только вы заметили, что удалили файл, надо сразу остановить работу всех программ. А если никакие запущенные процессы не проявляют активности, то при возможности лучше сразу нажать два раза Ctrl-Alt-Del, тем самым сразу же перезагрузив систему. Объяснения такой жесткой реакции кроются в механизме удаления файлов. Вы не замечали, что удаляются файлы намного быстрее, чем записываются? Дело в том, что при записи файла в таблице размещения находятся свободные элементы, и согласно им файл располагается на диске, а указатель на первый используемый элемент таблицы находится в записи, определяющей файл в директории. То есть запись о файле содержит не только его имя и атрибуты, но и данные о стартовом секторе на диске, принадлежащим ему. Удаление файла происходит следующим образом - освобождается цепочка в таблице размещения файлов, а вместо первой буквы имени файла ставится специальный знак, говорящий о том, что элемент свободен.

То есть сами данные фактически не удаляются?

Точно. И для восстановления файла необходимо всего лишь указать первую букву и восстановить последовательность цепочки таблицы размещения файлов. Если диск фрагментирован, то сделать это будет гораздо сложнее, т.к. части файла окажутся раскиданными по диску, и собирать их занятие трудоемкое. Соответственно, после того, как цепочка FAT освобождается, ее элементы становятся доступными, и на ее место могут быть записаны другие файлы. Вот почему вероятность восстановления удаленных файлов с течением времени уменьшается. Для мультизадачных операционных систем, тем более для системы Windows, это особенно актуально, т.к. многие операции записи производятся в отложенном режиме, и к тому же большинство пользователей используют файл подкачки (swap-file) динамического размера. Это вдвойне неэффективно: во-первых, из-за постоянного изменения объема файла подкачки он все больше фрагментируется, т.е. при доступе к нему головке приходится совершать лишние перемещения, что в свою очередь сказывается на производительности. А во-вторых, его увеличение сопровождается захватом свободных элементов в FAT, которые и могут быть теми участками удаленных файлов, которые еще могли быть восстановлены. Кстати, программ восстановления, использующих вышеописанный метод, очень много, а некоторые из них даже поставляются вместе с операционными системами.

Вы меня насторожили. Насколько я понимаю, любой, кто захочет восстановить данные, которые я удалил, имеет шанс это сделать. Как это можно предотвратить?

Следует использовать специальные программы, которые удаляют не только заголовок файла, но и стирают все данные в использованных секторах. Информацию, стертую таким образом, восстановить уже невозможно. Из пакета Нортоновских утилит этим занимается WipeInfo.

Испорчена нулевая дорожка на дискете. Покупать новую?


Не стоит. Если у вас есть желание и время, то вы имеете шанс ее оживить. Помните, в стародавние времена существования дискет меньшей емкости было очень модно использовать программы типа "800.com" или "PU-1700"? Основным предназначением этих программ было форматирование дискет с нестандартными параметрами, вследствие чего увеличивалась их полезная емкость. Для чтения таких дискет чаще всего был нужен специальный драйвер, но некоторые программы делали DOS-совместимые дискеты повышенной емкости. Так вот, еще в те времена в программах такого типа хорошим тоном было включение функции особой разметки, при которой можно было избежать использования испорченной нулевой дорожки. Конечно, нестандартная разметка не гарантирует полной совместимости со всеми операционными системами, но шанс есть.

Спасибо, но я не хочу экспериментировать с совместимостью. Есть ли еще какие-нибудь средства?

Да. Есть множество программ-реаниматоров, каждая из которых своим собственным способом пытается устранить физические повреждения на дискете. Одна из них даже содержится в Нортоновских утилитах. Конечно, представляется весьма сомнительным тот факт, что программным путем можно убрать загрязнение или дефект поверхности, но чаще всего такие программы справляются с этой задачей вполне прилично. Минус данного метода в том, что после использования такой программы шанс потерять данные на этой дискете намного возрастает.

А если и это не помогло, что делать?

В крайнем случае вам понадобится отвертка и мягкая салфетка. С их помощью можно с 50%-й вероятностью гарантировать успех в борьбе за жизнь нулевой дорожки дискеты. Решение до неприличия просто. Так как нулевая дорожка находится на одной стороне диска, то его нужно просто перевернуть. Тогда уже другая, возможно, не испорченная поверхность окажется на месте нулевой дорожки, и форматирование дискеты станет возможным. Если и это не помогло, то после попробуйте повозиться с программами-реаниматорами, а если уж и они не помогли, то лучше отправить дискету на свалку.

Недавно обнаружил плохой сектор на диске. Опасно ли это? Можно ли его восстановить?


И да, и нет. Здесь все зависит от того, насколько умен контроллер вашего жесткого диска. В современных жестких дисках кроме данных на рабочей поверхности располагается (обычно в конце диска) дополнительные резервные области. Используются они внутренней логикой контроллера и служат для того, чтобы при нестабильном чтении сектора диска логически переместить его в эту область. Для конечного пользователя, как и для операционной системы, эта процедура "прозрачна", а единственный способ узнать о перемещении сектора в резервную область - измерить скорость чтения с него, и если она ниже скорости чтения всех остальных секторов в той же области, то, скорее всего, сектор передислоцирован в резервную область. Также это можно узнать, опросив контроллер диска, но детальный отчет по перемещенным секторам дают далеко не все. Однако даже умные контроллеры иногда пропускают потенциально неработоспособные сектора диска, что обнаруживается уже в самый последний момент - когда головка не может прочитать участок. Как правило, при наличии свободных элементов в резервной области плохой сектор возможно логически заменить хорошим из резервной области, что для старых жестких дисков, в которых эта область отсутствует, невозможно. В итоге приходим к тому, что для современных дисков плохим показателям является высокая скорость заполнения резервной области, а для старых дисков - само наличие плохих секторов или провалы в графиках чтения или записи с пластин. В этом случае следует подумать о замене диска. Кстати, кроме физических причин появления плохих секторов может также произойти логическая путаница внутри контроллера. При форматировании в одном режиме (например, Large), а использовании в другом (например, LBA) ответ контроллера на обращение к несуществующим головкам или цилиндрам может интерпретироваться как обращение к плохим секторам, вследствие чего диск наполнится "бэдами", которые будут иметь только логический характер. Проблема решается форматированием и эксплуатацией диска в одном и том же режиме.

А как все-таки восстановить данные из плохого сектора?

Если говорить о содержимом плохого сектора, то шансы на его восстановление тоже есть. Программы, занимающиеся этим, делятся на две категории: те, которые работают напрямую с контроллером диска, и те, которые оперируют элементами файловой системы. Первые при восстановлении пробуют переместить плохой сектор в резервную область (если функция поддерживается контроллером), переписав туда все то, что возможно прочитать. А программы, работающие не с секторами, а с логическими элементами конкретной файловой системы, используют несколько иные механизмы. Дело в том, что если минимальным элементом работы контроллера является сектор (обычно 512 байт), то минимальным элементом файловой системы является блок (или кластер), размер которого в системе FAT32 или FAT16 колеблется от 2 Кбайт (4 сектора) до 32 Кбайт (64 сектора). Наиболее высокая вероятность восстановления возникает в том случае, когда "битый" сектор пришелся на последний используемый файлом кластер. Тогда может случиться, что неисправная поверхность диска не будет физически содержать данные файла, хотя логически это будет так. В этом случае вероятность восстановления испорченных файлов программами типа NDD равняется 100%. Иногда бывает так, что неверно считывается контрольная сумма сектора, а основные данные в порядке. Такие данные тоже восстановятся с вероятностью 100%, однако таких случаев гораздо меньше. Вообще, следует с осторожностью относиться к восстановленным данным, особенно если это исполняемые файлы.

Слышал, что использование RAID-массива повышает надежность. Что имеется ввиду?


Только надежность физических компонентов и контроль над передачей данных. Технологии, применяемые в RAID-массивах, позволяют добиваться большей скорости дисковых накопителей, но не способны противостоять деструктивным функциям на уровне логики файловой системы, т.е. вирусам, ошибкам в системных программах и т. д. Представьте себе, программа случайно уничтожает таблицу FAT. Она же, как правило, "думает", что работает с одним накопителем и посылает команду на запись контроллеру, а контроллер тем временем распределяет эту команду на все накопителям в массиве, так что все таблицы FAT будут разрушены. RAID - скорее, защита физической надежности накопителей.

Какие существуют программы для восстановления данных?


Очень хороший низкоуровневый редактор дисков PTS DiskEdit выпустила наша российская компания "Физтех-софт". Отлично зарекомендовала себя во время лечения последствий от вируса CIH (Чернобыль) программа MRecover. Полезной будет программа Hard Drive Mechanic, а для копирования данных с поврежденного диска подойдут утилиты Tiramisu и EasyRecovery (www.recovery.de), а также Lost & Found от PowerQuest. Первые две, кстати, кроме FAT16 и FAT23 поддерживают файловые системы NTFS, Novell. Ну и отличный набор, предоставляемый Нортоновскими утилитами - Diskeditor, NDD, Unformat.

Неправильно подсоединил диск друга и случайно отформатировал свой. Есть ли какой-нибудь простой способ хотя бы частично восстановить данные?


Самый просто способ - программа Unformat. Однако если не иметь в наличии копий структур FAT, то восстановление файлов размером более одного кластера будет носить абсолютно случайный характер. Программы типа Unformat ищут и анализируют кластеры раздела диска с информацией о подкаталогах и их родительских каталогов (т.к в каждом подкаталоге содержится указатель на родительский каталог), а также производится анализ дат создания или стирания файлов. На основе этих данных они и выстраивают схему данных диска, заменяя разрушившиеся директории корневого каталога на имена типа "DIR001" и т. д.

Наверное, уже поздно - успел записать массу файлов поверх...

Тут уже сложнее. Без специального софта не обойтись. Для такого рода проблем подойдут программы...

Мне всего-то нужна записная книжка с новым номером телефона, а все остальное есть в архиве.

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

Архив оказался "битым". Можно ли восстановить хоть часть данных?


Это зависит, как минимум, от типа архиватора. Для архивов, сжатых Zip`ом, есть прекрасная утилита Pkzipfix, входящая в состав архиватора и позволяющая восстанавливать неповрежденные части архива. Популярный ныне продукт WinRar имеет специальную опцию, включив которую, при архивации добавятся дополнительные данные для восстановления архивов. Последняя версия архиватора отводит под размер восстановительной записи около 1,2% от всего объема архива, что позволяет восстановить непрерывный участок архива продолжительностью до 0,7%.по почте приложения подряд... О безопасности разработчики заботятся.

Поставил один из новомодных загрузчиков, поддерживающих несколько операционных систем, но он стал сбоить. Я опасаюсь за данные. Как его корректно удалить?


Сначала надо определить, какой механизм использует загрузчик, и в зависимости от этого принимать решение. Тот загрузчик, который оформляет себя в таблице разделов, ведет себя наиболее корректно, хотя и занимает одно из четырех полей в этой таблице. Так, например, поступает загрузчик от OS/2. После его установки можно использовать еще три основных (primary) раздела, включая расширенный (extended). Удалить загрузчика такого типа очень просто - достаточно зайти в fdisk и выбрать удаление раздела этого загрузчика. После этого необходимо определить активный раздел. Кстати, можно ограничиться только последним действием, а раздел загрузчика оставить до "лучших времен". Включить его можно будет простым назначением на роль активного.

Загрузчики другого типа встраиваются в MBR, тем самым перехватывая процесс загрузки на самой ранней стадии. Такие позволяют использовать все четыре элемента таблицы разделов, но имеют одну неприятную особенность - специфическое расположение на диске. Обычно они встраиваются в неиспользуемые сектора между системными данными загрузки или напрямую в MBR, так что при некоторых с виду незатейливых операциях можно полностью уничтожить такой загрузчик. Так как старт загрузчик получает в MBR, то его можно легко уничтожить запуском программы fdisk с ключом /mbr. Эта функция прописывает в MBR стандартный загрузчик и действует на основной диск, подключенный как Master. В седьмой версии DOS также существует ключ /cmbr, в котором в качестве параметра указывается номер диска.

Кроме того, существуют еще версии загрузчиков, встраиваемые в boot-сектор диска. Естественно, что получить управление они могут только в том случае, если раздел, на котором они находятся, является активным. Уничтожаются обычно переписыванием boot-сектора программами, осуществляющими перенос системных файлов.

Говорят, что низкоуровневое форматирование позволяет восстановить плохие сектора на жестком диске. Это правда?


Нужно понимать, что подразумевается под низкоуровневым форматированием. Если высокоуровневое форматирование занимается созданием разделов и файловых структур, то низкоуровневое форматирование означает базовую разметку поверхностей дисков. В стародавние времена, когда жесткие диски поставлялись с чистыми поверхностями, такое форматирование создавало только информационные сектора. Современные винчестеры кроме разметки информационных секторов имеют также сервоинформацию, запись которой может быть выполнена только на технологическом стенде. Если для SCSI-моделей жестких дисков эта разметка является более менее стандартной, то для каждой IDE-модели есть специальная программа, которая использует ее те или иные функции контроллера.

Полное низкоуровневое форматирование, предлагаемое BIOS или какой-то иной программой, не предназначенной для данной конкретной модели, может привести к полной неработоспособности устройства из-за несовпадения служебных команд.

Случаи, когда после низкоуровневого форматирования пропадали Bad-Block'и описывают процесс remapping (ремаппинга) - логической замены физически неисправного сектора на физически исправный в резервной области. Этот процесс может быть произведен диском как автоматически, так и при помощи специальных программ для диагностики (например, HDDSpeed версии 2.1).

Случайно удалил один из разделов fdisk'ом...

Программа fdisk - менеджер разделов диска, поэтому он оперирует таблицей разделов, MBR и логическими дисками. Ни в коем случае не пытайтесь заново создать удаленный раздел - при просчете свободного места на диске fdisk пишет в первый сектор на каждом треке код F6, что приводит к потере информации в этих секторах. В принципе, если у вас есть под рукой программы-реаниматоры, которым вы доверяете, то можете воспользоваться ими, но если (кроме старого доброго Disk Editor'а или других программ-редакторов) физических элементов диска нет, то вам понадобится следующая информация о структуре раздела.

Рассмотрев структуру предыдущих разделов и располагая информацией о параметрах жесткого диска, можно попытаться сделать это вручную. Главное - точно попасть в начало раздела, которое можно найти в том же Disk Editor, а всю оставшуюся информацию можно вычислить исходя их этого.

Так как в начале каждого раздела имеется Boot-sector, в котором содержится информация о метке диска, его файловой системе, производителе операционной системы, то найти его не будет составлять особого труда. Полезную информацию можно будет взять из данных, расположенных в Boot-sector, а формат слова для функций чтения INT 13h следующий:

Где "s" - номер сектора, а "c" - номер дорожки, причем большие буквы обозначают старшие биты. После того, как раздел хоть немного "оживет" (появится как самостоятельная структура), программа-редактор сама предложит внести соответствующие коррективы, если посчитает какие-то данные некорректными.

Я только что написал программу, которая стерла FAT.


Обе копии?

Да.

Если операционная система - Windows, то есть вероятность того, что можно найти копию FAT в файле подкачки, т.к. Windows часто хранит FAT в памяти.

Я совсем недавно дефрагментировал диск программой SpeedDisk и поместил файл подкачки в начало диска.

Очень хорошо! Чтобы найти FAT, следует поискать на диске "F8 FF FF FF" (так иногда начинается FAT) или последовательность чисел вроде C7 C8 C9 CA. Так как по элементам FAT можно определить ее начало, очень быстро можно вычислить начало таблицы. После этого надо записать этот блок на место "невинно убиенных" таблиц FAT, а затем пройтись программами типа NDD или Scandisk для устранения возможных ошибок.

Диск не всегда реагирует на запросы и иногда "намертво" замирает. В чем причина?


Вероятно, мог выйти из строя контроллер жесткого диска. Узнать это можно поставив его на продолжительное тестирование. Если подозрения оправдались и контроллер не проходит какие-то тесты, то можно попробовать заменить контроллер. Отдельно найти контроллер очень проблематично, однако иногда на компьютерных рынках встречаются диски с испорченной поверхностью, но с работоспособным контроллером. Главное - купить диск точно такой же модели, т. к. далеко не все контроллеры дисков одной серии, но разного объема подходят друг к другу. Если стоимость вашей информации оправдывает покупку такого диска, то вам предстоит сложная операция замены контроллера. Аккуратно снимите старый контроллер и поставьте на его место новый. Кстати, потом можно вставить неработоспособный контроллер в диск с испорченной поверхностью и продать его скупщикам "битого" железа.

 Главная BIOS Новости Матплаты Программы Программирование FAQ

Hosted by uCoz