Are all bad blocks the same on a HDD

bad-blocksbad-sectorshard drive

I don't know much about the physics behind bad blocks on a HDD, but I've often seen that a "bad" block turns to good when you overwrite it with something (anything, zeroes will do). I've even written my own tool that does exactly that. Windows command-line format utility with the /P:1 switch will do the same. I figure that in this case it was just a CRC error (the know that the drive does store checksums with each of its sectors)

However I wonder how reliable this is. Perhaps a bit is stuck on 0, and appears as "good" when everything is zeroed out, but in real life use it has 50/50 chance of working correctly. Or perhaps a bit always gets set together with its neighbor, etc.

On another internet forum the prevailing opinion seems to be that there are two types of bad blocks – "soft" bad blocks (which are indeed checksum errors, and can be safely corrected with no impact on further drive longevity) and "hard" bad blocks that are micro-fissures in the drive plates, and will make the sector always unreadable, and no amount of overwriting will help that. Also, the drive can be expected to rapidly deteriorate in quality.

If that is true, then it would be easy to distinguish between a truly bad drive, and a good one that has simply had the misfortune of an incorrect checksum. Unfortunately I'm old enough to have stopped believing in fairy tales.

I've got an idea about an utility similar to memtest that would do the same to a HDD (writing different patterns, possibly several times, and then reading them back to check), but I also wonder if there is a point. What if the guys on the other forum are right after all?

Anyone know?

Best Answer

What could be happening is that the drive firmware is "remapping" the bad sector behind the scenes. Modern hard drives have spare sectors they keep around for this purpose. There is a limit of them and SMART data can tell you how close you are to running out on some drives.

However no one can really know what is going on without disassembling and examining the hard drive firmware.

There are utilites like badblocks for Linux that write to every sector and read it back.

Most physical data mediums have a significant error rate that is hidden using things like forward error correction codes, etc. You might have thousands of errors on your hard drive now, but since the drive writes redundant data for each sector, it never reports an error and you never know about it.

Related Question