1. A method of storing a file block 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 block, and the file block is capable of reconstruction from a subset of the chunks, wherein the plurality of chunks are generated according to a systematic erasure code wherein the file block is divided into a subset of un-encoded chunks and a subset of coded 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 initiating storage of the file block in a cache at the first data center.