US8214576B2 - Zero copy transport for target based storage virtual appliances - Google Patents

Zero copy transport for target based storage virtual appliances Download PDF

Info

Publication number
US8214576B2
US8214576B2 US12/397,117 US39711709A US8214576B2 US 8214576 B2 US8214576 B2 US 8214576B2 US 39711709 A US39711709 A US 39711709A US 8214576 B2 US8214576 B2 US 8214576B2
Authority
US
United States
Prior art keywords
data
sva
hypervisor
target
address space
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.)
Expired - Fee Related, expires
Application number
US12/397,117
Other versions
US20100228934A1 (en
Inventor
Karthik Chandrasekaran
Supratim DEKA
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/397,117 priority Critical patent/US8214576B2/en
Assigned to VMWARE, INC. reassignment VMWARE, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHANDRASEKARAN, KARTHIK, DEKA, SUPRATIM
Priority to US12/577,637 priority patent/US8578083B2/en
Publication of US20100228934A1 publication Critical patent/US20100228934A1/en
Application granted granted Critical
Publication of US8214576B2 publication Critical patent/US8214576B2/en
Assigned to VMware LLC reassignment VMware LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: VMWARE, INC.
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Definitions

  • a Storage Virtual Appliance is a special purpose virtual machine to manage shared storage in virtualized systems.
  • a data transfer between a virtual machine and a SVA is performed through standard protocols as for example Network File System (NFS), Common Internet File System (CIFS), Internet Small Computer System Interface (iSCSI), etc.
  • NFS Network File System
  • CIFS Common Internet File System
  • iSCSI Internet Small Computer System Interface
  • a method of transferring data from a virtual machine (VM) to a storage virtual appliance (SVA) is disclosed.
  • the data is transferred to an iSCSI (Internet Small Computer System Interface) device that is coupled to the VM and has a zero copy data mover implementation of a TCP socket interface.
  • the method further includes sending a memory address of the data to the SVA.
  • the SVA includes an iSCSI device having a zero copy data mover implementation of a TCP socket interface to receive the memory address of the data.
  • the VM and the SVA are running in a same hypervisor host.
  • a system for transferring data from a virtual machine (VM) to a storage virtual appliance (SVA) includes an iSCSI (Internet Small Computer System Interface) device coupled to the VM having a zero copy data mover implementation of a TCP socket interface to send a memory address of a data to the SVA, and an iSCSI device coupled to the SVA having a zero copy data mover implementation of a TCP socket interface to receive the memory address from the VM and to read the data from the memory address.
  • iSCSI Internet Small Computer System Interface
  • a computer readable media for storing programming instructions for transferring data from a virtual machine (VM) to a storage virtual appliance (SVA) is disclosed.
  • the computer readable media includes programming instructions for transferring the data to an iSCSI (Internet Small Computer System Interface) device that is coupled to the VM and has a zero copy data mover implementation of a TCP socket interface and programming instructions for sending a memory address of the data to the SVA, wherein the SVA including an iSCSI device having a zero copy data mover implementation of a TCP socket interface to receive the memory address of the dat.
  • the VM and the SVA are running in a same hypervisor host.
  • FIG. 1 illustrates a virtualized system including hypervisors, virtual machines and SVAs in accordance with one or more embodiments.
  • FIG. 2 illustrates a system for data transfer between a virtual machine and a SVA within a same hypervisor in accordance with one or more embodiments.
  • FIG. 3 illustrates a process of data transfer between a virtual machine and a SVA within a same hypervisor in accordance with one or more embodiments.
  • FIG. 1 illustrates a virtualized system, which includes one or more hypervisors 54 (e.g., VMware ESXTM, Microsoft Hyper-VTM, Citrix XenServerTM, etc.). Each hypervisor 54 hosts one or more virtual machines (VM) 50 and at least one Storage Virtual Appliance (SVA) 52 . Each hypervisor host includes Direct Attached Storage (DAS) 56 . Direct Attached Storage refers to a digital storage system directly attached to a server or workstation, without a storage network in between.
  • hypervisors 54 e.g., VMware ESXTM, Microsoft Hyper-VTM, Citrix XenServerTM, etc.
  • Each hypervisor 54 hosts one or more virtual machines (VM) 50 and at least one Storage Virtual Appliance (SVA) 52 .
  • SVA Storage Virtual Appliance
  • Each hypervisor host includes Direct Attached Storage (DAS) 56 .
  • Direct Attached Storage refers to a digital storage system directly attached to a server or workstation, without a storage network in between.
  • a virtual appliance is a minimalist virtual machine image designed to run under a virtualization technology.
  • Virtual appliances are a subset of the broader class of software appliances.
  • a software appliance is a software application combined with a just enough operating system (JeOS) for it to run optimally on industry standard hardware (typically a server) or in a virtual machine.
  • JeOS just enough operating system
  • virtual appliances are aimed to eliminate the installation, configuration and maintenance costs associated with running complex stacks of software.
  • a key concept that differentiates a virtual appliance from a virtual machine is that a virtual appliance is a fully pre-installed and pre-configured application and operating system environment whereas a virtual machine is, by itself, without application software.
  • a virtual appliance is usually built to host a single application.
  • SVAs are special-purpose Virtual Machines (VMs) that enable shared-highly-available-storage functionality across hypervisor hosts.
  • VMs Virtual Machines
  • SAN Storage Area Network
  • SVAs across different hypervisor hosts work together in a clustered manner to provide shared and highly available storage without a need for commercially available SAN systems.
  • the storage layer that is made up of DASs, in a virtualized system is transformed into a shared storage layer.
  • This shared storage layer can provide the data mirroring to enable fail proof operations of the virtual machines in the virtualized system.
  • This shared storage layer also enables moving virtual machines from one hypervisor to another if a need arises due to, for example, hardware failure.
  • a SVA in one or more embodiment, allow access to this shared storage through block access protocols as for example iSCSI.
  • FIG. 2 illustrates a logical structure of a system for moving data from a VM 110 to a SVA in accordance with one embodiment.
  • both the VM 110 and the SVA are co-located in a same hypervisor host, Hypervisor A.
  • VM 110 is coupled to a vSCSI device 112 .
  • vSCSI device 112 is a virtualized iSCSI device 118 .
  • the process of virtualizing devices and using these virtualized devices in virtual machines is a well known process; hence any further commentary on this process is being omitted.
  • a virtual device 112 exported to VM 110 is a storage object managed by the hypervisor volume manager/file system layer 114 .
  • this storage object appears to be a physical block device attached to the VM.
  • the data is actually stored in physical storage which may not be isolated from VM 110 through one or more layers of abstraction.
  • physical storage to store the VM 110 data is managed by the SVA.
  • the SVA acts as an iSCSI target.
  • iSCSI device 118 includes a socket interface layer that provides an abstraction of transport layer services to the iSCSI protocol layer.
  • the socket layer includes a TCP Datamover 120 and a Zero-copy Datamover 122 .
  • TCP Datamover 120 is selected for communicating the data to the iSCSI target.
  • TCP Datamover 120 uses standard iSCSI and TCP methods to transmit the data to the iSCSI target, hence a commentary of the operations of TCP Datamover 120 is being omitted.
  • Zero-copy Datamover 122 sends the address of the data pages in which the data sent by VM 110 is stored in the hypervisor address space to the Zero-copy Datamover 122 module of the SVA iSCSI.
  • the SVA then maps the data pages into SVA's own address space and finally stores the data in the physical storage 130 through a vSCSI 124 , Raw Device Mapping 126 and a Pluggable Storage Architecture device 128 .
  • Zero-copy Datamover 122 is implemented to send the memory addresses of the data pages, rather than the data itself, to the iSCSI target.
  • a queue-pair protocol such as Virtual Machine Communication Interface or VMCI protocol
  • a ring buffer protocol is used to enable sending memory addresses to the SVA side Zero-copy Datamover from the VM side Zero-copy Datamover.
  • VMCI Virtual Machine Communication Interface
  • a similar implementation of Zero-copy Datamover 122 intercepts the memory addresses of the data pages and makes a hypercall to the hypervisor to map the data pages into the SVA address space prior to storing the data in physical storage 130 .
  • the process of VMCI (Virtual Machine Communication Interface) socket programming is well known in the art.
  • FIG. 3 further illustrates a method of moving data from a VM to a SVA, which is co-located in a same hypervisor host as the VM.
  • an I/O request is made from the VM to the hypervisor.
  • the I/O request includes a SCSI CDB (Command Descriptor Block) 160 that further includes the addresses of the data pages (containing data to be transferred) mapped in the VM address space 162 .
  • An iSCSI device 168 in the hypervisor receives the I/O request and then maps the data pages in the hypervisor addresses space 170 .
  • the hypervisor then makes an I/O request to the SVA.
  • SCSI CDB Common Descriptor Block
  • the SVA's iSCSI device 164 receives the I/O request and maps the data pages in the SVA's address space. The data is then stored in a physical storage by reading the data through the page mappings. Unless the SVA wants to retain the data in its own cache, the SVA does not need to make a copy of the data pages.
  • the SVA can use the mapped data pages to send the I/O request to the physical storage to facilitate the end-to-end zero copy data from the VM to the physical storage through the SVA.
  • 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.
  • the virtualization software can therefore include components of a host, console, or guest operating system that performs virtualization functions.
  • Plural instances may be provided for components, operations or structures described herein as a single instance.
  • 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).
  • structures and functionality presented as separate components in exemplary configurations may be implemented as a combined structure or component.
  • structures and functionality presented as a single component may be implemented as separate components.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

