US8312471B2 - File system independent content aware cache - Google Patents

File system independent content aware cache Download PDF

Info

Publication number
US8312471B2
US8312471B2 US12/767,581 US76758110A US8312471B2 US 8312471 B2 US8312471 B2 US 8312471B2 US 76758110 A US76758110 A US 76758110A US 8312471 B2 US8312471 B2 US 8312471B2
Authority
US
United States
Prior art keywords
cache
data block
virtual
virtual machine
read request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US12/767,581
Other versions
US20110265083A1 (en
Inventor
Scott Howard Davis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VMware LLC
Original Assignee
VMware LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VMware LLC filed Critical VMware LLC
Priority to US12/767,581 priority Critical patent/US8312471B2/en
Assigned to VMWARE, INC. reassignment VMWARE, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DAVIS, SCOTT HOWARD
Publication of US20110265083A1 publication Critical patent/US20110265083A1/en
Application granted granted Critical
Priority to US13/675,560 priority patent/US8776089B2/en
Publication of US8312471B2 publication Critical patent/US8312471B2/en
Assigned to VMware LLC reassignment VMware LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: VMWARE, INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/465Structured object, e.g. database record

Definitions

  • VDI virtual desktop infrastructure
  • desktop operating systems and applications are run inside virtual machines (also referred to herein as “virtual desktops”) that reside on servers in an organization's data center.
  • Users access the virtual desktops through a thin client application that runs on their desktop PC (or any other similar computer terminal, including, for example, zero-touch clients, thin clients, laptops, tablets, smartphones and the like) and utilizes a remote display protocol to render the graphical user interface of the desktop operating system on the desktop PC. Users are then able to interact with the applications running in the virtual desktop as if such applications were running on the desktop PC itself.
  • VDI deployments exhibit different resource consumption characteristics than typical server-based virtualization deployments. For example, unlike long-lived servers in server-based virtualization deployments, VDI deployments encounter simultaneous booting, suspending, resuming, and powering-off of virtual desktops consistent with the typical usage patterns of users accessing their desktop PCs.
  • the higher density of virtual desktops in VDI deployments can result in time-oriented “I/O storms” (e.g., simultaneous anti-virus scans and updates, data backups and other scheduled activities) in which virtual desktops simultaneously compete for computing and storage resources within an organization's data center.
  • VDI deployments need to be configured to adequately addresses “boot storms,” in which several hundreds of virtual desktops allocated to a single server need to be powered on at once. Such boot storms may occur, for example, each morning, when users arrive for work or when recovering from a data center or server failure.
  • One or more embodiments of the present invention provide methods that reduce the need for a server to access a networked disk array during I/O intensive processes, such as a boot storm.
  • Such methods may take advantage of high speed local persistent storage devices in the server, such as a solid state device drive, by maintaining a cache structure that stores data blocks that are repeatedly accessed by different virtual desktops during a boot storm or other I/O storm.
  • each of the different virtual desktops running on the server may access its own unique boot image in the networked disk array.
  • contents in each such unique boot image may be identical or similar to boot images of the other virtual desktops, thereby enabling such a cache structure to provide efficiencies by reducing network accesses.
  • One method, according to an embodiment, for obtaining data for a virtual machine in a server supporting a hypervisor for running virtual machines is performed by a cache filter component implemented in an I/O virtualization layer of a standard I/O stack of the hypervisor.
  • the I/O virtualization layer sits above a file system layer of the standard I/O stack, such that any file system or file system protocol, such as VMFS, NFS and other known file system protocols, may be implemented as the file system layer of the hypervisor without affecting the capabilities of the cache filter component.
  • the cache filter component begins by first intercepting a read request from a virtual machine that is intended for transmission to a virtual drive provided by the hypervisor.
  • the read request corresponds to a specific content type (e.g., such as data of a boot image) in the virtual drive and identifies an entry in a cache index that 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 (such as a solid state drive, persistent disk or non-persistent memory) accessible to the server.
  • the cache filter component then circumvents (e.g., redirects I/O away from) the 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. Once the cache filter component receives the data block from the driver for the local memory, it can then transmit the data block to the virtual machine in response to the read request.
  • the cache filter component maintains a cache structure in the server by receiving a read request from a virtual machine intended for transmission to a virtual drive by the hypervisor and transmitting the read request to the 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.
  • the cache filter component When the cache filter component receives a data block through the standard I/O stack from the disk array in response to the read request, it computes a hash value based on the received data block and identifies an entry in a hash table, wherein the entry comprises a hash value field matching the computed hash value and an address reference to a second data block stored in a cache maintained in a local memory (such as a solid state drive) in the server.
  • the cache filter component then inserts 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 second data block stored in the cache.
  • FIG. 1 depicts a block diagram of a data center architecture supporting a virtual desktop infrastructure (VDI).
  • VDI virtual desktop infrastructure
  • FIG. 2A depicts a block diagram of a server utilizing a first virtualization architecture in a data center supporting VDI.
  • FIG. 2B depicts a block diagram of a server utilizing a second virtualization architecture in a data center supporting VDI.
  • FIG. 3 depicts a block diagram of a content aware cache structure in a server supporting virtual desktops.
  • FIG. 4 depicts a flow diagram for booting a virtual desktop utilizing a content aware cache structure.
  • FIG. 1 depicts a block diagram of a data center architecture supporting a virtual desktop infrastructure (VDI).
  • the data center of FIG. 1 comprises a plurality of servers 100 1 - 100 N constructed on server class hardware platform, such as hardware platform 102 .
  • hardware platform 102 may be, for example, an x86 architecture platform that includes a hard drive, network adapter, system memory, processor and other I/O devices such as a mouse, keyboard and the like.
  • a virtualization software layer also referred to hereinafter as a hypervisor 104 , is installed on top of hardware platform 102 .
  • Hypervisor 104 supports a virtual machine execution space 106 within which multiple virtual desktops (i.e., virtual machines running desktop operating systems and applications) may be concurrently instantiated and executed.
  • virtual execution space 106 includes virtual desktops 108 1 - 108 N .
  • hypervisor 104 provides a corresponding virtual machine monitor (VMM) 110 1 - 110 N that implements virtualization support such as emulated hardware to coordinate operations between hypervisor 104 and the virtual desktop.
  • VMM virtual machine monitor
  • Each of servers 100 1 - 100 N are further networked to an enterprise-level storage system such as disk array 112 .
  • disk array 112 may be a network attached storage (NAS) array, storage area network (SAN) array or any other similar disk array.
  • Disk arrays such as SAN arrays typically provide block-level access to their stored data through SCSI-based protocols such as Fibre Channel and iSCSI.
  • Disk array 112 comprises a storage system manager 114 that serves as the communication agent (to the outside world) for disk array 112 and implements a virtualization of the physical, typically disk drive-based storage units, referred to in FIG. 1 , as spindles 116 1 - 116 N , that reside in disk array 112 .
  • Storage system manager 114 abstracts away the complexities of targeting read and write operations to the physical addresses of the actual spindles by exposing to servers 100 1 - 100 N the ability to view the aggregate physical storage space provided by the disk drives as a contiguous logical storage space that is divided into set of virtual partitions known as LUNs (logical unit numbers) 118 1 - 118 N .
  • Storage system manager 114 provides servers 100 1 - 100 N the ability to transmit data transfer and control commands (e.g., read and write commands, etc.) to disk array 112 at the LUN “block” level, where a block is a particular contiguous region in a particular LUN.
  • a LUN block may be represented as ⁇ LUN ID, offset, length> and server 100 1 may transmit to disk array 112 a read or write operation for block ⁇ LUN ID, offset, length> in the form of a SCSI operation.
  • the embodiment of FIG. 1 depicts LUN 118 1 maintained by disk array 112 that stores a virtual drive image 120 comprising data that corresponds to an emulated local hard drive for virtual desktop 108 1 (e.g., in VMM 110 1 ).
  • Virtual drive image 120 further comprises a boot image 122 used to boot virtual desktop 108 1 .
  • disk array 112 stores a virtual drive image similar to virtual drive image 120 for each of the other virtual desktops 108 2 - 108 N in one of LUNs 118 1 - 118 N and that each such virtual drive image comprises its own boot image, similar to boot image 122 , that contains the same (or substantially similar) data as boot image 122 (e.g., in order to maintain and manage consistent core boot images across the virtual desktops of an organization).
  • a virtual desktop management server (or servers) 124 placed between servers 100 1 - 100 N and user terminals 126 manages the provisioning of virtual desktops on servers 100 1 - 100 N to user terminals 126 and provides additional administrative and management capabilities such as boot image (e.g., updates, patches, etc.) management and desktop security policies.
  • User terminals 126 may execute a “thin client” application that interacts with virtual desktop management server 124 to connect to a user's virtual desktop and render the virtual desktop's graphical user interface. Alternatively, a user terminal may access a virtual desktop through web browser access or through other similar means. It should be recognized that various modifications and changes may be made to the data center embodiment of FIG. 1 consistent with the teachings set forth herein.
  • servers 100 1 - 100 N may be connected through various different known topologies and technologies (e.g., switches, etc.) to multiple storage systems similar to disk array 112 .
  • One alternative embodiment may implement virtual desktop management server 124 as a virtual machine running on one of servers 100 1 - 100 N .
  • a further alternative embodiment may not necessarily utilize a separate virtual desktop management server.
  • virtual desktop management server 124 that may be used in embodiments is the VMware Virtual Desktop Manager product, which is commercially available from VMware, Inc. of Palo Alto, Calif.
  • FIG. 2A depicts a block diagram of a server utilizing a first virtualization architecture in a data center supporting VDI.
  • hardware platform 102 of server 100 may include a local storage unit 200 , such as a hard drive, network adapter (NIC 202 ), system memory 204 , processor (CPU 206 ) and other I/O devices such as, for example, a mouse and keyboard (not shown in FIG. 2A ).
  • Hardware platform 102 further includes a host bus adapter (HBA 208 ) that networks server 100 to disk array 112 as well as a “content cache device” 210 .
  • HBA 208 host bus adapter
  • a “content cache device” refers to a solid state drive (SSD), also referred to as an enterprise flash drive (EFD), standard RAM memory, local hard drives, disk array LUNs, or any other persistent or non-persistent memory or secondary storage, local or remote, that may be used as a “content aware” cache as further described herein.
  • content cache device 210 is a local SSD, separate from local storage unit 200 or system memory 204 , that provides server 100 with an additional high speed persistent local storage unit that can be leveraged, for example, to increase the performance of less commonly occurring, but I/O intensive, processes without competing for additional system memory 204 and local storage unit 200 resources with other more commonly occurring routines that generally support the running of virtual desktops on server 100 .
  • One such commonly occurring, but I/O intensive process is the boot-up process for virtual desktops which results in a “boot storm” as previously discussed when multiple virtual desktops are simultaneously attempting to boot.
  • Hypervisor 104 installed on top of hardware platform 102 , supports virtual machine execution space 106 within which multiple virtual desktops 108 1 - 108 N may be concurrently instantiated and executed. For each of virtual desktops 108 1 - 108 N , hypervisor 104 implements a corresponding virtual machine monitor (VMM) 110 1 - 110 N that includes a virtual hardware platform (i.e., virtual hardware platforms 212 1 - 212 N ) of emulated hardware, such as virtual NIC 218 , virtual CPU 220 , guest physical RAM 222 and local virtual hard drive 224 for virtual desktop 108 1 .
  • VMM virtual machine monitor
  • virtual hardware platform 212 1 may function as an equivalent of a standard x86 hardware architecture such that any x86 supported desktop operating system, e.g., Microsoft Windows®, Linux®, Solaris®x86, NetWare, FreeBSD, etc., may be installed as guest operating system 214 (which includes a file system 215 ) to execute any supported application in application layer 216 .
  • local virtual hard drive 224 includes a boot image 228 that guest operating system 214 accesses upon a boot process.
  • boot image read requests are typically passed by virtual local hard drive 224 through an I/O stack in hypervisor 104 to an HBA device driver 238 in order to read the actual data blocks residing in boot image 122 of virtual drive image 120 residing in LUN 118 1 of networked disk array 112 , which corresponds to local virtual hard drive 224 .
  • file system operations (e.g., file read or file write commands) issued by guest operating system 214 appear, from the perspective of guest operating system 214 , to be routed to local virtual hard drive 224 but are actually translated and passed through various layers in the I/O stack of hypervisor 104 , as depicted, for example, in FIG. 2A .
  • a SCSI virtualization layer 230 in hypervisor 104 receives a SCSI command from local virtual hard drive 224 in VMM 110 1 and translates the command into file system operations that are understood by a virtual machine file system (VMFS) 232 .
  • VMFS virtual machine file system
  • VMFS 232 is the VMware VMFS which is commercially available from VMware, Inc., although it should be recognized that other known file systems such as NFS and the like may be implemented in various embodiments.
  • VMFS 232 generally manages the creation, use, and deletion of files stored on the disk array 112 through LUN abstractions.
  • SCSI virtualization layer 230 then issues these VMFS file system operations to the VMFS 232 which, in turn, converts the VMFS file system operations to LUN block operations and transmits the LUN block operations to a logical volume manager 234 .
  • Logical volume manager 234 issues raw SCSI operations to a device access layer 236 based on the LUN block operations.
  • Device access layer 236 identifies networked disk array 112 as the hardware storage resource corresponding to the received raw SCSI operations and then applies command queuing and scheduling policies to the raw SCSI operations.
  • HBA device driver 238 in device driver layer 240 communicates with HBA 208 and transmits the raw SCSI operations from the device access layer 236 to HBA 208 to be transmitted to disk array 112 .
  • the raw SCSI operations i.e., LUN block level operations
  • FIG. 2A further depicts a “content aware” cache filter 242 in SCSI virtualization layer 230 .
  • content aware cache filter 242 is configured to engage during a boot storm (i.e., the content aware cache filter is “aware” of read operations corresponding to the booting process) to reduce the repetition of network accesses by server 100 to read the data blocks of boot images of virtual drive images (e.g., such as boot image 122 of virtual drive image 120 ) in LUNs 118 1 - 118 N of disk array 112 .
  • content aware cache filter 242 intercepts SCSI read commands from VMMs 110 1 - 110 N (corresponding to virtual desktops 108 1 - 108 N ) and filters them to determine which read commands correspond to requests for data blocks in a virtual desktop's respective boot image 228 , residing on its local virtual hard drive 224 (but which are actually stored in boot image 122 of virtual drive image 120 , for example, for virtual desktop 108 1 ).
  • content aware cache filter 242 may recognize offsets in read operations that correspond to data blocks in boot image 228 .
  • content aware cache filter 242 Upon intercepting such filtered read commands, content aware cache filter 242 circumvents (e.g., redirects I/O away from) the I/O stack layers of hypervisor 104 and directly communicates with content cache device 210 (via cache device driver 244 ) to determine whether the requested data blocks are present in a cache structure locally stored in content cache device 210 . In this manner, content aware cache filter 242 is agnostic with respect to (i.e., not dependent upon) any implementation of a file system layer (e.g., VMFS, NFS or any other known file system protocols, etc.) situated below content aware cache filter 242 in the I/O stack of hypervisor 104 and any technical requirements or peculiarities related thereto.
  • a file system layer e.g., VMFS, NFS or any other known file system protocols, etc.
  • SCSI virtualization layer 230 is described in the context of FIG. 2A , it should be recognized that any other hardware interface standards may be utilized in alternative embodiments for an analogous I/O virtualization layer, including IDE, ATA, ATAPI, and any other I/O interfaces for reading and writing blocks of data.
  • virtual hardware platforms 212 1 - 212 N may also be considered to be separate from VMMs 110 1 - 110 N
  • VMMs 110 1 - 110 N may be considered to be separate from hypervisor 104 or part of corresponding virtual desktops 108 1 - 108 N
  • hypervisor 104 One example of hypervisor 104 that may be used is included as a component of VMware's ESXTM product, which is commercially available from VMware, Inc. It should further be recognized that other virtualized computer systems consistent with the teachings herein are contemplated, such as hosted virtual machine systems, where the hypervisor is implemented in conjunction with a host operating system. It should further be recognized that although FIG.
  • content aware cache filter 242 may be configured to engage when virtual desktops 108 1 - 108 N access other types of data in their local virtual hard drives (e.g., local virtual hard drive 224 ), such as virus scans and updates and other types of data, wherein the blocks of data stored in the corresponding virtual drive images in LUNs 118 1 - 118 N of disk array 112 often contain the same data due to the similar use of such data across virtual desktops.
  • local virtual hard drive 224 e.g., local virtual hard drive 224
  • FIG. 2B depicts a block diagram of a server utilizing a second virtualization architecture in a data center supporting VDI.
  • server 100 includes a hardware platform 102 comprising local storage unit 200 , NIC 202 , system memory 204 , CPU 206 , HBA 208 , content cache device 210 and other I/O devices.
  • a hypervisor 258 is installed on top of hardware platform 102 and supports virtual machine execution space 106 within which multiple virtual desktops 108 1 - 108 N may be concurrently instantiated and executed.
  • Each of virtual desktops 108 1 - 108 N supports a guest operating system 246 1 - 246 N such as Microsoft Windows®, Linux®, Solaris® x86, NetWare, FreeBSD or any other desktop operating system, which includes, for example, a corresponding file system 247 1 - 247 N .
  • each guest operating system 246 1 - 246 N comprises a virtual device driver layer 248 1 - 248 N that emulates communication with hardware platform 102 but actually corresponds with a root virtual machine 250 (also sometimes referred to as a “domain 0 ” virtual machine), via virtual I/O paths 252 through hypervisor 258 , in order to perform I/O.
  • Root virtual machine 250 has unique and special privileges to communicate with hardware platform 102 on behalf of virtual desktops 108 1 - 108 N .
  • Root virtual machine 250 comprises an operating system kernel 254 that has a file system 253 that maps virtual disk devices accessible in virtual desktops 108 1 - 108 N (e.g., accessed as file systems 247 1 - 247 N ) to backing files on a storage volume, such as disk array 112 and a physical device driver layer 256 to directly correspond with the devices in hardware platform 102 (e.g., direct I/O paths 260 ).
  • physical device driver layer 256 comprises HBA device driver 238 that communicates with HBA 208 to access data stored in disk array 112 and a NIC driver 258 that interacts with NIC 202 for perform network communications. Additionally, physical device driver layer 256 further comprises a cache device driver 244 that, as in FIG. 2A , communicates with content cache device 210 .
  • Operating system kernel 254 further includes content aware cache filter 242 , which receives I/O requests through hypervisor 258 from virtual desktops 108 1 - 108 N (e.g., through file system 253 ). Similar to the description of the content aware cache filter in FIG. 2A , in one embodiment, content aware cache filter 242 is configured to engage during a boot storm to reduce the repetition of network accesses by server 100 to read the data blocks of boot images of different virtual drive images in LUNs 118 1 - 118 N of disk array 112 that contain the same data.
  • Content aware cache filter 242 intercepts read commands routed from virtual desktops 108 1 - 108 N to root virtual machine 250 and filters them to determine which read commands correspond to requests for data blocks in a virtual desktop's respective boot image (or other specified type of content). Upon intercepting such filtered read commands, content aware cache filter 242 directly communicates with content cache device 210 (via cache device driver 244 ) to determine whether the requested data blocks are present in a cache structure locally stored in content cache device 210 .
  • FIG. 3 depicts a block diagram of a content aware cache structure in a server supporting virtual desktops.
  • content cache device 210 stores a cache index file 300 and cache memory 305 .
  • Entries in cache index file 300 are searched by content aware cache filter 242 to determine whether read requests from a virtual desktop during a boot-up process (or other specified type of content) can be serviced by data stored in cache memory 305 rather than through network communications with disk array 112 .
  • Each entry of cache index file 300 comprises a virtual desktop ID field 310 , virtual disk offset field 315 , hash value field 320 and address pointer field 325 .
  • An entry's virtual desktop ID field 310 enables content aware cache filter 242 to determine whether the entry pertains to a virtual desktop that has issued a boot related read command (or read command for any other specified content type, in other embodiments) that has been intercepted by content aware cache filter 242 . If the identification of the virtual desktop issuing the read command matches the virtual desktop identification field 310 of an entry, then the entry's virtual desktop offset field 315 enables content aware cache filter 242 to determine whether the entry pertains to the actual block (or blocks) requested in the read command.
  • Hash value field 320 of an entry contains a hash value of the data block (or blocks) referenced by the entry's address pointer field 325 that is stored in cache memory 305 .
  • Hash value field 320 enables content aware cache filter 242 to determine whether a data block that has been currently read from disk array 112 during, for example, a boot process for one virtual desktop has already been stored in cache memory 305 (e.g., during a previous boot process for a different virtual desktop).
  • content aware cache filter 242 can add a new entry into cache index file 300 that points to a pre-existing data block in cache memory 305 if it finds a match of the hash value in a hash value field 230 of one of the entries in cache index file 300 (see, e.g., multiple address pointers of multiple entries point to common boot image data blocks A, B, C, D in cache memory 305 as depicted in FIG. 3 ).
  • One alternative embodiment may utilize a “per-virtual desktop” index file comprising entries with fields such as virtual desktop ID, virtual disk offsets and hash values (or address pointers) in order to process received SCSI read commands from virtual desktops, and a separate “per host” hash table comprising hash values and corresponding address pointers to cached data (e.g., to access actual cached data and to process new un-cached data blocks received from disk array 112 ).
  • One alternative embodiment may further include a frequency access field for each entry to assist content aware cache filter 242 in determining entries eligible for removal (i.e., least accessed, etc.) in the event a new entry should be added and cache index file 300 is full.
  • another alternative embodiment may further include a generation number field for each entry indicating a version or generation number for the entry's corresponding data block (or blocks) stored in cache memory 305 .
  • a generation number field for each entry indicating a version or generation number for the entry's corresponding data block (or blocks) stored in cache memory 305 .
  • the generation number associated with boot image 122 may be increased such that content aware cache filter 242 can later recognize that it needs to revalidate the corresponding entries in cache index file 300 and the corresponding data blocks in cache memory 305 .
  • FIG. 4 depicts a flow diagram for booting a virtual desktop utilizing a content aware cache structure.
  • the steps of FIG. 4 may similarly be utilized for processes for other specified content other than boot data, including for example, anti-virus checks and updates, data back-up processes and other similar I/O storm related content.
  • step 400 content aware cache filter 242 loads cache index file 300 from content cache device 210 into system memory 204 (e.g., allocated to hypervisor 104 ).
  • step 405 as previously discussed, content aware cache filter 242 intercepts an incoming read command from virtual desktop 108 x that, for example, has been transmitted to SCSI virtualization layer 230 of the virtualization architecture of FIG.
  • step 410 the intercepted read command corresponds to reading boot image 228 in local virtual hard drive 224 of virtual desktop 108 x (i.e., the read command is a request to read a data block to boot up virtual desktop 108 x )
  • step 415 content aware cache filter 242 identifies all entries in cache index file 300 with a virtual desktop ID 305 that matches virtual desktop 108 x .
  • step 420 if any identified entry in step 415 has a virtual disk offset 315 that matches the offset in the intercepted read command, then in step 425 , content aware cache filter 242 circumvents the standard I/O stack of hypervisor 104 (e.g., as depicted in FIG. 2A ) and reads the stored data block (or blocks) in cache memory 305 corresponding to address pointer 325 in such an identified entry in cache index file 300 . In step 430 , content aware cache filter 242 then transmits the data block read from cache memory 305 to virtual desktop 108 x in the response to the read command intercepted in step 405 .
  • hypervisor 104 e.g., as depicted in FIG. 2A
  • step 420 If, however, in step 420 , no entry in cache index file 300 matches the offset of the read command, then in step 435 , content aware cache filter 242 releases the intercepted read command back to SCSI virtualization layer 230 to process normally through the I/O stack of hypervisor 104 , as depicted in FIG. 2A (or releases the read command to the physical device layer 256 as depicted in FIG. 2B ).
  • content aware cache filter 242 releases the intercepted read command back to SCSI virtualization layer 230 to process normally through the I/O stack of hypervisor 104 , as depicted in FIG. 2A (or releases the read command to the physical device layer 256 as depicted in FIG. 2B ).
  • FIG. 2A In the embodiment of FIG.
  • the read command corresponds to reading a data block in boot image 228 of virtual local hard drive 224 of virtual desktop 108 x in step 410 , then the read command is ultimately passed through the I/O stack of hypervisor 104 to HBA driver 238 in order to read the data block (or blocks) from boot image 122 of virtual drive image 120 in LUN 118 1 in networked disk array 112 .
  • content aware cache filter 242 Upon receiving the read data block back from disk array 112 at SCSI virtualization layer (i.e., back up through the I/O stack of hypervisor 104 ), content aware cache filter 242 intercepts the received data block (or blocks) in step 440 and determines, in step 445 , whether the received data block (or blocks) corresponds to a read command for boot image 228 of local virtual hard drive 224 (i.e., the data block has been read from boot image 122 in disk array 112 ).
  • step 450 content aware cache filter 242 computes a hash value on the received data block (or blocks).
  • step 455 content aware cache filter 242 determines whether the computed hash value matches a hash value field 320 in any entry of cache index file 300 . If there is a matching entry, content aware cache filter 242 adds a new entry into cache index file 300 with an address pointer 325 that points to same data block in cache memory 305 as address pointer 325 of the matched entry.
  • the new entry's hash value field 320 contains the computed hash value
  • its virtual disk offset field 315 contains the offset identified in step 420
  • its virtual disk ID field 310 contains virtual desktop 108 x .
  • content aware cache filter 242 completes its filtering process by transmitting the received data block to virtual desktop 108 x in response to the read command. If, however, there is no matching entry in step 455 , then the data block has not been previously stored in cache memory 305 and content aware cache filter 242 adds the received data block into cache memory 305 in step 465 .
  • step 470 adds a corresponding new entry into cache index file 300 with address pointer 325 pointing to the added data block in cache memory 305 before completing the filtering process in step 475 .
  • embodiments may implement the “content aware” cache structures described herein in a variety of ways, such that the cache structure is accessed for specific purposes or specific types of content (e.g., booting, anti-virus, data backup, etc.).
  • the content aware cache filter checks the offsets of intercepted read commands to determine whether the offsets relate to data of a specified content type.
  • a content cache device as described herein may utilize any storage hardware technology of the service, such as SSDs, standard RAM memory, local hard drives, disk array LUNs, and any other persistent or non-persistent, local or remote, memory or storage.
  • a combination of persistent (e.g., SSD, local hard drive, disk array LUN, etc.) and non-persistent memories (RAM memory, etc.) may be combined to provide different functions of the cache structure as discussed herein.
  • an offline process computes and stores a “digest” file for each virtual drive image (such as virtual drive 120 ) in disk array 112 .
  • a digest file comprises hash values for the blocks in the virtual drive image (and other metadata, bitmaps, etc.).
  • the digest file corresponding to the virtual desktop may be loaded into RAM memory and the hash values therein may serve as a “per virtual desktop” index file for the virtual desktop, which assists in referencing hash values in a separate “per host” hash table that includes address pointers to actual cached data (e.g., in an SSD, local RAM memory or other local memory).
  • the I/O stacks of a hypervisor as depicted in FIGS. 2A and 2B are merely exemplary and that alternative embodiments may utilize different virtualization architectures (e.g., full virtualization architectures, paravirtualization architectures, etc.).
  • FIGS. 1 and 2A and the discussion herein have depicted and described separate boot images (e.g., boot image 122 ) for each virtual desktop, it should be recognized that, in alternative embodiments, such boot images may further reference data blocks residing a separate gold master image residing in disk array 112 (e.g., rather than replicating such common data blocks for boot image in each separate virtual drive image stored disk array 112 ).
  • boot images may further reference data blocks residing a separate gold master image residing in disk array 112 (e.g., rather than replicating such common data blocks for boot image in each separate virtual drive image stored disk array 112 ).
  • similar cache structure techniques may be used for write operations.
  • the various embodiments described herein may employ various computer-implemented operations involving data stored in computer systems. For example, these operations may require physical manipulation of physical quantities usually, though not necessarily, these quantities may take the form of electrical or magnetic signals where they, or representations of them, are capable of being stored, transferred, combined, compared, or otherwise manipulated. Further, such manipulations are often referred to in terms, such as producing, identifying, determining, or comparing. Any operations described herein that form part of one or more embodiments of the invention may be useful machine operations.
  • one or more embodiments of the invention also relate to a device or an apparatus for performing these operations. The apparatus may be specially constructed for specific required purposes, or it may be a general purpose computer selectively activated or configured by a computer program stored in the computer.
  • various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
  • One or more embodiments of the present invention may be implemented as one or more computer programs or as one or more computer program modules embodied in one or more computer readable media.
  • the term computer readable medium refers to any data storage device that can store data which can thereafter be input to a computer system computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer.
  • Examples of a computer readable medium include a hard drive, network attached storage (NAS), read-only memory, random-access memory (e.g., a flash memory device), a CD (Compact Discs) CD-ROM, a CD-R, or a CD-RW, a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices.
  • the computer readable medium can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

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.

Description

BACKGROUND
Organizations are increasingly adopting virtual desktop infrastructure (VDI) solutions to simplify desktop administration tasks and increase security and data safeguard measures. With VDI, desktop operating systems and applications are run inside virtual machines (also referred to herein as “virtual desktops”) that reside on servers in an organization's data center. Users access the virtual desktops through a thin client application that runs on their desktop PC (or any other similar computer terminal, including, for example, zero-touch clients, thin clients, laptops, tablets, smartphones and the like) and utilizes a remote display protocol to render the graphical user interface of the desktop operating system on the desktop PC. Users are then able to interact with the applications running in the virtual desktop as if such applications were running on the desktop PC itself.
VDI deployments exhibit different resource consumption characteristics than typical server-based virtualization deployments. For example, unlike long-lived servers in server-based virtualization deployments, VDI deployments encounter simultaneous booting, suspending, resuming, and powering-off of virtual desktops consistent with the typical usage patterns of users accessing their desktop PCs. The higher density of virtual desktops in VDI deployments (in contrast to the relatively smaller number of virtual machines in server-based virtualization deployments) can result in time-oriented “I/O storms” (e.g., simultaneous anti-virus scans and updates, data backups and other scheduled activities) in which virtual desktops simultaneously compete for computing and storage resources within an organization's data center. For example, VDI deployments need to be configured to adequately addresses “boot storms,” in which several hundreds of virtual desktops allocated to a single server need to be powered on at once. Such boot storms may occur, for example, each morning, when users arrive for work or when recovering from a data center or server failure.
Current VDI deployments often boot a large set of identical virtual desktops, for example, based upon a “gold master” image that is used to create a consistent base configuration for virtual desktops across an organization. Use of such a gold master image results in the storage of multiple boot images (e.g., allocated for each virtual desktop) that contain the same or similar data (originating from the gold master image) in an organization's storage area network (SAN). However, the occurrence of a boot storm (and other previously mentioned I/O storms) can unduly stress the network resources of a data center as servers continuously and repetitively request access to the SAN in order to read the respective boot images (or other data related to other types of I/O storms). This results in unacceptable delays suffered by users as they wait for their virtual desktops to boot (or receive data for other types of I/O storms).
SUMMARY
One or more embodiments of the present invention provide methods that reduce the need for a server to access a networked disk array during I/O intensive processes, such as a boot storm. Such methods may take advantage of high speed local persistent storage devices in the server, such as a solid state device drive, by maintaining a cache structure that stores data blocks that are repeatedly accessed by different virtual desktops during a boot storm or other I/O storm. For example, during a boot storm, each of the different virtual desktops running on the server may access its own unique boot image in the networked disk array. However, contents in each such unique boot image may be identical or similar to boot images of the other virtual desktops, thereby enabling such a cache structure to provide efficiencies by reducing network accesses.
One method, according to an embodiment, for obtaining data for a virtual machine in a server supporting a hypervisor for running virtual machines is performed by a cache filter component implemented in an I/O virtualization layer of a standard I/O stack of the hypervisor. As further discussed below, the I/O virtualization layer sits above a file system layer of the standard I/O stack, such that any file system or file system protocol, such as VMFS, NFS and other known file system protocols, may be implemented as the file system layer of the hypervisor without affecting the capabilities of the cache filter component. The cache filter component begins by first intercepting a read request from a virtual machine that is intended for transmission to a virtual drive provided by the hypervisor. It then confirms that the read request corresponds to a specific content type (e.g., such as data of a boot image) in the virtual drive and identifies an entry in a cache index that 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 (such as a solid state drive, persistent disk or non-persistent memory) accessible to the server. The cache filter component then circumvents (e.g., redirects I/O away from) the 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. Once the cache filter component receives the data block from the driver for the local memory, it can then transmit the data block to the virtual machine in response to the read request.
In another method, the cache filter component maintains a cache structure in the server by receiving a read request from a virtual machine intended for transmission to a virtual drive by the hypervisor and transmitting the read request to the 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. When the cache filter component receives a data block through the standard I/O stack from the disk array in response to the read request, it computes a hash value based on the received data block and identifies an entry in a hash table, wherein the entry comprises a hash value field matching the computed hash value and an address reference to a second data block stored in a cache maintained in a local memory (such as a solid state drive) in the server. The cache filter component then inserts 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 second data block stored in the cache.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 depicts a block diagram of a data center architecture supporting a virtual desktop infrastructure (VDI).
FIG. 2A depicts a block diagram of a server utilizing a first virtualization architecture in a data center supporting VDI.
FIG. 2B depicts a block diagram of a server utilizing a second virtualization architecture in a data center supporting VDI.
FIG. 3 depicts a block diagram of a content aware cache structure in a server supporting virtual desktops.
FIG. 4 depicts a flow diagram for booting a virtual desktop utilizing a content aware cache structure.
DETAILED DESCRIPTION
FIG. 1 depicts a block diagram of a data center architecture supporting a virtual desktop infrastructure (VDI). The data center of FIG. 1 comprises a plurality of servers 100 1-100 N constructed on server class hardware platform, such as hardware platform 102. As further detailed below, hardware platform 102 may be, for example, an x86 architecture platform that includes a hard drive, network adapter, system memory, processor and other I/O devices such as a mouse, keyboard and the like.
A virtualization software layer, also referred to hereinafter as a hypervisor 104, is installed on top of hardware platform 102. Hypervisor 104 supports a virtual machine execution space 106 within which multiple virtual desktops (i.e., virtual machines running desktop operating systems and applications) may be concurrently instantiated and executed. As shown, virtual execution space 106 includes virtual desktops 108 1-108 N. In one embodiment as further discussed in FIG. 2A, for each virtual desktop running on server 100 1, hypervisor 104 provides a corresponding virtual machine monitor (VMM) 110 1-110 N that implements virtualization support such as emulated hardware to coordinate operations between hypervisor 104 and the virtual desktop.
Each of servers 100 1-100 N are further networked to an enterprise-level storage system such as disk array 112. Examples of disk array 112 may be a network attached storage (NAS) array, storage area network (SAN) array or any other similar disk array. Disk arrays such as SAN arrays typically provide block-level access to their stored data through SCSI-based protocols such as Fibre Channel and iSCSI. Disk array 112 comprises a storage system manager 114 that serves as the communication agent (to the outside world) for disk array 112 and implements a virtualization of the physical, typically disk drive-based storage units, referred to in FIG. 1, as spindles 116 1-116 N, that reside in disk array 112. Storage system manager 114 abstracts away the complexities of targeting read and write operations to the physical addresses of the actual spindles by exposing to servers 100 1-100 N the ability to view the aggregate physical storage space provided by the disk drives as a contiguous logical storage space that is divided into set of virtual partitions known as LUNs (logical unit numbers) 118 1-118 N. Storage system manager 114 provides servers 100 1-100 N the ability to transmit data transfer and control commands (e.g., read and write commands, etc.) to disk array 112 at the LUN “block” level, where a block is a particular contiguous region in a particular LUN. For example, a LUN block may be represented as <LUN ID, offset, length> and server 100 1 may transmit to disk array 112 a read or write operation for block <LUN ID, offset, length> in the form of a SCSI operation. The embodiment of FIG. 1 depicts LUN 118 1 maintained by disk array 112 that stores a virtual drive image 120 comprising data that corresponds to an emulated local hard drive for virtual desktop 108 1 (e.g., in VMM 110 1). Virtual drive image 120 further comprises a boot image 122 used to boot virtual desktop 108 1. It should be recognized that, in exemplary embodiments, disk array 112 stores a virtual drive image similar to virtual drive image 120 for each of the other virtual desktops 108 2-108 N in one of LUNs 118 1-118 N and that each such virtual drive image comprises its own boot image, similar to boot image 122, that contains the same (or substantially similar) data as boot image 122 (e.g., in order to maintain and manage consistent core boot images across the virtual desktops of an organization).
A virtual desktop management server (or servers) 124 placed between servers 100 1-100 N and user terminals 126 manages the provisioning of virtual desktops on servers 100 1-100 N to user terminals 126 and provides additional administrative and management capabilities such as boot image (e.g., updates, patches, etc.) management and desktop security policies. User terminals 126 may execute a “thin client” application that interacts with virtual desktop management server 124 to connect to a user's virtual desktop and render the virtual desktop's graphical user interface. Alternatively, a user terminal may access a virtual desktop through web browser access or through other similar means. It should be recognized that various modifications and changes may be made to the data center embodiment of FIG. 1 consistent with the teachings set forth herein. For example, servers 100 1-100 N and may be connected through various different known topologies and technologies (e.g., switches, etc.) to multiple storage systems similar to disk array 112. One alternative embodiment may implement virtual desktop management server 124 as a virtual machine running on one of servers 100 1-100 N. A further alternative embodiment may not necessarily utilize a separate virtual desktop management server. One example of virtual desktop management server 124 that may be used in embodiments is the VMware Virtual Desktop Manager product, which is commercially available from VMware, Inc. of Palo Alto, Calif.
FIG. 2A depicts a block diagram of a server utilizing a first virtualization architecture in a data center supporting VDI. As previously discussed in the context of FIG. 1, hardware platform 102 of server 100 may include a local storage unit 200, such as a hard drive, network adapter (NIC 202), system memory 204, processor (CPU 206) and other I/O devices such as, for example, a mouse and keyboard (not shown in FIG. 2A). Hardware platform 102 further includes a host bus adapter (HBA 208) that networks server 100 to disk array 112 as well as a “content cache device” 210. As used herein, a “content cache device” refers to a solid state drive (SSD), also referred to as an enterprise flash drive (EFD), standard RAM memory, local hard drives, disk array LUNs, or any other persistent or non-persistent memory or secondary storage, local or remote, that may be used as a “content aware” cache as further described herein. In one embodiment, content cache device 210 is a local SSD, separate from local storage unit 200 or system memory 204, that provides server 100 with an additional high speed persistent local storage unit that can be leveraged, for example, to increase the performance of less commonly occurring, but I/O intensive, processes without competing for additional system memory 204 and local storage unit 200 resources with other more commonly occurring routines that generally support the running of virtual desktops on server 100. One such commonly occurring, but I/O intensive process is the boot-up process for virtual desktops which results in a “boot storm” as previously discussed when multiple virtual desktops are simultaneously attempting to boot.
Hypervisor 104, installed on top of hardware platform 102, supports virtual machine execution space 106 within which multiple virtual desktops 108 1-108 N may be concurrently instantiated and executed. For each of virtual desktops 108 1-108 N, hypervisor 104 implements a corresponding virtual machine monitor (VMM) 110 1-110 N that includes a virtual hardware platform (i.e., virtual hardware platforms 212 1-212 N) of emulated hardware, such as virtual NIC 218, virtual CPU 220, guest physical RAM 222 and local virtual hard drive 224 for virtual desktop 108 1. In one embodiment, virtual hardware platform 212 1 may function as an equivalent of a standard x86 hardware architecture such that any x86 supported desktop operating system, e.g., Microsoft Windows®, Linux®, Solaris®x86, NetWare, FreeBSD, etc., may be installed as guest operating system 214 (which includes a file system 215) to execute any supported application in application layer 216. As further depicted, local virtual hard drive 224 includes a boot image 228 that guest operating system 214 accesses upon a boot process. As further detailed below, during a boot process, for example, although guest operating system 214 appears to be transmitting read commands to local hard drive 224 to read boot image 228, the boot image read requests are typically passed by virtual local hard drive 224 through an I/O stack in hypervisor 104 to an HBA device driver 238 in order to read the actual data blocks residing in boot image 122 of virtual drive image 120 residing in LUN 118 1 of networked disk array 112, which corresponds to local virtual hard drive 224.
Generally, file system operations (e.g., file read or file write commands) issued by guest operating system 214 appear, from the perspective of guest operating system 214, to be routed to local virtual hard drive 224 but are actually translated and passed through various layers in the I/O stack of hypervisor 104, as depicted, for example, in FIG. 2A. Assuming that local virtual hard drive 224 supports the SCSI standard, a SCSI virtualization layer 230 in hypervisor 104 receives a SCSI command from local virtual hard drive 224 in VMM 110 1 and translates the command into file system operations that are understood by a virtual machine file system (VMFS) 232. One example of a VMFS 232 is the VMware VMFS which is commercially available from VMware, Inc., although it should be recognized that other known file systems such as NFS and the like may be implemented in various embodiments. VMFS 232 generally manages the creation, use, and deletion of files stored on the disk array 112 through LUN abstractions. SCSI virtualization layer 230 then issues these VMFS file system operations to the VMFS 232 which, in turn, converts the VMFS file system operations to LUN block operations and transmits the LUN block operations to a logical volume manager 234. Logical volume manager 234 issues raw SCSI operations to a device access layer 236 based on the LUN block operations. Device access layer 236 identifies networked disk array 112 as the hardware storage resource corresponding to the received raw SCSI operations and then applies command queuing and scheduling policies to the raw SCSI operations. HBA device driver 238 in device driver layer 240 communicates with HBA 208 and transmits the raw SCSI operations from the device access layer 236 to HBA 208 to be transmitted to disk array 112. Once storage system manager 114 of disk array 112 (depicted in FIG. 1) receives the raw SCSI operations (i.e., LUN block level operations), it resolves the raw SCSI operations into the appropriate locations within the spindles of disk array 112 that must be accessed, accesses the data at the appropriate locations and performs requested operation (i.e., read or write) and transmits a response back to guest operating system 214 in virtual desktop 108 1 (e.g., through HBA 208 and back up the I/O stack in hypervisor 104).
FIG. 2A further depicts a “content aware” cache filter 242 in SCSI virtualization layer 230. In one embodiment, content aware cache filter 242 is configured to engage during a boot storm (i.e., the content aware cache filter is “aware” of read operations corresponding to the booting process) to reduce the repetition of network accesses by server 100 to read the data blocks of boot images of virtual drive images (e.g., such as boot image 122 of virtual drive image 120) in LUNs 118 1-118 N of disk array 112. For example, when virtual desktops 108 1-108 N access the local boot images (e.g., boot image 228) in their local virtual hard drives (e.g., local virtual hard drive 224) during a boot storm, the actual data blocks of the boot images in their corresponding virtual drive images that are stored in LUNs 118 1-118 N of disk array 112 often contain the same data due to the similarity of boot images across virtual desktops that is imposed, for example, by an organization's desktop management policy. In the embodiment of FIG. 2A, content aware cache filter 242 intercepts SCSI read commands from VMMs 110 1-110 N (corresponding to virtual desktops 108 1-108 N) and filters them to determine which read commands correspond to requests for data blocks in a virtual desktop's respective boot image 228, residing on its local virtual hard drive 224 (but which are actually stored in boot image 122 of virtual drive image 120, for example, for virtual desktop 108 1). For example, content aware cache filter 242 may recognize offsets in read operations that correspond to data blocks in boot image 228. Upon intercepting such filtered read commands, content aware cache filter 242 circumvents (e.g., redirects I/O away from) the I/O stack layers of hypervisor 104 and directly communicates with content cache device 210 (via cache device driver 244) to determine whether the requested data blocks are present in a cache structure locally stored in content cache device 210. In this manner, content aware cache filter 242 is agnostic with respect to (i.e., not dependent upon) any implementation of a file system layer (e.g., VMFS, NFS or any other known file system protocols, etc.) situated below content aware cache filter 242 in the I/O stack of hypervisor 104 and any technical requirements or peculiarities related thereto.
It should further be recognized that the various terms, layers and categorizations used to describe the virtualization components in FIG. 2A may be referred to differently without departing from their functionality or the spirit or scope of the invention. For example, although a SCSI virtualization layer 230 is described in the context of FIG. 2A, it should be recognized that any other hardware interface standards may be utilized in alternative embodiments for an analogous I/O virtualization layer, including IDE, ATA, ATAPI, and any other I/O interfaces for reading and writing blocks of data. Similarly, virtual hardware platforms 212 1-212 N may also be considered to be separate from VMMs 110 1-110 N, and VMMs 110 1-110 N may be considered to be separate from hypervisor 104 or part of corresponding virtual desktops 108 1-108 N. One example of hypervisor 104 that may be used is included as a component of VMware's ESX™ product, which is commercially available from VMware, Inc. It should further be recognized that other virtualized computer systems consistent with the teachings herein are contemplated, such as hosted virtual machine systems, where the hypervisor is implemented in conjunction with a host operating system. It should further be recognized that although FIG. 2A refers to the booting process and a boot image 228, in alternative embodiments, content aware cache filter 242 may be configured to engage when virtual desktops 108 1-108 N access other types of data in their local virtual hard drives (e.g., local virtual hard drive 224), such as virus scans and updates and other types of data, wherein the blocks of data stored in the corresponding virtual drive images in LUNs 118 1-118 N of disk array 112 often contain the same data due to the similar use of such data across virtual desktops.
FIG. 2B depicts a block diagram of a server utilizing a second virtualization architecture in a data center supporting VDI. Similar to FIG. 2A, server 100 includes a hardware platform 102 comprising local storage unit 200, NIC 202, system memory 204, CPU 206, HBA 208, content cache device 210 and other I/O devices. A hypervisor 258 is installed on top of hardware platform 102 and supports virtual machine execution space 106 within which multiple virtual desktops 108 1-108 N may be concurrently instantiated and executed. Each of virtual desktops 108 1-108 N, supports a guest operating system 246 1-246 N such as Microsoft Windows®, Linux®, Solaris® x86, NetWare, FreeBSD or any other desktop operating system, which includes, for example, a corresponding file system 247 1-247 N. Unlike the virtualization architecture of FIG. 2A, each guest operating system 246 1-246 N comprises a virtual device driver layer 248 1-248 N that emulates communication with hardware platform 102 but actually corresponds with a root virtual machine 250 (also sometimes referred to as a “domain 0” virtual machine), via virtual I/O paths 252 through hypervisor 258, in order to perform I/O.
Root virtual machine 250 has unique and special privileges to communicate with hardware platform 102 on behalf of virtual desktops 108 1-108 N. Root virtual machine 250 comprises an operating system kernel 254 that has a file system 253 that maps virtual disk devices accessible in virtual desktops 108 1-108 N (e.g., accessed as file systems 247 1-247 N) to backing files on a storage volume, such as disk array 112 and a physical device driver layer 256 to directly correspond with the devices in hardware platform 102 (e.g., direct I/O paths 260). For example, physical device driver layer 256 comprises HBA device driver 238 that communicates with HBA 208 to access data stored in disk array 112 and a NIC driver 258 that interacts with NIC 202 for perform network communications. Additionally, physical device driver layer 256 further comprises a cache device driver 244 that, as in FIG. 2A, communicates with content cache device 210.
Operating system kernel 254 further includes content aware cache filter 242, which receives I/O requests through hypervisor 258 from virtual desktops 108 1-108 N (e.g., through file system 253). Similar to the description of the content aware cache filter in FIG. 2A, in one embodiment, content aware cache filter 242 is configured to engage during a boot storm to reduce the repetition of network accesses by server 100 to read the data blocks of boot images of different virtual drive images in LUNs 118 1-118 N of disk array 112 that contain the same data. Content aware cache filter 242 intercepts read commands routed from virtual desktops 108 1-108 N to root virtual machine 250 and filters them to determine which read commands correspond to requests for data blocks in a virtual desktop's respective boot image (or other specified type of content). Upon intercepting such filtered read commands, content aware cache filter 242 directly communicates with content cache device 210 (via cache device driver 244) to determine whether the requested data blocks are present in a cache structure locally stored in content cache device 210.
FIG. 3 depicts a block diagram of a content aware cache structure in a server supporting virtual desktops. In the embodiment of FIG. 3, content cache device 210 stores a cache index file 300 and cache memory 305. Entries in cache index file 300 are searched by content aware cache filter 242 to determine whether read requests from a virtual desktop during a boot-up process (or other specified type of content) can be serviced by data stored in cache memory 305 rather than through network communications with disk array 112. Each entry of cache index file 300 comprises a virtual desktop ID field 310, virtual disk offset field 315, hash value field 320 and address pointer field 325.
An entry's virtual desktop ID field 310 enables content aware cache filter 242 to determine whether the entry pertains to a virtual desktop that has issued a boot related read command (or read command for any other specified content type, in other embodiments) that has been intercepted by content aware cache filter 242. If the identification of the virtual desktop issuing the read command matches the virtual desktop identification field 310 of an entry, then the entry's virtual desktop offset field 315 enables content aware cache filter 242 to determine whether the entry pertains to the actual block (or blocks) requested in the read command. Hash value field 320 of an entry contains a hash value of the data block (or blocks) referenced by the entry's address pointer field 325 that is stored in cache memory 305. In one embodiment, the hash value is computed using SHA1 or SHA256 algorithms (although any other known hash algorithms or techniques may be used consistent with the teachings herein). Hash value field 320 enables content aware cache filter 242 to determine whether a data block that has been currently read from disk array 112 during, for example, a boot process for one virtual desktop has already been stored in cache memory 305 (e.g., during a previous boot process for a different virtual desktop). By computing the hash value for such a currently read data block, content aware cache filter 242 can add a new entry into cache index file 300 that points to a pre-existing data block in cache memory 305 if it finds a match of the hash value in a hash value field 230 of one of the entries in cache index file 300 (see, e.g., multiple address pointers of multiple entries point to common boot image data blocks A, B, C, D in cache memory 305 as depicted in FIG. 3).
It should be recognized that many alternative or additional cache structures and techniques may be implemented in embodiments to increase performance of the cache structure, consistent with the teachings herein. For example, rather than utilizing a list of entries as depicted in FIG. 3, alternative embodiments may utilize various known data structures and algorithms to combine repeated fields values, increase efficiencies when searching the entries or when adding or removing entries. One alternative embodiment, for example, may utilize a “per-virtual desktop” index file comprising entries with fields such as virtual desktop ID, virtual disk offsets and hash values (or address pointers) in order to process received SCSI read commands from virtual desktops, and a separate “per host” hash table comprising hash values and corresponding address pointers to cached data (e.g., to access actual cached data and to process new un-cached data blocks received from disk array 112). One alternative embodiment may further include a frequency access field for each entry to assist content aware cache filter 242 in determining entries eligible for removal (i.e., least accessed, etc.) in the event a new entry should be added and cache index file 300 is full. Similarly, another alternative embodiment may further include a generation number field for each entry indicating a version or generation number for the entry's corresponding data block (or blocks) stored in cache memory 305. For example, if an organization's administrator updates boot image 122 (e.g., applying a patch, upgrade, etc.) in disk array 112, the generation number associated with boot image 122 may be increased such that content aware cache filter 242 can later recognize that it needs to revalidate the corresponding entries in cache index file 300 and the corresponding data blocks in cache memory 305.
FIG. 4 depicts a flow diagram for booting a virtual desktop utilizing a content aware cache structure. However, it should be recognized that the steps of FIG. 4 may similarly be utilized for processes for other specified content other than boot data, including for example, anti-virus checks and updates, data back-up processes and other similar I/O storm related content. In step 400, content aware cache filter 242 loads cache index file 300 from content cache device 210 into system memory 204 (e.g., allocated to hypervisor 104). In step 405, as previously discussed, content aware cache filter 242 intercepts an incoming read command from virtual desktop 108 x that, for example, has been transmitted to SCSI virtualization layer 230 of the virtualization architecture of FIG. 2A (or alternatively, has been received by root virtual machine 250 in the virtualization architecture of FIG. 2B). If, in step 410, the intercepted read command corresponds to reading boot image 228 in local virtual hard drive 224 of virtual desktop 108 x (i.e., the read command is a request to read a data block to boot up virtual desktop 108 x), then in step 415, content aware cache filter 242 identifies all entries in cache index file 300 with a virtual desktop ID 305 that matches virtual desktop 108 x. In step 420, if any identified entry in step 415 has a virtual disk offset 315 that matches the offset in the intercepted read command, then in step 425, content aware cache filter 242 circumvents the standard I/O stack of hypervisor 104 (e.g., as depicted in FIG. 2A) and reads the stored data block (or blocks) in cache memory 305 corresponding to address pointer 325 in such an identified entry in cache index file 300. In step 430, content aware cache filter 242 then transmits the data block read from cache memory 305 to virtual desktop 108 x in the response to the read command intercepted in step 405.
If, however, in step 420, no entry in cache index file 300 matches the offset of the read command, then in step 435, content aware cache filter 242 releases the intercepted read command back to SCSI virtualization layer 230 to process normally through the I/O stack of hypervisor 104, as depicted in FIG. 2A (or releases the read command to the physical device layer 256 as depicted in FIG. 2B). For example, in the embodiment of FIG. 2A, if the read command corresponds to reading a data block in boot image 228 of virtual local hard drive 224 of virtual desktop 108 x in step 410, then the read command is ultimately passed through the I/O stack of hypervisor 104 to HBA driver 238 in order to read the data block (or blocks) from boot image 122 of virtual drive image 120 in LUN 118 1 in networked disk array 112. Upon receiving the read data block back from disk array 112 at SCSI virtualization layer (i.e., back up through the I/O stack of hypervisor 104), content aware cache filter 242 intercepts the received data block (or blocks) in step 440 and determines, in step 445, whether the received data block (or blocks) corresponds to a read command for boot image 228 of local virtual hard drive 224 (i.e., the data block has been read from boot image 122 in disk array 112).
If the received data block (or blocks) does correspond to a read command for boot image 228, then in step 450, content aware cache filter 242 computes a hash value on the received data block (or blocks). In step 455, content aware cache filter 242 determines whether the computed hash value matches a hash value field 320 in any entry of cache index file 300. If there is a matching entry, content aware cache filter 242 adds a new entry into cache index file 300 with an address pointer 325 that points to same data block in cache memory 305 as address pointer 325 of the matched entry. The new entry's hash value field 320 contains the computed hash value, its virtual disk offset field 315 contains the offset identified in step 420, and its virtual disk ID field 310 contains virtual desktop 108 x. In step 475, content aware cache filter 242 completes its filtering process by transmitting the received data block to virtual desktop 108 x in response to the read command. If, however, there is no matching entry in step 455, then the data block has not been previously stored in cache memory 305 and content aware cache filter 242 adds the received data block into cache memory 305 in step 465. In step 470, adds a corresponding new entry into cache index file 300 with address pointer 325 pointing to the added data block in cache memory 305 before completing the filtering process in step 475.
It should be recognized that various modifications and changes may be made to the specific embodiments described herein without departing from the broader spirit and scope of the invention as set forth in the appended claims. For example, while the foregoing discussions and embodiments have detailed content aware cache filters and cache structures that focus on boot-up processes and boot images, it should be recognized that the caching techniques herein may also be used to reduce I/O access to networked resources, such as disk array 112, for any other purpose. For example, alternative embodiments may use a content aware cache filter as discussed herein to provide anti-virus scans and updates or data backup rather than data blocks relating to boot images. It should be recognized that embodiments may implement the “content aware” cache structures described herein in a variety of ways, such that the cache structure is accessed for specific purposes or specific types of content (e.g., booting, anti-virus, data backup, etc.). In one such embodiment, the content aware cache filter checks the offsets of intercepted read commands to determine whether the offsets relate to data of a specified content type. Similarly, it should be recognized that a content cache device as described herein may utilize any storage hardware technology of the service, such as SSDs, standard RAM memory, local hard drives, disk array LUNs, and any other persistent or non-persistent, local or remote, memory or storage. In an embodiment, a combination of persistent (e.g., SSD, local hard drive, disk array LUN, etc.) and non-persistent memories (RAM memory, etc.) may be combined to provide different functions of the cache structure as discussed herein. For example, in one such embodiment, an offline process computes and stores a “digest” file for each virtual drive image (such as virtual drive 120) in disk array 112. Such a digest file comprises hash values for the blocks in the virtual drive image (and other metadata, bitmaps, etc.). When a virtual desktop is powered on, the digest file corresponding to the virtual desktop may be loaded into RAM memory and the hash values therein may serve as a “per virtual desktop” index file for the virtual desktop, which assists in referencing hash values in a separate “per host” hash table that includes address pointers to actual cached data (e.g., in an SSD, local RAM memory or other local memory). Further, it should be recognized that the I/O stacks of a hypervisor as depicted in FIGS. 2A and 2B are merely exemplary and that alternative embodiments may utilize different virtualization architectures (e.g., full virtualization architectures, paravirtualization architectures, etc.). In such alternative virtualization architectures, it should be recognized that the “content aware” filtering techniques described herein would be inserted into an I/O stack of the hypervisor (or elsewhere in such virtualization architectures) at an appropriate point where the filtering techniques are able to read and write at offsets in virtual disks. Additionally, while FIGS. 1 and 2A and the discussion herein have depicted and described separate boot images (e.g., boot image 122) for each virtual desktop, it should be recognized that, in alternative embodiments, such boot images may further reference data blocks residing a separate gold master image residing in disk array 112 (e.g., rather than replicating such common data blocks for boot image in each separate virtual drive image stored disk array 112). Furthermore, it should be recognized that while the embodiments herein have focused upon processing read operations, for example, during a boot up process, similar cache structure techniques may be used for write operations.
The various embodiments described herein may employ various computer-implemented operations involving data stored in computer systems. For example, these operations may require physical manipulation of physical quantities usually, though not necessarily, these quantities may take the form of electrical or magnetic signals where they, or representations of them, are capable of being stored, transferred, combined, compared, or otherwise manipulated. Further, such manipulations are often referred to in terms, such as producing, identifying, determining, or comparing. Any operations described herein that form part of one or more embodiments of the invention may be useful machine operations. In addition, one or more embodiments of the invention also relate to a device or an apparatus for performing these operations. The apparatus may be specially constructed for specific required purposes, or it may be a general purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
The various embodiments described herein may be practiced with other computer system configurations including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
One or more embodiments of the present invention may be implemented as one or more computer programs or as one or more computer program modules embodied in one or more computer readable media. The term computer readable medium refers to any data storage device that can store data which can thereafter be input to a computer system computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer. Examples of a computer readable medium include a hard drive, network attached storage (NAS), read-only memory, random-access memory (e.g., a flash memory device), a CD (Compact Discs) CD-ROM, a CD-R, or a CD-RW, a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices. The computer readable medium can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
Although one or more embodiments of the present invention have been described in some detail for clarity of understanding, it will be apparent that certain changes and modifications may be made within the scope of the claims. Accordingly, the described embodiments are to be considered as illustrative and not restrictive, and the scope of the claims is not to be limited to details given herein, but may be modified within the scope and equivalents of the claims. In the claims, elements and/or steps do not imply any particular order of operation, unless explicitly stated in the claims.
Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the appended claims(s).

Claims (25)

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. The method of claim 1, wherein the specific content type relates to data in a boot image in the virtual drive.
3. The method of claim 2, wherein the server is networked to a disk array that stores an actual boot image comprising data blocks of the boot image in the virtual drive.
4. The method of claim 3, wherein the standard I/O stack of the hypervisor converts read requests received from virtual machines into read operations for the disk array.
5. The method of claim 1, wherein the local memory is a content cache device in the server.
6. The method of claim 1, wherein the reference is a hash value corresponding to an entry in a hash table comprising an address to the data block in the cache.
7. The method of claim 1, wherein the content aware cache filter component sits above a file system layer of the standard I/O stack.
8. The method of claim 7, wherein the I/O virtualization layer is a SCSI virtualization layer and the file system layer is a virtual machine file system layer.
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.
10. The method of claim 9, wherein the reference is the hash value field in the identified entry in the hash table.
11. The method of claim 9, wherein the cache index is stored in the disk array, associated with the virtual drive, and loaded into the local memory of the server upon receiving the read request.
12. The method of claim 9, wherein the read request corresponds to a boot image in the virtual drive.
13. The method of claim 9, wherein the local memory is a content cache device in the server.
14. The method of claim of claim 9, further comprising the steps of:
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.
15. The method of claim 14, wherein the reference to the data block stored in the cache is the hash value in the inserted new entry in the hash table.
16. The method of claim 9, wherein the steps are performed by a content aware cache filter component 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.
17. The method of claim 16, wherein the I/O virtualization layer is a SCSI virtualization layer and the file system layer is a virtual machine file system layer.
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.
19. The computer-readable storage medium of claim 18, wherein the reference to the data block is a hash value corresponding to an entry in a hash table comprising an address to the data block in the cache.
20. The computer-readable storage medium of claim 18, further including instructions that, when executed by the computer processor, performs the steps of:
receiving a second read request from a second virtual machine intended for transmission to the virtual drive;
transmitting the second read request to the standard I/O stack, wherein the standard I/O stack converts the read request into read operations for a disk array networked to the server;
receiving a second data block through the standard I/O stack from the disk array in response to the second read request;
computing a hash value based on the received second data block;
identifying an entry in a hash table wherein the entry comprises a hash value field matching the computed hash value and an address reference to a third data block stored in a cache maintained in the local memory in the server;
inserting a new entry into a cache index, wherein the new entry comprises a virtual machine identifier corresponding to the second virtual machine, a virtual drive offset value corresponding to an offset in the second read request, and a reference to the third data block stored in the cache.
21. The computer-readable storage medium of claim 20, wherein the reference to the third data block stored in the cache is the hash value field in the identified entry in the hash table.
22. The computer-readable storage medium of claim 20, further including instructions that, when executed by the computer processor, performs the steps of:
receiving a third read request from a third virtual machine intended for transmission to the virtual drive;
receiving a fourth data block through the standard I/O stack from the disk array in response to the third read request;
confirming that a hash value of the fourth data block does not correspond to any entry in the hash table;
storing the received fourth data block into a location in the cache;
inserting a new entry into the hash table, wherein the new entry comprises the hash value of the fourth data block and an address reference to the location in the cache; and
adding a second new entry into the cache index, wherein the second new entry comprises a virtual machine identifier corresponding to the third virtual machine, a virtual drive offset value corresponding to an offset in the third read request, and a reference to the fourth data block stored in the cache.
23. The computer-readable storage medium of claim 22, wherein the reference to the fourth data block stored in the cache is the hash value in the inserted new entry in the hash table.
24. The computer-readable storage medium of claim 18, wherein the local memory is a content cache device in the server.
25. The computer-readable storage medium of claim 18, wherein the specific content type relates to data in a boot image in the virtual drive.
US12/767,581 2010-04-26 2010-04-26 File system independent content aware cache Active 2031-04-28 US8312471B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/767,581 US8312471B2 (en) 2010-04-26 2010-04-26 File system independent content aware cache
US13/675,560 US8776089B2 (en) 2010-04-26 2012-11-13 File system independent content aware cache

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/767,581 US8312471B2 (en) 2010-04-26 2010-04-26 File system independent content aware cache

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/675,560 Continuation US8776089B2 (en) 2010-04-26 2012-11-13 File system independent content aware cache

Publications (2)

Publication Number Publication Date
US20110265083A1 US20110265083A1 (en) 2011-10-27
US8312471B2 true US8312471B2 (en) 2012-11-13

Family

ID=44816884

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/767,581 Active 2031-04-28 US8312471B2 (en) 2010-04-26 2010-04-26 File system independent content aware cache
US13/675,560 Active 2030-06-08 US8776089B2 (en) 2010-04-26 2012-11-13 File system independent content aware cache

Family Applications After (1)

Application Number Title Priority Date Filing Date
US13/675,560 Active 2030-06-08 US8776089B2 (en) 2010-04-26 2012-11-13 File system independent content aware cache

Country Status (1)

Country Link
US (2) US8312471B2 (en)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238775A1 (en) * 2010-03-23 2011-09-29 Riverbed Technology, Inc. Virtualized Data Storage Applications and Optimizations
CN103870312A (en) * 2012-12-12 2014-06-18 华为技术有限公司 Method and device for establishing storage cache shared by virtual machines
US20140237183A1 (en) * 2011-07-07 2014-08-21 Atlantis Computing, Inc. Systems and methods for intelligent content aware caching
US9069472B2 (en) 2012-12-21 2015-06-30 Atlantis Computing, Inc. Method for dispersing and collating I/O's from virtual machines for parallelization of I/O access and redundancy of storing virtual machine data
US9250946B2 (en) 2013-02-12 2016-02-02 Atlantis Computing, Inc. Efficient provisioning of cloned virtual machine images using deduplication metadata
US9277010B2 (en) 2012-12-21 2016-03-01 Atlantis Computing, Inc. Systems and apparatuses for aggregating nodes to form an aggregated virtual storage for a virtualized desktop environment
US9311252B2 (en) 2013-08-26 2016-04-12 Globalfoundries Inc. Hierarchical storage for LSM-based NoSQL stores
US9372865B2 (en) 2013-02-12 2016-06-21 Atlantis Computing, Inc. Deduplication metadata access in deduplication file system
US20160188356A1 (en) * 2014-12-31 2016-06-30 American Megatrends, Inc. Thin client computing device having touch screen interactive capability support
US9471590B2 (en) 2013-02-12 2016-10-18 Atlantis Computing, Inc. Method and apparatus for replicating virtual machine images using deduplication metadata
TWI564803B (en) * 2014-02-28 2017-01-01 桑迪士克科技有限責任公司 Systems and methods for storage virtualization
US10754660B2 (en) * 2018-10-10 2020-08-25 International Business Machines Corporation Rack level server boot
US11397649B2 (en) 2019-10-22 2022-07-26 Cohesity, Inc. Generating standby cloud versions of a virtual machine
US11481287B2 (en) 2021-02-22 2022-10-25 Cohesity, Inc. Using a stream of source system storage changes to update a continuous data protection-enabled hot standby
US11487549B2 (en) * 2019-12-11 2022-11-01 Cohesity, Inc. Virtual machine boot data prediction
US11567792B2 (en) 2019-02-27 2023-01-31 Cohesity, Inc. Deploying a cloud instance of a user virtual machine
US11573861B2 (en) 2019-05-10 2023-02-07 Cohesity, Inc. Continuous data protection using a write filter
US11614954B2 (en) 2020-12-08 2023-03-28 Cohesity, Inc. Graphical user interface to specify an intent-based data management plan
US11768745B2 (en) 2020-12-08 2023-09-26 Cohesity, Inc. Automatically implementing a specification of a data protection intent
US11782886B2 (en) 2018-08-23 2023-10-10 Cohesity, Inc. Incremental virtual machine metadata extraction
US11841953B2 (en) 2019-10-22 2023-12-12 Cohesity, Inc. Scanning a backup for vulnerabilities
US11914480B2 (en) 2020-12-08 2024-02-27 Cohesity, Inc. Standbys for continuous data protection-enabled objects

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8453145B1 (en) * 2010-05-06 2013-05-28 Quest Software, Inc. Systems and methods for instant provisioning of virtual machine files
US20110307660A1 (en) * 2010-06-14 2011-12-15 Chien-Hung Yang Redundant array of independent disks system, method for writing data into redundant array of independent disks system, and method and system for creating virtual disk
US8863117B2 (en) * 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
US9229757B2 (en) * 2010-07-19 2016-01-05 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
US9547562B1 (en) 2010-08-11 2017-01-17 Dell Software Inc. Boot restore system for rapidly restoring virtual machine backups
US8874823B2 (en) * 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8996807B2 (en) 2011-02-15 2015-03-31 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a multi-level cache
US9003104B2 (en) * 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9841985B2 (en) * 2011-04-12 2017-12-12 Red Hat Israel, Ltd. Storage block deallocation in virtual environments
DE102011102090B4 (en) 2011-05-19 2018-02-08 Khs Corpoplast Gmbh Method for cleaning and / or disinfecting a device for producing containers filled with a liquid product and apparatus
US8583852B1 (en) * 2011-09-01 2013-11-12 Symantec Operation Adaptive tap for full virtual machine protection
US9027019B2 (en) * 2011-09-22 2015-05-05 Cisco Technology, Inc. Storage drive virtualization
US20130093776A1 (en) * 2011-10-14 2013-04-18 Microsoft Corporation Delivering a Single End User Experience to a Client from Multiple Servers
US9680894B2 (en) * 2011-10-14 2017-06-13 Bally Gaming, Inc. Multiple virtual machine memory usage reduction system and method
US20130117744A1 (en) * 2011-11-03 2013-05-09 Ocz Technology Group, Inc. Methods and apparatus for providing hypervisor-level acceleration and virtualization services
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US9116812B2 (en) * 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
JP5290446B2 (en) * 2012-02-28 2013-09-18 株式会社シー・オー・コンヴ Network boot system
US9760661B2 (en) * 2012-04-26 2017-09-12 Hewlett-Packard Development Company, L.P. Providing virtual optical disk drive
US9703482B2 (en) * 2012-06-29 2017-07-11 Vmware, Inc. Filter appliance for object-based storage system
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US9135040B2 (en) 2012-08-03 2015-09-15 International Business Machines Corporation Selecting provisioning targets for new virtual machine instances
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
US9454487B2 (en) 2012-08-27 2016-09-27 Vmware, Inc. Transparent host-side caching of virtual disks located on shared storage
US8954718B1 (en) * 2012-08-27 2015-02-10 Netapp, Inc. Caching system and methods thereof for initializing virtual machines
US10346095B2 (en) * 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US10120700B1 (en) * 2012-10-02 2018-11-06 Tintri Inc. Using a control virtual disk for storage management
US8949320B2 (en) * 2012-11-30 2015-02-03 Red Hat Israel, Ltd. Managing a distributed cache for virtual machines
US8924478B2 (en) 2012-12-29 2014-12-30 Futurewei Technologies, Inc. Virtual desktop infrastructure (VDI) login acceleration
US9075731B2 (en) * 2013-01-23 2015-07-07 Vmware, Inc. Using transaction entries to achieve crash consistency when performing write-behind caching using a flash storage-based cache
CA2859577A1 (en) * 2013-02-06 2014-08-14 Square Enix Holdings Co., Ltd. Image processing apparatus, method of controlling the same, program and storage medium
US8997080B2 (en) 2013-02-11 2015-03-31 Citrix Systems, Inc. System updates with personal virtual disks
US20140258595A1 (en) * 2013-03-11 2014-09-11 Lsi Corporation System, method and computer-readable medium for dynamic cache sharing in a flash-based caching solution supporting virtual machines
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
CN103412519B (en) * 2013-04-24 2015-11-25 昆山三泰新电子科技有限公司 The control system of distal circumference, method and far-end server thereof
EP2799973B1 (en) 2013-04-30 2017-11-22 iNuron NV A method for layered storage of enterprise data
US10089009B2 (en) 2013-04-30 2018-10-02 Inuron Method for layered storage of enterprise data
US9436614B2 (en) * 2013-05-02 2016-09-06 Globalfoundries Inc. Application-directed memory de-duplication
CN103389884A (en) * 2013-07-29 2013-11-13 华为技术有限公司 Method for processing input/output request, host, server and virtual machine
CN104601617A (en) * 2013-10-31 2015-05-06 南京中兴新软件有限责任公司 Peripheral access processing method and device in virtual desktop system
KR20150089688A (en) * 2014-01-28 2015-08-05 한국전자통신연구원 Apparatus and method for managing cache of virtual machine image file
US10242185B1 (en) * 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9652397B2 (en) * 2014-04-23 2017-05-16 Texas Instruments Incorporated Dynamic power reduction and performance improvement in caches using fast access
US9697130B2 (en) 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation
US9600337B2 (en) 2014-09-30 2017-03-21 Nimble Storage, Inc. Congestion avoidance in network storage device using dynamic weights
US9483187B2 (en) 2014-09-30 2016-11-01 Nimble Storage, Inc. Quality of service implementation in a networked storage system with hierarchical schedulers
US10394606B2 (en) 2014-09-30 2019-08-27 Hewlett Packard Enterprise Development Lp Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy
US10534542B2 (en) * 2014-09-30 2020-01-14 Hewlett Packard Enterprise Development Lp Dynamic core allocation for consistent performance in a non-preemptive scheduling environment
US10545791B2 (en) 2014-09-30 2020-01-28 Hewlett Packard Enterprise Development Lp Methods to apply IOPS and MBPS limits independently using cross charging and global cost synchronization
CN104410668A (en) * 2014-10-31 2015-03-11 国云科技股份有限公司 Virtual machine remote desktop management method suitable for public cloud
CN105812922A (en) * 2014-12-30 2016-07-27 中兴通讯股份有限公司 Multimedia file data processing method, system, player and client
JP6582445B2 (en) * 2015-03-05 2019-10-02 日本電気株式会社 Thin client system, connection management device, virtual machine operating device, method, and program
KR102192503B1 (en) * 2015-04-01 2020-12-17 한국전자통신연구원 Method and system for providing virtual desktop service using cache server
KR101920474B1 (en) * 2015-06-15 2018-11-20 한국전자통신연구원 In-memory virtual desktop system
US9524183B1 (en) * 2015-07-22 2016-12-20 Bluedata Software, Inc. Employing application containers in a large scale processing environment
US10795577B2 (en) * 2016-05-16 2020-10-06 Commvault Systems, Inc. De-duplication of client-side data cache for virtual disks
US10846024B2 (en) 2016-05-16 2020-11-24 Commvault Systems, Inc. Global de-duplication of virtual disks in a storage platform
US10248174B2 (en) 2016-05-24 2019-04-02 Hedvig, Inc. Persistent reservations for virtual disk using multiple targets
CN106502927B (en) * 2016-10-26 2019-08-13 北京德普信科技有限公司 Trusted end-user calculating and data inactivity security system and method
US10209892B2 (en) 2016-11-28 2019-02-19 Hewlett Packard Enterprise Development Lp Storage of format-aware filter format tracking states
US10411896B2 (en) * 2017-02-13 2019-09-10 Red Hat, Inc. Mixed checksum injection for content verification on multiple platforms
US10496547B1 (en) * 2017-05-10 2019-12-03 Parallels International Gmbh External disk cache for guest operating system in a virtualized environment
US10387186B2 (en) * 2017-06-28 2019-08-20 Vmware, Inc. Hypervisor with virtual-memory file system
US10585594B1 (en) * 2017-08-03 2020-03-10 EMC IP Holding Company LLC Content-based caching using digests
US10387051B2 (en) 2017-08-24 2019-08-20 Hewlett Packard Enterprise Development Lp Acquisition of IOPS and MBPS limits independently at a scheduler in a scheduler hierarchy
US20190079875A1 (en) * 2017-09-14 2019-03-14 Citrix Systems, Inc. Efficient provisioning of virtual machines to endpoint computing environment
US20190227957A1 (en) * 2018-01-24 2019-07-25 Vmware, Inc. Method for using deallocated memory for caching in an i/o filtering framework
US10848468B1 (en) 2018-03-05 2020-11-24 Commvault Systems, Inc. In-flight data encryption/decryption for a distributed storage platform
CN110753069B (en) * 2018-07-23 2022-06-07 中兴通讯股份有限公司 Method, device and storage medium for cloud desktop offline management
US11347428B2 (en) * 2019-01-16 2022-05-31 EMC IP Holding Company LLC Solid state tier optimization using a content addressable caching layer
US10970219B2 (en) 2019-08-02 2021-04-06 EMC IP Holding Company LLC Host cache coherency when modifying data
US11442860B2 (en) * 2019-08-02 2022-09-13 EMC IP Holding Company LLC Host cache coherency when reading data
CN111290817B (en) * 2020-01-21 2024-05-14 李岗 Data loading method and system of desktop system
US11394614B2 (en) * 2020-05-05 2022-07-19 Arista Networks, Inc. Network device supporting multiple operating systems to enable optimized use of network device hardware
US11334430B2 (en) * 2020-05-29 2022-05-17 Vmware, Inc. Virtual disk file resiliency for content based read cache (CBRC) enabled environment
US11706221B1 (en) * 2021-05-25 2023-07-18 Two Six Labs, LLC Unidirectional atomic messaging
US12008041B2 (en) * 2021-09-15 2024-06-11 International Business Machines Corporation Shared cache for multiple index services in nonrelational databases
US20230195313A1 (en) * 2021-12-16 2023-06-22 Vmware, Inc. Storage device i/o performance in remote computing environments
US20230229756A1 (en) * 2022-01-18 2023-07-20 Vmware, Inc. Rapid launch of secure executables in a virtualized environment
CN115914140B (en) * 2023-01-10 2023-06-20 苏州浪潮智能科技有限公司 Stored data processing method and device, electronic equipment and storage medium
CN117376289B (en) * 2023-10-11 2024-04-12 哈尔滨工业大学 Network disk data scheduling method for road monitoring data use application

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111303B2 (en) * 2002-07-16 2006-09-19 International Business Machines Corporation Virtual machine operating system LAN
US8255922B1 (en) * 2006-01-09 2012-08-28 Oracle America, Inc. Mechanism for enabling multiple processes to share physical memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Albert Noll, CeIIVM: A Homogeneous Virtual Machine Runtime System for Heterogeneus Single-Chip Multiprocessor, Dec. 23, 2006. *

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8504670B2 (en) * 2010-03-23 2013-08-06 Riverbed Technology, Inc. Virtualized data storage applications and optimizations
US20110238775A1 (en) * 2010-03-23 2011-09-29 Riverbed Technology, Inc. Virtualized Data Storage Applications and Optimizations
US20140237183A1 (en) * 2011-07-07 2014-08-21 Atlantis Computing, Inc. Systems and methods for intelligent content aware caching
US8874851B2 (en) * 2011-07-07 2014-10-28 Atlantis Computing, Inc. Systems and methods for intelligent content aware caching
US8996800B2 (en) 2011-07-07 2015-03-31 Atlantis Computing, Inc. Deduplication of virtual machine files in a virtualized desktop environment
CN103870312B (en) * 2012-12-12 2018-01-23 华为技术有限公司 Establish the method and device that virtual machine shares memory buffers
CN103870312A (en) * 2012-12-12 2014-06-18 华为技术有限公司 Method and device for establishing storage cache shared by virtual machines
US9277010B2 (en) 2012-12-21 2016-03-01 Atlantis Computing, Inc. Systems and apparatuses for aggregating nodes to form an aggregated virtual storage for a virtualized desktop environment
US9069472B2 (en) 2012-12-21 2015-06-30 Atlantis Computing, Inc. Method for dispersing and collating I/O's from virtual machines for parallelization of I/O access and redundancy of storing virtual machine data
US9372865B2 (en) 2013-02-12 2016-06-21 Atlantis Computing, Inc. Deduplication metadata access in deduplication file system
US9471590B2 (en) 2013-02-12 2016-10-18 Atlantis Computing, Inc. Method and apparatus for replicating virtual machine images using deduplication metadata
US9250946B2 (en) 2013-02-12 2016-02-02 Atlantis Computing, Inc. Efficient provisioning of cloned virtual machine images using deduplication metadata
US9311252B2 (en) 2013-08-26 2016-04-12 Globalfoundries Inc. Hierarchical storage for LSM-based NoSQL stores
TWI564803B (en) * 2014-02-28 2017-01-01 桑迪士克科技有限責任公司 Systems and methods for storage virtualization
US20160188356A1 (en) * 2014-12-31 2016-06-30 American Megatrends, Inc. Thin client computing device having touch screen interactive capability support
US9454396B2 (en) * 2014-12-31 2016-09-27 American Megatrends, Inc. Thin client computing device having touch screen interactive capability support
US11782886B2 (en) 2018-08-23 2023-10-10 Cohesity, Inc. Incremental virtual machine metadata extraction
US10754660B2 (en) * 2018-10-10 2020-08-25 International Business Machines Corporation Rack level server boot
US11861392B2 (en) 2019-02-27 2024-01-02 Cohesity, Inc. Deploying a cloud instance of a user virtual machine
US11567792B2 (en) 2019-02-27 2023-01-31 Cohesity, Inc. Deploying a cloud instance of a user virtual machine
US12013763B2 (en) 2019-05-10 2024-06-18 Cohesity, Inc. Continuous data protection using a write filter
US11573861B2 (en) 2019-05-10 2023-02-07 Cohesity, Inc. Continuous data protection using a write filter
US11841953B2 (en) 2019-10-22 2023-12-12 Cohesity, Inc. Scanning a backup for vulnerabilities
US11397649B2 (en) 2019-10-22 2022-07-26 Cohesity, Inc. Generating standby cloud versions of a virtual machine
US11822440B2 (en) 2019-10-22 2023-11-21 Cohesity, Inc. Generating standby cloud versions of a virtual machine
US11740910B2 (en) 2019-12-11 2023-08-29 Cohesity, Inc. Virtual machine boot data prediction
US11487549B2 (en) * 2019-12-11 2022-11-01 Cohesity, Inc. Virtual machine boot data prediction
US12106116B2 (en) 2019-12-11 2024-10-01 Cohesity, Inc. Virtual machine boot data prediction
US11768745B2 (en) 2020-12-08 2023-09-26 Cohesity, Inc. Automatically implementing a specification of a data protection intent
US11614954B2 (en) 2020-12-08 2023-03-28 Cohesity, Inc. Graphical user interface to specify an intent-based data management plan
US11914480B2 (en) 2020-12-08 2024-02-27 Cohesity, Inc. Standbys for continuous data protection-enabled objects
US11481287B2 (en) 2021-02-22 2022-10-25 Cohesity, Inc. Using a stream of source system storage changes to update a continuous data protection-enabled hot standby
US11907082B2 (en) 2021-02-22 2024-02-20 Cohesity, Inc. Using a stream of source system storage changes to update a continuous data protection-enabled hot standby

Also Published As

Publication number Publication date
US20110265083A1 (en) 2011-10-27
US8776089B2 (en) 2014-07-08
US20130167155A1 (en) 2013-06-27

Similar Documents

Publication Publication Date Title
US8312471B2 (en) File system independent content aware cache
AU2016201198B2 (en) Data storage system exporting logical volumes as storage objects
AU2015243082B2 (en) Data storage system and data storage control method
US8650566B2 (en) Virtual machine provisioning in object storage system
US8914610B2 (en) Configuring object storage system for input/output operations
US8677085B2 (en) Virtual machine snapshotting in object storage system
US7793307B2 (en) Apparatus and method for providing virtualized hardware resources within a virtual execution environment
US8650359B2 (en) Computer system accessing object storage system
US20170344291A1 (en) Provisioning data volumes for containers running in virtual machines in which storage for the virtual machines are backed by heterogeneous storage devices
US8769174B2 (en) Method of balancing workloads in object storage system
US9703482B2 (en) Filter appliance for object-based storage system
US9075540B2 (en) Virtualizing storage for WPAR clients
US20120331242A1 (en) Consistent unmapping of application data in presence of concurrent, unquiesced writers and readers
WO2015200528A1 (en) Systems and methods for storage service automation
US9787525B2 (en) Concurrency control in a file system shared by application hosts
US10747567B2 (en) Cluster check services for computing clusters
US11994954B2 (en) Fast disaster recover from backup storage using smart links
US20240248629A1 (en) Stun free snapshots in virtual volume datastores using delta storage structure
US20230236863A1 (en) Common volume representation in a cloud computing system
EP4404045A1 (en) Stun free snapshots in virtual volume datastores using delta storage structure
US20230131706A1 (en) Two-Hierarchy File System

Legal Events

Date Code Title Description
AS Assignment

Owner name: VMWARE, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DAVIS, SCOTT HOWARD;REEL/FRAME:024290/0701

Effective date: 20100426

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

AS Assignment

Owner name: VMWARE LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:VMWARE, INC.;REEL/FRAME:067103/0030

Effective date: 20231121

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12