1. Partition your disk -- root, /var, /usr, /home on different filesystems.
2. If you ever do enable the automatic checks, set the mounts-before-check count on
each filesystem to be a different prime number. That way multiple filesystems almost
never get checked at the same time.
I've never had an fsck on a non-server system (which seems to be the topic here) go
anywhere near an hour. Maybe five minutes at most.
In my experience, badblocks is far far slower than e2fsck.
And running anything automatically at 3am generally isn't an option on