A method of transferring data from a virtual machine (VM) to a storage virtual appliance (SVA) is disclosed. In this method, the data is transferred to an iSCSI (Internet Small Computer System Interface) device that is coupled to the VM and has a zero copy data mover implementation of a TCP socket interface. The method further includes sending a memory address of the data to the SVA. The SVA includes an iSCSI device having a zero copy data mover implementation of a TCP socket interface to receive the memory address of the data. The VM and the SVA are running in a same hypervisor host.

Description

BACKGROUND
A Storage Virtual Appliance (SVA) is a special purpose virtual machine to manage shared storage in virtualized systems. A data transfer between a virtual machine and a SVA is performed through standard protocols as for example Network File System (NFS), Common Internet File System (CIFS), Internet Small Computer System Interface (iSCSI), etc.
There is a significant performance overhead, in terms of additional CPU cycles and latency, when compared to the traditional approach in which the storage virtualization service is provided directly by the hypervisor. Data copy to and from network buffers consumes a lot of CPU cycles when the hypervisor redirects the storage I/O (input-output) from a VM to a SVA using iSCSI or a similar TCP/IP based protocol. When writing data to storage, the VM sends the data to the hypervisor, which then copies it from the VM's memory onto the hypervisor network buffers and delivers the data over the virtual network to the SVA. The SVA network driver copies the data from the hypervisor buffers into the SVA's private buffers.
SUMMARY
In one embodiment, a method of transferring data from a virtual machine (VM) to a storage virtual appliance (SVA) is disclosed. In this method, the data is transferred to an iSCSI (Internet Small Computer System Interface) device that is coupled to the VM and has a zero copy data mover implementation of a TCP socket interface. The method further includes sending a memory address of the data to the SVA. The SVA includes an iSCSI device having a zero copy data mover implementation of a TCP socket interface to receive the memory address of the data. The VM and the SVA are running in a same hypervisor host.
In another embodiment, a system for transferring data from a virtual machine (VM) to a storage virtual appliance (SVA) is disclosed. The system includes an iSCSI (Internet Small Computer System Interface) device coupled to the VM having a zero copy data mover implementation of a TCP socket interface to send a memory address of a data to the SVA, and an iSCSI device coupled to the SVA having a zero copy data mover implementation of a TCP socket interface to receive the memory address from the VM and to read the data from the memory address.
In yet another embodiment, a computer readable media for storing programming instructions for transferring data from a virtual machine (VM) to a storage virtual appliance (SVA) is disclosed. The computer readable media includes programming instructions for transferring the data to an iSCSI (Internet Small Computer System Interface) device that is coupled to the VM and has a zero copy data mover implementation of a TCP socket interface and programming instructions for sending a memory address of the data to the SVA, wherein the SVA including an iSCSI device having a zero copy data mover implementation of a TCP socket interface to receive the memory address of the dat. The VM and the SVA are running in a same hypervisor host.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a virtualized system including hypervisors, virtual machines and SVAs in accordance with one or more embodiments.
FIG. 2 illustrates a system for data transfer between a virtual machine and a SVA within a same hypervisor in accordance with one or more embodiments.
FIG. 3 illustrates a process of data transfer between a virtual machine and a SVA within a same hypervisor in accordance with one or more embodiments.
DETAILED DESCRIPTION
FIG. 1 illustrates a virtualized system, which includes one or more hypervisors 54 (e.g., VMware ESX™, Microsoft Hyper-V™, Citrix XenServer™, etc.). Each hypervisor 54 hosts one or more virtual machines (VM) 50 and at least one Storage Virtual Appliance (SVA) 52. Each hypervisor host includes Direct Attached Storage (DAS) 56. Direct Attached Storage refers to a digital storage system directly attached to a server or workstation, without a storage network in between.
A virtual appliance is a minimalist virtual machine image designed to run under a virtualization technology. Virtual appliances are a subset of the broader class of software appliances. A software appliance is a software application combined with a just enough operating system (JeOS) for it to run optimally on industry standard hardware (typically a server) or in a virtual machine. Like software appliances, virtual appliances are aimed to eliminate the installation, configuration and maintenance costs associated with running complex stacks of software. A key concept that differentiates a virtual appliance from a virtual machine is that a virtual appliance is a fully pre-installed and pre-configured application and operating system environment whereas a virtual machine is, by itself, without application software. A virtual appliance is usually built to host a single application.
Storage Virtual Appliances (SVAs) are special-purpose Virtual Machines (VMs) that enable shared-highly-available-storage functionality across hypervisor hosts. To provide a shared-highly-available-storage, SVAs enable transformation of DAS 56 into an iSCSI Storage Area Network (SAN) 58. SVAs across different hypervisor hosts work together in a clustered manner to provide shared and highly available storage without a need for commercially available SAN systems. Hence, the storage layer that is made up of DASs, in a virtualized system, is transformed into a shared storage layer. This shared storage layer can provide the data mirroring to enable fail proof operations of the virtual machines in the virtualized system. This shared storage layer also enables moving virtual machines from one hypervisor to another if a need arises due to, for example, hardware failure. A SVA, in one or more embodiment, allow access to this shared storage through block access protocols as for example iSCSI.
FIG. 2 illustrates a logical structure of a system for moving data from a VM 110 to a SVA in accordance with one embodiment. In this embodiment, both the VM 110 and the SVA are co-located in a same hypervisor host, Hypervisor A. VM 110 is coupled to a vSCSI device 112. vSCSI device 112 is a virtualized iSCSI device 118. The process of virtualizing devices and using these virtualized devices in virtual machines is a well known process; hence any further commentary on this process is being omitted.
When VM 110 needs to store data on its virtual device 112, Virtual device 112 hands over the data to the hypervisor volume management layer 114. In other words, a virtual device 112 exported to VM 110 is a storage object managed by the hypervisor volume manager/file system layer 114. To applications running in VM 110, this storage object appears to be a physical block device attached to the VM. However, in fact, the data is actually stored in physical storage which may not be isolated from VM 110 through one or more layers of abstraction. In the present embodiment, physical storage to store the VM 110 data is managed by the SVA. Hence, in this embodiment, the SVA acts as an iSCSI target.
File System 114 is coupled to iSCSI device 118 through a Plugable Storage Architecture (PSA) device 116. VM 110 File System 114 hands over the data to be stored in physical storage to iSCSI device 118. iSCSI device 118 includes a socket interface layer that provides an abstraction of transport layer services to the iSCSI protocol layer. In this embodiment, the socket layer includes a TCP Datamover 120 and a Zero-copy Datamover 122. When iSCSI device 118 receives the data from VM 110, iSCSI device 118 determines if the iSCSI target is co-located on the same hypervisor host. If the iSCSI target is co-located on the same hypervisor host as VM 110, Zero-copy Datamover 122 is selected for communicating the data to the iSCSI target, which is the SVA in this embodiment. If the iSCSI target is not co-located on the same hypervisor host as VM 110, TCP Datamover 120 is selected for communicating the data to the iSCSI target. TCP Datamover 120 uses standard iSCSI and TCP methods to transmit the data to the iSCSI target, hence a commentary of the operations of TCP Datamover 120 is being omitted.
If the SVA (i.e., the iSCSI target) is co-located on the same hypervisor host as VM 110, Zero-copy Datamover 122 sends the address of the data pages in which the data sent by VM 110 is stored in the hypervisor address space to the Zero-copy Datamover 122 module of the SVA iSCSI. The SVA then maps the data pages into SVA's own address space and finally stores the data in the physical storage 130 through a vSCSI 124, Raw Device Mapping 126 and a Pluggable Storage Architecture device 128.
In one or more embodiments, Zero-copy Datamover 122 is implemented to send the memory addresses of the data pages, rather than the data itself, to the iSCSI target. In one embodiment, a queue-pair protocol (such as Virtual Machine Communication Interface or VMCI protocol) or a ring buffer protocol is used to enable sending memory addresses to the SVA side Zero-copy Datamover from the VM side Zero-copy Datamover. At the iSCSI target side, a similar implementation of Zero-copy Datamover 122 intercepts the memory addresses of the data pages and makes a hypercall to the hypervisor to map the data pages into the SVA address space prior to storing the data in physical storage 130. The process of VMCI (Virtual Machine Communication Interface) socket programming is well known in the art.
FIG. 3 further illustrates a method of moving data from a VM to a SVA, which is co-located in a same hypervisor host as the VM. After the data is delivered from the VM to the vSCSI device, an I/O request is made from the VM to the hypervisor. The I/O request includes a SCSI CDB (Command Descriptor Block) 160 that further includes the addresses of the data pages (containing data to be transferred) mapped in the VM address space 162. An iSCSI device 168 in the hypervisor receives the I/O request and then maps the data pages in the hypervisor addresses space 170. The hypervisor then makes an I/O request to the SVA. The SVA's iSCSI device 164 receives the I/O request and maps the data pages in the SVA's address space. The data is then stored in a physical storage by reading the data through the page mappings. Unless the SVA wants to retain the data in its own cache, the SVA does not need to make a copy of the data pages. The SVA can use the mapped data pages to send the I/O request to the physical storage to facilitate the end-to-end zero copy data from the VM to the physical storage through the SVA.
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.
In addition, while described virtualization methods have generally assumed that virtual machines present interfaces consistent with a particular hardware system, persons of ordinary skill in the art will recognize that the methods described may be used in conjunction with virtualizations that do not correspond directly to any particular hardware system. Virtualization systems in accordance with the various embodiments, implemented as hosted embodiments, non-hosted embodiments, or as embodiments that tend to blur distinctions between the two, are all envisioned. Furthermore, various virtualization operations may be wholly or partially implemented in hardware. For example, a hardware implementation may employ a look-up table for modification of storage access requests to secure non-disk data.
Many variations, modifications, additions, and improvements are possible, regardless the degree of virtualization. The virtualization software can therefore include components of a host, console, or guest operating system that performs virtualization functions. 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 (16)

