A fascinating article in ACM Queue examines the various ways in which a harddisk can fail.

Here is an example - the fault tree for reading failures.

Fault Tree for HDD Read Failures