Я использовал несколько различных инструментов для восстановления дисков и мне было интересно, есть ли список того, что именно CHKDSK может восстановить? MFT? Загрузочный сектор? Резервное копирование загрузочного сектора? Кластеры? Какие общие проблемы не могу это исправить?
CHKDSK (autochk.exe и chkdsk.exe, которые используют общие библиотеки DLL) выполняется в несколько этапов (ниже приведено для томов NTFS и немного упрощено):
Этап 1 - «Проверка файлов». На этом этапе он исследует Таблица основных файлов (MFT). Магазины MFT атрибуты файла о каждом файле и каталоге, например об имени файла, дате создания, отметках времени и т. д. в сегментах файловой записи (FRS). CHKDSK проверяет внутреннюю согласованность FRS, а также строит два растровых изображения (одно показывает FRS, а другое показывает фактические кластеры), которые сравнивает с растровыми изображениями, хранящимися в MFT.
Этап 2 - «Проверка индексов». На этом этапе он просматривает индексы (каталоги) тома NTFS. Он проверяет каждый из каталогов на предмет внутренней согласованности и гарантирует, что каждый файл и каталог в FRS содержится в каталоге. Если файл отсутствует в каталоге, он считается «осиротевшим», и CHKDSK либо пытается поместить его в папку, указанную FRS для этого файла, либо помещает его в «найденный» каталог. Он также проверяет, что каждый файл / каталог в каталоге имеет соответствующую запись FRS. Если каталог ссылается на файл или каталог, которого там нет, он удаляет эту запись.
Этап 3 - «Проверка дескрипторов безопасности». Дескрипторы безопасности (содержащие информацию о безопасности, такую как списки управления доступом и информацию аудита) хранятся в фактическом файловая структура, и на этом этапе CHKDSK проверяет каждый из них, чтобы убедиться, что они имеют правильную структуру и внутренне непротиворечивы.
Этап 4 - «Проверка данных файла». Этот этап происходит только в том случае, если использовалась команда / R (или флажок был установлен в графическом интерфейсе). На этом этапе CHKDSK пытается прочитать каждый сектор на диске. Если был указан / R, он фактически уже выполнил этот этап один раз для секторов метаданных и данных файла на более ранних этапах. Если он находит плохой сектор, он добавляет кластер, в котором находился сектор, в список плохих кластеров и пытается переместить данные в хороший сектор (если не может, он заполняет новый кластер значением 0xFF).
Этап 5 - «Проверка свободного места». Это также происходит, только если используется / R. На этом этапе CHKDSK пытается читать из свободных секторов и добавляет плохие кластеры в список плохих кластеров.
Надеюсь, это ответит на ваш вопрос. Более подробная информация доступна в это КБ, этот белая бумага, и это руководство.
Также следует отметить, что NTFS имеет встроенные функции восстановления метаданных в виде журнала транзакций NTFS. Это отдельный процесс от CHKDSK. Если система неожиданно выключается или дает сбой, при запуске резервного копирования Windows выполняет операцию восстановления NTFS, используя информацию из файла журнала NTFS. Этот процесс подробно описан в упомянутом выше техническом документе в разделе «Возможность восстановления журнала транзакций NTFS».
CHKDSK - это, по сути, параллельная реализация NTFS (NTFS.SYS), которая занимается "проверкой работоспособности" MFT и, при необходимости, ремонтом. Я не знаю ни одной всеобъемлющей опубликованной спецификации всех проверок и «исправлений», которые CHKDSK выполняет для томов NTFS или FAT. Я предполагаю, что единственной исчерпывающей спецификацией будет исходный код самого CHKDSK. Вы, вероятно, сможете собрать что-то вместе из документации Microsoft, но я сомневаюсь, что вы найдете техническое описание каждого теста или даже список всех тестов.
Что касается загрузочного сектора и резервного загрузочного сектора (если это применимо для типа проверяемой файловой системы), я не верю, что какая-либо версия CHKDSK производит какое-либо «восстановление» загрузочного сектора. Например, если вы разобьете свой загрузочный сектор и потеряете смещение MFT, CHKDSK этого не исправит.
Единственный тип «повреждения», о котором я могу с уверенностью сказать, что CHKDSK ничего не может сделать, - это повреждение в пределах данных самого файла. CHKDSK ничего не делает с информацией, не являющейся метаданными.
Доступен старый технический документ Microsoft о CHKDSK.