Could easily be that your disk is a damaged.
To check this , run a bad-blocks check
badblocks /dev/hda
Then it could be that only the filesystem is damaged (but I don't think you would get this Input/Output error, I may be wrong)
Code:
tune2fs -C 32 /dev/hda2
this will tell the system that /dev/hda2 (your / which includes your /bin) has been mounted 32 times without being checked. By default ext3 are checked after 30 mounts.
During the reboot /dev/hda2 will be checked.
Or my last idea would be that you are not using the correct harddisk driver. Is this installation new or is it a new problem?