How can large amounts of data be stored in a fault tolerant manner such that the data remains available in the face of hardware failures?