So, I had this drive in a USB box, and started fiddling around with gparted and e2fsck, and chkdsk on a windows box too. I found out the reporting doesn't tell you the location, so I was trying to localize it by moving partition boundaries. Perhaps with some research I could have found a tool with more detailed reporting, or maybe it was a switch I missed, I don't know. But after a while, I noticed bad blocks were not being reported any more!
Turns out most modern drives have enough intelligence to remap bad blocks to some spare sectors they have in reserve, and according to one article I read, the way to trigger this behavior is to attempt to write the bad sector. Not sure how that would do it, but SOMETHING worked.
I finally ran this command on the disk:
Code: Select all
badblocks -svw /dev/sdc
It took half a day for this 150GB USB drive, but now I am confident the bad blocks are mapped out and the drive is good.
(Edit: I added the "s" flag to the above command because it gives progress information, something useful to have for a command that might take many hours to finish.)