Fix bad blocks on Mac hard disk
If you're seeing bad blocks when you run a filesystem integrity check, the hard drive has most likely already exceeded the number of blocks it can remap, and has exhausted its "spare" sectors. You should backup your data immediately (if you haven't already) and replace the drive before the problem gets worse and you lose your data.
I'd suggest downloading smartmontools and GSmartControl to view the SMART diagnostics as another check, if you aren't sure which SMART diagnostics to trust.
If the SMART diagnostics are reporting no reallocated sectors (or if the VALUE column for "Reallocated Sector Count" is still well below THRESHOLD), there is an easy way to perform a surface scan and remap the bad blocks at the same time. (Note: make sure to backup your data first!)
The easiest way to force the drive to do its own bad block remapping is to boot from an Ubuntu Live CD, then open a terminal and run this command:
sudo badblocks -nvs /dev/sda
This will do a non-destructive random read-write test on the first drive, remapping bad sectors along the way.
If you have more than one hard drive, you can replace /dev/sda with /dev/sdX, where X is lowercase letter. You can get a list of all hard disks (/dev/sdX devices) by typing this command:
sudo fdisk -l
Since you're using Mac OS X, which is based on BSD, you might also want to read up on badsect and bad144, which are the built-in BSD command-line utilities for dealing with bad blocks.
I don't know of any tool that will do a surface scan and fix the bad blocks too.
What type of a Mac and what type of hard drive are you having problems with?
I doubt you will find any software tools to "fix" bad blocks, at least for recent hardware. I don't know when it started but some time back the ability to remap a bad sector was merged into the firmware of the hard drive.
If you look at the S.M.A.R.T. registers for your drive with a tool like SMARTReporter, you should see an entry with ID number 05 and title "Reallocated Sectors Count". This is the number of bad sector's which the drive has remapped.
Perhaps Disk Warrior's "Bad Block" is referring to something else? (I couldn't guess what that might be though).
Update in reply to comment (below):
SMARTReporter appears to be a rather "quirky" utility. You can in fact query & display the contents of a drive's S.M.A.R.T. registers, you just have to jump through unexpected hoops to do it.
In the SMARTReporter FAQ you can find this tidbit:
Can SMARTReporter tell me exactly which S.M.A.R.T. test is failing?
Yes, starting with version 2.4.5! Right-click the drive in the drive-list in the preferences window and select "Check S.M.A.R.T. attributes".
Another SMARTReporter quirk is that cut'n paste apparently only works in these display windows when you use the menu bar entries. The keyboard shortcuts & mouse "right-click" context window won't do it. On the other hand, SMARTReporter IS free. ;-)
But I digress ...
Curiously, SMART Utility calls the drive "Failing" when all other utilities show it as "Verified". It shows 1 Pending Bad Sectors. So, how do you change a "pending" bad sector to a "removed" or "reallocated" one?
My understanding is that you would not do it. The drive's firmware is supposed to do it automagically on its own. Note what it says in the table in the Wikipedia S.M.A.R.T. article.
05 Reallocated Sectors Count
Count of reallocated sectors. When the hard drive finds a read/write/verification error, it marks this sector as "reallocated" and transfers data to special reserved area (spare area). This process is also known as remapping, and "reallocated" sectors are called remaps.
This is why, on modern hard disks, "bad blocks" cannot be found while testing the surface – all bad blocks are hidden in reallocated sectors. However, as the number of reallocated sectors increases, the read/write speed tends to decrease.
The raw value normally represents a count of the number of bad sectors that have been found and remapped. Thus, the higher the attribute value, the more sectors the drive has had to reallocate.C5 Current Pending Sector Count
Number of "unstable" sectors (waiting to be remapped, because of read errors). If an unstable sector is subsequently written or read successfully, this value is decreased and the sector is not remapped. Read errors on a sector will not remap the sector (since it might be readable later); instead, the drive firmware remembers that the sector needs to be remapped, and remaps it the next time it's written.
So if the above is true then apparently the Pending Sector Count needs to be interpreted cautiously. The sector read error most likely occured during the disk scan you did earlier with TechTool. (BTW, do you mean TechTool Deluxe 3.1.3?) Since TechTool probably didn't try to write the sector, it was not (yet) reallocated.
Can that be done without a reformat?
I think a "reformat" would only accomplish something if the format wrote to every sector on the drive. I do not know whether a standard (non-secure) erase with Disk Utility ... which is what I believe you mean by a reformat in the context of a MAC ... would accomplish this.
If you did this it would be a very time consuming task. I recently did something like this with a 500GB laptop drive and it took a tad under 2 1/2 hours to complete. Of course, you'd have to add in the time to (hopefully) restore your system from your (hopefully trustworthy) backup.
It is not clear to me that there is a need for you to attempt to actively force this to be "corrected". Supposedly the drive's firmware should handle this on it's own the next time there is an attempt to write to bad sector. Also, it seems likely to me that the offending sector is not currently being used as part of any file. TechTool just "stumbled across" it while scanning all sectors of your drive.
But if you wanted to attempt to force a correction then I guess you'd have to do something which would force a write to that sector. It doesn't seem worth the effort though. I would just continue to back up your files and keep an eye on your drive in case it starts to degrade further.
My experience with SpinRite from grc.com has been very positive. I've managed to recover at least 4 disks that have failed every other attempt to repair them. The only downside is that it requires a BIOS-based machine, meaning it won't work on modern EFI-based Macs. The good thing is that just about any other p.o.c. PC will run it, from floppy, CD, or flash drive. I've not found anything else that comes close in terms of actually inspecting the contents of individual sectors and recovering the data in what every other utility discards as a bad block.