Patent ID: 8060476

Claim:
A method for performing backup of virtual machine data to a target datastore, the method comprising: initiating a backup process executing on a backup computing device to access one or more virtual machine disks stored on a datastore, the one or more virtual machine disks being comprised of a plurality of data blocks, the backup computing device comprising a volatile memory and nonvolatile storage that is different from the target datastore; intercepting a plurality of calls made by the backup process to create a backup of the one or more virtual machine disks to the target datastore, the plurality of calls comprising: (1) at least one open call programmed to open a proxy backup file at a first destination location on the nonvolatile storage of the backup computing device, the open call programmed to reserve space at the first destination location on the nonvolatile storage for the requested size of the proxy backup file, and (2) at least one write call programmed to write a proxy backup copy of each of the one or more virtual machine disks to the proxy backup file at the first destination location on the nonvolatile storage of the backup computing device; for each intercepted open call, substituting the open call with at least a second open call programmed to: open a sparse file at the first destination location, the sparse file providing the appearance that the proxy backup file having the requested size was opened at the first destination location; for each intercepted write call, substituting the intercepted write call with at least a second write call, wherein the at least the second write call is further programmed to: transfer the data block associated with the particular intercepted write call to the volatile memory of the backup computing device without writing the data block to the nonvolatile storage of the backup computing device, compute a signature of the data block while the data block is stored in the volatile memory of the backup computing device, and compare the computed signature with a predetermined signature while the data block is stored in the volatile memory of the backup computing device; for each data block having a computed signature that differs from the predetermined signature: compressing the data block while the data block is stored in the volatile memory of the computing device; and redirecting the compressed data block stored in the volatile memory to a second destination location on the target datastore that is different than the first destination location on the nonvolatile storage of the backup computing device, wherein the redirecting occurs without writing the compressed data block to the nonvolatile storage of the computing device; and for each data block having a computed signature that matches the predetermined signature: disregarding the data block.