Введение

Системный инструмент в DOS, OS/2 и Windows

В вычислительной технике CHKDSK (сокращение от "check disk") — это системный инструмент и команда в DOS, Digital Research FlexOS, IBM/Toshiba 4690 OS, IBM OS/2, Microsoft Windows и связанных операционных системах. Он проверяет целостность файловой системы тома и пытается исправить логические ошибки файловой системы. Он аналогичен команде fsck в Unix и Microsoft ScanDisk, которая использовалась параллельно с CHKDSK в Windows 9x и MS DOS 6.x.

Реализация

Ранней реализацией утилиты 'CheckDisk' являлась программа CHECKDSK, входившая в состав аппаратной диагностики Digital Equipment Corporation и работавшая на операционных системах TENEX и TOPS 20 в начале 1970-х годов.

SCP 86-DOS

Команда CHKDSK была впервые реализована в 1980 году Тимом Патерсоном и включена в состав Seattle Computer Products 86 DOS.

MS-DOS / IBM PC DOS (включает в себя и другие операционные системы)

Команда доступна в MS DOS версии 1 и более поздних. CHKDSK реализована как внешняя команда. MS DOS версий 2.x – 4.x используют chkdsk.com в качестве исполняемого файла. MS DOS версий 5.x и более поздних используют chkdsk.exe в качестве исполняемого файла. CHKDSK также может отображать использование памяти, что использовалось до появления команды MEM.EXE, представленной в MS DOS 4.0, для отображения использования памяти. В DR DOS параметр /A ограничивал вывод только информацией об использовании памяти.

Ошибка MS-DOS 5.0

CHKDSK и UNDELETE в MS DOS 5.0 содержат ошибку, которая может привести к повреждению данных: если таблица размещения файлов диска использует 256 секторов, запуск CHKDSK /F может вызвать потерю данных, а запуск UNDELETE – к непредсказуемым результатам. Как правило, это влияет на диски емкостью, кратной 128 МБ. Это относится к файлам CHKDSK.EXE и UNDELETE.EXE с датой 9 апреля 1991 года. Эта ошибка была устранена в MS DOS 5.0a.

Microsoft Windows

CHKDSK может быть запущена из командной строки DOS, проводника Windows, командной строки Windows, Windows PowerShell или консоли восстановления. В операционных системах Windows NT CHKDSK также может проверять поверхность диска на наличие поврежденных секторов и отмечать их (в MS DOS 6.x и Windows 9x эту задачу выполняет Microsoft ScanDisk). Версия CHKDSK для Windows Server учитывает особенности RAID и может полностью восстановить данные из поврежденных секторов диска в RAID 1 или RAID 5 массиве, если другие диски в массиве исправны. Фрагменты файлов и каталогов, признанные поврежденными в результате, например, сбоев питания во время записи, чрезмерной длины имени файла и/или недопустимых символов в имени файла, перемещаются в каталог под корневым каталогом раздела с именем found.000 и переименовываются в обобщенные файлы и каталоги с шестнадцатеричными номерами, начинающиеся с file00000000.chk и dir 00000000.chk соответственно. В семействе Windows NT стандартное сканирование CHKDSK состоит из трех этапов проверки метаданных файлов. Она обнаруживает ошибки, но не исправляет их, если не указано иное. То же самое относится и к сканированию поверхности — этот тест, который может быть очень длительным на больших или медленных дисках, не выполняется, если явно не запрошен. Для выполнения исправления CHKDSK требуется эксклюзивный доступ на запись к тому. Из-за требования монопольного доступа к диску, CHKDSK не может проверять системный диск в обычном режиме работы системы. Вместо этого система устанавливает флаг "грязного" тома на диске, а затем перезагружает компьютер. Во время запуска Windows специальная версия CHKDSK под названием Autochk (приложение в собственном режиме) запускается SMSS.EXE и проверяет файловую систему и пытается ее восстановить, если установлен флаг "грязного" тома. В связи с требованием эксклюзивного доступа и трудоемкостью работы CHKDSK, Windows Vista реализовала новую модель целостности файловой системы, в которой операционная система исправляет ошибки на томах по мере их обнаружения. Если проблема серьезная и требуется полное сканирование, Центр управления уведомляет пользователя о необходимости отключить том при первой возможности. Windows Vista и Windows Server 2008 добавили функцию самовосстановления, включенную по умолчанию, в дополнение к команде CHKDSK. Она обнаруживает физические ошибки файловой системы и незаметно исправляет их "на лету". Таким образом, многие проблемы, которые ранее обнаруживались при запуске CHKDSK, больше не возникают. Управляется командой fsutil repair. Критика была направлена на склонность AUTOCHK автоматически изменять файловую систему без явного запроса пользователя, который может захотеть создать резервную копию своих данных заранее, поскольку попытка исправления может повредить, нарушить и сделать недействительными пути к файлам и каталогам, особенно в многозагрузочной конфигурации, где несколько операционных систем могут одновременно записывать данные в один и тот же раздел.

Предполагаемая ошибка Windows 7

До выхода Windows 7 InfoWorld сообщил о предполагаемой утечке памяти в CHKDSK; согласно отчету, команда chkdsk /r приводила к тому, что использование памяти достигало максимума и система аварийно завершала работу. Рэндалл К. Кеннеди из InfoWorld ссылался на "различные веб-источники" как на источник первоначального сообщения и отметил, что в его тестах использование памяти превышало 90%, хотя он сам не столкнулся с аварийным завершением работы. Тем не менее, Кеннеди расценил высокое потребление памяти как критическую ошибку, способную сорвать выпуск Windows 7, и раскритиковал Microsoft. Том Уоррен из Neowin не согласился с оценкой Кеннеди относительно серьезности предполагаемой утечки. Стивен Синофски из Microsoft также заявил, что Microsoft не смогла воспроизвести аварийное завершение работы, но подчеркнул, что высокое потребление памяти было намеренным решением для повышения производительности, а не утечкой. Эд Ботт из ZDNet также проверил это утверждение собственными тестами и обнаружил, что аварийное завершение работы не происходит. Отметив, что chkdsk /r по своей конструкции не работает с системным диском при активной работе Windows, Ботт заключил, что "это, скорее, функция, чем ошибка, и вероятность того, что вы когда-либо сможете таким образом привести к сбою систему, крайне мала и полностью предотвратима".

DR/Novell DOS

DR DOS 6.0 также включает в себя реализацию команды MORE.

FreeDOS

Версия FreeDOS была разработана Имре Лебером и распространяется под лицензией GNU GPL 2.

ReactOS

Реализация ReactOS основана на бесплатном клоне, разработанном Марком Руссиновичем для Sysinternals в 1998 году. Он был адаптирован для ReactOS Эмануэле Алиберти в 1999 году и поддерживает тома, использующие файловую систему FAT32. Данная команда не поддерживает тома, использующие файловую систему Btrfs, хотя ReactOS поддерживает её, начиная с версии 0.4.1.