VIRTUAL SERVER CLOUD FILE SYSTEM FOR STREAMING RESTORE-TO-CLOUD OPERATIONS FOR CLOUD-BASED VIRTUAL MACHINES
Uploads of restored virtual machine (“VM”) data to cloud storage, e.g., VM restore-to-cloud operations, are performed without having to write whole restored virtual disk files to a proxy server before the virtual disk data begins uploading to cloud. Restored data blocks from a backup source are locally cached, staged for efficiency, and asynchronously uploaded to the cloud page-by-page without tapping mass storage resources on the proxy. Downloads of VM data from cloud storage, e.g., VM backup-from-cloud, are performed without having to download a virtual disk file in its entirety to the proxy server before the backup operation begins generating a backup copy. This speeds up “pulling” VM data from the cloud by pre-fetching and locally caching downloaded data blocks. The cached data blocks are processed for backup and stored page-by-page directly into a secondary copy of the cloud VM virtual-disk file without tapping mass storage resource at the proxy.
1 . A method for performing streaming restore-to-cloud operations for a cloud-based virtual machine, the method comprising:
performing a streaming restore to a first virtual-disk file hosted by a cloud-based account from a cache storage area on a first computing device, wherein the computing device comprises one or more hardware processors, the performing comprising:
by a pseudo-disk driver executing on the first computing device, presenting a file system comprising the cache storage area as a local destination for the streaming restore,
populating one or more pages in the cache storage area with data blocks that are restored from a secondary copy of a second virtual-disk file associated with a second virtual machine,
uploading the data blocks page-by-page to the first virtual-disk file, wherein the one or more pages in the cache storage area match a page-size of the first virtual-disk file configured in the cloud-based account, and
wherein the streaming restore uses the cache storage area to stage the one or more pages before uploading to the first virtual-disk file in the cloud-based account; and
wherein the first virtual-disk file is restored in its entirety to the cloud-based account without first restoring the secondary copy of the second virtual-disk file in its entirety to the first computing device.
2 . The method of claim 1 , wherein the cache storage area on the first computing device is insufficient in storage capacity to store the first virtual-disk file restored in its entirety from the secondary copy of the second virtual-disk file; and
further comprising:
if a given page in the cache storage area is not filled by data blocks restored from the secondary copy of the second virtual-disk file, awaiting more data blocks to be stored therein until the given page is filled, before the data blocks in the given page are uploaded from the cache storage area to a page in the first virtual-disk file in the cloud-based account.
3 . The method of claim 1 , wherein the cache storage area on the first computing device is insufficient in storage capacity to store the first virtual-disk file restored in its entirety from the secondary copy of the second virtual-disk file; and
further comprising:
if (i) no more of the secondary copy of the second virtual-disk file remains to be restored and (ii) a given page in the cache storage area is not filled by data blocks restored from the secondary copy of the second virtual-disk file, uploading the data blocks in the given page from the cache storage area to a page in the first virtual-disk file in the cloud-based account.
4 . The method of claim 1 , wherein the cache storage area on the first computing device is insufficient in storage capacity to store the first virtual-disk file restored in its entirety from the secondary copy of the second virtual-disk file; and
further comprising:
if (i) more of the secondary copy of the second virtual-disk file remains to be restored, and (ii) a given page that is determined to be a least-recently used page in the cache storage area is not filled by data blocks restored from the secondary copy of the second virtual-disk file, and (iii) the cache storage area is running below a threshold on storage space,
uploading the data blocks in the given page from the cache storage area to a page in the first virtual-disk file in the cloud-based account.
5 . The method of claim 4 , wherein the given page in the cache storage area is reused for other data blocks restored from the secondary copy of the second virtual-disk file.
6 . The method of claim 1 , wherein after being restored in its entirety using the streaming restore, the first virtual-disk file is available as primary data to a first virtual machine hosted by the cloud-based account.
7 . The method of claim 1 , further comprising:
by a first virtual machine hosted by the cloud-based account, using as primary data the first virtual-disk file restored in its entirety by the streaming restore via the cache storage area at the first computing device.
8 . A non-transitory computer-readable medium comprising instructions that, when executed by a first computing device comprising one or more hardware processors, cause the first computing device to perform a method comprising:
performing a streaming restore to a first virtual-disk file hosted by a cloud-based account from a cache storage area on a first computing device, wherein the computing device comprises one or more hardware processors, the performing comprising:
by a pseudo-disk driver executing on the first computing device, presenting a file system comprising the cache storage area as a local destination for the streaming restore,
populating one or more pages in the cache storage area with data blocks that are restored from a secondary copy of a second virtual-disk file associated with a second virtual machine,
uploading the data blocks page-by-page to the first virtual-disk file, wherein the one or more pages in the cache storage area match a page-size of the first virtual-disk file configured in the cloud-based account, and
wherein the streaming restore uses the cache storage area to stage the one or more pages before uploading to the first virtual-disk file in the cloud-based account; and
wherein the first virtual-disk file is restored in its entirety to the cloud-based account without first restoring the secondary copy of the second virtual-disk file in its entirety to the first computing device.
9 . The non-transitory computer-readable medium of claim 8 , wherein the cache storage area on the first computing device is insufficient in storage capacity to store the first virtual-disk file restored in its entirety from the secondary copy of the second virtual-disk file; and
wherein the method further comprises: if a given page in the cache storage area is not filled by data blocks restored from the secondary copy of the second virtual-disk file, awaiting more data blocks to be stored therein until the given page is filled, before the data blocks in the given page are uploaded from the cache storage area to a page in the first virtual-disk file in the cloud-based account.
10 . The non-transitory computer-readable medium of claim 8 , wherein the cache storage area on the first computing device is insufficient in storage capacity to store the first virtual-disk file restored in its entirety from the secondary copy of the second virtual-disk file; and
wherein the method further comprises: if (i) no more of the secondary copy of the second virtual-disk file remains to be restored and (ii) a given page in the cache storage area is not filled by data blocks restored from the secondary copy of the second virtual-disk file, uploading the data blocks in the given page from the cache storage area to a page in the first virtual-disk file in the cloud-based account.
11 . The non-transitory computer-readable medium of claim 8 , wherein the cache storage area on the first computing device is insufficient in storage capacity to store the first virtual-disk file restored in its entirety from the secondary copy of the second virtual-disk file; and
wherein the method further comprises: if (i) more of the secondary copy of the second virtual-disk file remains to be restored, and (ii) a given page that is determined to be a least-recently used page in the cache storage area is not filled by data blocks restored from the secondary copy of the second virtual-disk file, and (iii) the cache storage area is running below a threshold on storage space, uploading the data blocks in the given page from the cache storage area to a page in the first virtual-disk file in the cloud-based account.
12 . The non-transitory computer-readable medium of claim 11 , wherein the given page in the cache storage area is reused for other data blocks restored from the secondary copy of the second virtual-disk file.
13 . The non-transitory computer-readable medium of claim 8 , wherein after being restored in its entirety using the streaming restore, the first virtual-disk file is available as primary data to a first virtual machine hosted by the cloud-based account.
14 . A system for performing streaming restore-to-cloud operations for a cloud-based virtual machine, the system comprising:
a first computing device comprising one or more hardware processors;
one or more storage devices storing a secondary copy of a second virtual-disk file;
wherein the first computing device is configured to:
perform a streaming restore to a first virtual-disk file hosted by a cloud-based account from a cache storage area on a first computing device, wherein the computing device comprises one or more hardware processors, wherein the streaming restore comprises:
by a pseudo-disk driver executing on the first computing device, present a file system comprising the cache storage area as a local destination for the streaming restore, wherein the cloud-based account is exposed to the first computing device as the local destination,
receive in the cache storage area data blocks that are restored from a secondary copy of a second virtual-disk file associated with a second virtual machine,
upload the data blocks page-by-page to the first virtual-disk file, wherein the one or more pages in the cache storage area match a page-size of the first virtual-disk file configured in the cloud-based account, and
wherein the streaming restore uses the cache storage area to stage the one or more pages before uploading to the first virtual-disk file in the cloud-based account; and
wherein the first virtual-disk file is restored in its entirety to the cloud-based account without first restoring the secondary copy of the second virtual-disk file in its entirety to the first computing device.
15 . The system of claim 14 , wherein the cache storage area on the first computing device is insufficient in storage capacity to store the first virtual-disk file restored in its entirety from the secondary copy of the second virtual-disk file; and
wherein the first computing device is further configured to: if a given page in the cache storage area is not filled by data blocks restored from the secondary copy of the second virtual-disk file, await more data blocks to be stored therein until the given page is filled, before the data blocks in the given page are uploaded from the cache storage area to a page in the first virtual-disk file in the cloud-based account.
16 . The system of claim 14 , wherein the cache storage area on the first computing device is insufficient in storage capacity to store the first virtual-disk file restored in its entirety from the secondary copy of the second virtual-disk file; and
wherein the first computing device is further configured to: if (i) no more of the secondary copy of the second virtual-disk file remains to be restored and (ii) a given page in the cache storage area is not filled by data blocks restored from the secondary copy of the second virtual-disk file, upload the data blocks in the given page from the cache storage area to a page in the first virtual-disk file in the cloud-based account.
17 . The system of claim 14 , wherein the cache storage area on the first computing device is insufficient in storage capacity to store the first virtual-disk file restored in its entirety from the secondary copy of the second virtual-disk file; and
wherein the first computing device is further configured to: if (i) more of the secondary copy of the second virtual-disk file remains to be restored, and (ii) a given page that is determined to be a least-recently used page in the cache storage area is not filled by data blocks restored from the secondary copy of the second virtual-disk file, and (iii) the cache storage area is running below a threshold on storage space, upload the data blocks in the given page from the cache storage area to a page in the first virtual-disk file in the cloud-based account.
18 . The system of claim 17 , wherein the given page in the cache storage area is reused for other data blocks restored from the secondary copy of the second virtual-disk file.
19 . The system of claim 14 , wherein after being restored in its entirety using the streaming restore, the first virtual-disk file is available as primary data to a first virtual machine hosted by the cloud-based account.
20 . The system of claim 14 , wherein the system enables a first virtual machine hosted by the cloud-based account to use as primary data the first virtual-disk file restored in its entirety by the streaming restore via the cache storage area at the first computing device.