Потерянные кластеры и программа chkdsk.

Особый, и довольно распространенный случай — расхождения между таблицей файлов и битовой картой. Первая, как известно, связывает имена файлов с занимаемыми ими кластерами, а вторая указывает системе, какие кластеры заняты, а какие свободны. Аналогичные структуры есть и в FAT, и в NTFS.

Внешне несогласованность двух структур выглядит как появление так называемых потерянных кластеров. Битовая карта сообщает, что кластер или целая их группа заняты, но таблица файлов умалчивает, какому файлу эти фрагменты принадлежат. Очевидно, файл «пропал», хотя фактически на диске он есть. К счастью, в таком состоянии он может существовать сколь угодно долго — битовая карта «не пустит».

Обратная ситуация: в файловой таблице запись о файле есть, но занятые им кластеры, согласно битовой карте, считаются свободными. Подобное положение вещей чревато тем, что в кластеры с содержимым файла будет записано что-то новое. Это уже настоящая и безвозвратная утрата информации! Предотвратить такой инцидент может только своевременная проверка диска на логические ошибки.

Причины возникновения ошибок мы уже перечислили: аппаратные и системные сбои, ошибки или сброс дискового кеша и т.д. Критическим является момент перемещения, переименования или удаления файлов, а также период дефрагментации диска.

С ошибками обоего рода достаточно успешно справляется стандартная программа chkdsk. Автоматически она запускается при загрузке системы, если на томе обнаружен «грязный бит». В другое время вы можете запустить ее из командной строки (с правами администратора) либо через графический интерфейс — кнопкой Выполнить проверку на вкладке Сервис диалогового окна свойств диска.

Без параметров в командной строке или со снятыми флажками в диалоговом окне запуска программа chkdsk только проверяет целостность ФС и выводит отчет, но изменений на диск не вносит. Если же запустить ее с параметром /f или в диалоговом окне проверки установить флажок Автоматически исправлять системные ошибки, программа будет исправлять обнаруженные ошибки.

Когда для файловой записи не найдены соответствия в битовой карте, программа chkdsk вносит коррективы в последнюю. Занятые файлом кластеры обозначаются как занятые — ошибка исправлена наилучшим образом.

При обнаружении потерянных кластеров программа преобразует каждую из их непрерывных цепочек в отдельный файл. Для этого она создает новые записи в таблице файлов. Файлы с порядковыми номерами и расширением chk помещаются в корень проверяемого тома.

Если цепочка содержала весь файл (файл не был фрагментирован), все отлично. Вы можете открыть CHKфайл с помощью двоичного редактора, по сигнатуре или характерным последовательностям определить его истинный формат. Переименуйте файл и присвойте ему «правильное» расширение.

Куски фрагментированного файла будут разнесены по двум или нескольким CHK-файлам, каждый фрагмент — отдельно. Начальный фрагмент определить просто — он начинается с сигнатуры и содержит характерный заголовок. Чтобы выяснить последовательность остальных фрагментов, придется приложить некоторую смекалку.

«Склеить» фрагменты проще всего с помощью того же HEX-редактора. Критерий правильности сборки — то, что файл успешно откроется в ассоциированной с ним программе.

Действительная история логических проблем на дисках обычно остается неразрешенной загадкой. В руки к нам по большей части попадают носители, по которым хозяева или система уже прошлись средствами проверки и исправления ошибок. О том, когда, как и что именно случилось с диском на самом деле, остается только предполагать. Все-таки наша первоочередная задача — вытянуть с диска все, что только можно, и лучше, если удастся упорядочить извлеченные данные так же, как они были расположены первоначально.