Personal computers (PCs) have changed enormously in the almost four decades since the first IBM PC rolled off an assembly line in 1981. That first machine, a blocklike slab of steel running an Intel 8088 microchip at a galloping 4.77 MHz, came with one or two floppy disk drives – and a handy disk utility called CHKDSK (pronounced “Check Disk”), created by Tim Paterson for a fledgling software company known as Microsoft.
Paterson created CHKDSK, which is similar to the Unix fsck command, for DOS, the original operating system that ran on Windows computers. Still, to this day, CHKDSK is an important tool for troubleshooting problems on Windows PC’s.
Today it would be difficult for a casual observer to describe the evolutionary process that has occurred between that first IBM PC and today’s Windows 10 desktop machine.
The case is about the same size and shape, and there’s still a keyboard, but other than that, everything is different. Today’s CPUs run a thousand times faster and are a million times as complex, Apple sells watches with a display more capable than that found in the monochrome monstrosity of 1981, today’s machines have memory cores at least a thousand times denser, and have long since replaced clunking, chunking floppy disk drives with ultra-sleek, ultrafast, absolutely silent Solid State drives, any single one of which could store more information than every 1981 model ever built.
There is one thing that remains, however, despite all the revolutions and evolutionary developments in hardware and software – CHKDSK remains a useful and vital tool for disk drive health, nearly 40 years after its invention.
It should be acknowledged that it isn’t really the same CHKDSK that was used on DOS. The first version of CHKDSK written by Tim Paterson was a crude tool by today’s standards.
With each upgrade and change to drive technologies and formats, CHKDSK has been written and rewritten again, with new functionality added and new techniques developed to deal with the exponentially-expanding hard drives of modern PCs.
However, the modern CHKDSK tool uses the same basic approach of a multipass scan of a drive to verify its soundness and functionality. In this TechJunkie article, I will describe to you how you can use CHKDSK to scan and fix hard drives in PCs running the Windows 10 operating system.
How CHKDSK Works
Although the details of how it does its job have changed from generation to generation, the same basic process takes place when you run CHKDSK to analyze your hard drive. CHKDSK starts by scanning the file system on the disk drive, analyzing the integrity of the files, the file system, and the integrity of file metadata on the drive.
When CHKDSK finds logical file system errors, it fixes them in place, saving the data that is on the disk so that no data that you do not lose any data. Logical file system errors are errors like corrupted entries in the drive’s Master File Table (MFT), a file that tells the drive how files are connected in the murky labyrinths of the drive’s hardware. There’s at least one entry in the MFT for every file in an NTFS (the file system developed by Microsoft) volume, including an entry for the MFT itself.
CHKDSK also fixes misaligned time stamps, file size data, and security flags on files on the drive. CHKDSK can then conduct a complete scan of the drive, accessing and testing every sector of the hardware.
Hard drives are divided into logical sectors, defined areas of the drive where a certain defined quantity of data will be stored. Sectors can develop soft errors, in which case data has been written incorrectly to the magnetic medium, or hard errors, which are cases when the drive itself has an actual physical defect in the area designated as a sector.
CHKDSK fixes soft errors by rewriting the faulty data and resolves hard errors by marking that section of the disk as being damaged and ‘out of bounds’ for future use.
Because CHKDSK has been updated and upgraded repeatedly with each new generation of storage hardware, the program continues to work correctly to analyze and repair hard drives of any sort, even on the most modern OSes and using the most advanced drive technologies.
The same process that used to be executed to analyze a floppy disk holding 160K, can today be executed to analyze a solid-state, all-electronic SSD holding 15 terabytes.
How do I Run CHDSK on a Hard Drive of Windows 10 PC?
Although there are several different ways that you can invoke CHKDSK on a Windows 10 machine, by far the most common and ordinary place to run the utility is via a command-line shell known as PowerShell. Once you get used to running commands using PowerShell it becomes easier than other methods. It’s as simple as typing a command.
However, because CHKDSK talks directly to drive hardware, it requires a special level of operating system permission known as administrative privileges. This just means that CHKDSK is allowed to run as though it was the account that is in charge of administering the computer. The system administrator is probably you if this is a home computer and it may well be the IT department if it’s a work computer.
To launch the Windows PowerShell, press the keyboard shortcut of the Windows Key + X. This brings up the power users menu in the start menu area, where you will see several options.
You can release the Windows Key + X combination and type the A key (short for Admin) to launch the Windows PowerShell in administrative privilege mode. You can also simply move the mouse to the Windows PowerShell (Admin) line and click to launch the shell that way.
The next screen to appear is a User Account Control (UAC) window which will ask for permission to launch the Windows Command Processor and let it make changes to the PC. Select “Yes”.
The Windows PowerShell will now launch, a familiar black and white box with a text command-line interface. The most basic way to invoke CHKDSK is simply to type the name of the program “chkdsk”, followed by a space, then the letter of the drive you wish to examine or repair. In our case, it’s internal drive “C:”, so the command would be “chkdsk c:”
To run CHKDSK in a mode where it will actually fix problems that it encounters, you need to add several parameters. In a Windows PowerShell program, parameters are additional commands added to the end of the program name, with “/” characters before each parameter.
In this case, to get CHKDSK to do a full scan and repair pass, we would want to type “chkdsk c: /f /r /x”.
The “/f” parameter instructs CHKDSK to fix any errors that it discovers during its scan. The “/r” parameter tells CHKDSK to locate any bad sectors and recover any readable information it finds there. The “/x” parameter tells CHKDSK to dismount the drive (take it offline from the operating system) before the process begins.
Needless to say, you’ll want to stay off using your computer for other things while CHKDSK completes its scan and any fixes.
Additional CHKDSK Parameters
CHKDSK has a large library of optional parameters that you can use to modify the program’s behavior.
<Volume> – The Volume parameter allows you to specify a drive letter (with a colon) or volume name. You do not actually need the < and > characters.
[<Path>]<FileName> – The Path and FileName parameters can be used only a drive using the FAT or FAT32 organizational models. With Path and FileName you can specify the location and name of a file or set of files that you want CHKDSK to check for fragmentation. You can use the ? and * wildcard characters to specify multiple files.
/f – The /f parameter instructs CHKDSK to actually fix errors on the disk. The disk must be locked. If CHKSDK cannot lock the drive, a message appears that asks you if you want to check the drive the next time you restart the computer.
/v – The /v parameter displays the name of each file in every directory as the disk is checked.
/r – The /r parameter locates bad sectors and recovers readable information. The disk must be locked. /r includes the functionality of /f, with the additional analysis of physical disk errors.
/x – The /x parameter forces the volume to dismount first, if necessary. All open handles to the drive are invalidated. /x also includes the functionality of /f.
/i – The /i parameter can only be used with a drive formatted with the NTFS model. This speeds up CHKDSK by performing a less vigorous check of index entries, which reduces the amount of time required to run CHKDSK.
/c – The /c parameter also is only usable on an NTFS disk. This tells CHKDSK not to check cycles within the folder structure, which reduces the amount of time required to run CHKDSK.
/l[:<Size>] – The /i parameter can only be used with NTFS. It changes the size of the resulting log file to the size you type. If you omit the size parameter, /l displays the current size.
/b – The /b parameter is usable only with NTFS. It clears the list of bad clusters on the volume and rescans all allocated and free clusters for errors. /b includes the functionality of /r. Use this parameter after imaging a volume to a new hard disk drive.
/? – The /? parameter displays a help file containing this list of parameters and other instructions for using CHKDSK.
To summarize, the full command that should be typed into the Command Prompt is:
chkdsk [Drive:] [parameters]
In our example, the drive is C: and we’re using the f, r, and x parameters:
chkdsk C: /f /r /x
Using CHKDSK On a Boot Drive
A boot drive is the partition of your hard drive that the computer starts up (boots) from. Boot partitions are special in many ways, and one of those ways is that they require special handling for CHKDSK to be able to deal with them.
CHKDSK needs to be able to lock any boot drive it scans, meaning that it cannot examine the system’s boot drive if the computer is in use. If your target drive is an external or non-boot internal disk, the CHKDSK process will begin as soon as we enter the example command above.
If, however, the target drive is a boot disk, the system will ask you if you’d like to run the command before the next boot. Type “yes” (or “y”), restart the computer, and the command will run before the operating system loads, allowing it to gain full access to the disk.
A CHKDSK command can take a long time to execute, especially when performed on larger drives.
Once the file system check is completed, however, it will present a summary of results including total disk space, byte allocation, and, most importantly, any errors that were found and corrected.
CHKDSK In Previous Editions of Windows
The CHKDSK command is available in all versions of Windows, so users running on Windows 7, 8, or XP can also perform the steps above to initiate a scan of their hard drive. In the case of older versions of Windows, users can get to the Command Prompt by going to Start > Run and typing “cmd”.
Once the Command Prompt result is displayed, right-click on it and select “Run as Administrator” to grant the program the necessary privileges to execute CHKDSK successfully.
One warning note: if you use CHKDSK on an older hard drive, you may find that your hard drive space was significantly reduced after running the command. This result is due to a failing hard drive, as one of the crucial functions that CHKDSK performs is to identify and block bad sectors on the drive.
A few bad sectors on an old drive will typically go unnoticed to the user, but if the drive is failing or has serious problems, you could have huge numbers of bad sectors that, when mapped and blocked by CHKDSK, appear to take away significant portions of your hard drive’s capacity.
Other Ways to Launch CHKDSK
If you dislike using the command prompt, there are other ways to invoke CHKDSK on your system. Perhaps the easiest is directly through the Windows Explorer.
Right-click on the icon for your hard drive and select Properties.
It’s a good idea to run CHKDSK regularly as part of routine system maintenance.
CHKDSK remains a powerful and useful tool even 40 years after its original invention.