CN111381926A - 一种虚拟化方法和装置 - Google Patents
一种虚拟化方法和装置 Download PDFInfo
- Publication number
- CN111381926A CN111381926A CN201811612722.7A CN201811612722A CN111381926A CN 111381926 A CN111381926 A CN 111381926A CN 201811612722 A CN201811612722 A CN 201811612722A CN 111381926 A CN111381926 A CN 111381926A
- Authority
- CN
- China
- Prior art keywords
- nvme
- blk
- virtual machine
- memory
- queue
- 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.)
- Withdrawn
Links
Images
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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- 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
-
- 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
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种虚拟化方法和装置,包括:当虚拟机的应用发出预定请求时,虚拟机的NVMe‑Blk驱动从虚拟NVMe直接内存存取DMA内存管理区中分配第一DMA内存;其中,第一DMA内存包括输入输出IO队列的提交队列的第二DMA内存和完成队列的第三DMA内存;NVMe‑Blk驱动根据第二DMA内存的HPA构建提交队列项,通知主机的NVMe设备处理所述预定请求;NVMe‑Blk驱动读取完成队列中的回应信息。本发明实施例通过NVMe‑Blk驱动实现对NVMe设备的直接访问,减少了主机的参与,从而实现虚拟机的高效IO操作,并且不需要占用CPU,降低了虚拟化的损耗,且无需支持特定的NVMe设备硬件,具有较好的通用性。
Description
技术领域
本发明实施例涉及但不限于计算机领域,尤指一种虚拟化方法和装置。
背景技术
固态盘(SSD,Solid State Drives)是用固态电子存储芯片阵列而制成的硬盘,目前大部分基于Flash芯片作为存储介质。与常规机械硬盘相比,SSd具有快速读写、质量轻、能耗低、防震抗摔以及体积小等优点。已经在服务器、个人计算等领域得到了越来乐队的应用。
非易失内存主机控制器接口规范(NVMe,Non-Volatile Memory express)是一种存储设备接口规范,可以充分利用外部设备高速互连标准(PCI-E,Peripheral ComponentInterconnect express)通道的低延时以及并行性的特点,简化了固态盘的输入输出(IO,Input Output)访问路径。相比串行连接小型计算机系统接口(SCSI,Small ComputerSystem Interface)(SAS,Serial Attached SCSI)或串行高级连接技术(SATA,SerialAdvanced Technology Attachment)接口规范,NVMe可以提供更低的延时,更高的传输性能,以及更低的功耗控制。NVMe适配了SSD的高速IO特点,极大提升了固态盘的读写性能,在高端SSD设备中得到广泛应用。
目前许多云主机都基于NVMe SSD提供虚拟机存储支持,NVMe SSD的普通虚拟化方法如图1所示。虚拟机通过前端驱动,与在快速模拟器(Qemu,Quick Emulator)中的后端驱动进行读写请求,后端驱动运行在主机上下文环境中,并通过虚拟文件系统(VFS,VirtualFile System)接口,向主机中的NVMe驱动进行读写请求。在NVMe接口规范中,NVMe设备提供管理和IO两类队列,管理队列只有一组,IO队列有多组。每组队列由提交和回应两个循环列表组成,用于NVMe设备接收命令和放置执行信息。
如图1所示,在虚拟机进行IO读写时,前端驱动会将读写请求发送到后端驱动;后端驱动接收到读写请求后,将读写请求转换为主机(Host)(也称为物理机)的VFS读写操作;Host的操作系统(OS,Operating System)内核根据VFS读写操作调用NVMe SSD驱动的读写命令,使得NVMe驱动产生IO读写指令放入NVMe设备的IO队列的提交队列中;NVMe设备执行IO读写指令后,将结果放入IO队列的回应队列,并产生消息中断(MSI,Message SignaledInterrupts)通知主机;主机再通过NVMe驱动处理,通过VFS的封装,将结果返回给后端驱动,在通过虚拟化机制,返回前端去的,完成虚拟机或客户机(Guest)的IO读写操作。
可以看出,普通的NVMe虚拟化方法中,一次IO操作需要涉及到两次前后端交互,并涉及到数据在前后端中的多次拷贝,以及Host中的VFS到NVMe的长IO栈,效率较低,不利于Geust充分利用NVMe SSD设备的高IO特性。
发明内容
本发明实施例提供了一种虚拟化方法和装置,能够提升IO效率。
本发明实施例提供了一种虚拟化方法,包括:
当虚拟机的应用发出预定请求时,虚拟机的非易失内存主机控制器接口规范—块NVMe-Blk驱动从虚拟NVMe直接内存存取DMA内存管理区中分配第一DMA内存;其中,第一DMA内存包括输入输出IO队列的提交队列的第二DMA内存和完成队列的第三DMA内存;
NVMe-Blk驱动根据第二DMA内存的HPA构建提交队列项,通知主机的NVMe设备处理所述预定请求;
NVMe-Blk驱动读取完成队列中的回应信息。
本发明实施例提供了一种虚拟化方法,包括:
主机的非易失内存主机控制器接口规范NVMe设备获知有预定请求需要处理时,进行预定请求对应的操作,将回应信息放入完成队列中。
本发明实施例提供了一种虚拟化装置,包括:
非易失内存主机控制器接口规范—块NVMe-Blk驱动,用于当虚拟机的应用发出预定请求时,从虚拟NVMe DMA内存管理区中分配第一DMA内存;其中,第一DMA内存包括输入输出IO队列的提交队列的第二DMA内存和完成队列的第三DMA内存;根据第二DMA内存的HPA构建提交队列项,通知NVMe设备处理所述预定请求;读取完成队列中的回应信息。
本发明实施例提供了一种虚拟化装置,包括:
非易失内存主机控制器接口规范NVMe设备,用于获知有预定请求需要处理时,进行预定请求对应的操作,将回应信息放入完成队列中。
本发明实施例提供了一种虚拟化装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现上述任一种虚拟化方法的步骤。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种虚拟化方法的步骤。
本发明实施例包括:当虚拟机的应用发出预定请求时,虚拟机的NVMe-Blk驱动从虚拟NVMe直接内存存取(DMA,Direct Memory Access)内存管理区中分配第一DMA内存;其中,第一DMA内存包括输入输出IO队列的提交队列的第二DMA内存和完成队列的第三DMA内存;NVMe-Blk驱动根据第二DMA内存的HPA构建提交队列项,通知主机的NVMe设备处理所述预定请求;NVMe-Blk驱动读取完成队列中的回应信息。本发明实施例通过NVMe-Blk驱动实现对NVMe设备的直接访问,减少了主机的参与,从而实现虚拟机的高效IO操作,并且不需要占用CPU,降低了虚拟化的损耗,且无需支持特定的NVMe设备硬件,具有较好的通用性。
本发明实施例的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例而了解。本发明实施例的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明实施例技术方案的进一步理解,并且构成说明书的一部分,与本发明实施例的实施例一起用于解释本发明实施例的技术方案,并不构成对本发明实施例技术方案的限制。
图1为相关技术NVMe SSD的普通虚拟化方法的示意图;
图2为本发明一个实施例提出的虚拟化方法的流程图;
图3为本发明实施例门铃(DoorBell)区域与IO队列映射示意图;
图4为本发明实施例虚拟化方法的示意图;
图5为本发明另一个实施例提出的虚拟化方法的流程图;
图6为本发明实施例虚拟化装置的结构组成示意图。
具体实施方式
下文中将结合附图对本发明实施例进行详细说明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
参见图2,本发明一个实施例提出了一种虚拟化方法,包括:
步骤200、当虚拟机的应用发出预定请求时,虚拟机的NVMe-块(Blk,Block)驱动从虚拟NVMe DMA内存管理区中分配第一DMA内存;其中,第一DMA内存包括输入输出(IO,InputOutput)队列的提交队列(SQ,Summit Queue)的第二DMA内存和完成队列(CQ,CompleteQueue)的第三DMA内存。
步骤201、NVMe-Blk驱动根据第二DMA内存的HPA构建SQ项,通知主机的NVMe设备处理所述预定请求。
在本发明实施例中,SQ项还包括:NVMe设备的扇区号和优先级等信息。
其中,第二DMA内存为源地址,扇区号为目的地址,也就是说,通过SQ项告知NVMe设备将数据从第二DMA内存写入到扇区号内。
在本发明实施例中,NVMe设备可以是SSD。
在本发明实施例中可以采用以下任一种方法通知主机的NVMe设备处理预定请求。
方法一、NVMe-Blk驱动向所述主机发送写门铃(DoorBell)请求;其中,所述写DoorBell请求包括提交队列项信息,即提交队列项下标;所述主机将所述提交队列项信息写入所述NVMe设备的寄存器的DoorBell区域中,所述IO队列标识对应的字段中。
该方法中,NVMe-Blk驱动可以基于通用的虚拟化的内存地址陷入机制,或者CPU的HyperCall指令向主机的Hypervisor发送写DoorBell请求。
该方法中,DoorBell区域是按照IO队列标识进行排列的,主机基于IO队列标识和DoorBell区域的起始地址,即可获知IO队列标识对应的字段。
方法二、NVMe-Blk驱动预先保存所述IO队列标识和所述NVMe设备的寄存器中的门铃DoorBell区域的字段之间的第二对应关系;NVMe-Blk驱动将提交队列项信息写入所述NVMe设备的寄存器的门铃DoorBell区域中,所述IO队列标识对应的字段中。
该方法中,如图3所示,NVMe设备的DoorBell区域是连续区域,可以映射到虚拟机中,每个IO队列对应其中的一个16比特(比特)的字段,可以通过在NVMe-Blk驱动初始化时完成对DoorBell区域的映射操作,即保存第二对应关系。
采用第二种方式通过NVMe-Blk驱动直接将提交队列项信息写入NVMe设备的寄存器的DoorBell区域中IO队列标识对应的字段中,而不需要通过主机来写入,进一步提高了IO效率。
步骤202、NVMe-Blk驱动读取完成队列中的回应信息。
在本发明实施例中,NVMe-Blk驱动可以采用以下任一种方法读取CQ中的回应信息。
方法一、NVMe-Blk驱动轮询所述完成队列得到回应信息。
方法二、主机将IO队列标识和所述第一物理虚拟机内存的HPA之间的第一对应关系发送给NVMe-Blk驱动之前,主机为所述IO队列分配消息中断(MSI,Message SignalInterrupts)中断号,将所述MSI中断号设置成所述虚拟机直接处理;主机将IO队列标识和所述第一物理虚拟机内存的HPA之间的第一对应关系发送给NVMe-Blk驱动时,还将所述MSI中断号发送给所述NVMe-Blk驱动;主机进行预定请求对应的操作后,主机根据所述MSI中断号触发中断;NVMe-Blk驱动在MSI中断号对应中断触发时读取所述完成队列中的回应信息。
该方法中,NVMe-Blk驱动可以在虚拟机中设置对应的中断处理程序,在中断触发时,中断顶部处理程序读取完成队列信息,并释放CQ队列,触发中断底部处理程序;当预定请求为读请求时,中断底部处理程序从完成队列信息中获取出第三DMA内存的位置,完成读数据拷贝,以及DMA内存释放。
在linux中,中断底部处理程序将触发虚拟机OS的IO协议栈完成动作,将对应的操作返回信息返回给读写请求者。
该方法中,将MSI中断号设置成虚拟机直接处理在X86处理器中可以基于直接IO虚拟化技术(VT-D,Virtualization Technology for Directed I/O)PostInterrupt的机制实现,即将MSI中断号设置到虚拟机的X86处理器的VT-D PostInterrupt虚拟通用中断控制器(VMCS,Virtual Generic Interrupt)特性区中;在ARM处理器中可以基于vGSI机制完成;当虚拟机独占主机的CPU时,可以基于X86处理器在虚拟机控制结构(VMCS,Virtual-Machine Control Structure)中设置中断(interrupt)非退出方式实现。
在本发明实施例中,预定请求包括以下至少之一:读请求、写请求。
当预定请求为写请求时,步骤200和步骤201之间还包括:NVMe-Blk驱动将所写的数据拷贝到所述第二DMA内存中。
当预定请求为读请求时,回应信息包括第三DMA内存的HPA,NVMe-Blk驱动根据回应信息从第三DMA内存中读取数据,将读取的数据拷贝到应用的读缓存中,释放第三DMA内存。
在本发明另一个实施例中,该方法之前还包括:
所述NVMe-Blk驱动向所述虚拟机申请连续的第一物理虚拟机内存,将所述第一物理虚拟机内存的虚拟机物理地址(GPA,Guest Physical Address)传输给主机;其中,可以将第一物理虚拟机内存的起始位置的GPA传输给主机;可以将第一物理虚拟机内存的GPA传输给主机的Qemu;
NVMe-Blk驱动接收到IO队列标识和第一物理虚拟机内存的HPA之间的第一对应关系;
所述NVMe-Blk驱动向所述虚拟机申请连续的第二物理虚拟机内存,将所述第二物理虚拟机内存设置成DMA访问方法,将所述第二物理虚拟机内存的虚拟机物理地址GPA传输给主机;其中,可以将第二物理虚拟机内存的起始位置的GPA传输给主机;可以将第二物理虚拟机内存的GPA传输给主机的Qemu;
所述NVMe-Blk驱动根据接收到的第二物理虚拟机内存的HPA创建所述虚拟NVMeDMA内存管理区。
在本发明实施例中,如图4所示,可以在NVMe-Blk驱动创建时,向虚拟机申请连续的第一物理虚拟机内存和第二物理虚拟机内存。
其中,NVMe-Blk驱动可以在虚拟机操作系统(OS,Operating System)初始化时创建,它注册为虚拟机的块(Blk,Block)驱动,完成基于Blk的随机读写操作。
在本发明实施例中,GPA地址从虚拟机到主机的传递方式包括以下任一种:
在内核虚拟机(KVM,Kernel-based Virtual Machine)下可以基于虚拟输入输出(virtIO)通道传递;
基于Qemu的共享内存区传递;
基于X86vt技术的HyperCall指令参数传递。
其中,virtIO通道可以是virtIO控制通道,该virtIO通道可以在创建NVMe-Blk驱动时,由NVMe-Blk驱动与主机的Qemu建立。
本发明实施例通过NVMe-Blk驱动实现对NVMe设备的直接访问,减少了主机的参与,从而实现虚拟机的高效IO操作,并且不需要占用CPU,降低了虚拟化的损耗,且无需支持特定的NVMe设备硬件,具有较好的通用性。
参见图5,本发明另一个实施例提出了一种虚拟化方法,包括:
步骤500、主机的NVMe设备获知有预定请求需要处理时,进行预定请求对应的操作,将回应信息放入完成队列中。
在本发明实施例中,当NVMe设备的寄存器的DoorBell区域中,所述IO队列标识对应的字段有提交队列项信息写入时,NVMe设备获知有预定请求需要处理。
其中,可以由主机或NVMe-Blk驱动将提交队列项信息写入NVMe设备的寄存器的DoorBell区域中,所述IO队列标识对应的字段中。
其中,当由NVMe-Blk驱动将提交队列项信息写入NVMe设备的寄存器的DoorBell区域中,所述IO队列标识对应的字段中时,NVMe-Blk驱动需要预先保存IO队列标识和NVME设备的寄存器中DoorBell区域的字段之间的第二对应关系。
其中,当由主机将提交队列项信息写入NVMe设备的寄存器的DoorBell区域中,所述IO队列标识对应的字段中时,NVMe-Blk驱动向主机发送写DoorBell请求;其中,写DoorBell请求包括提交队列信息;主机将提交队列项信息写入所述NVMe设备的寄存器的DoorBell区域中,所述IO队列标识对应的字段中。
在本发明实施例中,预定请求为写请求或读请求;
当预定请求为写请求时,进行预定请求对应的操作包括:
NVMe设备根据提交队列项信息将第二DMA内存中的数据写入到NVMe设备的对应扇区中。
当预定请求为读请求时,进行预定请求对应的操作包括:
NVMe设备根据所述提交队列项信息从NVMe设备的对应扇区中读取数据,将读取的数据拷贝到第三DMA内存中。
在本发明另一个实施例中,该方法之前还包括:
所述主机将接收到的第一物理虚拟机内存的GPA转换成物理机物理地址(HPA,Host Physical Address),其中,所述设备命令包括所述第一物理虚拟机内存的HPA;其中,主机的Qemu调用linux内核接口将GPA转换成HPA,并设置noCache属性,Qemu将HPA发送给主机,主机将HPA发送给NVMe-Blk驱动;
所述主机根据所述第一物理虚拟机内存的HPA创建IO队列,将IO队列标识和所述第一物理虚拟机内存的HPA之间的第一对应关系发送给NVMe-Blk驱动;其中,主机的Qemu通过调用NVMe设备控制命令的方式来创建IO队列;
所述主机将接收到的第二物理虚拟机内存的GPA转换成物理机物理地址HPA,将所述第二物理虚拟机内存设置成主机DMA访问模式,将所述第二物理虚拟机内存的HPA发送给所述NVMe-Blk驱动;其中,主机的Qemu调用linux内核接口将GPA转换成HPA,并设置noCache属性,Qemu将HPA发送给主机,主机将HPA发送给NVMe-Blk驱动。
在本发明另一个实施例中,主机将IO队列标识和所述第一物理虚拟机内存的HPA之间的第一对应关系发送给NVMe-Blk驱动之前,该方法还包括:所述主机为所述IO队列分配消息中断MSI中断号,将所述MSI中断号设置成所述虚拟机直接处理;
所述主机将IO队列标识和所述第一物理虚拟机内存的HPA之间的第一对应关系发送给NVMe-Blk驱动时,还将所述MSI中断号发送给所述NVMe-Blk驱动;
所述主机进行预定请求对应的操作后,该方法还包括:
所述主机根据所述MSI中断号触发中断。
在本发明实施例中,主机可以基于Qemu的共享内存区,或virtIO通道向虚拟机传递HPA或IO队列标识(ID)或MSI中断号。
其中,virtIO通道可以是virtIO控制通道,该virtIO通道可以在创建NVMe-Blk驱动时,由NVMe-Blk驱动与主机的Qemu建立。
参见图6,本发明另一个实施例提出了一种虚拟化装置,包括:
NVMe-Blk驱动601,用于当虚拟机的应用发出预定请求时,从虚拟NVMeDMA内存管理区中分配第一DMA内存;其中,第一DMA内存包括输入输出IO队列的提交队列的第二DMA内存和完成队列的第三DMA内存;根据第二DMA内存的HPA构建提交队列项,通知主机的NVMe设备处理所述预定请求;读取完成队列中的回应信息。
在本发明实施例中,所述预定请求为写请求;所述NVMe-Blk驱动601还用于:将所写的数据拷贝到所述第二DMA内存中。
在本发明实施例中,所述预定请求为读请求;所述NVMe-Blk驱动601还用于:根据所述完成队列信息从第三DMA内存中读取所读取的数据,将读取的数据拷贝到应用的读缓存中,释放第三DMA内存。
在本发明实施例中,所述NVMe-Blk驱动601还用于:
向所述虚拟机申请连续的第一物理虚拟机内存,将所述第一物理虚拟机内存的虚拟机物理地址GPA传输给主机;接收到IO队列标识和第一物理虚拟机内存的HPA之间的第一对应关系;向所述虚拟机申请连续的第二物理虚拟机内存,将所述第二物理虚拟机内存设置成DMA访问方法,将所述第二物理虚拟机内存的虚拟机物理地址GPA传输给主机;根据接收到的第二物理虚拟机内存的HPA创建所述虚拟NVMe DMA内存管理区。
在本发明实施例中,所述NVMe-Blk驱动601还用于:保存所述IO队列标识和所述NVMe设备的寄存器中的门铃DoorBell区域的字段之间的第二对应关系;将提交队列项信息写入所述NVMe设备的寄存器的门铃DoorBell区域中,所述IO队列标识对应字段中。
在本发明实施例中,NVMe-Blk驱动601具体用于采用以下方式实现通知主机的NVMe设备处理预定请求:
向所述主机发送写门铃DoorBell请求;其中,所述写DoorBell请求包括提交队列项信息,即提交队列项下标。
在本发明实施例中,NVMe-Blk驱动601还用于:
接收MSI中断号;在MSI中断号对应的中断触发时读取所述完成队列中的回应信息。
在本发明实施例中,所述NVMe-Blk驱动501具体用于采用以下方式实现读取完成队列中的回应信息:轮询所述完成队列得到回应信息。
上述虚拟化装置的具体实现方式与前述实施例的虚拟化方法相同,这里不再赘述。
本发明另一个实施例提出了一种虚拟化装置(如主机),包括:
NVMe设备602,用于获知有预定请求需要处理时,进行预定请求对应的操作,将回应信息放入完成队列中。
在本发明实施例中,预定请求为写请求,NVMe设备602具体用于采用以下方式实现进行预定请求对应的操作:
根据提交队列项信息将第二DMA内存中的数据写入到NVMe设备的对应扇区中。
在本发明实施例中,预定请求为读请求,NVMe设备602具体用于采用以下方式实现进行预定请求对应的操作:
根据提交队列项信息从NVMe设备的对应扇区中读取数据,将读取的数据拷贝到第三DMA内存中。
在本发明实施例中,还包括:控制器603,用于将接收到的第一物理虚拟机内存的GPA转换成物理机物理地址HPA;根据所述第一物理虚拟机内存的HPA创建IO队列,将IO队列标识和所述第一物理虚拟机内存的HPA之间的第一对应关系发送给NVMe-Blk驱动;
将接收到的第二物理虚拟机内存的GPA转换成物理机物理地址HPA,将所述第二物理虚拟机内存设置成主机DMA访问模式,将所述第二物理虚拟机内存的HPA发送给所述NVMe-Blk驱动。
在本发明实施例中,还包括:控制器603,用于为所述IO队列分配消息中断MSI中断号,将所述MSI中断号设置成所述虚拟机直接处理;将所述MSI中断号发送给所述NVMe-Blk驱动;进行预定请求对应的操作后,根据所述MSI中断号触发中断;
在本发明实施例中,还包括:控制器603,用于将所述提交队列项信息写入所述NVMe设备的寄存器的DoorBell区域中,IO队列标识对应的字段中。
上述虚拟化装置的具体实现方式与前述实施例的虚拟化方法相同,这里不再赘述。
本发明另一个实施例提出了一种虚拟化装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现上述任一种虚拟化方法的步骤。
本发明另一个实施例提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种虚拟化方法的步骤。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
虽然本发明实施例所揭露的实施方式如上,但所述的内容仅为便于理解本发明实施例而采用的实施方式,并非用以限定本发明实施例。任何本发明实施例所属领域内的技术人员,在不脱离本发明实施例所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明实施例的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (18)
1.一种虚拟化方法,包括:
当虚拟机的应用发出预定请求时,虚拟机的非易失内存主机控制器接口规范—块NVMe-Blk驱动从虚拟NVMe直接内存存取DMA内存管理区中分配第一DMA内存;其中,第一DMA内存包括输入输出IO队列的提交队列的第二DMA内存和完成队列的第三DMA内存;
NVMe-Blk驱动根据第二DMA内存的HPA构建提交队列项,通知主机的NVMe设备处理所述预定请求;
NVMe-Blk驱动读取完成队列中的回应信息。
2.根据权利要求1所述的虚拟化方法,其特征在于,所述预定请求为写请求;所述NVMe-Blk驱动根据第二DMA内存的HPA构建提交队列项之前,该方法还包括:
所述NVMe-Blk驱动将所写的数据拷贝到所述第二DMA内存中。
3.根据权利要求1所述的虚拟化方法,其特征在于,所述预定请求为读请求;所述虚拟化方法还包括:
所述NVMe-Blk驱动根据所述回应信息从第三DMA内存中读取数据,将读取的数据拷贝到应用的读缓存中,释放第三DMA内存。
4.根据权利要求1~3任一项所述的虚拟化方法,其特征在于,该方法之前还包括:
所述NVMe-Blk驱动向所述虚拟机申请连续的第一物理虚拟机内存,将所述第一物理虚拟机内存的虚拟机物理地址GPA传输给主机;
所述NVMe-Blk驱动接收到输入输出IO队列标识和所述第一物理虚拟机内存的物理机物理地址HPA之间的第一对应关系;
所述NVMe-Blk驱动向所述虚拟机申请连续的第二物理虚拟机内存,将所述第二物理虚拟机内存设置成DMA访问方法,将所述第二物理虚拟机内存的虚拟机物理地址GPA传输给主机;
所述NVMe-Blk驱动根据接收到的第二物理虚拟机内存的HPA创建所述虚拟NVMe DMA内存管理区。
5.根据权利要求4所述的虚拟化方法,其特征在于,该方法还包括:
所述NVMe-Blk驱动保存所述IO队列标识和所述NVMe设备的寄存器中的门铃DoorBell区域的字段之间的第二对应关系;
所述通知主机的NVMe设备处理预定请求包括:
所述NVMe-Blk驱动将提交队列项信息写入所述NVMe设备的寄存器的门铃DoorBell区域中,所述IO队列标识对应的字段中。
6.根据权利要求4所述的虚拟化方法,其特征在于,该方法还包括:
所述NVMe-Blk驱动接收到消息中断MSI中断号;
所述NVMe-Blk驱动读取完成队列信息包括:
所述NVMe-Blk驱动在所述MSI中断号对应的中断触发时读取所述完成队列中的回应信息。
7.根据权利要求1~3任一项所述的虚拟化方法,其特征在于,所述通知主机的NVMe设备处理预定请求包括:
所述NVMe-Blk驱动向所述主机发送写门铃DoorBell请求;其中,所述写DoorBell请求包括提交队列项信息。
8.根据权利要求1~3任一项所述的虚拟化方法,其特征在于,所述NVMe-Blk驱动读取完成队列中的回应信息包括:
所述NVMe-Blk驱动轮询所述完成队列得到回应信息。
9.一种虚拟化方法,包括:
主机的非易失内存主机控制器接口规范NVMe设备获知有预定请求需要处理时,进行预定请求对应的操作,将回应信息放入完成队列中。
10.根据权利要求9所述的虚拟化方法,其特征在于,所述预定请求为写请求,所述进行预定请求对应的操作包括:
所述NVMe设备根据提交队列项信息将第二DMA内存中的数据写入到非易失内存主机控制器接口规范NVMe设备的对应扇区中。
11.根据权利要求9所述的虚拟化方法,其特征在于,所述预定请求为读请求,所述进行预定请求对应的操作包括:
所述NVMe设备根据提交队列项信息从NVMe设备的对应扇区中读取数据,将读取的数据拷贝到第三DMA内存中。
12.根据权利要求9~11任一项所述的虚拟化方法,其特征在于,该方法之前还包括:
所述主机将接收到的第一物理虚拟机内存的GPA转换成物理机物理地址HPA;
所述主机根据所述第一物理虚拟机内存的HPA创建IO队列,将IO队列标识和所述第一物理虚拟机内存的HPA之间的第一对应关系发送给所述NVMe-Blk驱动;
所述主机将所述第二物理虚拟机内存的GPA转换成物理机物理地址HPA,将所述第二物理虚拟机内存设置成主机DMA访问模式,将所述第二物理虚拟机内存的HPA发送给所述NVMe-Blk驱动。
13.根据权利要求12所述的虚拟机方法,其特征在于,所述主机将IO队列标识和所述第一物理虚拟机内存的HPA之间的第一对应关系发送给NVMe-Blk驱动之前,该方法还包括:所述主机为所述IO队列分配消息中断MSI中断号,将所述MSI中断号设置成所述虚拟机直接处理;
所述主机将IO队列标识和所述第一物理虚拟机内存的HPA之间的第一对应关系发送给NVMe-Blk驱动时,还将所述MSI中断号发送给所述NVMe-Blk驱动;
所述进行预定请求对应的操作后,该方法还包括:
所述主机根据所述MSI中断号触发中断。
14.根据权利要求12所述的虚拟机方法,其特征在于,该方法还包括:
所述主机接收到写门铃DoorBell请求;其中,所述写DoorBell请求包括提交队列项信息;
所述主机将所述提交队列项信息写入所述NVMe设备的寄存器的DoorBell区域中,所述IO队列标识对应的字段中。
15.一种虚拟化装置,包括:
非易失内存主机控制器接口规范—块NVMe-Blk驱动,用于当虚拟机的应用发出预定请求时,从虚拟NVMe DMA内存管理区中分配第一DMA内存;其中,第一DMA内存包括输入输出IO队列的提交队列的第二DMA内存和完成队列的第三DMA内存;根据第二DMA内存的HPA构建提交队列项,通知NVMe设备处理所述预定请求;读取完成队列中的回应信息。
16.一种虚拟化装置,包括:
非易失内存主机控制器接口规范NVMe设备,用于获知有预定请求需要处理时,进行预定请求对应的操作,将回应信息放入完成队列中。
17.一种虚拟化装置,包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当所述指令被所述处理器执行时,实现如权利要求1~14任一项所述的虚拟化方法的步骤。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1~14任一项所述的虚拟化方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811612722.7A CN111381926A (zh) | 2018-12-27 | 2018-12-27 | 一种虚拟化方法和装置 |
PCT/CN2019/128310 WO2020135504A1 (zh) | 2018-12-27 | 2019-12-25 | 一种虚拟化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811612722.7A CN111381926A (zh) | 2018-12-27 | 2018-12-27 | 一种虚拟化方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111381926A true CN111381926A (zh) | 2020-07-07 |
Family
ID=71129199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811612722.7A Withdrawn CN111381926A (zh) | 2018-12-27 | 2018-12-27 | 一种虚拟化方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111381926A (zh) |
WO (1) | WO2020135504A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416526A (zh) * | 2020-11-27 | 2021-02-26 | 海光信息技术股份有限公司 | 一种直接存储访问方法、装置及相关设备 |
CN114281252A (zh) * | 2021-12-10 | 2022-04-05 | 阿里巴巴(中国)有限公司 | 非易失性高速传输总线NVMe设备的虚拟化方法及设备 |
CN115904259A (zh) * | 2023-02-28 | 2023-04-04 | 珠海星云智联科技有限公司 | 非易失性存储器标准NVMe指令的处理方法及相关装置 |
WO2023141811A1 (en) * | 2022-01-26 | 2023-08-03 | Intel Corporation | Host to guest notification |
CN117251118A (zh) * | 2023-11-16 | 2023-12-19 | 上海创景信息科技有限公司 | 支持虚拟NVMe仿真与集成方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150317091A1 (en) * | 2014-05-02 | 2015-11-05 | Cavium, Inc. | Systems and methods for enabling local caching for remote storage devices over a network via nvme controller |
CN105700826A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 虚拟化方法和装置 |
CN107992436A (zh) * | 2016-10-26 | 2018-05-04 | 杭州华为数字技术有限公司 | 一种NVMe数据读写方法及NVMe设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430412B2 (en) * | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
CN105677597A (zh) * | 2014-11-20 | 2016-06-15 | 中兴通讯股份有限公司 | 数据写入方法及装置 |
CN106484549B (zh) * | 2015-08-31 | 2019-05-10 | 华为技术有限公司 | 一种交互方法、NVMe设备、HOST及物理机系统 |
CN108363670B (zh) * | 2017-01-26 | 2020-07-14 | 华为技术有限公司 | 一种数据传输的方法、装置、设备和系统 |
CN109062671A (zh) * | 2018-08-15 | 2018-12-21 | 无锡江南计算技术研究所 | 一种轻量级的高性能互连网络软件虚拟化方法 |
-
2018
- 2018-12-27 CN CN201811612722.7A patent/CN111381926A/zh not_active Withdrawn
-
2019
- 2019-12-25 WO PCT/CN2019/128310 patent/WO2020135504A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150317091A1 (en) * | 2014-05-02 | 2015-11-05 | Cavium, Inc. | Systems and methods for enabling local caching for remote storage devices over a network via nvme controller |
CN105700826A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 虚拟化方法和装置 |
CN107992436A (zh) * | 2016-10-26 | 2018-05-04 | 杭州华为数字技术有限公司 | 一种NVMe数据读写方法及NVMe设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416526A (zh) * | 2020-11-27 | 2021-02-26 | 海光信息技术股份有限公司 | 一种直接存储访问方法、装置及相关设备 |
CN112416526B (zh) * | 2020-11-27 | 2023-02-17 | 海光信息技术股份有限公司 | 一种直接存储访问方法、装置及相关设备 |
CN114281252A (zh) * | 2021-12-10 | 2022-04-05 | 阿里巴巴(中国)有限公司 | 非易失性高速传输总线NVMe设备的虚拟化方法及设备 |
WO2023141811A1 (en) * | 2022-01-26 | 2023-08-03 | Intel Corporation | Host to guest notification |
CN115904259A (zh) * | 2023-02-28 | 2023-04-04 | 珠海星云智联科技有限公司 | 非易失性存储器标准NVMe指令的处理方法及相关装置 |
CN115904259B (zh) * | 2023-02-28 | 2023-05-16 | 珠海星云智联科技有限公司 | 非易失性存储器标准NVMe指令的处理方法及相关装置 |
CN117251118A (zh) * | 2023-11-16 | 2023-12-19 | 上海创景信息科技有限公司 | 支持虚拟NVMe仿真与集成方法及系统 |
CN117251118B (zh) * | 2023-11-16 | 2024-02-13 | 上海创景信息科技有限公司 | 支持虚拟NVMe仿真与集成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2020135504A1 (zh) | 2020-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111381926A (zh) | 一种虚拟化方法和装置 | |
US11550477B2 (en) | Processing host write transactions using a non-volatile memory express controller memory manager | |
US9501245B2 (en) | Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host | |
US9557922B2 (en) | System and method for peer-to-peer PCIe storage transfers | |
US9740439B2 (en) | Solid-state storage management | |
TWI637613B (zh) | 用於支援經由nvme將網路上的可擴展存放裝置作為本機存放區進行訪問的系統和方法 | |
TWI828824B (zh) | 具有啟動器模式的固態硬碟 | |
US10133668B2 (en) | Technologies for providing cross data storage device communications | |
US10146718B2 (en) | Mechanism to boot multiple hosts from a shared PCIe device | |
US10956189B2 (en) | Methods for managing virtualized remote direct memory access devices | |
CN107526616B (zh) | 一种主机对bmc进行数据写入和读取的方法及装置 | |
CN116204456A (zh) | 数据访问方法及计算设备 | |
US20220222016A1 (en) | Method for accessing solid state disk and storage device | |
US9841985B2 (en) | Storage block deallocation in virtual environments | |
CN108153582B (zh) | Io命令处理方法与介质接口控制器 | |
CN112015352B (zh) | 存储块设备识别装置、系统和存储块设备读写方法 | |
US20210373815A1 (en) | Selective Snapshot Creation Using Source Tagging of Input-Output Operations | |
US20150326684A1 (en) | System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access | |
KR20150116627A (ko) | 컨트롤러 및 그것을 포함하는 데이터 저장 장치 | |
EP4105771A1 (en) | Storage controller, computational storage device, and operational method of computational storage device | |
US20220137998A1 (en) | Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same | |
US10430220B1 (en) | Virtual devices as protocol neutral communications mediators | |
US11740838B2 (en) | Array-based copy utilizing one or more unique data blocks | |
KR20150076699A (ko) | 가상화 장치 및 방법 | |
US10922253B1 (en) | Implementing interrupt remapping via input/output memory management unit faults |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200707 |
|
WW01 | Invention patent application withdrawn after publication |