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.