1. A method of transferring data, the method comprising:
receiving, at a device, the data for a target from a first virtual machine (VM), wherein the data is stored in a hypervisor address space;
determining if the target is co-located on a same hypervisor host as the first VM;
if the target is not co-located on the same hypervisor host as the first VM, transmitting the data to the target; and
if the target is co-located on the same hypervisor host, sending a memory address of the data stored in the hypervisor address space to the target without sending the data to the target, wherein:
the target is a storage virtual appliance (SVA), the SVA being a second virtual machine configured to manage storage of data for the first VM, and
the SVA, instead of the hypervisor, is configured to map the data to an address space of the SVA using the memory address and store the data stored in the hypervisor address space in physical storage managed by the SVA using the mapping of the data to the address space of the SVA.
2. The method as recited in claim 1, wherein if the target is co-located on the same hypervisor host, the SVA reads the data and copies the data into the physical storage.
3. The method as recited in claim 1, wherein the SVA makes an I/O request to the hypervisor, the I/O request including the memory address of the data stored in the hypervisor address space to map the data to the address space of the SVA.
4. The method as recited in claim 3, wherein the SVA is authorized by the hypervisor to make the hypercall prior to making the hypercall.
5. The method as recited in claim 1, wherein sending the memory address includes using a Virtual Machine Communication Interface (VMCI) protocol to send the memory address to the SVA.
6. The method as recited in claim 1, wherein if the target is co-located on the same hypervisor host, the SVA uses the mapping to the address space of the SVA to read the data stored in the hypervisor address space, wherein the SVA does not store the data in the address space of the SVA.
7. The method as recited in claim 1, wherein:
if the target is not co-located on the same hypervisor host, a data mover interface is used to transmit the data, and
if the target is co-located on the same hypervisor host, a zero copy mover interface is used to transmit the memory address and not the data.
8. A system for transferring data, the system including:
a first device configured to:
receive the data for a second device from a first virtual machine (VM), wherein the data is stored in a hypervisor address space;
determine if the second device is co-located on a same hypervisor host as the first VM;
if the second device is not co-located on the same hypervisor host as the first VM, transmit the data to the second device; and
if the second device is co-located on the same hypervisor host, send a memory address of the data stored in the hypervisor address space to the second device without sending the data to the second device, wherein:
the second device is a storage virtual appliance (SVA), the SVA being a second virtual machine configured to manage storage of data for the first VM, and
the SVA, instead of the hypervisor, is configured to map the data to an address space of the SVA using the memory address and store the data stored in the hypervisor address space in physical storage managed by the SVA using the mapping of the data to the address space of the SVA.
9. The system as recited in claim 8, wherein the first device coupled to a VM side and the second device coupled to a SVA side communicate through a VMCI protocol to transfer the memory address.
10. A non-transitory computer readable media for storing programming instructions for transferring data, the computer readable media comprising:
programming instructions for receiving, at a device, the data for a target from a first virtual machine (VM) and store the data in a hypervisor address space;
programming instructions for determining if the target is co-located on a same hypervisor host as the first VM;
programming instructions for transmitting the data to the target if the target is not co-located on the same hypervisor host as the first VM; and
programming instructions for sending a memory address of the data stored in the hypervisor address space to the target without sending the data to the target if the target is co-located on the same hypervisor host, wherein:
the target is a storage virtual appliance (SVA), the SVA being a second virtual machine configured to manage storage of data for the first VM, and
the SVA, instead of the hypervisor, is configured to map the data to an address space of the SVA using the memory address and store the data stored in the hypervisor address space in physical storage managed by the SVA using the mapping of the data to the address space of the SVA.
11. The non-transitory computer readable media as recited in claim 10, wherein the SVA makes an I/O request to the hypervisor, the I/O request including the memory address of the data stored in the hypervisor address space to map the data to the address space of the SVA.
12. The non-transitory computer readable media as recited in claim 10, wherein if the target is co-located on the same hypervisor host, the SVA reads the data and copies the data into the physical storage.
13. The non-transitory computer readable media as recited in claim 12, wherein the SVA is authorized by the hypervisor to make the hypercall prior to making the hypercall.
14. The non-transitory computer readable media as recited in claim 10, wherein if the target is co-located on the same hypervisor host, the SVA uses the mapping to the address space of the SVA to read the data stored in the hypervisor address space, wherein the SVA does not store the data in the address space of the SVA.
15. The non-transitory computer readable media as recited in claim 10, wherein:
if the target is not co-located on the same hypervisor host, a data mover interface is used to transmit the data, and
if the target is co-located on the same hypervisor host, a zero copy mover interface is used to transmit the memory address and not the data.
16. The non-transitory computer readable media as recited in claim 10, wherein if the target is co-located on the same hypervisor host, the SVA uses the mapping to the address space of the SVA to read the data stored in the hypervisor address space, wherein the SVA does not store the data in the address space of the SVA.
US12/397,117 2009-03-03 2009-03-03 Zero copy transport for target based storage virtual appliances Expired - Fee Related US8214576B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/397,117 US8214576B2 (en) 2009-03-03 2009-03-03 Zero copy transport for target based storage virtual appliances
US12/577,637 US8578083B2 (en) 2009-03-03 2009-10-12 Block map based I/O optimization for storage virtual appliances

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/397,117 US8214576B2 (en) 2009-03-03 2009-03-03 Zero copy transport for target based storage virtual appliances

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/577,637 Continuation-In-Part US8578083B2 (en) 2009-03-03 2009-10-12 Block map based I/O optimization for storage virtual appliances

