To check your harddrive for bad blocks, open the terminal and type in the following command:
sudo badblocks -v /dev/sda1 > bad-blocks-result
After executing the above command it will generate the file bad-blocks-result in the current directory where you executed this command. Now, you can pass this file to the fsck command to record these bad blocks.
sudo fsck -t ext4 -l bad-blocks-result /dev/sda1
If badblocks reports a block that was already used, e2fsck will try to move the block to another place. If the block was really bad, not just marginal, the contents of the file may be corrupted.