If you boot a Linux live CD or USB, and open a terminal, I'd run something like (as root):
smartctl -a /dev/sdx > smart1.txt &&
badblocks -w -v /dev/sdx &&
smartclt -a /dev/sdx > smart2.txt
is whatever Linux calls the dodgy disk.
will write various bit-sequences to the drive designed to confuse it and catch bad blocks (this takes a while), and will scrub any viruses (and everything else!
) off the disk. (Actually a simple "cp /dev/null /dev/sdx
" will wipe the disk and give every block a write if you're less paranoid.)
queries the disk's firmware for hardware failures and the like. Running it twice (before and after badblocks
stresses each block) and comparing the output (in smart1.txt and smart2.txt) will detect if the disk is actually in the process of failing.