CN105556473A - 一种i/o任务处理的方法、设备和系统 - Google Patents
一种i/o任务处理的方法、设备和系统 Download PDFInfo
- Publication number
- CN105556473A CN105556473A CN201480037746.8A CN201480037746A CN105556473A CN 105556473 A CN105556473 A CN 105556473A CN 201480037746 A CN201480037746 A CN 201480037746A CN 105556473 A CN105556473 A CN 105556473A
- Authority
- CN
- China
- Prior art keywords
- memory device
- rear end
- virtual machine
- end thread
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种I/O任务处理的方法、设备和系统,在虚拟化平台下,实现了并行处理I/O操作的功能。该方法包括:接收用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求;根据所述I/O请求,确定所述I/O请求要操作的存储设备区域;将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程。采用本发明公开的技术方案,实现了并行处理I/O操作的功能,在处理器处理能力不存在制约的前提下,实现I/O处理速度增长。
Description
技术领域
本发明实施例涉及计算机领域,尤其涉及一种虚拟化环境下输入/输出(Input/Output,简称I/O)任务处理的方法、设备和系统。
背景技术
虚拟化技术起源于对分时系统的需求,主要的目标是在一台主机上运行多个操作系统,以便充分利用大型机上昂贵的计算资源。随着x86处理器的性能提升以及应用的普及,虚拟化技术的发展也开始进入x86架构领域。特别是20世纪90年代末期,虚级化软件厂商为x86平台上的虚拟化技术应用开辟了道路,提供了以虚拟机监控器(VirtualMachineMonitor,简称VMM)为中心,对PC服务器平台虚拟化的软件解决方案。虚拟机(VirtualMachine,简称VM)负责在一个硬件平台上虚拟多个独立的、指令集架构(instructionsetarchitectur,简称ISA)和实际硬件相同的虚拟硬件系统,其中每个虚拟硬件系统均可运行不同的操作系统,即用户操作系统(GuestOS)。用户操作系统将通过虚拟机监控器VMM来访问实际的物理资源。
在虚拟化应用场景下,每个服务器上都会运行虚拟机管理器(Hypervisor)软件,Hypervisor是虚拟化的基础软件。Domain0为Hypervisor之上的一个特殊虚拟机,该虚拟机用来完成对各个虚拟机的交互以及一些外设模拟、外设访问等功能。通常,也会将用户域(GuestDomain)叫做前端,驱动域或Domain0叫做后端,相应的,将驱动域或Domain0中运行的驱动称为前端驱动,在DomainU中运行的驱动叫做后端驱动。目前虚拟化最常用的I/O任务处理方式是通过前后端驱动,靠前端驱动和后端驱动协同工作来完成通信,前端驱动将虚拟机内部的I/O请求通过输入输出(InputandOutput,简称IO)环导入到Hypervisor层进行后端驱动处理并提交给物理设备。以Xen虚拟化为例,Xen采用了分离设备驱动模型来实现I/O的虚拟化。该模型中设备驱动包括前端驱动程序、后端驱动程序,其中前端驱动在用户域(GuestDomain)虚拟机中运行,这里的GuestDomain虚拟机可以理解为普通的虚拟机,也可以称作DomainU,而后端驱动在管理域虚拟机Domain0中运行。前端驱动负责将用户域操作系统(GuestOperatingSystem,简称GuestOS)的I/O请求传递到Domain0中的后端驱动,并接受来自后端驱动的处理结果返回给GuestDomain。后端驱动对I/O请求解析并映射到物理设备,提交给相应的设备驱动程序控制硬件完成I/O操作,从而完成GuestDomain的I/O操作,随后把处理结果返回。
现有技术中,后端驱动对虚拟机的I/O请求的处理是基于慢速存储介质设计的,I/O处理能力取决于中央处理器(CentralProcessingUnit,简称CPU)核(core)的处理能力,在高速存储介质,如固态磁盘(SolidStateDisk,简称SSD)和内存盘(RamDisk)等开始在虚拟化场景中大量应用的情况下,这种处理方式逐渐成为虚拟化的I/O处理速度的瓶颈,从而在虚拟化场景下无法发挥出高速存储应有的效果,I/O处理速度无法有效提升。所以,需要开发新的技术,来解决这一问题。
发明内容
有鉴于此,本发明实施例提供了一种I/O任务处理的方法、设备和系统,以实现并行处理I/O操作的功能。
第一方面,本发明实施例提供了一种I/O任务处理方法,
所述IO任务处理方法应用于虚拟化系统,所述虚拟化系统包括管理域虚拟机和用户域虚拟机,包括:
接收所述用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求;
根据所述I/O请求,确定所述I/O请求要操作的存储设备区域,其中,所述存储设备分为N个存储设备区域,N为大于1的自然数;
将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,其中,所述N个存储设备区域与N个后端线程一一对应,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述每个后端线程对应的存储设备区域的I/O操作。
在第一方面第一种可能的实现方式中,所述将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,包括:
如果所述要操作的存储设备区域为M个,1<M<=N,则根据所述M个存储设备区域,将所述I/O请求拆分成M个子I/O请求,其中,每个所述子I/O请求用于请求对所述M个存储设备区域中的一个存储设备区域进行I/O操作,将每个所述子I/O请求分别发送给各自要操作的存储设备区域对应的后端线程;
如果所述要操作的存储设备区域为1个,则将所述I/O请求发送给所述I/O请求要操作的存储设备区域对应的1个后端线程。
结合第一方面或以上任意一种可能的实现方式,在第一方面第二种可能的实现方式中,所述方法还包括:
如果所述要操作的存储设备区域为M个,则接收所述M个存储设备区域对应的后端线程返回的所述M个子I/O请求的处理结果,将所述M个子I/O请求的处理结果进行合并,并将所述合并后的处理结果返回给所述用户域虚拟机;
如果所述要操作的存储设备区域为1个,接收所述I/O请求要操作的存储设备区域对应的后端线程返回的所述I/O请求的处理结果,并将所述I/O请求的处理结果返回给所述用户域虚拟机。
结合第一方面或以上任意一种可能的实现方式,在第一方面第三种可能的实现方式中,所述根据所述I/O请求,确定所述I/O请求要操作的存储设备区域包括:根据所述I/O请求中所述I/O请求要操作的所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备区域。
结合第一方面或以上任意一种可能的实现方式,在第一方面第四种可能的实现方式中,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:
所述管理域虚拟机中的后端分发模块通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
结合第一方面或以上任意一种可能的实现方式,在第一方面第五种可能的实现方式中,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:
所述用户域虚拟机中的前端分发模块接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
结合第一方面或以上任意一种可能的实现方式,在第一方面第六种可能的实现方式中,所述前端分发模块与所述N个后端线程中的每一个后端线程之间有一个专用IO环,所述前端分发模块通过所述专用IO环将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程。
第二方面,本发明实施例提供了一种I/O任务处理设备,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述I/O任务处理设备执行第一方面或第一方面任一种可能的实现方式的方法。
第三方面,本发明实施例提供了一种I/O任务处理方法,
所述IO任务处理方法应用于虚拟化系统,所述虚拟化系统包括管理域虚拟机和用户域虚拟机,包括:
接收所述用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求;
根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间;
确定没有后端线程占用所述存储设备地址空间中的存储单元时,将所述I/O请求分发给N个后端线程中的一个后端线程,其中,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述存储设备的I/O操作。
在第三方面第一种可能的实现方式中,所述确定没有后端线程占用所述存储设备地址空间的存储单元时,将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:判断是否有后端线程正在占用所述存储设备地址空间中的存储单元,若没有后端线程正在占用所述存储设备地址空间中的存储单元,则将所述I/O请求分发给所述N个后端线程中的一个后端线程,若有后端线程正在占用所述存储设备地址空间中的存储单元时,确定所述占用结束后,将所述I/O请求分发给所述N个后端线程中的一个后端线程。
结合第三方面或以上任意一种可能的实现方式,在第三方面第二种可能的实现方式中,若有后端线程正在占用所述存储设备地址空间的存储单元,则缓存所述I/O请求,并在确定所述占用结束后,将缓存的所述I/O请求从取出。
结合第三方面或以上任意一种可能的实现方式,在第三方面第三种可能的实现方式中,所述判断是否有后端线程正在占用所述存储设备地址空间的存储单元包括:查看阻塞单元表中是否包含所述存储设备地址空间内的存储单元的单元标识。
结合第三方面或以上任意一种可能的实现方式,在第三方面第四种可能的实现方式中,所述方法还包括:将所述存储设备地址空间内的存储单元的单元标识记录在所述阻塞单元表中;
并在接收到表示对所述I/O请求处理结束的响应消息后,将所述存储设备地址空间内的存储单元的单元标识从所述阻塞单元表中删除。
结合第三方面或以上任意一种可能的实现方式,在第三方面第五种可能的实现方式中,所述将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:根据哈希负载均衡,为所述I/O请求在所述N个后端线程中分配一个后端线程,并将所述I/O请求发送给分配的所述一个后端线程。
结合第三方面或以上任意一种可能的实现方式,在第三方面第六种可能的实现方式中,所述根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间,包括:根据所述I/O请求中的所述I/O请求要操作所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备地址空间。
结合第三方面或以上任意一种可能的实现方式,在第三方面第七种可能的实现方式中,所述方法还包括:接收所述一个后端线程返回的所述I/O请求的处理结果,并将所述处理结果返回给所述用户域虚拟机。
结合第三方面或以上任意一种可能的实现方式,在第三方面第八种可能的实现方式中,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:
所述管理域虚拟机中的后端分发模块通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
结合第三方面或以上任意一种可能的实现方式,在第三方面第九种可能的实现方式中,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:
所述用户域虚拟机中的前端分发模块接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
结合第三方面或以上任意一种可能的实现方式,在第三方面第十种可能的实现方式中,所述前端分发模块与所述N个后端线程中的每一个后端线程之间有一个专用IO环,所述前端分发模块通过所述专用IO环将所述I/O请求分发给所述一个后端线程。
第四方面,本发明实施例提供了一种I/O任务处理设备,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述I/O任务处理设备执行第三方面或第三方面任一种可能的实现方式的方法。
第五方面,本发明实施例提供了一种I/O任务处理设备,
所述IO任务处理设备应用于虚拟化系统,所述虚拟化系统包括管理域虚拟机和用户域虚拟机,其特征在于,包括:
接收单元,用于接收所述用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求;
确定单元,用于根据所述I/O请求,确定所述I/O请求要操作的存储设备区域,其中,所述存储设备分为N个存储设备区域,N为大于1的自然数;
分发单元,用于将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,其中,所述N个存储设备区域与N个后端线程一一对应,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述每个后端线程对应的存储设备区域的I/O操作。
在第五方面第一种可能的实现方式中,所述分发单元用于将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,包括:
如果所述要操作的存储设备区域为M个,1<M<=N,则所述分发单元用于根据所述M个存储设备区域,将所述I/O请求拆分成M个子I/O请求,其中,每个所述子I/O请求用于请求对所述M个存储设备区域中的一个存储设备区域进行I/O操作,将每个所述子I/O请求分别发送给各自要操作的存储设备区域对应的后端线程;
如果所述要操作的存储设备区域为1个,则所述分发单元用于将所述I/O请求发送给所述I/O请求要操作的存储设备区域对应的1个后端线程。
结合第五方面或以上任意一种可能的实现方式,在第五方面第二种可能的实现方式中,还包括发送单元:
如果所述要操作的存储设备区域为M个,则所述接收单元还用于接收所述M个存储设备区域对应的后端线程返回的所述M个子I/O请求的处理结果,并将所述M个子I/O请求的处理结果进行合并,所述发送单元用于将所述合并后的处理结果返回给所述用户域虚拟机;
如果所述要操作的存储设备区域为1个,所述接收单元还用于接收所述I/O请求要操作的存储设备区域对应的后端线程返回的所述I/O请求的处理结果,所述发送单元用于将所述所述I/O请求的处理结果返回给所述用户域虚拟机。
结合第五方面或以上任意一种可能的实现方式,在第五方面第三种可能的实现方式中,所述确定单元用于根据所述I/O请求,确定所述I/O请求要操作的存储设备区域,包括:所述确定单元用于根据所述I/O请求中所述I/O请求要操作的所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备区域。
结合第五方面或以上任意一种可能的实现方式,在第五方面第四种可能的实现方式中,所述设备为所述管理域虚拟机中的后端分发模块,所述接收单元用于通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
结合第五方面或以上任意一种可能的实现方式,在第五方面第五种可能的实现方式中,所述设备为所述用户域虚拟机中的前端分发模块,所述接收单元用于接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
结合第五方面或以上任意一种可能的实现方式,在第五方面第六种可能的实现方式中,所述分发单元与所述N个后端线程中的每一个后端线程之间有一个专用IO环,所述分发单元用于通过所述专用IO环将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程。
第六方面,本发明实施例提供了一种I/O任务处理设备,
所述IO任务处理设备应用于虚拟化系统,所述虚拟化系统包括管理域虚拟机和用户域虚拟机,其特征在于,包括:
接收单元,用于接收用户域虚拟机对为所述用户域虚拟机分配的存储设备进行I/O操作的I/O请求;
确定单元,用于根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间;
分发单元,用于在确定没有后端线程占用所述存储设备地址空间中的存储单元时,将所述I/O请求分发给N个后端线程中的一个后端线程,其中,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述存储设备的I/O操作。
在第六方面第一种可能的实现方式中,所述分发单元用于在确定没有后端线程占用所述存储设备地址空间的存储单元时,将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:所述分发单元用于判断是否有后端线程正在占用所述存储设备地址空间中的存储单元,若没有后端线程正在占用所述存储设备地址空间中的存储单元,则将所述I/O请求分发给所述N个后端线程中的一个后端线程,若有后端线程正在占用所述存储设备地址空间中的存储单元时,确定所述占用结束后,将所述I/O请求分发给所述N个后端线程中的一个后端线程。
结合第六方面或以上任意一种可能的实现方式,在第六方面第二种可能的实现方式中,
还包括缓存单元,所述缓存单元用于:若有后端线程正在占用所述存储设备地址空间的存储单元,则缓存所述I/O请求;
所述分发单元还用于,确定所述占用结束后,将所述I/O请求从所述缓存单元中取出。
结合第六方面或以上任意一种可能的实现方式,在第六方面第三种可能的实现方式中,所述分发单元用于判断是否有后端线程正在占用所述存储设备地址空间的存储单元包括:所述分发单元用于查看阻塞单元表中是否包含所述存储设备地址空间内的存储单元的单元标识。
结合第六方面或以上任意一种可能的实现方式,在第六方面第四种可能的实现方式中,所述分发单元还用于将所述存储设备地址空间内的存储单元的单元标识记录在所述阻塞单元表中;并在接收到表示对所述I/O请求处理结束的响应消息后,将所述存储设备地址空间内的存储单元的单元标识从所述阻塞单元表中删除。
结合第六方面或以上任意一种可能的实现方式,在第六方面第五种可能的实现方式中,所述分发单元用于将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:所述分发单元用于根据哈希负载均衡,为所述I/O请求在所述N个后端线程中分配一个后端线程,并将所述I/O请求发送给分配的所述一个后端线程。
结合第六方面或以上任意一种可能的实现方式,在第六方面第六种可能的实现方式中,所述确定单元用于根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间,包括:所述确定单元用于根据所述I/O请求中的所述I/O请求要操作所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备地址空间。
结合第六方面或以上任意一种可能的实现方式,在第六方面第七种可能的实现方式中,还包括发送单元,所述接收单元还用于接收所述一个后端线程返回的所述I/O请求的处理结果,所述发送单元用于将所述处理结果返回给所述用户域虚拟机。
结合第六方面或以上任意一种可能的实现方式,在第六方面第八种可能的实现方式中,所述设备为所述管理域虚拟机中的后端分发模块,所述接收单元用于通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
结合第六方面或以上任意一种可能的实现方式,在第六方面第九种可能的实现方式中,所述设备为所述用户域虚拟机中的前端分发模块,所述接收单元用于接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
结合第六方面或以上任意一种可能的实现方式,在第六方面第十种可能的实现方式中,所述分发单元与所述N个后端线程中的每一个后端线程之间有一个专用IO环,所述分发单元通过所述专用IO环将所述I/O请求分发给所述一个后端线程。
第七方面,本发明实施例提供了一种I/O任务处理系统,包括:用户域虚拟机,管理域虚拟机,存储设备以及如第五方面或第五方面任一种可能的实现方式的I/O任务处理设备,
所述用户域虚拟机,用于向所述I/O任务处理设备发送对所述存储设备进行I/O操作的I/O请求;
所述管理域虚拟机,用于通过与所述I/O请求要操作的存储设备区域对应的后端线程接收所述I/O请求,并处理对所述存储设备的I/O操作。
第八方面,本发明实施例提供了一种I/O任务处理系统,包括:用户域虚拟机,管理域虚拟机,存储设备以及如第六方面或第六方面任一种可能的实现方式的I/O任务处理设备,
所述用户域虚拟机,用于向所述I/O任务处理设备发送对所述存储设备进行I/O操作的I/O请求;
所述管理域虚拟机,用于通过所述I/O请求分发的一个后端线程接收所述I/O请求,并处理对所述存储设备的I/O操作。
结合以上任一方面或任一方面的任一可能的实现方式,所述管理域虚拟机包括但不限于特权域Domain0和设备驱动域DriverDomain。
结合以上任一方面或任一方面的任一可能的实现方式,所述生成N条后端线程可以在虚拟机加载时在管理域虚拟机中完成,也可以在有I/O请求时,由用户域虚拟机触发这一动作。
结合以上任一方面或任一方面的任一可能的实现方式,所述N条后端线程还可以根据虚拟化平台管理域虚拟机后端驱动的负载情况或存储设备I/O操作负载情况的变化,在虚拟化系统工作过程中进行动态的增加或删减,所述N条线程可以并行的处理后端驱动接收到的I/O操作请求。
依据本发明实施例提供的技术方案,在虚拟化平台下,通过后端驱动并行处理虚拟机对存储设备进行I/O操作的I/O请求,提升了存储设备的吞吐量,实现了虚拟化下I/O处理速度增长的目的。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1(a)为本发明实施例的虚拟化系统结构示意图;(b)为本发明实施例的分离式设备驱动模型结构示意图;
图2为依据本发明一实施例的I/O任务处理方法的示范性流程图;
图3为依据本发明一实施例的I/O任务处理方法的示范性流程图;
图4为依据本发明一实施例的I/O任务处理设备的逻辑结构示意图;
图5为依据本发明一实施例的I/O任务处理设备的逻辑结构示意图;
图6为依据本发明一实施例的I/O任务处理系统结构示意图;
图7为依据本发明一实施例的I/O任务处理系统结构示意图;
图8为依据本发明一实施例的I/O任务处理系统结构示意图;
图9为依据本发明一实施例的I/O任务处理系统结构示意图;
图10为依据本发明一实施例的I/O任务处理系统硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1(a)为本发明实施例应用的虚拟化系统结构示意图,如图1(a)所示,以Xen虚拟化系统为例,可选的,该系统包括:Xen管理器Hypervisor,特权域Domain0,驱动域DriverDomain,一个或多个用户域DomainU和物理硬件。
在Xen中,虚拟机监控器(VirtualMachineMonitor,VMM)的功能是由Xen虚拟机管理器Hypervisor来承担的,或简称Xen,虚拟机也可以称为域(Domain,或简写为Dom)。Xen上的众多域存在一个特权域用于辅助Xen管理其它的域,提供相应的虚拟资源服务,特别是对I/O设备的访问,称为Domain0(Dom0),其它的域称为DomainU(DomU)。除Domain0外,Xen的设计还允许实际的硬件设备驱动驻留在一个驱动域(DriverDomain)中。驱动域或Domain0管理实际的硬件设备,运行该设备的后端驱动为其它虚拟机的前端驱动服务。XenHypervisor是介于操作系统和硬件之间的一个软件描述层。它负责在各个虚拟机之间进行CPU调度和内存分配。XenHypervisor不仅抽象出虚拟机的硬件,同时还控制着各个虚拟机的执行。
XenHypervisor向Domain提供了一个抽象层,其中包含了管理和虚拟硬件的应用程序接口(ApplicationProgrammingInterface,API)。XenHypervisor向Domain提供了虚拟中央处理器(VirtualCentralProcessingUnit,简称)、虚拟存储器管理单元(MemoryManagementUnit,简称MMU)等基本的虚拟硬件和基本机制(事件通道),并向Domain提供了虚拟域管理应用程序接口API,即控制接口。对Domain设备的访问,Xen也提供了相应的硬件接口(安全硬件接口),以保证设备访问得以安全进行。其中:
控制接口仅能被Domain0使用,用于帮助Domain0控制和管理其他的Domain。控制接口提供的具体功能包括Domain的创建、销毁、暂停、恢复及迁移,对其他Domain的CPU调度、内存分配及设备访问等。
安全硬件接口提供除虚拟CPU、MMU之外的所有硬件虚拟工作,包括直接内存访问(DirectMemoryAccess,简称DMA)/输入输出(Input&Output,简称IO)、驱动程序、虚拟的外围组件互联(PeripheralComponentInterconnect,简称PCI)地址配置、虚拟硬件中断等。该接口只能被具有原生设备驱动的Domain使用,而向其他Domain则仅通过设备通道提供虚拟硬件服务。
Domain0是运行在XenHypervisor之上的虚拟机,它拥有访问物理I/O资源的权限,同时和系统上运行的其他虚拟机进行交互。Domain0需要在其它Domain启动之前启动,Domain0内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件,负责与Xen提供的管理应用程序界面API交互,并通过用户模式下的管理工具来管理Xen的虚拟机环境。
设备管理器,位于Domain0,可作为系统基本输入输出系统(BasicInputOutputSystem,简称BIOS)的扩展,用于向所有的设备提供通用的管理接口,并负责在Domain启动时加载特定的设备驱动、建立管理设备通道、提供硬件设备配置接口并处理设备访问错误。
Xen支持半虚拟化和全虚拟化,运行在XenHypervisor上的所有半虚拟化(Paravirtualized,简称PV)虚拟机被称为“半虚拟化用户域”,其上运行着被修改过内核的操作系统,或者上层操作系统安装了半虚拟化的驱动程序的系统。运行在XenHypervisor上的所有全虚拟化虚拟机被称为“全虚拟化用户域”,其上运行着没有修改内核且没有安装半虚拟化驱动程序的操作系统。Xen最重要的优势在于半虚拟化,能让虚拟机有效运行而不需要仿真,因此虚拟机能感知到hypervisor,而不需要模拟虚拟硬件,从而能实现高性能,在没有给出特殊说明的情况下,本发明实施例中所说的虚拟机均指半虚拟化虚拟机。
用户域(GuestDomain)的设备驱动都假设自己可以直接访问硬件,同时对硬件拥有完全控制权。但在这虚拟机系统中是不可能的,一个设备通常要为多个用户域服务。为了确保管理性和安全访问,Xen的设备虚拟化采用了分离式设备驱动模型。如图1(b)所示,图1(b)为本发明实施例的分离式设备驱动模型结构示意图,该模型将设备驱动划分为前端驱动和后端驱动,其中前端驱动在用户域中运行,而后端驱动在管理域中运行。所述管理域包括但不限于Domain0和驱动域DriverDomain,在本发明实施例中,为便于说明,不再区分驱动域和Domain0,统一采用管理域来进行实际的硬件设备管理,运行该设备的后端驱动为其它虚拟机的前端驱动服务,并在具体说明时,用Domain0为例进行技术方案说明,并不对本发明的保护范围造成限制。Xen将IO设备访问权限指派给管理域虚拟机,该管理域虚拟机能够直接访问这个IO物理设备,并向其他用户域虚拟机提供该设备的软件接口(后端驱动),其他用户域虚拟机使用这个软件接口间接访问设备(通过前端驱动)。该方式将设备驱动分割成两部分,提高了稳定性,降低了VMM的复杂性,同时保证了IO访问性能。
XenHypervisor不支持网络和磁盘请求,因此一个PV用户操作系统必须通过和XenHypervisor、管理域通信,来实现网络和磁盘请求。当DomainU是一个半虚拟化的虚拟机时,虚拟机的内核是被修改过的,它知道自己不是运行在真实的硬件上,其设备是由Xen虚拟机出来的分离设备模型,要靠前端驱动和后端驱动协同工作来完成通信。前端驱动负责将用户操作系统的I/O请求传递到管理域虚拟机中的后端驱动,后端驱动对I/O请求解析并映射到物理设备,提交给相应的设备驱动程序控制硬件完成I/O操作。
由于前端驱动和后端驱动位于不同的域中,它们之间的通信要依赖共享IO环和事件通道来进行。共享IO环是由前端驱动分配的一块共享内存,在前端驱动和后端驱动间共享。管理域虚拟机直接访问物理磁盘,并对其他用户域DomainU提供一个虚拟块设备(VirtualBlockDevice,简称VBD)抽象,DomainU向VBD的前端驱动提交磁盘I/O请求,前端驱动将请求放到管理域和DomainU之间的共享IO环上,后端驱动获得请求,将请求转换为实际的物理磁盘I/O请求,并确认其合法性,提交给磁盘驱动设备处理,请求处理完成后通过事件机制通知DomainU。通过共享内存环,前端驱动和后端驱动可以把I/O请求放入环中和从环中读取,而I/O请求的处理结果也可以通过环进行传递。
图1(b)公布的分离式设备驱动模型中,后端驱动对DomainU的I/O请求是通过单进程或线程方式进行的。即只有一个后端线程用于处理前端驱动发送过来的I/O请求,后端驱动是指由后端生成,并运行在后端,并用于处理前端的I/O请求的线程。单线程模式下I/O处理能力取决于单个CPUcore的处理能力,在高速存储介质如SSD和RamDisk的场景下,这种处理方式逐渐成为虚拟化的存储瓶颈,从而在虚拟化场景下无法发挥出高速存储应有的效果。
图2是依据本发明一实施例的I/O任务处理方法200的示范性流程图,应用于虚拟化平台下的用户域虚拟机对其存储设备进行的I/O操作。在具体实现过程中,I/O任务处理方法200可由例如但不限于虚拟化系统执行,更进一步,可由Xen虚拟化系统执行,更具体的,可由Xen虚拟化系统的用户域虚拟机和管理域虚拟机执行。
S202:接收用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求。
S204:根据所述I/O请求,确定所述I/O请求要操作的存储设备区域,其中,所述存储设备分为N个存储设备区域,N为大于1的自然数。
S206:将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,其中,所述N个存储设备区域与N个后端线程一一对应,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述每个后端线程对应的存储设备区域的I/O操作。
所述存储设备是指虚拟化系统在计算设备上为所述用户域虚拟机分配的存储资源,所述存储资源被拥有所述存储资源的用户域虚拟机使用,在本发明实施例中,为便于说明,采用了存储设备的描述,并不对本发明的保护范围造成限制。
可选的,如果所述要操作的存储设备区域为M个,1<M<=N,则根据所述M个存储设备区域,将所述I/O请求拆分成M个子I/O请求,其中,每个所述子I/O请求用于请求对所述M个存储设备区域中的一个存储设备区域进行I/O操作,将每个所述子I/O请求分别发送给各自要操作的存储设备区域对应的后端线程;如果所述要操作的存储设备区域为1个,则将所述I/O请求发送给所述I/O请求要操作的存储设备区域对应的1个后端线程。
可选的,如果所述要操作的存储设备区域为M个,1<M<=N,则将所述I/O请求分别发送给所述M个存储设备区域对应的后端线程,每个后端线程只处理对对应存储区域的I/O操作;
可选的,方法200还包括:如果所述要操作的存储设备区域为M个,则接收所述M个存储设备区域对应的后端线程返回的所述M个子I/O请求的处理结果,将所述M个子I/O请求的处理结果进行合并,并将所述合并后的处理结果返回给所述用户域虚拟机;如果所述要操作的存储设备区域为1个,接收所述I/O请求要操作的存储设备区域对应的后端线程返回的所述I/O请求的处理结果,并将所述I/O请求的处理结果返回给所述用户域虚拟机。
可选的,所述根据所述I/O请求,确定所述I/O请求要操作的存储设备区域包括:根据所述I/O请求中所述I/O请求要操作的所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备区域。具体的,I/O请求要操作的所述存储设备的初始存储区域和存储区域数量的信息可以在I/O请求的I/O描述结构中进行描述。
可选的,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:所述管理域虚拟机中的后端分发模块通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
可选的,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:所述用户域虚拟机中的前端分发模块接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
可选的,所述前端分发模块与所述N个后端线程之间有至少一个IO环,用于在前端分发模块与后端线程之间进行I/O请求和I/O请求处理结果的传递。
可选的,所述前端分发模块与所述N个后端线程中的每一个后端线程之间都有一个专用IO环,所述前端分发模块通过所述专用IO环将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程。这里所说的前端分发模块与N个后端线程中的每一个后端线程之间都有一个专用IO环,是指前端分发模块与N个后端线程间共有N个IO环,每个IO环是每一个后端线程与前端分发模块之间专用的。
可选的,所述管理域虚拟机包括但不限于特权域Domain0和设备驱动域DriverDomain。
可选的,所述生成N条后端线程可以在虚拟机加载时在管理域虚拟机中完成,也可以在有I/O请求时,由用户域虚拟机触发这一动作。所述N条后端线程还可以根据虚拟化平台管理域虚拟机后端驱动的负载情况或存储设备I/O操作负载情况的变化,在虚拟化系统工作过程中进行动态的增加或删减,所述N条线程可以并行的处理后端驱动接收到的I/O操作请求。
根据本实施例的技术方案,生成N个后端线程,并将存储设备分为N个存储设备区域,每个后端线程处理对自己对应的存储设备区域的I/O请求,避免了同一时刻,多个I/O请求对同一处理单元进行I/O操作的乱序问题,又可以实现后端驱动并行处理虚拟机对存储设备进行I/O操作的I/O请求,提升了存储设备的吞吐量,实现了虚拟化下I/O处理速度增长的目的。
图3是依据本发明一实施例的I/O任务处理方法300的示范性流程图,应用于虚拟化平台下的用户域虚拟机对其存储设备进行的I/O操作。在具体实现过程中,I/O任务处理方法300可由例如但不限于虚拟化系统执行,更进一步,可由Xen虚拟化系统执行,更具体的,可由Xen虚拟化系统的用户域虚拟机和管理域虚拟机执行。
S302:接收用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求。
S304:根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间。
S306:确定没有后端线程占用所述存储设备地址空间中的存储单元时,将所述I/O请求分发给N个后端线程中的一个后端线程,其中,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述存储设备的I/O操作。
所述占用是指,若第一后端线程正在处理的I/O请求要操作的存储设备地址空间包含第一存储单元,则表明所述第一后端线程正在占用所述第一存储单元。
可选的,所述确定没有后端线程占用所述存储设备地址空间的存储单元时,将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:判断是否有后端线程正在占用所述存储设备地址空间中的存储单元,若没有后端线程正在占用所述存储设备地址空间中的存储单元,则将所述I/O请求分发给所述N个后端线程中的一个后端线程,若有后端线程正在占用所述存储设备地址空间中的存储单元时,确定所述占用结束后,将所述I/O请求分发给所述N个后端线程中的一个后端线程。
可选的,若有后端线程正在占用所述存储设备地址空间的存储单元,则缓存所述I/O请求,并在确定所述占用结束后,将缓存的所述I/O请求取出。优选的,可以将I/O请求缓存在一个缓存设备中,并在确定存储设备地址空间的存储单元占用结束后,从缓存设备中取出缓存的所述I/O请求。
可选的,所述判断是否有后端线程正在占用所述存储设备地址空间的存储单元包括:查看阻塞单元表中是否包含所述存储设备地址空间内的存储单元的单元标识。
可选的,所述判断是否有后端线程正在占用所述存储设备地址空间的存储单元包括:查看阻塞单元表中记录的地址区间是否包含所述存储设备地址空间内的存储单元的地址。
可选的,方法300还包括:将所述存储设备地址空间内的存储单元的单元标识记录在所述阻塞单元表中;并在接收到表示对所述I/O请求处理结束的响应消息后,将所述存储设备地址空间内的存储单元的单元标识从所述阻塞单元表中删除。具体的,在将I/O请求分发给N个后端线程中的一个后端线程后,将该存储设备地址空间内的存储单元的单元标识记录在阻塞单元表中,并在接收到表明该I/O请求处理结束的响应消息后,将阻塞单元表中记录的该存储单元的单元标识删除。
可选的,方法300还包括:将所述存储设备地址空间的地址区间段记录在所述阻塞单元表中;并在接收到表示对所述I/O请求处理结束的响应消息后,将所述存储设备地址空间内的地址区间段从所述阻塞单元表中删除。具体的,在将I/O请求分发给N个后端线程中的一个后端线程后,将该存储设备地址空间内的地址区间段记录在阻塞单元表中,并在接收到表明该I/O请求处理结束的响应消息后,将阻塞单元表中记录的该地址区间段删除。
可选的,所述判断是否有后端线程正在占用所述存储设备地址空间的存储单元包括:查看阻塞单元表中是否包含所述存储设备地址空间内的存储单元的单元标识,阻塞单元表用于记录正在被后端线程占用的存储单元的单元标识。所述占用,是指后端线程正在处理的I/O请求要操作的存储设备地址空间包含该存储单元。
可选的,所述将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:根据哈希负载均衡,为所述I/O请求在所述N个后端线程中分配一个后端线程,并将所述I/O请求发送给分配的所述一个后端线程。
可选的,所述根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间,包括:根据所述I/O请求中的所述I/O请求要操作所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备地址空间。具体的,I/O请求要操作的所述存储设备的初始存储区域和存储区域数量的信息可以在I/O请求的I/O描述结构中进行描述。
可选的,方法300还包括:接收所述一个后端线程返回的所述I/O请求的处理结果,并将所述处理结果返回给所述用户域虚拟机。
可选的,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:所述管理域虚拟机中的后端分发模块通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
可选的,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:所述用户域虚拟机中的前端分发模块接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
可算的,所述前端分发模块与所述N个后端线程之间有至少一个IO环,用于在前端分发模块与后端线程之间进行I/O请求和I/O请求处理结果的传递。
可选的,所述前端分发模块与所述N个后端线程中的每一个后端线程之间都有一个专用IO环,所述前端分发模块通过所述专用IO环将所述I/O请求分发给所述一个后端线程。这里所说的前端分发模块与N个后端线程中的每一个后端线程之间都有一个专用IO环,是指前端分发模块与N个后端线程间共有N个IO环,每个IO环是每一个后端线程与前端分发模块之间专用的。
可选的,所述管理域虚拟机包括但不限于特权域Domain0和设备驱动域DriverDomain。
可选的,所述N条后端线程可以在虚拟机加载时在管理域虚拟机中生成,也可以在有I/O请求时,由用户域虚拟机触发后,在管理域虚拟机生成。所述N条后端线程还可以根据虚拟化平台管理域虚拟机后端驱动的负载情况或存储设备I/O操作负载情况的变化,在虚拟化系统工作过程中进行动态的增加或删减,所述N条线程可以并行的处理后端驱动接收到的I/O操作请求。
根据本实施例的技术方案,生成N个后端线程,并由分发模块记录正在被后端线程占用的存储单元的单元标识,当接收到I/O请求后,确认是否有后端线程正在占用所述I/O请求要操作的存储单元,在确认没有占用后,将所述I/O请求分发给所述N个后端线程中的一个后端线程处理,由此避免了同一时刻,多个I/O请求对同一处理单元进行I/O操作的乱序问题,又可以实现后端驱动并行处理虚拟机对存储设备进行I/O操作的I/O请求,提升了存储设备的吞吐量,实现了虚拟化下I/O处理速度增长的目的。
图4为依据本发明一实施例的I/O任务处理设备400的逻辑结构示意图。如图4所示,I/O任务处理设备400包括接收单元402、确定单元404和分发单元406。
接收单元402用于接收用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求。
确定单元404用于根据所述I/O请求,确定所述I/O请求要操作的存储设备区域,其中,所述存储设备分为N个存储设备区域,N为大于1的自然数。
分发单元406用于将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,其中,所述N个存储设备区域与N个后端线程一一对应,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述每个后端线程对应的存储设备区域的I/O操作。
可选的,所述分发单元406用于将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,包括:如果所述要操作的存储设备区域为M个,1<M<=N,则所述分发单元406用于根据所述M个存储设备区域,将所述I/O请求拆分成M个子I/O请求,其中,每个所述子I/O请求用于请求对所述M个存储设备区域中的一个存储设备区域进行I/O操作,将每个所述子I/O请求分别发送给各自要操作的存储设备区域对应的后端线程;如果所述要操作的存储设备区域为1个,则所述分发单元406用于将所述I/O请求发送给所述I/O请求要操作的1个存储设备区域对应的后端线程。
可选的,设备400还包括发送单元:如果所述要操作的存储设备区域为M个,则所述接收单元402还用于接收所述M个存储设备区域中对应的后端线程返回的所述M个子I/O请求的处理结果,并将所述M个子I/O请求的处理结果进行合并,所述发送单元用于将所述合并后的处理结果返回给所述用户域虚拟机;如果所述要操作的存储设备区域为1个,所述接收单元402还用于接收所述I/O请求要操作的存储设备区域对应的后端线程返回的所述I/O请求的处理结果,所述发送单元用于将返回的所述I/O请求的处理结果返回给所述用户域虚拟机。
可选的,所述确定单元404用于根据所述I/O请求,确定所述I/O请求要操作的存储设备区域,包括:所述确定单元404用于根据所述I/O请求中所述I/O请求要操作的所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备区域。具体的,I/O请求要操作的所述存储设备的初始存储区域和存储区域数量的信息可以在I/O请求的I/O描述结构中进行描述。
可选的,所述设备400为所述管理域虚拟机中的后端分发模块,所述接收单元402用于通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
可选的,所述设备400为所述用户域虚拟机中的前端分发模块,所述接收单元402用于接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
可选的,所述前端分发模块与所述N个后端线程中的每一个后端线程之间都有一个专用IO环,所述分发单元406通过所述专用IO环将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程。这里所说的前端分发模块与N个后端线程中的每一个后端线程之间都有一个专用IO环,是指前端分发模块与N个后端线程间共有N个IO环,每个IO环是每一个后端线程与前端分发模块之间专用的。
可选的,所述管理域虚拟机包括但不限于特权域Domain0和设备驱动域DriverDomain。
可选的,所述生成N条后端线程可以在虚拟机加载时在管理域虚拟机中完成,也可以在有I/O请求时,由用户域虚拟机触发这一动作。所述N条后端线程还可以根据虚拟化平台管理域虚拟机后端驱动的负载情况或存储设备I/O操作负载情况的变化,在虚拟化系统工作过程中进行动态的增加或删减,所述N条线程可以并行的处理后端驱动接收到的I/O操作请求。
根据本实施例的技术方案,生成N个后端线程,并将存储设备分为N个存储设备区域,每个后端线程处理对自己对应的存储设备区域的I/O请求,避免了同一时刻,多个I/O请求对同一处理单元进行I/O操作的乱序问题,又可以实现后端驱动并行处理虚拟机对存储设备进行I/O操作的I/O请求,提升了存储设备的吞吐量,实现了虚拟化下I/O处理速度增长的目的。
图5为依据本发明一实施例的I/O任务处理设备500的逻辑结构示意图。如图5所示,I/O任务处理设备500包括接收单元502、确定单元504和分发单元506。
接收单元502用于接收用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求。
确定单元504用于根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间。
分发单元506用于在确定没有后端线程正在占用所述存储设备地址空间中的存储单元时,将所述I/O请求分发给N个后端线程中的一个后端线程,其中,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述存储设备的I/O操作。
可选的,所述分发单元506用于在确定没有后端线程正在占用所述存储设备地址空间的存储单元时,将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括::所述分发单元506用于判断是否有后端线程正在占用所述存储设备地址空间中的存储单元,若没有后端线程正在占用所述存储设备地址空间中的存储单元,则将所述I/O请求分发给所述N个后端线程中的一个后端线程,若有后端线程正在占用所述存储设备地址空间中的存储单元时,确定所述占用结束后,将所述I/O请求分发给所述N个后端线程中的一个后端线程。
可选的,设备500还包括缓存单元,所述缓存单元用于:若有后端线程正在占用所述存储设备地址空间的存储单元,则缓存所述I/O请求;所述分发单元还用于,确定所述占用结束后,将所述I/O请求从所述缓存单元中取出。
可选的,所述分发单元用于判断是否有后端线程正在占用所述存储设备地址空间的存储单元包括:所述分发单元用于查看阻塞单元表中是否包含所述存储设备地址空间内的存储单元的单元标识。具体的,所述设备还包括存储单元,所述存储单元用于存储阻塞单元表,所述阻塞单元表用于记录正在被后端线程占用的存储单元的单元标识,可选的,所述分发单元506还用于将所述存储设备地址空间内的存储单元的单元标识记录在所述阻塞单元表中;并在接收到表示对所述I/O请求处理结束的响应消息后,将所述存储设备地址空间内的存储单元的单元标识从所述阻塞单元表中删除。
可选的,所述分发单元506用于将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:所述分发单元506用于根据哈希负载均衡,为所述I/O请求在所述N个后端线程中分配一个后端线程,并将所述I/O请求发送给分配的所述一个后端线程。
可选的,所述确定单元504用于根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间,包括:所述确定单元504根据所述I/O请求中的所述I/O请求要操作所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备地址空间。具体的,I/O请求要操作的所述存储设备的初始存储区域和存储区域数量的信息可以在I/O请求的I/O描述结构中进行描述。
可选的,设备500还包括发送单元,所述接收单元502还用于接收所述一个后端线程返回的所述I/O请求的处理结果,所述发送单元用于将所述处理结果返回给所述用户域虚拟机。
可选的,设备500为所述管理域虚拟机中的后端分发模块,所述接收单元502用于通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
可选的,设备500为所述用户域虚拟机中的前端分发模块,所述接收单元502用于接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
可选的,所述分发单元506与所述N个后端线程中的每一个后端线程之间都有一个专用IO环,所述分发单元506通过所述专用IO环将所述I/O请求分发给所述一个后端线程。这里所说的分发单元506与N个后端线程中的每一个后端线程之间都有一个专用IO环,是指分发单元506与N个后端线程间共有N个IO环,每个IO环是每一个后端线程与分发单元506之间专用的。
可选的,所述管理域虚拟机包括但不限于特权域Domain0和设备驱动域DriverDomain。
可选的,所述生成N条后端线程可以在虚拟机加载时在管理域虚拟机中完成,也可以在有I/O请求时,由用户域虚拟机触发这一动作。所述N条后端线程还可以根据虚拟化平台管理域虚拟机后端驱动的负载情况或存储设备I/O操作负载情况的变化,在虚拟化系统工作过程中进行动态的增加或删减,所述N条线程可以并行的处理后端驱动接收到的I/O操作请求。
根据本实施例的技术方案,生成N个后端线程,并由分发模块记录正在被后端线程占用的存储单元的单元标识,当接收到I/O请求后,确认是否有后端线程正在占用所述I/O请求要操作的存储单元,在确认没有占用后,将所述I/O请求分发给所述N个后端线程中的一个后端线程处理,由此避免了同一时刻,多个I/O请求对同一处理单元进行I/O操作的乱序问题,又可以实现后端驱动并行处理虚拟机对存储设备进行I/O操作的I/O请求,提升了存储设备的吞吐量,实现了虚拟化下I/O处理速度增长的目的。
图6为依据本发明一实施例的虚拟化下I/O任务处理系统600结构示意图,如图所示,所述系统600至少包括:用户域虚拟机602、IO环604、I/O任务处理设备606、管理域虚拟机608以及存储设备610。
所述存储设备610分为N个存储设备区域,所述N个存储设备区域与N个后端线程一一对应,所述N个后端线程由管理域虚拟机608生成,并运行在所述管理域虚拟机608中,每个后端线程用于处理对所述每个后端线程对应的存储设备区域的I/O操作,其中N为大于1的自然数。
可选的,所述存储设备610包括但不限于存储设备、内存、网络适配器等。其中存储设备包括但不限于:物理硬盘或其分区(包括小型计算机系统接口iSCSI存储或全局网络块设备GNBD卷)、网络存储协议(包括NFS等网络或机群文件系统)、基于文件的虚拟存储设备(虚拟磁盘镜像)、基于逻辑卷的存储设备。
可选的,所述生成N条后端线程可以在虚拟机加载时在管理域虚拟机608中完成,也可以在有I/O请求时,由用户域虚拟机602触发这一动作。所述N条后端线程还可以根据虚拟化平台管理域虚拟机后端驱动的负载情况或存储设备I/O操作负载情况的变化,在虚拟化系统工作过程中进行动态的增加或删减,所述N条线程可以并行的处理后端驱动接收到的I/O操作请求。
所述用户域虚拟机602用于通过IO环604向所述I/O任务处理设备606发送对所述存储设备610进行I/O操作的I/O请求。
所述IO环604具体为一块共享内存,由所述用户域虚拟机602生成,用于在所述用户域虚拟机602和I/O任务处理设备606之间实现内存共享。所述用户域虚拟机602把I/O请求放入IO环604中,I/O任务处理设备606从IO环中读取所述I/O请求,I/O请求的处理结果也可以通过IO环进行传递。
可选的,所述IO环604可以是1个或者大于1的自然数个。
所述用户域虚拟机602将I/O请求放入IO环604的请求生产者下标处,逻辑上使IO环转动起来,使刚提交的I/O请求“转”进I/O任务处理设备606可以见到的范围。
I/O任务处理设备606从IO环的请求消费者下标处获取从用户域虚拟机602传递来的I/O请求,根据接收到的所述I/O请求,确定所述I/O请求要操作的存储设备区域,并将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程。如果所述要操作的存储设备区域为M个,1<M<=N,则根据所述M个存储设备区域,将所述I/O请求拆分成M个子I/O请求,其中,每个所述子I/O请求用于请求对所述M个存储设备区域中的一个存储设备区域进行I/O操作,将每个所述子I/O请求分别发送给各自要操作的存储设备区域对应的后端线程;如果所述要操作的存储设备区域为1个,则将所述I/O请求发送给所述I/O请求要操作的存储设备区域对应的后端线程。
所述I/O任务处理设备606根据所述I/O请求的I/O描述结构中所述I/O请求要操作的所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备区域。
可选的,IO描述结构包括但不限于块输入输出(blockinputoutput,简称bio)结构。
所述管理域虚拟机608用于通过与所述I/O请求要操作的存储设备区域对应的后端线程接收所述I/O请求,并处理对所述存储设备的I/O操作。
可选的,所述管理域虚拟机608包括但不限于特权域Domain0和设备驱动域DriverDomain。
在所述I/O请求中,用户域虚拟机602将I/O请求要操作的内存段授权给管理域虚拟机608访问。
所述I/O任务处理设备606还用于,如果所述要操作的存储设备区域为M个,则接收所述要操作的M个存储设备区域中的每个存储设备区域对应的后端线程的子I/O请求处理结果,将M个子I/O请求处理结果合并,并将合并后的结果返回给所述用户域虚拟机602;如果所述要操作的存储设备区域为1个,则接收所述I/O请求要操作的存储设备区域对应的后端线程的处理结果,并将该处理结果返回给所述用户域虚拟机602。
可选的,所述I/O任务处理设备606将处理结果作为所述I/O请求的响应放在IO环604的响应生产者下标处,并通知用户域虚拟机602所述响应,使用户域虚拟机602可以通过IO环604的响应消费者下标获取这个响应结构。
可选的,所述I/O任务处理设备606位于所述管理域虚拟机608中,其功能可以由管理域虚拟机的后端驱动实现,也可以由其他模块实现。
可选的,所述N条后端线程和存储设备610之间还有原生设备驱动,后端线程把I/O请求传递给原生设备驱动,通过原生设备驱动实际对存储设备610进行实际存取操作。
图7为依据本发明一实施例的虚拟化下I/O任务处理系统700结构示意图,如图所示,所述系统700至少包括:用户域虚拟机702、I/O任务处理设备704、IO环706、管理域虚拟机708以及存储设备710。
所述存储设备710分为N个存储设备区域,所述N个存储设备区域与N个后端线程一一对应,所述N个后端线程由管理域虚拟机708生成,并运行在所述管理域虚拟机708中,每个后端线程用于处理对所述每个后端线程对应的存储设备区域的I/O操作,其中N为大于1的自然数。
可选的,所述存储设备710包括但不限于存储设备、内存、网络适配器等。其中存储设备包括但不限于:物理硬盘或其分区(包括小型计算机系统接口iSCSI存储或全局网络块设备GNBD卷)、网络存储协议(包括NFS等网络或机群文件系统)、基于文件的虚拟存储设备(虚拟磁盘镜像)、基于逻辑卷的存储设备。
可选的,所述生成N条后端线程可以在虚拟机加载时在管理域虚拟机708中完成,也可以在有I/O请求时,由用户域虚拟机触发这一动作。所述N条后端线程还可以根据虚拟化平台管理域虚拟机后端驱动的负载情况或存储设备I/O操作负载情况的变化,在虚拟化系统工作过程中进行动态的增加或删减,所述N条线程可以并行的处理后端驱动接收到的I/O操作请求。
所述用户域虚拟机702用于向所述I/O任务处理设备704发送对所述存储设备710进行I/O操作的I/O请求。
可选的,所述I/O任务处理设备704为位于所述用户域虚拟机702中的前端分发模块,所述前端分发模块用于接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求,其功能可以由用户域虚拟机702的前端驱动实现,也可以由其他模块实现。
I/O任务处理设备704根据接收到的所述I/O请求,确定所述I/O请求要操作的存储设备区域,并将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程。如果所述要操作的存储设备区域为M个,1<M<=N,则根据所述M个存储设备区域,将所述I/O请求拆分成M个子I/O请求,其中,每个所述子I/O请求用于请求对所述M个存储设备区域中的一个存储设备区域进行I/O操作,将每个所述子I/O请求分别发送给各自要操作的存储设备区域对应的后端线程;如果所述要操作的存储设备区域为1个,则将所述I/O请求发送给所述I/O请求要操作的存储设备区域对应的后端线程。
所述I/O任务处理设备704与所述N个后端线程中的每一个后端线程之间都有一个专用IO环706,所述I/O任务处理设备704通过所述专用IO环706将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程。
所述IO环706具体为一块共享内存,用于在所述I/O任务处理设备704和管理域虚拟机708之间实现内存共享。所述I/O任务处理设备704把I/O请求放入IO环706中,管理域虚拟机708从IO环706中读取所述I/O请求,I/O请求的处理结果也可以通过IO环706进行传递。
所述I/O任务处理设备704将I/O请求放入IO环706的请求生产者下标处,逻辑上使IO环706转动起来,使刚提交的I/O请求“转”进管理域虚拟机708可以见到的范围。
所述I/O任务处理设备704根据所述I/O请求的I/O描述结构中所述I/O请求要操作的所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备区域。
可选的,IO描述结构包括但不限于块输入输出(blockinputoutput,简称bio)结构。
所述管理域虚拟机708用于接收所述I/O请求,并通过与所述I/O请求要操作的存储设备区域对应的后端线程,处理对所述存储设备的I/O操作。
可选的,所述管理域虚拟机708包括但不限于特权域Domain0和设备驱动域DriverDomain。
在所述I/O请求中,用户域虚拟机702将I/O请求要操作的内存段授权给管理域虚拟机708访问。
所述I/O任务处理设备704还用于,如果所述要操作的存储设备区域为M个,则接收所述要操作的M个存储设备区域中的每个存储设备区域对应的后端线程的子I/O请求处理结果,将M个子I/O请求处理结果合并,并将合并后的结果返回给所述用户域虚拟机702;如果所述要操作的存储设备区域为1个,则接收所述I/O请求要操作的存储设备区域对应的后端线程的处理结果,并将该处理结果返回给所述用户域虚拟机702。
可选的,所述N条后端线程和存储设备710之间还有原生设备驱动,后端线程把I/O请求传递给原生设备驱动,通过原生设备驱动实际对存储设备710进行实际存取操作。
图6、图7中的I/O任务处理设备606、I/O任务处理设备704具体的内部结构和功能实现,与图4所示实施例中的I/O任务处理设备相对应,部分细节此处不再赘述,可以参照对应部分的说明。
图8为依据本发明一实施例的虚拟化下I/O任务处理系统800结构示意图,如图所示,所述系统至少包括:用户域虚拟机802、IO环804、I/O任务处理设备806、管理域虚拟机808以及存储设备810。
所述用户域虚拟机802,用于通过所述IO环804向所述I/O任务处理设备806发送对所述存储设备810进行I/O操作的I/O请求。
可选的,所述存储设备810包括但不限于存储设备、内存、网络适配器等。其中存储设备包括但不限于:物理硬盘或其分区(包括小型计算机系统接口iSCSI存储或全局网络块设备GNBD卷)、网络存储协议(包括NFS等网络或机群文件系统)、基于文件的虚拟存储设备(虚拟磁盘镜像)、基于逻辑卷的存储设备。
所述管理域虚拟机808用于为所述存储设备生成所述N个后端线程,所述N个后端线程中的每个后端线程可以对所述存储设备的任一存储单元进行I/O操作。
可选的,所述管理域虚拟机808包括但不限于特权域Domain0和设备驱动域DriverDomain。
可选的,所述生成N条后端线程可以在虚拟机加载时在管理域虚拟机808中完成,也可以在有I/O请求时,由用户域虚拟机802触发这一动作。所述N条后端线程还可以根据虚拟化平台管理域虚拟机后端驱动的负载情况或存储设备I/O操作负载情况的变化,在虚拟化系统工作过程中进行动态的增加或删减,所述N条线程可以并行的处理后端驱动接收到的I/O操作请求。
可选的,所述IO环804具体为一块共享内存,用于在所述用户域虚拟机802和所述I/O任务处理设备806之间实现共享,所述用户域虚拟机802可以把I/O请求放入IO环中,所述I/O任务处理设备806可以从IO环中读取I/O请求,I/O请求的处理结果也可以通过IO环进行传递。
可选的,所述IO环804可以是1个或者大于1的自然数个。
所述I/O任务处理设备806用于根据接收到的所述I/O请求,确定所述I/O请求要操作的存储设备地址空间,确定没有后端线程正在占用所述存储设备地址空间中的存储单元后,将所述I/O请求分发给所述N个后端线程中的一个后端线程。
可选的,所述I/O任务处理设备806根据所述I/O请求的I/O描述结构中的所述I/O请求要操作所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备地址空间。
可选的,IO描述结构包括但不限于块输入输出(blockinputoutput,简称bio)结构。
可选的,所述I/O任务处理设备806判断是否有后端线程正在占用所述存储设备地址空间中的存储单元,若有,确定所述占用结束后,将所述I/O请求分发给所述N个后端线程中的一个后端线程。
可选的,所述I/O任务处理设备806通过查看阻塞单元表中是否包含所述存储设备地址空间内的存储单元的单元标识,判断是否有后端线程正在占用所述存储设备地址空间中的存储单元,所述阻塞单元表用于记录正在被后端线程占用的存储单元的单元标识。
可选的,若所述I/O任务处理设备806确定有后端线程正在占用所述存储设备地址空间的存储单元,则将所述I/O请求缓存在缓存设备中,并在确定所述占用结束后,将所述I/O请求从所述缓存设备中取出。
可选的,所述I/O任务处理设备806还用于:将所述存储设备地址空间内的存储单元的单元标识记录在所述阻塞单元表中;并在接收到对所述I/O请求处理结束的响应消息后,将所述存储设备地址空间内的存储单元的单元标识从所述阻塞单元表中删除。
可选的,I/O任务处理设备806根据N条后端线程的哈希负载均衡,把I/O请求分发给所述N条后端线程中的一条,或者I/O任务处理设备806将I/O请求传递给管理域虚拟机808,管理域虚拟机808根据N条后端线程的哈希负载均衡,把I/O请求分发给所述N条后端线程中的一条。
可选的,I/O任务处理设备806还用于接收后端线程的处理结果,并将所述处理结果返回给用户域虚拟机802。
可选的,所述后端线程完成I/O操作后,将I/O请求处理结果传递给所述I/O任务处理设备806,I/O任务处理设备806将接收到的I/O请求处理结果传递给IO环804,在IO环804的响应生产者下标处放置一个响应,并且通知用户域虚拟机802有新的响应产生,使用户域虚拟机802可以通过IO环的响应消费者下标获取这个响应结构。最后用户域虚拟机802从IO环的响应消费者下标处获取这个响应。
可选的,所述N条后端线程和存储设备810之间还有原生设备驱动,后端线程把I/O请求传递给原生设备驱动,由原生设备驱动实际对存储设备810进行实际存取操作。
可选的,所述I/O任务处理设备806为所述管理域虚拟机808中的后端I/O任务处理设备,其功能可以由管理域虚拟机的后端驱动实现,也可以由其他模块实现。
图9为依据本发明一实施例的虚拟化下I/O任务处理系统900结构示意图,如图所示,所述系统至少包括:用户域虚拟机902、I/O任务处理设备904、IO环906、管理域虚拟机908以及存储设备910。
所述用户域虚拟机902,用于向所述I/O任务处理设备904发送对所述存储设备910进行I/O操作的I/O请求。
可选的,所述存储设备910包括但不限于存储设备、内存、网络适配器等。其中存储设备包括但不限于:物理硬盘或其分区(包括小型计算机系统接口iSCSI存储或全局网络块设备GNBD卷)、网络存储协议(包括NFS等网络或机群文件系统)、基于文件的虚拟存储设备(虚拟磁盘镜像)、基于逻辑卷的存储设备。
所述管理域虚拟机908用于为所述存储设备生成所述N个后端线程,所述N个后端线程中的每个后端线程可以对所述存储设备的任一存储单元进行I/O操作。
可选的,所述管理域虚拟机908包括但不限于特权域Domain0和设备驱动域DriverDomain。
可选的,所述生成N条后端线程可以在虚拟机加载时在管理域虚拟机908中完成,也可以在有I/O请求时,由用户域虚拟机902触发这一动作。所述N条后端线程还可以根据虚拟化平台管理域虚拟机后端驱动的负载情况或存储设备I/O操作负载情况的变化,在虚拟化系统工作过程中进行动态的增加或删减,所述N条线程可以并行的处理后端驱动接收到的I/O操作请求。
可选的,所述I/O任务处理设备904为位于所述用户域虚拟机902中的前端分发模块,所述前端分发模块用于接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求,其功能可以由用户域虚拟机902的前端驱动实现,也可以由其他模块实现。
可选的,所述I/O任务处理设备904用于根据接收到的所述I/O请求,确定所述I/O请求要操作的存储设备地址空间,确定没有后端线程正在占用所述存储设备地址空间中的存储单元后,将所述I/O请求分发给所述N个后端线程中的一个后端线程。
可选的,所述I/O任务处理设备904与所述N个后端线程中的每一个后端线程之间都有一个专用IO环906,所述I/O任务处理设备904根据N条后端线程的哈希负载均衡,为所述I/O请求分配一个后端线程,并通过所述专用IO环906将所述I/O请求发送给该一个后端线程。
可选的,所述IO环906可以是1个或者大于1的自然数个,I/O任务处理设备904将I/O请求传递给管理域虚拟机908,管理域虚拟机908根据N条后端线程的哈希负载均衡,把I/O请求分发给所述N条后端线程中的一条。
可选的,所述IO环906具体为一块共享内存,用于在所述I/O任务处理设备904和所述管理域虚拟机908之间实现共享,所述I/O任务处理设备904可以把I/O请求放入IO环中,所述管理域虚拟机908可以从IO环中读取I/O请求,I/O请求的处理结果也可以通过IO环进行传递。
可选的,所述I/O任务处理设备904根据所述I/O请求的I/O描述结构中的所述I/O请求要操作所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备地址空间。
可选的,IO描述结构包括但不限于块输入输出(blockinputoutput,简称bio)结构。
可选的,所述I/O任务处理设备904判断是否有后端线程正在占用所述存储设备地址空间中的存储单元,若有,确定所述占用结束后,将所述I/O请求分发给所述N个后端线程中的一个后端线程。
可选的,所述I/O任务处理设备904通过查看阻塞单元表中是否包含所述存储设备地址空间内的存储单元的单元标识,判断是否有后端线程正在占用所述存储设备地址空间中的存储单元,所述阻塞单元表用于记录正在被后端线程占用的存储单元的单元标识。
可选的,若所述I/O任务处理设备904确定有后端线程正在占用所述存储设备地址空间的存储单元,则将所述I/O请求缓存在缓存设备中,并在确定所述占用结束后,将所述I/O请求从所述缓存设备中取出。
可选的,所述I/O任务处理设备904还用于:将所述存储设备地址空间内的存储单元的单元标识记录在所述阻塞单元表中;并在接收到对所述I/O请求处理结束的响应消息后,将所述存储设备地址空间内的存储单元的单元标识从所述阻塞单元表中删除。
可选的,I/O任务处理设备904还用于接收后端线程的处理结果,并将所述处理结果返回给用户域虚拟机902。
可选的,所述后端线程完成I/O操作后,将I/O请求处理结果传递给IO环906,在IO环906的响应生产者下标处放置一个响应,并且通知I/O任务处理设备904有新的响应产生,使I/O任务处理设备904可以通过IO环的响应消费者下标获取这个响应结构。最后I/O任务处理设备904从IO环的响应消费者下标处获取这个响应,并将处理结果返回给用户域虚拟机902。
可选的,所述N条后端线程和存储设备910之间还有原生设备驱动,后端线程把I/O请求传递给原生设备驱动,由原生设备驱动实际对存储设备910进行实际存取操作。
依据图6至图9实施例提供的技术方案,可以实现虚拟化平台下,通过驱动层前端驱动与后端驱动之间的交互,实现后端驱动并行处理虚拟机的I/O请求的功能,提升了存储设备的吞吐量,实现了虚拟化下I/O处理速度增长的目的。
图8、图9中的I/O任务处理设备806、I/O任务处理设备904具体的内部结构和功能实现,与图5所示实施例中的I/O任务处理设备相对应,部分细节此处不再赘述,可以参照对应部分的说明。
图10是依据本发明一实施例的计算设备设备1000的硬件结构示意图。如图10所示,计算设备1000包括处理器1002、存储器1004、输入/输出接口1006、通信接口1008和总线1010。其中,处理器1002、存储器1004、输入/输出接口1006和通信接口1008通过总线1010实现彼此之间的通信连接。
处理器1002可以采用通用的中央处理器(CentralProcessingUnit,CPU),微处理器,应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
存储器1004可以是只读存储器(ReadOnlyMemory,ROM),静态存储设备,动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)。存储器1004可以存储操作系统和其他应用程序。在通过软件或者固件来实现本发明实施例提供的技术方案时,用于实现本发明实施例提供的技术方案的程序代码保存在存储器1004中,并由处理器1002来执行。
输入/输出接口1006用于接收输入的数据和信息,输出操作结果等数据。
通信接口1008使用例如但不限于收发器一类的收发装置,来实现计算设备1000与其他设备或通信网络之间的通信。
总线1010可包括一通路,在计算设备1000各个部件(例如处理器1002、存储器1004、输入/输出接口1006和通信接口1008)之间传送信息。
应注意,尽管图10所示的计计算设备1000仅仅示出了处理器1002、存储器1004、输入/输出接口1006、通信接口1008以及总线1010,但是在具体实现过程中,本领域的技术人员应当明白,计算设备1000还包含实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当明白,计算设备1000还可包含实现其他附加功能的硬件器件。此外,本领域的技术人员应当明白,计算设备1000也可仅仅包含实现本发明实施例所必须的器件,而不必包含图10中所示的全部器件。
图10所示的硬件结构以及上述描述适用于本发明实施例所提供的各种I/O任务处理设备及系统,适用于执行本发明实施例所提供的各种I/O任务处理方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:移动硬盘、只读存储器(英文:Read-OnlyMemory,简称ROM)、随机存取存储器(英文:RandomAccessMemory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
Claims (40)
1.一种I/O任务处理方法,其特征在于,所述IO任务处理方法应用于虚拟化系统,所述虚拟化系统包括管理域虚拟机和用户域虚拟机,包括:
接收所述用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求;
根据所述I/O请求,确定所述I/O请求要操作的存储设备区域,其中,所述存储设备分为N个存储设备区域,N为大于1的自然数;
将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,其中,所述N个存储设备区域与N个后端线程一一对应,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述每个后端线程对应的存储设备区域的I/O操作。
2.根据权利要求1所述的方法,其特征在于,所述将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,包括:
如果所述要操作的存储设备区域为M个,1<M<=N,则根据所述M个存储设备区域,将所述I/O请求拆分成M个子I/O请求,其中,每个所述子I/O请求用于请求对所述M个存储设备区域中的一个存储设备区域进行I/O操作,将每个所述子I/O请求分别发送给各自要操作的存储设备区域对应的后端线程;
如果所述要操作的存储设备区域为1个,则将所述I/O请求发送给所述I/O请求要操作的存储设备区域对应的1个后端线程。
3.根据权利要求2所述的方法,其特征在于,还包括:
如果所述要操作的存储设备区域为M个,则接收所述M个存储设备区域对应的后端线程返回的所述M个子I/O请求的处理结果,将所述M个子I/O请求的处理结果进行合并,并将所述合并后的处理结果返回给所述用户域虚拟机;
如果所述要操作的存储设备区域为1个,接收所述I/O请求要操作的存储设备区域对应的后端线程返回的所述I/O请求的处理结果,并将所述I/O请求的处理结果返回给所述用户域虚拟机。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述I/O请求,确定所述I/O请求要操作的存储设备区域包括:根据所述I/O请求中所述I/O请求要操作的所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备区域。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:
所述管理域虚拟机中的后端分发模块通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:
所述用户域虚拟机中的前端分发模块接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
7.根据权利要求6所述的方法,其特征在于,所述前端分发模块与所述N个后端线程中的每一个后端线程之间有一个专用IO环,所述前端分发模块通过所述专用IO环将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程。
8.一种I/O任务处理设备,其特征在于,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述I/O任务处理设备执行权利要求1-7任一项所述的方法。
9.一种I/O任务处理方法,其特征在于,所述IO任务处理方法应用于虚拟化系统,所述虚拟化系统包括管理域虚拟机和用户域虚拟机,包括:
接收所述用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求;
根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间;
确定没有后端线程占用所述存储设备地址空间中的存储单元时,将所述I/O请求分发给N个后端线程中的一个后端线程,其中,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述存储设备的I/O操作。
10.根据权利要求9所述的方法,其特征在于,所述确定没有后端线程占用所述存储设备地址空间的存储单元时,将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:判断是否有后端线程正在占用所述存储设备地址空间中的存储单元,若没有后端线程正在占用所述存储设备地址空间中的存储单元,则将所述I/O请求分发给所述N个后端线程中的一个后端线程,若有后端线程正在占用所述存储设备地址空间中的存储单元时,确定所述占用结束后,将所述I/O请求分发给所述N个后端线程中的一个后端线程。
11.根据权利要求10所述的方法,其特征在于,若有后端线程正在占用所述存储设备地址空间的存储单元,则缓存所述I/O请求,并在确定所述占用结束后,将缓存的所述I/O请求从取出。
12.根据权利要求10或11所述的方法,其特征在于,所述判断是否有后端线程正在占用所述存储设备地址空间的存储单元包括:查看阻塞单元表中是否包含所述存储设备地址空间内的存储单元的单元标识。
13.根据权利要求12所述的方法,其特征在于,还包括:将所述存储设备地址空间内的存储单元的单元标识记录在所述阻塞单元表中;
并在接收到表示对所述I/O请求处理结束的响应消息后,将所述存储设备地址空间内的存储单元的单元标识从所述阻塞单元表中删除。
14.根据权利要求9-13任一项所述的方法,其特征在于,所述将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:根据哈希负载均衡,为所述I/O请求在所述N个后端线程中分配一个后端线程,并将所述I/O请求发送给分配的所述一个后端线程。
15.根据权利要求9-14任一项所述的方法,其特征在于,所述根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间,包括:根据所述I/O请求中的所述I/O请求要操作所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备地址空间。
16.根据权利要求9-15任一项所述的方法,其特征在于,还包括:接收所述一个后端线程返回的所述I/O请求的处理结果,并将所述处理结果返回给所述用户域虚拟机。
17.根据权利要求9-16任一项所述的I/O任务处理方法,其特征在于,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:
所述管理域虚拟机中的后端分发模块通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
18.根据权利要求9-16任一项所述的I/O任务处理方法,其特征在于,所述接收用户域虚拟机对所述存储设备进行I/O操作的I/O请求,包括:
所述用户域虚拟机中的前端分发模块接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
19.根据权利要求18所述的方法,其特征在于,所述前端分发模块与所述N个后端线程中的每一个后端线程之间有一个专用IO环,所述前端分发模块通过所述专用IO环将所述I/O请求分发给所述一个后端线程。
20.一种I/O任务处理设备,其特征在于,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述I/O任务处理设备执行权利要求9-19任一项所述的方法。
21.一种I/O任务处理设备,所述IO任务处理设备应用于虚拟化系统,所述虚拟化系统包括管理域虚拟机和用户域虚拟机,其特征在于,包括:
接收单元,用于接收所述用户域虚拟机对所述用户域虚拟机的存储设备进行I/O操作的I/O请求;
确定单元,用于根据所述I/O请求,确定所述I/O请求要操作的存储设备区域,其中,所述存储设备分为N个存储设备区域,N为大于1的自然数;
分发单元,用于将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,其中,所述N个存储设备区域与N个后端线程一一对应,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述每个后端线程对应的存储设备区域的I/O操作。
22.根据权利要求21所述的设备,其特征在于,所述分发单元用于将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程,包括:
如果所述要操作的存储设备区域为M个,1<M<=N,则所述分发单元用于根据所述M个存储设备区域,将所述I/O请求拆分成M个子I/O请求,其中,每个所述子I/O请求用于请求对所述M个存储设备区域中的一个存储设备区域进行I/O操作,将每个所述子I/O请求分别发送给各自要操作的存储设备区域对应的后端线程;
如果所述要操作的存储设备区域为1个,则所述分发单元用于将所述I/O请求发送给所述I/O请求要操作的存储设备区域对应的1个后端线程。
23.根据权利要求22所述的设备,其特征在于,还包括发送单元:
如果所述要操作的存储设备区域为M个,则所述接收单元还用于接收所述M个存储设备区域对应的后端线程返回的所述M个子I/O请求的处理结果,并将所述M个子I/O请求的处理结果进行合并,所述发送单元用于将所述合并后的处理结果返回给所述用户域虚拟机;
如果所述要操作的存储设备区域为1个,所述接收单元还用于接收所述I/O请求要操作的存储设备区域对应的后端线程返回的所述I/O请求的处理结果,所述发送单元用于将所述所述I/O请求的处理结果返回给所述用户域虚拟机。
24.根据权利要求21-23任一项所述的设备,其特征在于,所述确定单元用于根据所述I/O请求,确定所述I/O请求要操作的存储设备区域,包括:所述确定单元用于根据所述I/O请求中所述I/O请求要操作的所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备区域。
25.根据权利要求21-24任一项所述的设备,其特征在于,所述设备为所述管理域虚拟机中的后端分发模块,所述接收单元用于通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
26.根据权利要求21-24任一项所述的设备,其特征在于,所述设备为所述用户域虚拟机中的前端分发模块,所述接收单元用于接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
27.根据权利要求26所述的设备,其特征在于,所述分发单元与所述N个后端线程中的每一个后端线程之间有一个专用IO环,所述分发单元用于通过所述专用IO环将所述I/O请求分发给所述I/O请求要操作的存储设备区域对应的后端线程。
28.一种I/O任务处理设备,所述IO任务处理设备应用于虚拟化系统,所述虚拟化系统包括管理域虚拟机和用户域虚拟机,其特征在于,包括:
接收单元,用于接收用户域虚拟机对为所述用户域虚拟机分配的存储设备进行I/O操作的I/O请求;
确定单元,用于根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间;
分发单元,用于在确定没有后端线程占用所述存储设备地址空间中的存储单元时,将所述I/O请求分发给N个后端线程中的一个后端线程,其中,所述N个后端线程由管理域虚拟机生成,并运行在所述管理域虚拟机中,每个后端线程用于处理对所述存储设备的I/O操作。
29.根据权利要求28所述的设备,其特征在于,所述分发单元用于在确定没有后端线程占用所述存储设备地址空间的存储单元时,将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:所述分发单元用于判断是否有后端线程正在占用所述存储设备地址空间中的存储单元,若没有后端线程正在占用所述存储设备地址空间中的存储单元,则将所述I/O请求分发给所述N个后端线程中的一个后端线程,若有后端线程正在占用所述存储设备地址空间中的存储单元时,确定所述占用结束后,将所述I/O请求分发给所述N个后端线程中的一个后端线程。
30.根据权利要求29所述的设备,其特征在于,还包括缓存单元,所述缓存单元用于:若有后端线程正在占用所述存储设备地址空间的存储单元,则缓存所述I/O请求;
所述分发单元还用于,确定所述占用结束后,将所述I/O请求从所述缓存单元中取出。
31.根据权利要求29或30所述的设备,其特征在于,所述分发单元用于判断是否有后端线程正在占用所述存储设备地址空间的存储单元包括:所述分发单元用于查看阻塞单元表中是否包含所述存储设备地址空间内的存储单元的单元标识。
32.根据权利要求31所述的设备,其特征在于,所述分发单元还用于将所述存储设备地址空间内的存储单元的单元标识记录在所述阻塞单元表中;并在接收到表示对所述I/O请求处理结束的响应消息后,将所述存储设备地址空间内的存储单元的单元标识从所述阻塞单元表中删除。
33.根据权利要求28-32任一项所述的设备,其特征在于,所述分发单元用于将所述I/O请求分发给所述N个后端线程中的一个后端线程,包括:所述分发单元用于根据哈希负载均衡,为所述I/O请求在所述N个后端线程中分配一个后端线程,并将所述I/O请求发送给分配的所述一个后端线程。
34.根据权利要求28-33任一项所述的设备,其特征在于,所述确定单元用于根据所述I/O请求,确定所述I/O请求要操作的存储设备地址空间,包括:所述确定单元用于根据所述I/O请求中的所述I/O请求要操作所述存储设备的初始存储区域和存储区域数量,确定所述I/O请求要操作的存储设备地址空间。
35.根据权利要求28-34任一项所述的设备,其特征在于,还包括发送单元,所述接收单元还用于接收所述一个后端线程返回的所述I/O请求的处理结果,所述发送单元用于将所述处理结果返回给所述用户域虚拟机。
36.根据权利要求28-35任一项所述的设备,其特征在于,所述设备为所述管理域虚拟机中的后端分发模块,所述接收单元用于通过至少一个IO环接收所述用户域虚拟机对所述存储设备进行I/O操作的I/O请求。
37.根据权利要求28-35任一项所述的设备,其特征在于,所述设备为所述用户域虚拟机中的前端分发模块,所述接收单元用于接收所述用户域虚拟机中的上层应用对所述存储设备进行I/O操作的I/O请求。
38.根据权利要求37所述的设备,其特征在于,所述分发单元与所述N个后端线程中的每一个后端线程之间有一个专用IO环,所述分发单元通过所述专用IO环将所述I/O请求分发给所述一个后端线程。
39.一种I/O任务处理系统,其特征在于,包括:用户域虚拟机,管理域虚拟机,存储设备以及如权利要求1-8任一项所述的I/O任务处理设备,
所述用户域虚拟机,用于向所述I/O任务处理设备发送对所述存储设备进行I/O操作的I/O请求;
所述管理域虚拟机,用于通过与所述I/O请求要操作的存储设备区域对应的后端线程接收所述I/O请求,并处理对所述存储设备的I/O操作。
40.一种I/O任务处理系统,其特征在于,包括:用户域虚拟机,管理域虚拟机,存储设备以及如权利要求9-20任一项所述的I/O任务处理设备,
所述用户域虚拟机,用于向所述I/O任务处理设备发送对所述存储设备进行I/O操作的I/O请求;
所述管理域虚拟机,用于通过所述I/O请求分发的一个后端线程接收所述I/O请求,并处理对所述存储设备的I/O操作。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/095222 WO2016101282A1 (zh) | 2014-12-27 | 2014-12-27 | 一种i/o任务处理的方法、设备和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105556473A true CN105556473A (zh) | 2016-05-04 |
Family
ID=55833988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480037746.8A Pending CN105556473A (zh) | 2014-12-27 | 2014-12-27 | 一种i/o任务处理的方法、设备和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105556473A (zh) |
WO (1) | WO2016101282A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329751A (zh) * | 2017-06-28 | 2017-11-07 | 浪潮金融信息技术有限公司 | 驱动层的驱动方法及装置、计算机可读存储介质、终端 |
CN107689241A (zh) * | 2016-08-04 | 2018-02-13 | 爱思开海力士有限公司 | 延长阻变存储器寿命的方法和使用其的数据储存系统 |
CN107807843A (zh) * | 2017-10-26 | 2018-03-16 | 北京百度网讯科技有限公司 | 虚拟机中的i/o请求处理方法、设备及计算机可读介质 |
CN108762682A (zh) * | 2018-05-31 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种线程模型 |
CN109032512A (zh) * | 2018-07-10 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种实现数据追加写的方法、装置及设备 |
CN109753371A (zh) * | 2017-11-06 | 2019-05-14 | 华为技术有限公司 | 一种i/o阻塞检测方法、装置及设备 |
CN113254166A (zh) * | 2021-07-13 | 2021-08-13 | 云宏信息科技股份有限公司 | 一种处理io请求的方法、存储介质和虚拟化模拟器 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706757A (zh) * | 2009-09-21 | 2010-05-12 | 中国科学院计算技术研究所 | 面向多核平台和分布式虚拟化环境的i/o系统及工作方法 |
CN102289620A (zh) * | 2011-08-12 | 2011-12-21 | 华南理工大学 | 一种基于Xen安全计算机可信设备虚拟化系统及方法 |
CN102298561A (zh) * | 2011-08-10 | 2011-12-28 | 北京百度网讯科技有限公司 | 一种对存储设备进行多通道数据处理的方法、系统和装置 |
CN102591702A (zh) * | 2011-12-31 | 2012-07-18 | 华为技术有限公司 | 虚拟化处理方法及相关装置和计算机系统 |
CN102707991A (zh) * | 2012-05-17 | 2012-10-03 | 中国科学院计算技术研究所 | 多根i/o 虚拟化共享方法和系统 |
CN103077153A (zh) * | 2013-02-01 | 2013-05-01 | 北京航空航天大学 | 基于授权拷贝的虚拟机域间通信通道系统 |
CN103116517A (zh) * | 2013-01-24 | 2013-05-22 | 华为技术有限公司 | 虚拟化平台下i/o通道的调整方法和调整装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8819685B2 (en) * | 2013-01-24 | 2014-08-26 | Huawei Technologies Co., Ltd. | Method and apparatus for adjusting I/O channel on virtual platform |
CN104050015B (zh) * | 2014-06-27 | 2018-01-19 | 国家计算机网络与信息安全管理中心 | 一种虚拟机镜像存储分发的系统 |
-
2014
- 2014-12-27 CN CN201480037746.8A patent/CN105556473A/zh active Pending
- 2014-12-27 WO PCT/CN2014/095222 patent/WO2016101282A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706757A (zh) * | 2009-09-21 | 2010-05-12 | 中国科学院计算技术研究所 | 面向多核平台和分布式虚拟化环境的i/o系统及工作方法 |
CN102298561A (zh) * | 2011-08-10 | 2011-12-28 | 北京百度网讯科技有限公司 | 一种对存储设备进行多通道数据处理的方法、系统和装置 |
CN102289620A (zh) * | 2011-08-12 | 2011-12-21 | 华南理工大学 | 一种基于Xen安全计算机可信设备虚拟化系统及方法 |
CN102591702A (zh) * | 2011-12-31 | 2012-07-18 | 华为技术有限公司 | 虚拟化处理方法及相关装置和计算机系统 |
CN102707991A (zh) * | 2012-05-17 | 2012-10-03 | 中国科学院计算技术研究所 | 多根i/o 虚拟化共享方法和系统 |
CN103116517A (zh) * | 2013-01-24 | 2013-05-22 | 华为技术有限公司 | 虚拟化平台下i/o通道的调整方法和调整装置 |
CN103077153A (zh) * | 2013-02-01 | 2013-05-01 | 北京航空航天大学 | 基于授权拷贝的虚拟机域间通信通道系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107689241A (zh) * | 2016-08-04 | 2018-02-13 | 爱思开海力士有限公司 | 延长阻变存储器寿命的方法和使用其的数据储存系统 |
CN107329751A (zh) * | 2017-06-28 | 2017-11-07 | 浪潮金融信息技术有限公司 | 驱动层的驱动方法及装置、计算机可读存储介质、终端 |
CN107807843A (zh) * | 2017-10-26 | 2018-03-16 | 北京百度网讯科技有限公司 | 虚拟机中的i/o请求处理方法、设备及计算机可读介质 |
US10997099B2 (en) | 2017-10-26 | 2021-05-04 | Beijing Baidu Netcom Science And Technology Co., Ltd. | I/O request processing method in virtual machine, device and computer readable medium |
CN109753371A (zh) * | 2017-11-06 | 2019-05-14 | 华为技术有限公司 | 一种i/o阻塞检测方法、装置及设备 |
CN109753371B (zh) * | 2017-11-06 | 2021-10-19 | 华为技术有限公司 | 一种i/o阻塞检测方法、装置及设备 |
CN108762682A (zh) * | 2018-05-31 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种线程模型 |
CN109032512A (zh) * | 2018-07-10 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种实现数据追加写的方法、装置及设备 |
CN113254166A (zh) * | 2021-07-13 | 2021-08-13 | 云宏信息科技股份有限公司 | 一种处理io请求的方法、存储介质和虚拟化模拟器 |
Also Published As
Publication number | Publication date |
---|---|
WO2016101282A1 (zh) | 2016-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105556473A (zh) | 一种i/o任务处理的方法、设备和系统 | |
US10831889B2 (en) | Secure memory implementation for secure execution of virtual machines | |
US8046641B2 (en) | Managing paging I/O errors during hypervisor page fault processing | |
CN102609298B (zh) | 基于硬件队列扩展的网卡虚拟化系统及其方法 | |
JP5373893B2 (ja) | 異なるサイズを有するデータのブロックを格納し、取り出すための構成 | |
CN102110196B (zh) | 并行运行多用户操作系统间的数据安全传输方法及系统 | |
US8099522B2 (en) | Arrangements for I/O control in a virtualized system | |
US9063793B2 (en) | Virtual server and virtual machine management method for supporting zero client by providing host interfaces from classified resource pools through emulation or direct connection modes | |
US8041877B2 (en) | Distributed computing utilizing virtual memory having a shared paging space | |
CN103064796B (zh) | 虚拟机内存的共享方法与计算机系统 | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
CN104346304A (zh) | 使用存储器控制器来请求资源的方法和系统 | |
US10061616B2 (en) | Host memory locking in virtualized systems with memory overcommit | |
CN103942087A (zh) | 虚拟机热迁移方法及相关装置和集群系统 | |
US8019966B2 (en) | Data sharing utilizing virtual memory having a shared paging space | |
CN106471469A (zh) | 在虚拟化信息处理系统中的输入/输出加速 | |
CN106030548A (zh) | 用于可信计算的多节点中枢 | |
EP3274896B1 (en) | Configuration of a memory controller for copy-on-write with a resource controller | |
CN110968392A (zh) | 一种升级虚拟化模拟器的方法和装置 | |
US8893160B2 (en) | Block storage interface for virtual memory | |
Chang et al. | Assessment of hypervisor and shared storage for cloud computing server | |
CN113703913B (zh) | 设备测试方法及装置 | |
CN113296876B (zh) | 虚拟机的设备直通方法、设备及存储介质 | |
US20170017579A1 (en) | Flexible i/o dma address allocation in virtualized systems | |
CN103902354A (zh) | 一种虚拟化应用中快速初始化磁盘的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160504 |
|
RJ01 | Rejection of invention patent application after publication |