Тайны и секреты компьютера - Антон Орлов
Шрифт:
Интервал:
Закладка:
К примеру, операционная система поставила в записи FAT, относящейся к одному из кластеров, ссылку на другой кластер, содержащий продолжение файла, а вот пометить этот кластер с продолжением как занятый (поместив в соответствующую запись FAT либо ссылку на следующий кластер файла, либо символ конца файла) не успела — произошла перезагрузка или отключение компьютера.
В итоге кластер оказался помеченным в FAT как свободный, и при записи на диск следующего файла (после новой загрузки операционной системы) он был для него использован. В итоге этот кластер стал принадлежать сразу двум файлам — сделался общим. Ясно, что в итоге в кластер будут записываться попеременно данные для обоих файлов, что испортит и те, и другие.
Или другая ситуация: при записи нового файла операционная система для него отвела в FAT цепочку кластеров, а в каталог записать информацию о номере его первого кластера не успела. В итоге отведенные кластеры стали потерянными — и не пустые, и не принадлежащие какому-либо файлу. Данные в них, если все же оказались записанными, стали недоступными.
Все описанные ситуации могут серьезно затруднить работу с файлами. Общие кластеры приводят к потерям данных, а потерянные — к трате свободного места и утере их содержимого. Чтобы исправить подобные ошибки файловой системы, используются программы для проверки дисков — например, ScanDisk из поставки Windows или Norton Disk Doctor из комплекта Norton Utilities. Эти программы анализируют FAT и структуру каталогов, и в случае обнаружения потерянных кластеров сохраняют их в отдельные файлы, а общие кластеры копируют для каждого из их файлов.
Много интересных материалов об устройствах различных файловых систем и их характеристиках можно найти на сервере www.ixbt.ru, в разделе http://www.ixbt.ru/storage[23] ].
Об удалении файлов и восстановлении данных
Когда выполняется команда удаления файлов с жесткого диска (в Windows это происходит при очистке «Корзины», так как при простом удалении файлов с помощью команды «Удалить» или кнопки Delete файлы перемещаются в «Корзину», а не удаляются), то сама информация, находящаяся в ячейках жесткого диска, не уничтожается. Выполняется лишь пометка в FAT кластеров, ранее занимаемых этим файлом, как свободных, а в файле каталога, в котором этот файл находился, первый символ имени заменяется на знак"!". Так как длинные имена файлов хранятся в файле каталога отдельно от настоящих имен, то они в этом случае сохраняются.
Если в каталог и в кластеры, ранее занимаемые удаленным файлом, больше не производилось записи, то имеется возможность файл восстановить. Для этого нужно просто просмотреть файл каталога и найти в нем имя файла, узнать из записи, относящейся к этому файлу, номер первого кластера файла, а затем записать информацию из этого кластера в новый файл на свободное место винчестера.
Если файл занимал больше одного кластера, то наверняка восстановить можно лишь содержимое первого кластера. Информация о том, в каких кластерах располагалось остальное содержимое файла, утрачивается полностью, так как из FAT информация об удаленном файле стирается.
Поэтому программы восстановления удаленных файлов (к примеру, Norton UnErase Wizard) просто обьединяют в одном файле определенное число последовательных свободных кластеров (соответствующее записанному в файле каталога размеру удаленного файла) и именуют результат названием удаленного файла. Пример того, что получается — на рис. 8.10.
Рис. 8.10. Результат работы Norton UnEraze.
Этот текстовый файл snakecor.txt размером в 40 килобайт был удален, а потом восстановлен с помощью Notron UnErase Wizard, который нашел в файле каталога, где snakecor.txt находился, его имя с знаком"!" впереди, узнал оттуда размер файла и номер первого кластера, занимаемого файлом, а потом обьединил содержимое этого и следующего свободного кластера. Но, увы, программе и пользователю не повезло — изначально файл snakecor.txt был фрагментирован и в восстановленный файл попал фрагмент другого ранее удаленного файла, а не тот, который был нужен.
Что такое Unformat
При форматировании жесткого диска очищается таблица FAT (в ней все кластеры помечаются как свободные) и корневой каталог — из него удаляется вся информация о содержащихся в нем файлах и других каталогах. Сами данные на винчестере не стираются. Поэтому их можно восстановить программами типа Unformat. В этом отличие винчестера от дискеты — при проведении полного форматирования дискеты на ней заново записываются и магнитные метки начала секторов, и служебная информация, поэтому после полного форматирования данные на дискете восстановить практически нельзя.[24] "Быстрое форматирование" дискеты по своему принципу аналогично полному форматированию винчестера.
Программа для восстановления данных после форматирования просканирует логический диск и найдет на нем файлы, бывшие некогда каталогами, ориентируясь при этом на типичные последовательности байтов ("метки"), характерные именно для файлов-каталогов. Затем она узнает из этих файлов номера первых кластеров содержащихся в них обычных файлов. К сожалению, информация об остальных кластерах, занимаемых файлами, потеряна навсегда, поэтому Unformat (как и UnErase Wizard), добавит каждому файлу следующие за первым кластером свободные кластеры в количестве, равном занимаемому ранее файлом числу кластеров, и занесет в FAT информацию об этом.
После этого Unformat создаст в корневом каталоге свежеотформатированного диска новые каталоги и укажет в этих каталогах имена и первые кластеры узнанных на предыдущем этапе обычных файлов. В результате в корневом каталоге отформатированного диска появятся папки, содержащие файлы, ранее присутствовавшие на диске. Те файлы, которые занимали меньше одного кластера или при восстановлении которых были обьединены именно те кластеры, которые они раньше и занимали (такое бывает, когда диск был дефрагментирован незадолго до форматирования), будут восстановлены полностью. Остальные — как повезет.
Такая обычная ScanDisk…
Наблюдая за работой всем известной, стандартной программы ScanDisk из Windows 95/98, можно увидеть немало интересного… Конечно, если смотреть внимательно и вдумыватся в то, что видишь.
1. Программа ScanDisk просматривает FAT. Так как вся FAT находится в одном месте диска, то считывается и проверяется она очень быстро. На этом этапе своей работы ScanDisk ищет ошибки файловой системы — общие кластеры, и в случае обнаружении таковых исправляет структуру FAT, копируя эти кластеры для каждого из содержащих их файлов и соответственно изменяя содержимое FAT.
2. А теперь ScanDisk проходит по структуре каталогов — то есть считывает все файлы-каталоги, проходя по их иерархии. Это связано с необходимостью многократного перемещения головок жесткого диска, поскольку эти файлы расположены в разных местах диска. Поэтому времени на "Проверку папок" уходит немало. На этом этапе также собираются данные для последующего анализа диска на предмет наличия потерянных кластеров — помеченных как занятые, но не принадлежащих ни одному из файлов. Сам этот анализ происходит сразу после "Проверки папок". Потерянные кластеры могут быть преобразованы в файлы или удалены.
3. Системная область — это область, занимаемая FAT. Ониа находится в начале логического диска. В те секторы, которые FAT занимает, данные пользователя записывать нельзя, а повреждение здесь приведет к потере и расположенных на диске файлов, так как операционная система не сможет их найти.
4. Проверяется область данных пользователя на предмет поврежденных секторов. В случае обнаружения таковых в FAT будут занесены соответствующие указания.
DiskEditor
Это редактор содержимого диска, разработанный нашими соотечественниками — компанией ФизТехСофт. Он позволяет просматривать содержимое диска не средствами операционной системы, а "на физическом уровне" — побайтово, то есть смотреть, что записано в каждой электронной ячейке диска, в каждом его секторе. Вот, как, к примеру, выглядит корневой каталог логического диска — смотрите рис. 8.11, или FAT — рис. 8.12. Разобраться в хитросплетении кодов, конечно, сложно… Одно радует — операционная система делает это автоматически, а мы этого даже не замечаем.
Рис. 8.11.Это — корневой каталог диска, отображенный в DiskEditor'е. Именно так он выглядит на уровне дорожек, секторов и битов.
Основное предназначение DiskEditor'а — помощь в восстановлении информации на жестком диске в случае поражения его вирусом или повреждения служебной информации. Поэтому, как вы, наверное, заметили из рисунков, в DiskEditor'е возможны два представления информации — шестнадцатиричный (слева) и текстовый (справа).