Publications (2)

Publication Number Publication Date
US20100228934A1 US20100228934A1 (en) 2010-09-09
US8214576B2 true US8214576B2 (en) 2012-07-03

Family

ID=42679251

Family Applications (1)

Application Number Title Priority Date Filing Date
US12/397,117 Expired - Fee Related US8214576B2 (en) 2009-03-03 2009-03-03 Zero copy transport for target based storage virtual appliances

Country Status (1)

Country Link
US (1) US8214576B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875132B2 (en) 2015-11-25 2018-01-23 Red Hat Israel, Ltd. Input output memory management unit based zero copy virtual machine to virtual machine communication

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2772047B1 (en) 1997-12-05 2004-04-09 Ct Nat D Etudes Veterinaires E GENOMIC SEQUENCE AND POLYPEPTIDES OF CIRCOVIRUS ASSOCIATED WITH PIGLET LOSS DISEASE (MAP), APPLICATIONS TO DIAGNOSIS AND TO PREVENTION AND / OR TREATMENT OF INFECTION
US8578083B2 (en) * 2009-03-03 2013-11-05 Vmware, Inc. Block map based I/O optimization for storage virtual appliances
TW201035760A (en) * 2009-03-18 2010-10-01 Inventec Corp Method for backing up data of a server machine
US8893120B2 (en) * 2010-01-29 2014-11-18 Howard Pinsky Controlled use medical applicaton
US9092426B1 (en) 2011-01-03 2015-07-28 Applied Micro Circuts Corporation Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
US9489396B2 (en) * 2011-07-01 2016-11-08 V3 Systems Holdings, Inc. Intermediation of hypervisor file system and storage device models
WO2012109876A1 (en) * 2011-08-03 2012-08-23 华为技术有限公司 Virtualized data backup method, and virtualized data reorganization method, device and system
US9075643B2 (en) * 2012-01-23 2015-07-07 International Business Machines Corporation Automatically selecting optimal transport protocol in a cloud computing environment
US9350806B2 (en) 2012-09-07 2016-05-24 International Business Machines Corporation Zero copy data transfers without modifying host side protocol stack parameters
US9454392B2 (en) * 2012-11-27 2016-09-27 Red Hat Israel, Ltd. Routing data packets between virtual machines using shared memory without copying the data packet
US9535871B2 (en) 2012-11-27 2017-01-03 Red Hat Israel, Ltd. Dynamic routing through virtual appliances
US20140282542A1 (en) * 2013-03-14 2014-09-18 Infinio Systems Inc. Hypervisor Storage Intercept Method
US10817321B2 (en) * 2017-03-21 2020-10-27 International Business Machines Corporation Hardware independent interface for cognitive data migration
CN111984375B (en) * 2020-08-28 2022-05-24 苏州浪潮智能科技有限公司 Disaster recovery method, system, device and medium for bare device

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060168286A1 (en) * 2005-01-21 2006-07-27 International Business Machines Corporation iSCSI DATAMOVER INTERFACE AND FUNCTION SPLIT WITH RDMA ATP MECHANISM
US20070061492A1 (en) * 2005-08-05 2007-03-15 Red Hat, Inc. Zero-copy network i/o for virtual hosts
US20080091891A1 (en) 2006-09-19 2008-04-17 Noriyuki Shiota Managing memory in virtualization system
US7433948B2 (en) * 2002-01-23 2008-10-07 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network
US20090313446A1 (en) 2008-06-12 2009-12-17 Sun Microsystems, Inc. Method and system for cross-domain data sharing
US20090328073A1 (en) * 2008-06-30 2009-12-31 Sun Microsystems, Inc. Method and system for low-overhead data transfer
US20100017802A1 (en) * 2006-07-14 2010-01-21 Carsten Lojewski Network system and method for controlling address spaces existing in parallel
US20100161922A1 (en) 2008-12-19 2010-06-24 Richard William Sharp Systems and methods for facilitating migration of virtual machines among a plurality of physical machines
US8073674B2 (en) * 2008-09-23 2011-12-06 Oracle America, Inc. SCSI device emulation in user space facilitating storage virtualization

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7433948B2 (en) * 2002-01-23 2008-10-07 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network
US20060168286A1 (en) * 2005-01-21 2006-07-27 International Business Machines Corporation iSCSI DATAMOVER INTERFACE AND FUNCTION SPLIT WITH RDMA ATP MECHANISM
US20070061492A1 (en) * 2005-08-05 2007-03-15 Red Hat, Inc. Zero-copy network i/o for virtual hosts
US20100017802A1 (en) * 2006-07-14 2010-01-21 Carsten Lojewski Network system and method for controlling address spaces existing in parallel
US20080091891A1 (en) 2006-09-19 2008-04-17 Noriyuki Shiota Managing memory in virtualization system
US20090313446A1 (en) 2008-06-12 2009-12-17 Sun Microsystems, Inc. Method and system for cross-domain data sharing
US20090328073A1 (en) * 2008-06-30 2009-12-31 Sun Microsystems, Inc. Method and system for low-overhead data transfer
US8073674B2 (en) * 2008-09-23 2011-12-06 Oracle America, Inc. SCSI device emulation in user space facilitating storage virtualization
US20100161922A1 (en) 2008-12-19 2010-06-24 Richard William Sharp Systems and methods for facilitating migration of virtual machines among a plurality of physical machines

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Hypervisor" http://en.wikipedia.org/wiki/Hypervisor as archived by www.archive.org on Dec. 20, 2008. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875132B2 (en) 2015-11-25 2018-01-23 Red Hat Israel, Ltd. Input output memory management unit based zero copy virtual machine to virtual machine communication

