Transparent Virtualization of Cloud Storage
First Claim
1. A system comprising:
- a memory area associated with a computing device, said memory area caching a subset of a plurality of grains corresponding to a binary large object (blob) representing a virtual disk image, the blob having a plurality of subparts stored by a cloud service connected to the computing device via a high latency low bandwidth link; and
a processor programmed to;
present the blob to a plurality of VMs for access as the virtual disk image;
define a grain map correlating the plurality of grains of the virtual disk image to the subparts of the blob;
receive, from one of the VMs, a data operation directed to one or more of the plurality of grains;
perform the received data operation on the memory area for said one or more of a plurality of grains stored in the cached subset without communicating with the cloud service;
identify, via the defined grain map, one or more of the subparts of the blob corresponding to said one or more of the plurality of grains not stored in the cached subset;
obtain the identified subparts from the cloud service; and
perform the received data operation on the obtained subparts.
1 Assignment
0 Petitions
Accused Products
Abstract
Embodiments present a virtual disk image to applications such as virtual machines (VMs) executing on a computing device. The virtual disk image corresponds to one or more subparts of binary large objects (blobs) of data stored by a cloud service, and is implemented in a log structured format. Grains of the virtual disk image are cached by the computing device. The computing device caches only a subset of the grains and performs write operations without blocking the applications to reduce storage latency perceived by the applications. Some embodiments enable the applications that lack enterprise class storage to benefit from enterprise class cloud storage services.
31 Citations
24 Claims
-
1. A system comprising:
-
a memory area associated with a computing device, said memory area caching a subset of a plurality of grains corresponding to a binary large object (blob) representing a virtual disk image, the blob having a plurality of subparts stored by a cloud service connected to the computing device via a high latency low bandwidth link; and a processor programmed to; present the blob to a plurality of VMs for access as the virtual disk image; define a grain map correlating the plurality of grains of the virtual disk image to the subparts of the blob; receive, from one of the VMs, a data operation directed to one or more of the plurality of grains; perform the received data operation on the memory area for said one or more of a plurality of grains stored in the cached subset without communicating with the cloud service; identify, via the defined grain map, one or more of the subparts of the blob corresponding to said one or more of the plurality of grains not stored in the cached subset; obtain the identified subparts from the cloud service; and perform the received data operation on the obtained subparts. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method comprising:
-
subdividing, by a computing device, a binary large object (blob) of data stored by a cloud service into portions, the blob being presented as a virtual disk image to an application executing on the computing device, the computing device storing a subset of the portions in a local cache maintained by the computing device; receiving, from the application, a data operation relating to one or more of the portions; performing the received data operation on the local cache for said one or more of the portions stored in the subset in the local cache without communicating with the cloud service; obtaining, from the cloud service, said one or more of the portions not stored in the subset in the local cache; and performing the received data operation on the obtained said one or more of the portions not stored in the subset in the local cache upon receipt by the computing device. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
-
-
20. One or more computer-readable storage media including computer-executable instructions that, when executed, cause at least one processor to presenting a virtual disk image from a cloud service to a plurality of virtual machines (VMs) while minimizing transfer costs to/from the cloud service by:
-
accessing, by a computing device, a binary large object (blob) of data stored by the cloud service, the blob being subdivided into portions and presented as a virtual disk image to an application executing on the computing device, the computing device storing a subset of the portions in a local cache maintained by the computing device; receiving, from the application, a data operation relating to one or more of the portions; performing the received data operation on the local cache for said one or more of the portions that are stored in the subset in the local cache without communicating with the cloud service; obtaining, from the cloud service, said one or more of the portions that are not stored in the subset in the local cache; and performing the received data operation on the obtained said one or more of the portions that are not stored in the subset in the local cache upon receipt by the computing device. - View Dependent Claims (21, 22, 23, 24)
-
Specification