1. A method of storing a file in a cloud system including a plurality of data centers, the method comprising: receiving, at a first data center, a file block from a client; generating a plurality of chunks from the file block, wherein each chunk is smaller than the file and the file block may be reconstructed from a subset of the chunks; distributing the plurality of chunks to at least two of the plurality of data centers; wherein at least a first chunk and a second chunk of the plurality of chunks are distributed to different ones of the plurality of data centers; and storing the file block in a cache at the first data center.