Patent ID: 8706947

Claim:
A method of improving allocation of computing resources in a virtual computing environment, the method comprising: by a computer system comprising computer hardware: instantiating a plurality of virtual computing machine instances; applying storage data tags to virtual machine data contents stored in a plurality of persistent data storages, the storage data tags being used to define links between distinct locations of identical virtual machine data contents stored in the plurality of persistent data storages, the storage data tags being stored in a data structure indexed by at least one of the locations of the identical virtual machine data contents, each of the virtual machine data contents being associated with one or more of the virtual computing machine instances; receiving, from a first instance among the virtual computing machine instances, a request to load a data portion of a virtual machine data content from a first position in one of the plurality of persistent data storages into a memory accessible by the first instance; determining, without loading the requested data portion into the memory after instantiating the first instance, whether the data portion referenced in the request is associated with a storage data tag indicating the presence of data identical to the data portion in the persistent data storages; in response to determining that the data portion is associated with a storage data tag indicating the presence of identical data in the persistent data storages, determining a second position in one of the plurality of persistent data storages, wherein the identical data is located at the second position; accessing a memory tag to determine whether the identical data has been previously loaded into the memory and is still present in the memory by comparing the second position to a set of positions within the persistent data storages that are associated with data presently in the memory, the set of positions indicated by the memory tag; and in response to determining that the identical data has been loaded into the memory and is still present in the memory, providing, to the first instance, a virtual mapping reference to the identical data in the memory, so that the data portion referenced in the request does not need to be loaded into the memory.