Quick Links

No one likes to think about a hard-drive going bad much less experiencing trouble with one, but how do hard-drive diagnostic tools actually know if sectors are bad or not? Today's SuperUser Q&A post has the answers to a curious reader's questions.

Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.

Photo courtesy of Matthew (Flickr).

The Question

SuperUser reader David wants to know how hard-drive diagnostic tools know if a sector is bad:

When I run across a hard-drive that may be failing, I scan it using ViVARD, which reliably lets me know if the hard-drive needs replacing or not. How do these sorts of tools work? How can they tell a bad sector from a good sector?

How do hard-drive diagnostic tools know if a sector is bad or not?

The Answer

SuperUser contributors Stavr00 and Ole Tange have the answer for us. First up, Stavr00:

Modern hard-drives implement a system in firmware called S.M.A.R.T. which collects statistics on the hard-drive's performance and automatically avoids data loss by moving data away from bad sectors.

Diagnostic tools query the hard-drive's S.M.A.R.T. software in order to build a health check report. Bad sectors are detected upon accessing the hard-drive, avoided, and necessary relocation is done by the S.M.A.R.T. system.

Followed by the answer from Ole Tange:

I am not familiar with ViVARD, so this is a general answer.

S.M.A.R.T.

S.M.A.R.T. is a part of most modern hard-drives. It registers when the hard-drive sees a bad sector and when the 'seek or spin up time' is longer than normal. These are all indicators that a hard-drive is failing.

The way the hard-drive salvages a failing sector is due to error correcting codes (usually Reed-Solomon) that can perform a rescue if a few bits are wrong. If many bits are wrong, then the hard-drive tries salvaging by reading the sector over and over again. When it finally gets it right, it saves it to one of the spare sectors.

Reading Sectors

The hard-drive reallocates sectors with read errors to a set of spare sectors that are reserved for this. The operating system does not usually see this, but sees the whole hard-drive as having no errors. Only when there are no more sectors to reallocate to (or the sector cannot be salvaged) will the operating system see the broken sectors.

But it is possible to bypass error correction. I believe it is different for each model, but maybe ViVARD does it? This way you can read the actual data on the hard-drive. By reading this you will be able to see which sectors have errors, even if the operating system itself sees no errors.


Have something to add to the explanation? Sound off in the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.