Also Published As

Publication number Publication date
US20100228934A1 (en) 2010-09-09

Similar Documents

Publication Publication Date Title
US8214576B2 (en) Zero copy transport for target based storage virtual appliances
US8578083B2 (en) Block map based I/O optimization for storage virtual appliances
US9575786B2 (en) System and method for raw device mapping in traditional NAS subsystems
US9880941B2 (en) Sharing an accelerator context across multiple processes
US9626324B2 (en) Input/output acceleration in virtualized information handling systems
US8719817B2 (en) Virtualization intermediary/virtual machine guest operating system collaborative SCSI path management
US8874803B2 (en) System and method for reducing communication overhead between network interface controllers and virtual machines
US7739684B2 (en) Virtual direct memory access crossover
CN112422606A (en) System and method for high speed data communication architecture for cloud game data storage and retrieval
US9069487B2 (en) Virtualizing storage for WPAR clients using key authentication
US11372785B2 (en) Local non-volatile memory express virtualization device
US20070050767A1 (en) Method, apparatus and system for a virtual diskless client architecture
US10642529B2 (en) Trim support for a solid-state drive in a virtualized environment
US10503922B2 (en) Systems and methods for hardware-based security for inter-container communication
US10296369B2 (en) Systems and methods for protocol termination in a host system driver in a virtualized software defined storage architecture
WO2016101282A1 (en) Method, device and system for processing i/o task
US20180335956A1 (en) Systems and methods for reducing data copies associated with input/output communications in a virtualized storage environment
US9729660B2 (en) Method and system for detecting virtual machine migration
US10248596B2 (en) Systems and methods for providing a lower-latency path in a virtualized software defined storage architecture
US10942670B2 (en) Direct access flash transition layer
US9135043B1 (en) Interface for enabling an application in a virtual machine to access high performance devices
US10747594B1 (en) System and methods of zero-copy data path among user level processes
US11635970B2 (en) Integrated network boot operating system installation leveraging hyperconverged storage
US11640375B2 (en) Avoiding data inconsistency in a file system using 2-level synchronization

Legal Events

Date Code Title Description
AS Assignment

Owner name: VMWARE, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHANDRASEKARAN, KARTHIK;DEKA, SUPRATIM;REEL/FRAME:022339/0041

Effective date: 20090303

ZAAA Notice of allowance and fees due

Free format text: ORIGINAL CODE: NOA

ZAAB Notice of allowance mailed

Free format text: ORIGINAL CODE: MN/=.

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

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: VMWARE LLC, CALIFORNIA

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

Effective date: 20231121

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20240703