Search

How to easily find disks with read / write errors in Windows

If you suspect a hard drive in your computer may be failing with disk read/write errors, these errors are usually logged in the Windows Event Viewer. Here the common Event IDs we see related to failing disks:
Event ID 7: indicates that the disk has a bad block.
Event ID 11: driver detected a controller error on the device, which could be caused by a faulty cable, a failing drive, or a problem with the controller.
Event ID 51: disk is experiencing a paging operation or a certain disk operation, which failed. This can be caused by a faulty driver or a failing drive.

PowerShell

To speed up the process of locating disks with bad blocks or other issues, you can use PowerShell to quickly filter all events, displaying only the ones we want.
We can use the Get-WinEvent cmdlet to dump all the Event Viewer events with ID 7, 11, and 51 that are level 2 or higher (error and critical)
  • Open PowerShell and run the command: Get-WinEvent -FilterHashtable @{LogName='System'; ID=@(7,11,51); Level=1,2} | Format-List -Property *
If there are any events with the ID 7, 11, 51 of level 2 or higher they will be printed on the screen.

Performance Monitor

Another common method of identifiing disk read errors in Windows is to use the Performance Montor.
  • Open Performance Monitor by typing "perfmon" in the Start menu search bar, and then click on "Performance Monitor" in the search results.
  • Click on the "+" button to add a new counter, select the "PhysicalDisk" performance object, choose the disk you want to monitor, and select the "Disk Read Bytes/sec" and "Disk Reads/sec" counters.
  • Run a backup and watch the counters, If either of these counters show consistently high values, it could indicate disk read errors.

ChkDsk

You can use the chkdsk command with the /r option to check for disk errors during boot time. The /r option tells chkdsk to locate bad sectors and recover readable information, which can help fix disk errors. Run ChkDsk at your own risk.

How to run a boot-time chkdsk command:

  1. Open the Command Prompt as an administrator by right-clicking on the Start menu and selecting "Command Prompt (Admin)".
  2. In the Command Prompt window, type the following command and press Enter:
    chkdsk C: /r
    Note: Replace "C:" with the drive letter of the disk you want to check.
  3. You will be prompted to schedule the check for the next time you restart your computer. Type "Y" and press Enter.
  4. Restart your computer to initiate the boot-time chkdsk scan. The scan will run before Windows starts up.

During the scan, chkdsk will check for disk errors and attempt to repair any that it finds. The scan may take a while to complete, depending on the size and health of the disk.

Once the scan is complete, Windows will start up as normal. You can check the Event Viewer or the chkdsk log file to see if any disk errors were detected and fixed.

You use the Get-WinEvent cmdlet in PowerShell to quicky check for any disk errors that were detected and fixed during the chkdsk scan.
Command:Get-WinEvent -FilterHashtable @{LogName='Application', 'System'; ID=26214,26215,26228,26229,1001,1002} -MaxEvents 10 | Format-List -Property *
This will retrieve the 10 most recent events from both the Application and System logs with the specified event IDs. The example event IDs used in this command are what we normally see for disk errors generated during a chkdsk scan. It may not be a complete list.

Third-Party Disk Diagnostic Tools

There are some third-party disk diagnostic tools available that can check for disk read errors, such as CrystalDiskInfo, HD Tune, and SeaTools. One of these tools could be instaled an run to check for disk errors.
en_USEN