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.
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.
133 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. - 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; and 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. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A 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. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25)
-
Specification