most of the time you have to run chkdsk first. why? because a HD cannot be defragged if there are errors and/or bad sectors with the drive.
run chkdsk than run defrag.
if you can, use ultimate defrag by disktrix. it's the best defrag program i have used, and it isnt bulky like diskkeeper and it doesnt start over anytime the hd runs for something else besides defrag, like windows piece of crap defragmentation software.