CN108139923A - 虚拟机器消息传送 - Google Patents
虚拟机器消息传送 Download PDFInfo
- Publication number
- CN108139923A CN108139923A CN201680060140.5A CN201680060140A CN108139923A CN 108139923 A CN108139923 A CN 108139923A CN 201680060140 A CN201680060140 A CN 201680060140A CN 108139923 A CN108139923 A CN 108139923A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- message
- host
- driver
- fed
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了用于使得能够实现虚拟机器与虚拟机器的主机之间的通信的技术。示例计算设备包括主机操作系统和在主机操作系统上运行的虚拟机器。存储设备还包括分离驱动器。分离驱动器包括驻留在虚拟机器上的前端驱动器和驻留在主机上的后端驱动器。分离驱动器处理从虚拟机器接收的消息并且将消息从前端驱动器传递到后端驱动器。
Description
背景技术
两种常见类型的存储是存储域网络(SAN)和网络附属存储(NAS)。SAN使得计算机能够访问块存储池,在块存储池中任何计算机可以潜在地访问具有块存储的任何存储单元。这样的存储设备可以被称为块级存储。NAS是通过网络操作服务器和共享文件的文件级类型的存储。NAS可以被称为文件级存储设备。
附图说明
在以下详细描述中并且参照附图来描述某些示例性示例,在附图中:
图1是依照本技术的包括统一存储设备的示例存储网络的框图;
图2是在统一存储设备的存储控制器上操作的驱动器堆栈的示例;
图3示出了在统一存储设备中处理存储指令的方法的过程流程图;
图4是概述了在虚拟机器与主机操作系统之间传递消息的方法的过程流程图;以及
图5是包括代码的有形、非暂时性、计算机可读介质的框图,所述代码引导处理器以允许虚拟机器与主机操作系统之间的消息传递。
具体实施方式
在一个示例中,本公开提供了用于帮助提高虚拟机器能够以其处理输入/输出(IO)事务的速度的技术。虚拟机器可以包括一个或多个接口,虚拟机器通过所述一个或多个接口与计算资源通信,所述计算资源诸如计算机存储器、数据存储、网络、用户输入设备和其它。通过虚拟机器与计算资源的通信常常依赖于若干个这样的接口的堆栈。本公开提供了用于使得虚拟机器能够与计算资源通信的通用、低开销的消息传送机制。本文描述的消息传送机制不取决于主机操作系统的标准块层和接口,并且因此能够绕过这些标准操作系统接口的开销和复杂性。
在一些示例中,本文描述的技术实现在存储设备中,所述存储设备使用虚拟机器来提供存储服务。当信息技术(IT)领域面临与数据增长相关联的挑战时,合并块级存储和文件级存储以提供流线型管理系统的能力可能变得越来越重要。统一存储器具是包括文件级存储和块级存储二者的存储设备。本文描述的统一存储设备使用虚拟机器来提供文件级存储服务。如本文中所使用,术语“主机”是指运行管理程序的计算设备,所述管理程序创建并运行虚拟机器。统一文件服务可以作为主控在存储器具的操作系统上的虚拟机器来运行。在块驱动器之下抽象的一个或多个虚拟卷可以暴露于在虚拟机器内部运行的虚拟文件管理器(filer)。然而,虚拟机器的虚拟化I/O路径的性能可能会大幅地低于块驱动器本身的本机性能。
在本文描述的技术的示例中,统一存储器具的性能被提高,使得它可以在包括块、文件和其它的存储的本机(即,裸金属)性能处或附近操作。这通过使用分离驱动器架构来达成,其中驱动器的前端驻留在虚拟机器中并且驱动器的后端驻留在主机中。以该方式,对于大多数存储操作而言,虚拟机器管理程序都可以被绕过。
图1是依照本技术的包括统一存储设备的示例存储网络的框图。计算机系统100可以用于为客户端提供存储服务。计算机系统100可以包括与统一存储设备106通信的一个或多个客户端计算机102。客户端计算机102可以是用户工作站、服务器和其它计算设备。客户端计算机102通过网络构造108耦合到统一存储设备106。网络构造可以使用任何适合的互连技术(诸如SCSI交换机)。在操作中,在客户端计算机102上运行的应用可以访问统一存储设备106以便存储和检索数据。统一存储设备106包括耦合到存储介质112的阵列的存储控制器110。存储介质112可以包括硬驱动、带库,以及更常见地,基于盘的设备(例如RAID硬件)。
存储控制器110可以是任何类型的处理器,并且运行提供用于计算机系统100的块级存储和文件级存储二者的软件,所述软件例如操作系统、管理程序和虚拟机器。在一些示例中,存储控制器使用基于Linux内核的虚拟机器(KVM),其中Linux操作系统作为管理程序进行操作。存储控制器110包括分离驱动器114,所述分离驱动器114允许虚拟机器与虚拟机器驻留于其中的主机操作系统之间的通信。分离驱动器114允许虚拟机器与主机操作系统之间的任何类型的通信。例如,为了提高作为文件级存储系统操作时统一存储设备106的性能,存储控制器110的分离驱动器114通过处置虚拟机器与主机操作系统之间的IO请求来控制对存储介质112的访问。分离驱动器的示例在下面关于图2和3进一步描述,图2和3描述了用于处置IO请求的技术。然而,将领会到,本文描述的技术可以处置虚拟机器与主机操作系统之间的其它类型的通信。
另外,要理解到,图1的图示不旨在表明计算机系统100在每个示例中都包括图中示出的所有组件。另外,取决于具体实现的细节,任何数目的附加组件可以包括在计算机系统100内。
图2是在统一存储设备的存储控制器上操作的驱动器堆栈的示例。驱动器堆栈200包括虚拟机器202、前端驱动器204、后端驱动器206、虚拟卷层208以及I/O堆栈210的其余部分。在图1中引用的分离驱动器114包括前端驱动器204和后端驱动器206。前端驱动器204驻留在虚拟机器中,而后端驱动器206驻留在主机操作系统上,所述主机操作系统在本文中被简单地称为主机。将来自虚拟机器的存储命令从前端驱动器204传达给后端驱动器206,而没有牵涉到管理程序(除了某些情况之外),这将在下文进一步解释。后端驱动器206向虚拟卷层208发出块级存储命令。虚拟卷层208与I/O堆栈210的其余部分通信以便检索数据或者向物理存储介质存储数据。
为了使得能够实现驻留在主机中的后端驱动器206与驻留在虚拟机器中的前端驱动器204之间的通信,建立虚拟机器上下文以便使得主机能够转译虚拟机器的地址。在示例中,虚拟机器上下文是任务结构和存储器管理结构的组合。任务结构提供存储器的抽象,其使得虚拟机器能够访问主机的资源。存储器管理结构使得能够实现由虚拟机器使用的存储器地址与主机操作系统使用的物理存储器地址之间的转译。一旦创建了虚拟机器上下文,主机就可以获取由从虚拟机器接收的特定存储操作定向为目标的虚拟卷的虚拟卷标识符(VVID)。可以将存储操作发送给所标识的虚拟卷以便将虚拟存储器地址转译到主机域。在一些示例中,将上下文传递到标准Linux内核零拷贝函数get_user_pages(取得_用户_页面)以便检索与虚拟机器中的地址对应的主机中的页面。
虚拟机器上下文可以存储为存储器中的伪代码块设备,在本文中被称为“发现卷”。发现卷可以通过虚拟化的IO驱动器(诸如例如KVM VIRTIO)而暴露给虚拟机器。在主机侧上,取决于多少个虚拟卷需要暴露给虚拟机器,将发现卷实现为具有两个或更多块的存储器中的块设备。发现卷的第一块是驱动器标头并且包含信息,所述信息诸如分离驱动器的版本号和虚拟卷的数目。用于每一个虚拟卷的信息存储到分开的附加块。用于每一个虚拟卷的信息可以包括虚拟卷的VVID和名称。管理程序可以打开发现卷,同时启动虚拟机器并且填入发现卷的细节。虚拟机器可以执行发现过程以便读取发现卷内容并且创建用于记录在发现卷中的每一个虚拟卷的设备名称。发现过程可以由虚拟机器在虚拟机器被启动时或者之后执行。
图3是示出了在统一存储设备中处理存储指令的方法的过程流程图。如图3中所示,所公开的架构包括虚拟机器202和前端驱动器204,它们二者驻留在虚拟机器域中。架构还包括后端驱动器206、块驱动器302和管理程序304,它们全部驻留在主机域中。架构还包括共享的IO环306和信令框架308,它们使得前端和后端驱动器能够在IO发起与完成路径中与彼此交互。在一些示例中,共享的IO环306使用零拷贝消息传送。信令框架308可以是低等待时间信令框架,并且使得前端和后端驱动器能够发信号通知彼此以用于发起和完成IO。
管理程序304在IO路径中起到非常有限的作用。管理程序304用于设立共享的IO环206并且用于将虚拟机器的地址和范围对映射到主机的内核虚拟地址空间中。还调用管理程序304来将虚拟机器的存储器片段转译到在主机中寻址的存储器以用于发布存储事务。
为了发起存储事务,虚拟机器在框310处向前端驱动器204发布IO请求。在使用Linux内核的示例中,IO发起在块存储中经由内核函数generic_make_request(通用_做出_请求)来完成,所述内核函数generic_make_request继而又调用下面的块驱动器上的make_request(做出_请求)接口312。块驱动器的make_request接口312接收包含任务信息的任务数据结构。任务信息可以包括标识操作的类型和数据的源或目的地的信息,所述操作的类型诸如任务是读取操作还是写入操作。对于读取操作,任务信息可以包括开始块编号和要读取的字节的数目。对于写入操作,任务信息可以包括有效载荷数据和目的地块编号。
前端驱动器204的make_request接口312向队列314发送请求以用于分类和聚集。分类器/聚集组件316创建管线级,并且在发信号通知后端驱动器206处理请求之前在共享的IO环306中收集尽可能多的请求。在一些示例中,分类器/聚集组件316使用Linux IO调度器来收集和分类请求。
在框318处,一旦完成分类/聚集管线,就分配共享的IO环306中的槽。如果所有槽被占据,那么IO请求将被置于等待直至存在空余槽。同样在框318处,在共享的IO环306中的槽的成功分配之后,前端驱动器204将槽中的IO请求的细节录入。IO请求的细节可以包括虚拟卷标识符(VVID)、IO是读取还是写入、扇区编号、要读取或写入的字节的数目、以及用于任务数据结构中的每一个页面/片段的物理地址。
在框320处,一旦在共享的IO环中做出条目,前端驱动器204就按压后端驱动器206的门铃,这导致主机侧上的回调以便继续IO处理。通过将若干个请求合并成较少的请求来减小前端驱动器204对主机门铃按压的次数,如上文所述。这节省了虚拟机器和主机二者上的CPU周期。
在框322处,主机中的后端驱动器206醒来了以用于在它接收到来自前端驱动器204的门铃时处理IO请求。在框324处,后端驱动器206拾取来自共享IO环306中的对应槽的下一IO请求,并且针对共享IO环的槽中前端驱动器204填充的每一个地址寻找一个或多个存储器页面。在一些示例中,主机使用被称为get_user_pages的Linux零拷贝函数以便生成对应于由前端驱动器204填充的地址的“结构页面(struct page)”。
在框326处,后端驱动器206获取与在IO请求中标识的VVID对应的虚拟机器上下文。以上描述的发现卷用来使得主机能够针对由前端驱动器204发布的每一个IO来检索任务结构和存储器管理结构。前端驱动器204针对共享IO环306中的每一个条目来填充VVID字段。前端驱动器204在向共享IO环306中做出条目时填充的VVID是由IO定向为目标的设备的VVID与虚拟机器上下文的组合。一旦主机接收到VVID,主机就提取任务ID,并且通过调用管理程序函数来检索任务结构和存储器管理结构,所述管理程序函数返回任务和存储器管理结构。
管理程序函数328返回用于所标识的VVID的预建立的管理程序上下文。在框330处,管理程序函数332返回用于对应管理程序上下文的虚拟机器物理地址。管理程序函数(诸如,转译虚拟机器地址以及创建和生成上下文)可以由完全抽象的应用编程接口(API)在没有任何分层冲突的情况下执行。
在框334处,一旦检索到存储器页面,后端驱动器206就利用扇区、字节来填充所分配的任务数据结构,并且添加用户缓冲器的页面。后端驱动器206然后利用自定义IO完成回调将IO请求提交至块驱动器302。
在框336处,将IO请求队列化在块驱动器302中。在一些示例中,IO请求采用包含块编号、从其读取数据或者向其写入数据以用于处理的一个或多个页面的BIO的形式。经队列化的IO请求还包含回调函数,所述回调函数标记IO请求的完成,不管IO请求是成功还是失败都这么做。当IO请求完成时,过程流前进到框338。
在框338处,块驱动器302调取关于框336所提及的回调函数以便更新共享IO环306的IO完成状态。
在框340处,在由块驱动器302 IO完成了IO请求后,自定义IO完成回调被利用IO请求的状态而调用,例如该状态指示IO请求成功或者指示错误的类型。完成回调将该状态插入到共享IO环306中的对应槽中的字段。后端驱动器然后在框342处按压虚拟机器的门铃以便触发IO请求在虚拟机器202中的最终完成。就像主机门铃中那样,对数个完成进行编组以便节省主机和虚拟机器侧上的CPU周期。
在框344处,通过后端驱动器206对虚拟机器门铃的按压调取虚拟机器前端驱动器204中的IO完成回调。前端驱动器204读取共享IO环条目的状态字段中的IO请求的状态。
在框346处,前端驱动器204将之前发起的IO标记为完成的,并且指示IO是成功完成还是失败。例如,在Linux中,前端驱动器204利用适当的错误值(用于成功的0和用于失败的其它值)来调用Linux内核函数bio_endio以便标记IO事务的结束。过程流然后前进到框348。
在框348处,将IO的结果返回给主机。在读取请求的情况下,将所请求的数据发送给主机。在写入请求的情况下,将向主机发送状态,所述指示数据是否成功存储了。
要理解到,图3的过程流程图不旨在表明方法在每一个情况下都包括在图3中示出的所有框。另外,取决于具体实现的细节,任何数目的附加框可以包括在所述方法内。另外,要理解到,图3的过程流程图不旨在表明所述方法在每一个情况下都仅以由图3中示出的框所指示的次序来进行。
图4是概述了在虚拟机器与主机操作系统之间传递消息的方法的过程流程图。在一些示例中,消息是存储IO指令,并且虚拟机器在存储器具中运行着,所述存储器具诸如以上描述的统一存储设备。然而,消息可以是其它类型的消息,所述其它类型的消息包括其它类型的IO,所述其它类型的IO诸如来自例如网络接口设备的IO。
在框402处,在驻留于虚拟机器中的前端驱动器处从虚拟机器接收消息。如上文所描述,前端驱动器是驻留在虚拟机器中的分离驱动器的部分。
在框404处,由前端驱动器在共享消息环中队列化所述消息。在一些示例中,可以在过程流前进到框406之前队列化若干消息。
在框406处,通过驻留在主机中的后端驱动器从共享消息环检索消息。如上文所述,后端驱动器是驻留在主机操作系统中的分离驱动器的部分。
在框408处,在主机中处理消息。在一些示例中,处理消息包括转译包含在IO请求中的存储地址、从由存储地址标识的对应存储位置检索数据、以及经由分离驱动器将数据返回到虚拟机器。处理消息还可以包括将虚拟机器的地址转译为主机操作系统的地址。转译可以通过上下文而启用,所述上下文由主机存储到虚拟卷并且由虚拟机器通过卷发现过程而获取。
要理解到,图4的过程流程图不旨在表明所述方法在每一个情况下都包括在图4中示出的所有框。另外,取决于具体实现的细节,任何数目的附加框可以包括在所述方法内。此外,要理解到,图4的过程流程图不旨在表明所述方法在每一个情况下都仅以由图4中示出的框所指示的次序来进行。
图5是包括代码的有形、非暂时性、计算机可读介质的框图,所述代码引导处理器以便使得能够实现虚拟机器与主机操作系统之间的消息传递。计算机可读介质500可以由处理器502通过系统总线504访问。在一些示例中,代码可以引导处理器502以便执行如关于图1到4所述的技术。在示例中,存储设备可以实现虚拟化的管理系统以便提供块级存储服务和文件级存储服务,其中文件级存储服务在与块级服务分离的隔离环境中操作。
计算机可读介质500可以包括主机操作系统506。主机操作系统506驻留在主机计算设备上并且运行管理程序,所述管理程序创建和运行一个或多个虚拟机器。计算机可读介质500还包括分离驱动器,所述分离驱动器用于虚拟机器域与主机域之间的消息传送。分离驱动器包括驻留在虚拟机器域中的前端驱动器508和驻留在主机域中的后端驱动器510。在一些示例中,消息是存储事务或者其它类型的IO。
图5的框图不旨在表明计算机可读介质500包括在图5中示出的所有组件或模块。另外,取决于具体实现的细节,任何数目的附加组件可以包括在计算机可读介质500内,如本文所述的。
尽管本技术可以准许各种修改和可替换形式,但是已经仅通过示例的方式来示出以上讨论的示例。然而,再次应当理解到,所述技术不旨在限于本文公开的特定示例。实际上,本技术包括落入随附权利要求的范围内的所有可替换形式、修改和等同形式。
Claims (15)
1.一种计算设备,包括:
主机操作系统;
在主机操作系统上运行的虚拟机器;以及
分离驱动器,所述分离驱动器包括驻留在所述虚拟机器上的前端驱动器和驻留在主机上的后端驱动器,所述分离驱动器处理从虚拟机器接收的消息,其中从所述前端驱动器向所述后端驱动器传递消息;
其中所述后端驱动器利用虚拟机器建立上下文以便将所述虚拟机器的地址转译为主机的地址以用于处理所述消息。
2.如权利要求1所述的计算设备,其中,为了创建不透明值,所述后端驱动器组合虚拟卷标识符与用于检索存储器上下文的唯一密钥,所述存储器上下文使得能够将虚拟机器地址转译为所述主机操作系统的地址。
3.如权利要求1所述的计算设备,包括共享消息环,所述共享消息环在所述前端驱动器与所述后端驱动器之间共享,并且用于提供所述前端驱动器与所述后端驱动器之间的零拷贝通信。
4.如权利要求1所述的计算设备,其中所述上下文包括由所述主机操作系统保存在虚拟卷中的不透明值。
5.如权利要求1所述的计算设备,其中所述虚拟机器运行卷发现过程来获取所述上下文。
6.如权利要求1所述的计算设备,其中所述主机操作系统针对要暴露给所述虚拟机器以供所述虚拟机器使用的每一个卷而将唯一不透明值保存到所述虚拟卷。
7.如权利要求1所述的计算设备,其中所述计算设备是存储器具,并且在所述主机操作系统上运行的所述虚拟机器将文件级存储和块级存储提供给网络。
8.如权利要求1所述的计算设备,其中所述消息是输入/输出(IO)请求。
9.一种方法,包括:
在驻留于虚拟机器中的前端驱动器处从所述虚拟机器接收消息,所述消息要被发送给所述虚拟机器的主机;
通过所述前端驱动器将所述消息队列化在共享消息环中;
通过驻留在主机中的后端驱动器从所述共享消息环检索所述消息;以及
在所述主机中处理所述消息。
10.如权利要求9所述的方法,包括通过所述主机操作系统在虚拟卷中存储上下文,所述上下文用于将所述虚拟机器的地址转译为所述主机的地址。
11.如权利要求9所述的方法,其中所述消息是输入/输出(IO)请求。
12.如权利要求9所述的方法,其中处理所述消息包括通过所述主机转译包含在所述IO请求中的存储地址以及从由所述存储地址标识的存储位置检索数据。
13.一种包括代码的有形、非暂时性、计算机可读介质,所述代码引导处理器以便:
在驻留于虚拟机器中的前端驱动器处从所述虚拟机器接收消息,所述消息要被发送给所述虚拟机器的主机;
通过所述前端驱动器将所述消息队列化在共享消息环中;
通过驻留在所述主机中的后端驱动器从所述共享消息环检索所述消息;以及
在所述主机中处理所述消息。
14.如权利要求13所述的计算机可读介质,包括代码,所述代码引导处理器以便:
通过所述主机操作系统在虚拟卷中存储上下文;以及
通过所述虚拟机器运行卷发现过程以便获取所述上下文;
其中所述上下文用于将所述虚拟机器的地址转译为所述主机的地址。
15.如权利要求13所述的计算机可读介质,其中引导所述处理器以便处理所述消息的所述代码对包含在IO请求中的存储地址进行转译,并且从由所述存储地址标识的存储位置检索数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201641000297 | 2016-01-05 | ||
IN201641000297 | 2016-01-05 | ||
PCT/US2016/024712 WO2017119918A1 (en) | 2016-01-05 | 2016-03-29 | Virtual machine messaging |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108139923A true CN108139923A (zh) | 2018-06-08 |
Family
ID=59274567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680060140.5A Pending CN108139923A (zh) | 2016-01-05 | 2016-03-29 | 虚拟机器消息传送 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10768964B2 (zh) |
EP (1) | EP3347813A4 (zh) |
CN (1) | CN108139923A (zh) |
WO (1) | WO2017119918A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109426545B (zh) * | 2017-08-31 | 2023-02-03 | 阿里巴巴集团控股有限公司 | 一种数据通信方法及装置 |
CN113672411B (zh) * | 2021-08-25 | 2023-08-11 | 烽火通信科技股份有限公司 | 一种网络设备虚拟化驱动适配层的实现方法和装置 |
CN115576654B (zh) * | 2022-11-17 | 2023-03-10 | 苏州浪潮智能科技有限公司 | 一种请求处理方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104589A1 (en) * | 2006-11-01 | 2008-05-01 | Mccrory Dave Dennis | Adaptive, Scalable I/O Request Handling Architecture in Virtualized Computer Systems and Networks |
CN102034046A (zh) * | 2010-12-10 | 2011-04-27 | 北京世纪互联工程技术服务有限公司 | 云计算环境中基于磁盘驱动的数据底层加密方法 |
US20140122828A1 (en) * | 2012-11-01 | 2014-05-01 | Mellanox Technologies Ltd. | Sharing address translation between CPU and peripheral devices |
CN103870311A (zh) * | 2012-12-10 | 2014-06-18 | 华为技术有限公司 | 通过半虚拟化驱动访问硬件的方法、后端驱动及前端驱动 |
US8938571B1 (en) * | 2012-06-13 | 2015-01-20 | Amazon Technologies, Inc. | Managing I/O operations in a virtualized environment |
US9135043B1 (en) * | 2010-09-28 | 2015-09-15 | Netapp, Inc. | Interface for enabling an application in a virtual machine to access high performance devices |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050246453A1 (en) | 2004-04-30 | 2005-11-03 | Microsoft Corporation | Providing direct access to hardware from a virtual environment |
US8307191B1 (en) * | 2008-05-09 | 2012-11-06 | Vmware, Inc. | Page fault handling in a virtualized computer system |
US8527679B2 (en) | 2008-06-16 | 2013-09-03 | Samsung Electronics Co., Ltd. | Apparatus and method for adaptation of input/output interface in virtualization environment |
US9069591B1 (en) * | 2009-09-10 | 2015-06-30 | Parallels IP Holding GmbH | Patching host OS structures for hardware isolation of virtual machines |
CN102262557B (zh) | 2010-05-25 | 2015-01-21 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
TW201235946A (en) * | 2011-02-18 | 2012-09-01 | Hon Hai Prec Ind Co Ltd | Method and system for configuring USB device in virtual environment |
US8935506B1 (en) * | 2011-03-31 | 2015-01-13 | The Research Foundation For The State University Of New York | MemX: virtualization of cluster-wide memory |
US9043501B2 (en) | 2013-07-25 | 2015-05-26 | International Business Machines Corporation | Input/output monitoring mechanism |
CN105579959B (zh) | 2013-09-24 | 2019-06-07 | 渥太华大学 | 硬件加速器虚拟化 |
GB2519578B (en) | 2013-10-25 | 2016-02-17 | Samsung Electronics Co Ltd | Managing data transfer |
US20150121376A1 (en) * | 2013-10-25 | 2015-04-30 | Samsung Electronics Co., Ltd. | Managing data transfer |
US9548890B2 (en) * | 2014-03-17 | 2017-01-17 | Cisco Technology, Inc. | Flexible remote direct memory access resource configuration in a network environment |
-
2016
- 2016-03-29 US US15/762,295 patent/US10768964B2/en active Active
- 2016-03-29 EP EP16884126.0A patent/EP3347813A4/en not_active Withdrawn
- 2016-03-29 WO PCT/US2016/024712 patent/WO2017119918A1/en active Application Filing
- 2016-03-29 CN CN201680060140.5A patent/CN108139923A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104589A1 (en) * | 2006-11-01 | 2008-05-01 | Mccrory Dave Dennis | Adaptive, Scalable I/O Request Handling Architecture in Virtualized Computer Systems and Networks |
US9135043B1 (en) * | 2010-09-28 | 2015-09-15 | Netapp, Inc. | Interface for enabling an application in a virtual machine to access high performance devices |
CN102034046A (zh) * | 2010-12-10 | 2011-04-27 | 北京世纪互联工程技术服务有限公司 | 云计算环境中基于磁盘驱动的数据底层加密方法 |
US8938571B1 (en) * | 2012-06-13 | 2015-01-20 | Amazon Technologies, Inc. | Managing I/O operations in a virtualized environment |
US20140122828A1 (en) * | 2012-11-01 | 2014-05-01 | Mellanox Technologies Ltd. | Sharing address translation between CPU and peripheral devices |
CN103870311A (zh) * | 2012-12-10 | 2014-06-18 | 华为技术有限公司 | 通过半虚拟化驱动访问硬件的方法、后端驱动及前端驱动 |
Also Published As
Publication number | Publication date |
---|---|
US10768964B2 (en) | 2020-09-08 |
EP3347813A4 (en) | 2019-05-08 |
US20180267821A1 (en) | 2018-09-20 |
EP3347813A1 (en) | 2018-07-18 |
WO2017119918A1 (en) | 2017-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9285995B2 (en) | Processor agnostic data storage in a PCIE based shared storage environment | |
US20200073815A1 (en) | Deduplicated host cache flush to remote storage | |
US9207873B2 (en) | Parallel migration of data objects to clustered storage | |
CN111356996B (zh) | 用于版本验证的系统和计算机实现的方法 | |
WO2023197670A1 (zh) | 一种分布式存储系统控制方法、装置及可读存储介质 | |
US11880280B2 (en) | Variable number and size of put operations for storage backup | |
US20090019223A1 (en) | Method and systems for providing remote strage via a removable memory device | |
US10180790B1 (en) | Efficient cloning and migration of data objects | |
US9646033B2 (en) | Building a metadata index from source metadata records when creating a target volume for subsequent metadata access from the target volume | |
US10872036B1 (en) | Methods for facilitating efficient storage operations using host-managed solid-state disks and devices thereof | |
US10318489B2 (en) | Avoiding full file replication using sparse files | |
CN108139923A (zh) | 虚拟机器消息传送 | |
US12019521B2 (en) | Logical backup using a storage system | |
EP4369171A1 (en) | Method and apparatus for processing access request, and storage device and storage medium | |
US10303562B2 (en) | Using metadata extracted from proxy files to access data stored in secondary storage | |
US11226756B2 (en) | Indirect storage data transfer | |
US10936242B2 (en) | Cloud access through tape transformation | |
WO2023029755A1 (zh) | 数据访问方法、数据库系统、及存储装置 | |
WO2022121385A1 (zh) | 一种文件访问方法、存储节点以及网卡 | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers | |
US20220342605A1 (en) | System and Method for Improving SCSI Scale Support by Implementing Kernel-Endpoints Instead of Per Volume Interface | |
US7774801B1 (en) | CORBA field programmable gate array/digital signal processor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180608 |