A method of implementing a hierarchical data storage system, said method comprising: installing a virtual storage device driver in an operating system running on a computer system, said virtual storage device driver for receiving data storage requests, the virtual storage device driver appearing to make virtual disk volumes (1451, 1452, 1453) available, wherein the data storage requests for the virtual disk volumes are passed to the hierarchical data storage system; executing a hierarchical storage stack on said computer system for storing data, said hierarchical storage stack having an administration layer that allows remote configuration and control of said hierarchical storage stack, said hierarchical storage system including a volume abstraction layer adapted to keep track of the different volumes stored by the hierarchical storage system, the hierarchical storage stack having at least three local data storage layers for storing data locally in said computer system, wherein the hierarchical data storage system includes a linear storage layer (540, 640) which maintains a linear storage map specifying where each chunk of data resides, a deduplicated storage layer (550, 650) being adapted to remove duplicated data from the stored data, and a transient storage layer (560, 660) adapted to compress the data slices, and said hierarchical storage stack having a remote data storage layer that stores data with a remote data storage service; and directing all data storage requests received by said virtual storage device driver to said hierarchical storage stack; the method further comprising: receiving a request to create a new data volume in said administration layer of said hierarchical data storage system; creating said new data volume in said hierarchical storage stack that will initially store data in said local data storage layer and later spill data to said remote data storage layer that stores data with a remote data storage service, wherein the creation of said new data volume is done by evicting inactive data from the local data storage layer to create room for said new data volume, wherein the evicted data is spilled down in the hierarchical storage stack. installing a virtual storage device driver in an operating system running on a computer system, said virtual storage device driver for receiving data storage requests, the virtual storage device driver appearing to make virtual disk volumes (1451, 1452, 1453) available, wherein the data storage requests for the virtual disk volumes are passed to the hierarchical data storage system; executing a hierarchical storage stack on said computer system for storing data, said hierarchical storage stack having an administration layer that allows remote configuration and control of said hierarchical storage stack, said hierarchical storage system including a volume abstraction layer adapted to keep track of the different volumes stored by the hierarchical storage system, the hierarchical storage stack having at least three local data storage layers for storing data locally in said computer system, wherein the hierarchical data storage system includes a linear storage layer (540, 640) which maintains a linear storage map specifying where each chunk of data resides, a deduplicated storage layer (550, 650) being adapted to remove duplicated data from the stored data, and a transient storage layer (560, 660) adapted to compress the data slices, and said hierarchical storage stack having a remote data storage layer that stores data with a remote data storage service; and directing all data storage requests received by said virtual storage device driver to said hierarchical storage stack; the method further comprising: receiving a request to create a new data volume in said administration layer of said hierarchical data storage system; creating said new data volume in said hierarchical storage stack that will initially store data in said local data storage layer and later spill data to said remote data storage layer that stores data with a remote data storage service, wherein the creation of said new data volume is done by evicting inactive data from the local data storage layer to create room for said new data volume, wherein the evicted data is spilled down in the hierarchical storage stack. receiving a request to create a new data volume in said administration layer of said hierarchical data storage system; creating said new data volume in said hierarchical storage stack that will initially store data in said local data storage layer and later spill data to said remote data storage layer that stores data with a remote data storage service, wherein the creation of said new data volume is done by evicting inactive data from the local data storage layer to create room for said new data volume, wherein the evicted data is spilled down in the hierarchical storage stack.