File system independent content aware cache
First Claim
1. A method for obtaining data for a virtual machine in a server supporting a hypervisor for running virtual machines, the method comprising:
- intercepting a read request from the virtual machine intended for transmission to a virtual drive provided by the hypervisor;
confirming that the read request corresponds to a specific content type in the virtual drive;
identifying an entry in a cache index, wherein the entry comprises a virtual machine identifier corresponding to the virtual machine, a virtual drive offset value corresponding to an offset in the read request, and a reference to a data block stored in a cache maintained in a local memory in the server;
circumventing a standard I/O stack of the hypervisor to request the data block directly from the local memory by providing address information corresponding to the reference to a driver for the local memory;
receiving the data block from the driver for the local memory; and
transmitting the data block to the virtual machine in response to the read request, wherein the steps are performed by a content aware cache filter component in an I/O virtualization layer of the standard I/O stack.
2 Assignments
0 Petitions
Accused Products
Abstract
A server supporting the implementation of virtual machines includes a local memory used for caching, such as a solid state device drive. During I/O intensive processes, such as a boot storm, a “content aware” cache filter component of the hypervisor of the server first accesses a cache structure in a content cache device to determine whether data blocks have been stored in the cache structure prior to requesting the data blocks from a networked disk array via a standard I/O stack of the hypervisor. The content aware cache filter component is implemented in an I/O virtualization layer of the standard I/O stack that sits above a file system layer of the standard I/O stack, such that any file system protocol may be implemented in the file system layer.
23 Citations
25 Claims
-
1. A method for obtaining data for a virtual machine in a server supporting a hypervisor for running virtual machines, the method comprising:
-
intercepting a read request from the virtual machine intended for transmission to a virtual drive provided by the hypervisor; confirming that the read request corresponds to a specific content type in the virtual drive; identifying an entry in a cache index, wherein the entry comprises a virtual machine identifier corresponding to the virtual machine, a virtual drive offset value corresponding to an offset in the read request, and a reference to a data block stored in a cache maintained in a local memory in the server; circumventing a standard I/O stack of the hypervisor to request the data block directly from the local memory by providing address information corresponding to the reference to a driver for the local memory; receiving the data block from the driver for the local memory; and transmitting the data block to the virtual machine in response to the read request, wherein the steps are performed by a content aware cache filter component in an I/O virtualization layer of the standard I/O stack. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for maintaining a cache structure in a server supporting a hypervisor for running virtual machines, the method comprising:
-
receiving a read request from a virtual machine intended for transmission to a virtual drive by the hypervisor; transmitting the read request to a standard I/O stack of the hypervisor, wherein the standard I/O stack converts the read request into read operations for a disk array networked to the server; receiving a data block through the standard I/O stack from the disk array in response to the read request; computing a hash value based on the received data block; determining whether a hash table contains an entry comprising a hash value field matching the computed hash value of the received data block and an address reference to a second data block stored in a cache maintained in a local memory in the server; when the hash table contains the matching entry, inserting a new entry into a cache index, wherein the new entry comprises a virtual machine identifier corresponding to the virtual machine, a virtual drive offset value corresponding to an offset in the read request, and a reference to the second data block, and when the hash table does not contain a matching entry, storing the received data block in a location in the cache, inserting a new entry into the hash table, wherein the new entry comprises the hash value of the received data block and an address reference to the location in the cache, and inserting a new entry into a cache index file, wherein the new entry comprises a virtual machine identifier corresponding to the virtual machine, a virtual drive offset value corresponding to an offset in the read request, and a reference to the data block stored in the cache. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A non-transitory computer-readable storage medium including instructions that, when executed by a computer processor of a server supporting a hypervisor for running virtual machines, causes the computer processor obtain data for a virtual machine by performing the steps of:
-
intercepting a read request from the virtual machine intended for transmission to a virtual drive provided by the hypervisor; confirming that the read request corresponds to a specific content type in the virtual drive; identifying an entry in a cache index file, wherein the entry comprises a virtual machine identifier corresponding to the virtual machine, a virtual drive offset value corresponding to an offset in the read request, and a reference to a data block stored in a cache maintained in a local memory in the server; circumventing a standard I/O stack of the hypervisor to request the data block directly from the local memory by providing address information corresponding to the reference to a driver for the local memory; receiving the data block from the driver for the local memory; and transmitting the data block to the virtual machine in response to the read request; wherein the steps are performed by a content aware cache filter component in an I/O virtualization layer of the standard I/O stack. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25)
-
Specification