CHKDSK

chkdsk.exe

Chkdsk.exe in action on drive C:
Original author(s) Microsoft
Operating system MS-DOS and NT-based versions of Windows
Platform x86 and x64 (Windows [XP Professional, Vista, & 7] x64)
Available in Multilingual
Type System tool
License Commercial (part of MS-DOS and Windows).

CHKDSK (short for "check disk") is a command on computers running DOS, OS/2 and Microsoft Windows operating systems that displays the file system integrity status of hard disks and floppy disk and can fix logical file system errors. It is similar to the fsck command in Unix.

The command is implemented as an executable program file, CHKDSK.EXE. Different operating systems all use the same filename, but the files are not necessarily compatible between operating systems.

On computers running NT-based versions of Windows, CHKDSK can also check the disk surface for physical errors or bad sectors, a task previously done by SCANDISK. This version of CHKDSK can also handle some physical errors and recover data that is still readable.

Contents

Windows NT-based CHKDSK

CHKDSK can be run from the Windows Shell, the Windows Command Prompt or the Windows Recovery Console. One option for CHKDSK is the use of the Command-line/R parameter, which allows the program to repair damage it finds on the hard drive.

Conducting a CHKDSK can take some time, especially if using the /R parameter, and the results are often not visible, for various reasons. The results of a CHKDSK conducted on restart using Windows 2000 or later operating systems are written to the Application Log, with a "Source" name of Wininit or Winlogon and can be viewed with the Event Viewer. On the Windows 7 operating system, the events have a "Source" name of "Chkdsk"

The standard version of CHKDSK supports the following switches :

filename FAT only. Specifies the file or set of files to check for fragmentation. Wildcard characters (* and ?) are allowed.
path FAT only. Specifies the location of a file or set of files within the folder structure of the volume.
size NTFS only. Changes the log file size to the specified number of kilobytes. Must be used with the /l switch.
volume FAT and NTFS (NTFS support is unofficially supported but works normally). Specifies the drive letter (followed by a colon), mount point, or volume name.
/c NTFS only. Skips checking of cycles within the folder structure.
/f Fixes errors on the volume. The volume must be locked. If CHKDSK cannot lock the volume, it offers to check it the next time the computer starts.
/i NTFS only. Performs a less vigorous check of index entries.
/l[:size] NTFS only. Displays current size of the log file. If size is specified, changes the log file to that size (in kilobytes).
/p Checks disk even if it is not flagged as "dirty" (only available in the Recovery Console).
/r Locates bad sectors and recovers readable information (implies /f and /p). Unreadable data is lost. If CHKDSK cannot lock the volume, it offers to check it the next time the computer starts.
/v On FAT: Displays the full path and name of every file on the volume. On NTFS: Displays cleanup messages, if any.
/x NTFS only. Forces the volume to dismount first, if necessary. All opened handles to the volume are then invalid (implies /f ).
/b NTFS only, since Vista. Clears the list of bad clusters on the volume and rescans all clusters for errors (implies /r).
/? Displays the list of available CHKDSK switches.

When running CHKDSK from the Recovery Console the options are different. The /p is not read-only as in the standard version but corrects errors :[1]

/p Fixes errors on the volume. Same as the /f option in standard CHKDSK.
/r Locates bad sectors and recovers readable information (implies /f and /p). Takes much longer to run than /p by itself.

A typical result:

Checking file system on C:
The type of the file system is NTFS.

A disk check has been scheduled.
Windows will now check the disk.
Cleaning up minor inconsistencies on the drive.
Cleaning up 318 unused index entries from index $SII of file 0x9.
Cleaning up 318 unused index entries from index $SDH of file 0x9.
Cleaning up 318 unused security descriptors.
CHKDSK is verifying file data (stage 4 of 5)...
File data verification completed.
CHKDSK is verifying free space (stage 5 of 5)...
Free space verification is complete.

  14996645 KB total disk space.
  10187752 KB in 88054 files.
     30784 KB in 5774 indexes.
         0 KB in bad sectors.
    164341 KB in use by the system.
     65536 KB occupied by the log file.
   4613768 KB available on disk.

      4096 bytes in each allocation unit.
   3749161 total allocation units on disk.
   1153442 allocation units available on disk.

Vista result (App Event Log) found in "bootex.log" in the root folder of the drive:

Checking file system on C:
The type of the file system is NTFS.

A disk check has been scheduled.
Windows will now check the disk.                         
  79232 file records processed.
  332 large file records processed.
  0 bad file records processed.
  2 EA records processed.
  44 reparse records processed.
  105198 index entries processed.
  0 unindexed files processed.
  79232 security descriptors processed.
  Cleaning up 1 unused index entries from index $SII of file 0x9.
Cleaning up 1 unused index entries from index $SDH of file 0x9.
Cleaning up 1 unused security descriptors.
  12984 data files processed.
CHKDSK is verifying Usn Journal...
  35789792 USN bytes processed.
Usn Journal verification completed.
Windows has checked the file system and found no problems.

  78175231 KB total disk space.
  12902428 KB in 54029 files.
     36068 KB in 12985 indexes.
         0 KB in bad sectors.
    187407 KB in use by the system.
     65536 KB occupied by the log file.
  65049328 KB available on disk.

      4096 bytes in each allocation unit.
  19543807 total allocation units on disk.
  16262332 allocation units available on disk.

DOS-based CHKDSK

The MS-DOS 5 bug

The version of CHKDSK (and Undelete) supplied with MS-DOS 5.0 has a bug which can corrupt data. This applies to CHKDSK.EXE and UNDELETE.EXE with a date of 04/09/91 (April 9, 1991). If the file allocation table of a disk uses 256 sectors, running CHKDSK /F can cause data loss and running UNDELETE can cause unpredictable results. This normally affects disks with a capacity of approximately a multiple of 128 MB. This bug was fixed in MS-DOS 5.0a. A Microsoft Knowledge Base article[2] gives more details on this.

See also

External links

References