Посмотрите в логи:
/var/log/syslog
/var/log/messages
Если систему зависание отпускает — сразу глядите в dmesg
Также посмотрите смартом на жесткий диск: smartctl -a /dev/sdX, где X — имя диска. Если имеются пендинги (Current_pending_sector), то дела плохи