22

I would like to run a full, sector-by-sector, physical check on some external hard drives. As far as I know,chkdsk does not supply this option.

Is there a workaround under chkdsk, or a good replacement? I'm using Windows 7 on this machine, but Linux solutions applicable from a live CD are also welcome.

ᄂ ᄀ
  • 4,187
Adam Matan
  • 8,740

7 Answers7

35

In Windows NT/XP/Vista/7, you can open a CMD prompt and use

chkdsk /r x:

where x is the drive letter of your USB drive, assuming the drive is partitioned and has a drive letter assigned to it.

I'd suggest getting an Ubuntu live CD and booting into Linux, then using badblocks to scan for physical defects.

Use sudo fdisk -l to list all the drives and their partitions. For each drive:

sudo badblocks -nvs /dev/sdx

where your hard drive is /dev/sdx. This will perform a non-destructive read/write test on the disk without doing a filesystem check.

If you don't care about the data, you can do this instead, to do a more thorough scan:

sudo badblocks -wvs /dev/sdx

The -w option tells badblocks to write a known pattern, then read back the data to make sure it matches the pattern. It does this 4 times, using the patterns 0xaa, 0x55, 0xff, and 0x00 (alternating 0's and 1's, then all 1's, then all 0's). Note that this will overwrite all data on the drive and wipe out all the partitions, as well.

If you happen to have a Linux filesystem on the drive, you can check for filesystem errors and run badblocks at the same time. First, get the list of all the drives and their partitions:

sudo fdisk -l

Then for each partition:

sudo e2fsck -fcc /dev/sdx#

Again, /dev/sdx is the hard drive you want to scan. # is the number of the partition (e.g., /dev/sdb1). Specifying c twice will force fsck to run, and will use badblocks to do a non-destructive read-write test. If you just use the c option once, badblocks will do a read-only test.

I run badblocks -wvs on every new hard drive I purchase before putting it into service.

rob
  • 14,388
5

I would like to run a full, sector-by-sector, physical check on some external hard drives.

Download and run HD Tune, pick the drive you want to scan from the drop down menu, click the tab Error Scan (make sure the box Quick Scan is clear) and hit Start.

enter image description here

HD Tune is free for personal use and portable (no installation required).

Gareth
  • 19,080
1

Many drive manufactureers like Western Digital and Seagate provide tools that will do this kind of check. Usually a Windows tool.

Dave M
  • 13,250
1

Any modern drive will automatically remap unreadable/iffy blocks. An OS will normally not get a read failure for a block unless the block is really unreadable, and writing over that block will cause the drive to remap it. That will only fail if the drive is out of spare blocks, in which case it's time to replace the drive!

The upshot is that an OS marking "bad blocks" in the style of scandisk is usually pointless.

With that said, I'd use a SMART extended self test. smartmontools should work. You can also get the number of remapped blocks.

Note that in linux a plain dd if=/dev/sdx of=/dev/null , where sdx is the disk's block device, will do a full logical read of the disk. If any blocks are unreadable you'll get an error. If you don't mind clobbering data you can dd if=/dev/zero of=/dev/sdx to just overwrite the entire disk, causing the drive to remap as necessary.

1

On Windows, I'll use the free version of HDTune to scan for bad sectors. However, the Linux program BadBlocks is much better, giving you an exact list of every bad block, and supports both read and write checking (although write is destructive).

Dentrasi
  • 11,325
0

In Windows I use Victoria for Windows for this purpose.

enter image description here

enter image description here

-1

I've never been too keen on USB external drives, because they didn't really exist when some of the best tools like ScanDisk were written. I particularly like the version of ScanDisk that comes with Windows 98 SE.

So, if it is an external drive, you should probably put it into a computer and then run fsck -f on the drive from a Linux LiveCD such as the PLD Rescue CD.

eleven81
  • 16,182