start by emerging smartmontools
Then run smartctl -a /dev/sdX (X is your hard drive say a or b etc)
That will spit out all the SMART data available.
Now you realy want to look at just the values of the SMART data and you can do that by using -A flag.
smartctl -A /dev/sdX
If you have one or more pending sectors that means the hard drive once had a problem reading or writing to it so it marked it as suspicious.
So pending means that if it finds a problem with writing to it later it MIGTH replace it with a new one.
Pending sectors will only be replaced if a write fails not a read.
Also the way some firmwares works some sectors can be pending for all time from what I have read.
Now there is a way to find the LBA of one or more pending sectors IF they are faulty. Usually they are.
All hard drives with SMART capability should be able to run a built in self test. Smartmontools can activate it.
run this command.
smartctl --test=long /dev/sdX
That will start the self test.
To check progress just type
smartctl -a /dev/sdX
and it will tell you how many percent remains. Can take up to 4h to read the howl drive.
If it finds a bad sector it will stop the test and permanently write out in the SMART log how fare it progressed before failure and at what LBA it failed.
Now once you know the LBA you can force a write to that LBA and by doing so force it to be replaced (and since the old sector was bad the data was lost so there is always a risk to the filesystem and files to be damaged from bit rot due to pending sectors), I dont remember the procedure from my head but there are guides out there for doing just this. You need to write to the LBA so you need to calculate the actual sector if I recall and force a write to it if you wish to scan the rest of the drive for more faults.
Problem is every time the self test finds a pending sector that was bad it will stop and you have to do it all over again so it can realy take a long long time and in the end you might realize the drive is FUBAR any way.
I have don this for drives with single pending sector faults back in the day.
Last time I had a drive with 24 pending sectors. I didn't even bother I sent it in and a got a new one even when the warranty had expired with 4 days.
So in reality what you want to do is run the "smartctl --test=long /dev/sdX" and HOPE that the pending sectors you had is readable that way it should pass at 00% remaining and the pending sector count should go back to 0 after some time. If not it will fail at some point and at that point that Hard drive if warranty exist should go in for RMA and if warranty has expired I would only use it for non important data like temporary stuff.
I have never had any complaints once I had a confirmed bad sector, since the drive logs them its strait forward for any technician to verify.
I would not trust any program to test the drive. Some drives have crap SMART status like seagate but the self test (run by the disk it self not smartmontools) is pretty strait forward, read every sector and if it fails on just one the disk will record the error.
I even think my crucial SSD runs a self test periodically by default.
EDIT:
If you find a bad sector and realy would like to force the disk to replace it try this guide. Think it was the one I used long ago.
http://smartmontools.sourceforge.net/badblockhowto.html
I also found this but have not read it.
http://kaivanov.blogspot.se/2010/09/fix ... -with.html
Gentoo server: R5 5600G 4.4Ghz, 32GB ram, 8TB SSD, 76TB HDD, NIC: 10Gbit + 2.5Gbit