The truth of the matter is; you can’t repair bad sectors on a hard drive. Receiving ‘Bad Read’ errors or I/O errors from a hard drive is not the type of problem that can be remedied or ignored. The following is an explanation of how hard drives are designed and how a bad sector revealing itself on your system is a slippery slope to disaster.
First of all, virtually every hard drive manufactured has bad sectors on it before it leaves the factory. A utility is run on the hard drive to find all the initial bad sectors and placed in a list. Every sector in the list is then remapped and saved to an area called the ‘Permanent Defect List’ or PList. It would be far too expensive to manufacturer a hard drive that every sector was perfect. The manufacturers take that into consideration so every drive that is made has a pool of sectors that is used only if a bad sector is found.
This process for pointing a bad sector to a new sector is called remapping and has been used for years. Internally the hard drive firmware will take a sector that is bad and point it to another sector. The new sector is now used in place of the old one, this process is transparent to the operating system and user. The sector is placed in a list like the one created at the factory; however this list is being created at runtime and is called a ‘Growth Defect List’ or GList because it grows with the life of the drive.
Now that we understand how a PList and a GList work let’s take a look and see why a single bad sector on a drive is an extremely bad situation to ignore. Since we know that all bad sectors are remapped to a pool of unused sectors, and the size of this pool is substantial, the only way a bad sector will show up on your system is if the pool has been completely used. In other words, your remapping pool is so full that it cannot take another bad sector and now the drive is throwing errors that it can’t read from a sector.
This is a clear indication that the drive is in a very critical state, has been for quite awhile and is deteriorating at an alarming rate.
In order to save your data it is now time to copy all of your data onto another hard drive. It is just a matter of time before a bad sector develops in an area that is very sensitive and the drive becomes inaccessible. There are many areas on the drive that house runtime critical data and if destroyed will make your hard drive a paper weight.
All of this being said there is one type of I/O error that may be overcome and that is a CRC error. Each sector has a validation code. This validation code is calculated and saved in an area right next to the actual sector data. This is called a long sector area, or a long sector read. When data is read from a sector the CRC validation logic is executed on the recently read sector and compared with the saved validation code. If the two codes do not match then a CRC error is thrown and a request for a new read is made. Several requests are made and if the CRC error is not resolved then a timeout is issued by the firmware and the sector is ignored. With that being said, what if the CRC code saved to the sector is bad or unreadable and the actual data itself is fine. What if a portion of the sector is fine but one byte is out of sequence. That would cause a CRC error as well.
There are special tools, and software that can ignore these errors and read the sector anyway. The data can then be copied to an image and used to recover your data. I want to caveat this by saying this is not a sector repair, once a sector is physically damaged and remapped it cannot be repaired, however some CRC errors with the correct software and equipment can be overrode. DTI Data uses such equipment everyday to recover someone’s irreplaceable data.
In summary, it can seem as if it is possible to recover a bad sector, however as I have clearly shown such is not the case.