I'd say replace the drive. Drives are cheap. Data is not. If you're already lost some data on the drive then in my opinion it's time for a new drive. I wouldn't trust it, even after using a utility like Scott suggested. WHat if the drive is failing and such a utility buys you some time and false confidence, and the drive totally fails in the near future.
Now may also be a good time to think about RAID.
EDIT: Now that this is a SuperUser question and not a ServerFault question, my answer doesn't apply as nicely. For a server you want top of the line hardware, and if it might be failing replace it now. You may have a bit more leeway with a desktop or personal system. However data loss is still data loss, so I will say this: If you decide to keep using the drive, back it up right now and back it up very frequently as there is a very good likelihood that the drive will fail soon, based on the symptoms you're seeing.
You may want to try reformatting the drive and passing the -c
switch to it twice. This will run the badblocks
program in read-write mode and will find bad blocks, and map them so that no data will be stored there:
mkfs.ext3 -cc /dev/something
Where /dev/something
is the dev entry for this partition, E.G. /dev/sdb1
.