1. A system for providing data to a plurality of compute nodes, the system comprising: a first storage unit configured to store blocks of a root image of said compute nodes; a plurality of second storage units configured to store leaf images of respective compute nodes, said leaf images including only additional data blocks not previously contained in said root image and changes made by respective compute nodes to the blocks of said root image, wherein said leaf images of respective compute nodes do not include blocks of said root image that are unchanged by respective compute nodes; and a cache configured to cache blocks of said root image previously accessed by at least one of said compute nodes.