CN104750547B - 虚拟机的输入输出io请求处理方法及装置 - Google Patents
虚拟机的输入输出io请求处理方法及装置 Download PDFInfo
- Publication number
- CN104750547B CN104750547B CN201310754241.0A CN201310754241A CN104750547B CN 104750547 B CN104750547 B CN 104750547B CN 201310754241 A CN201310754241 A CN 201310754241A CN 104750547 B CN104750547 B CN 104750547B
- Authority
- CN
- China
- Prior art keywords
- request
- requests
- queue
- virtual machine
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 9
- 238000000034 method Methods 0.000 claims description 44
- 230000001934 delay Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 5
- 239000002245 particle Substances 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种虚拟机输入输出IO请求处理方法及装置。该虚拟机输入输出IO请求处理方法应用于存储***中,包括:接收N个虚拟机发送的IO请求,其中,N为不小于2的自然数;根据每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列;分别从所述N个IO队列中选择预定数量的IO请求进行处理。本发明实施例可以实现***在执行当前处理周期内的IO请求时,对其中每个虚拟机的IO请求都能进行处理,减少了单个虚拟机的IO时延。
Description
技术领域
本发明实施例涉及存储技术,尤其涉及一种虚拟机的输入输出IO请求处理方法及装置。
背景技术
按照存储介质的不同,存储器可分为半导体存储器、磁存储器等。在对存储器进行数据读写操作时,需要有一定的读写调度方法。
目前,传统的计算机***由于受制于存储***的容量空间与端口数量,单个存储同时服务的主机往往仅有数个,但在虚拟机环境下,虽然接入的物理主机的数量增加不多,但物理机上的虚拟机数量则大大的增加,这样访问单个存储***的虚拟机可能达到数百个,各虚拟机的输入输出(Input/Output,简称IO)请求均放置到***队列中进行依次调度,然而,这种方法可能导致部分虚拟机IO时延超长,从而影响存储服务质量。
发明内容
本发明提供了一种虚拟机的输入输出IO请求处理方法及装置,可以实现存储设备获取***内所有虚拟机的IO请求并依次进行调度处理,使***在执行当前处理周期内的IO请求时,对其中每个虚拟机的IO请求都能进行处理,减少了单个虚拟机的IO时延。
第一方面,本发明提供一种虚拟机的输入输出IO请求处理方法,该方法应用于存储***中,包括:
接收N个虚拟机发送的IO请求,其中,N为不小于2的自然数;
对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列;
分别从N个IO队列中选择预定数量的IO请求进行处理。
结合第一方面,在第一种实施方式中,分别从N个IO队列中选择预定数量的IO请求进行处理包括:分别从N个IO队列中选择预定数量的IO请求;根据选择的IO请求建立***IO队列,其中,在***IO队列中,读IO请求的优先级高于写IO请求的优先级;对***IO队列中的IO请求按优先级从高到低的顺序进行处理。
结合第一方面或第一种实施方式,在第二种实施方式中,接收N个虚拟机发送的IO请求之后还包括:分别根据接收的IO请求中携带的虚拟机的配置信息识别IO请求所属的虚拟机。
结合第一种实施方式,在第三种实施方式中,根据选择的IO请求建立***IO队列,具体包括:将N个IO队列中的每个队列的预定数量的IO请求中的读IO请求加入***IO队列的首部,写IO请求加入***IO队列的尾部。
结合第一方面至前三种实施方式中的任意一种,在第四种实施方式中,所述分别从所述N个IO队列中选择预定数量的IO请求进行处理,具体包括:若IO请求为读IO请求,则根据读IO请求中携带的地址信息从存储***中存储介质中对应的地址读取数据;或者若IO请求为写IO请求,则根据写IO请求中携带的地址信息将写IO请求中携带的数据写入存储介质中对应的地址。
第二方面,本发明提供一种虚拟机的输入输出IO请求处理装置,该装置应用于存储***中,包括:
接收模块,用于接收N个虚拟机发送的IO请求,其中,N为不小于2的自然数;
队列模块,用于对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列;
处理模块,用于分别从N个IO队列中选择预定数量的IO请求进行处理。
结合第二方面,在第一种实施方式中,处理模块用于分别从N个IO队列中选择预定数量的IO请求进行处理,具体包括:
分别从N个IO队列中选择预定数量的IO请求;
根据选择的IO请求建立***IO队列,其中,在***IO队列中,读IO请求的优先级高于写IO请求的优先级;
对***IO队列中的IO请求按优先级从高到低的顺序进行处理。
结合第二方面或第一种实施方式,在第二种实施方式中,接收模块还用于:分别根据接收的IO请求中携带的虚拟机的配置信息识别IO请求所属的虚拟机。
结合第一种实施方式,在第三种实施方式中,处理模块具体用于:将N个IO队列中的每个队列的预定数量的IO请求中的读IO请求加入***IO队列的首部,写IO请求加入***IO队列的尾部。
结合第二方面至前三种实施方式中的任意一种,在第四种实施方式中,处理模块具体用于:若IO请求为读IO请求,则根据读IO请求中携带的地址信息从存储***中存储介质中对应的地址读取数据;或者若IO请求为写IO请求,则根据写IO请求中携带的地址信息将写IO请求中携带的数据写入存储介质中对应的地址。
本发明实施例提供的虚拟机的输入输出IO请求处理方法及装置应用于存储***中,首先接收N个虚拟机发送的IO请求,再对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列,最后分别从N个IO队列中选择预定数量的IO请求进行处理。这样实现了***在执行当前处理周期内的IO请求时,对其中每个虚拟机的IO请求都能进行处理,减少了单个虚拟机的IO时延。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的虚拟机的输入输出IO请求处理方法流程示意图;
图2是本发明实施例一提供的分别从N个IO队列中选择预定数量的IO请求进行处理的流程示意图;
图3是本发明实施例二提供的虚拟机的输入输出IO请求处理方法流程示意图;
图4是本发明实施例二提供的对于***中的多个虚拟机分别选择预定数量的IO请求的示意图;
图5是本发明实施例二提供的分别从N个IO队列中选择预定数量的IO请求进行处理的流程示意图;
图6是本发明实施例三提供的一种虚拟机的输入输出IO请求处理装置结构示意图;
图7是本发明实施例四提供的一种虚拟机的输入输出IO请求处理装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例一提供的虚拟机的输入输出IO请求处理方法流程示意图。如图1所示,本实施例以下步骤的执行主体可以是存储设备,存储设备可以利用内置的控制芯片控制IO请求的处理过程。本发明实施例一提供的虚拟机的输入输出IO请求处理方法包括:
S101、接收N个虚拟机发送的IO请求,其中,N为不小于2的自然数;
在一个物理服务器***内,可以设有一个虚拟机,也可设置两个或两个以上虚拟机。当服务器***内的虚拟机数量为多个时,此时***对应的存储***可以同时为该多个虚拟机提供服务。此时存储***可以接收N个虚拟机发送的IO请求,其中N为不小于2的自然数。
具体的,存储***在接收N个虚拟机发送的IO请求之后,还可以分别根据接收的IO请求中携带的虚拟机的配置信息识别IO请求所属的虚拟机。存储***的存储介质可以为固态硬盘(Solid State Disk,简称SSD)或者传统的磁介质硬盘。存储***可以为独立外置,也可以和服务器***融合在一个架构之下。独立外置存储***在提供服务时,可以从虚拟机的配置信息中读取虚拟机的信息,例如从Hyper-V虚拟机的配置信息中读取虚拟机及其虚拟硬盘空间信息,该信息用来识别***下发的IO请求归属于哪一个虚拟机,存储***可根据该信息获得下发IO请求与虚拟机之间的对应关系。
S102、对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列;
每个虚拟机向存储***发送的IO请求都可按照IO请求的时序建立一个独立的IO队列。存储***在处理来自虚拟机的IO请求时,可以按照该IO队列中IO请求排列的顺序依次对这些IO请求进行处理。因为服务器内可以有N个虚拟机,所以对应的可以获得N个独立的IO队列,每个IO队列都对应一个虚拟机。
S103、分别从N个队列中选择预定数量的IO请求进行处理。
具体的,如图2所示,分别从N个IO队列中选择预定数量的IO请求进行处理时,可以包括以下几个步骤:
S201、从N个IO队列中选择预定数量的IO请求;
N个不同IO队列中,各自选择IO请求的预定数量可以相同,也可以不同。例如有两个虚拟机时,存储***可以分别从所对应的两个IO队列中分别选择4个IO请求;可以从第一个IO队列中选择4个IO请求,从第二个IO队列中选择3个IO请求。IO请求的预定数量具体可以根据虚拟机IO读写的实际情况而定。
S202、根据选择的IO请求建立***IO队列,其中,在***IO队列中,读IO请求的优先级高于写IO请求的优先级;
***IO队列可以是***内设置一个总的队列,在分别从N个虚拟机所对应的IO队列中调度预定数量的IO请求之后,还可以根据选择的IO请求建立***IO队列,即分别将各IO队列的预定数量的IO请求加入该***IO队列中,以便进行统一处理。
建立***IO队列时,读IO请求的优先级高于写IO请求的优先级。具体可以将N个IO队列中每个队列的预定数量的IO请求中的读IO请求加入***IO队列的首部,写IO请求加入***IO队列的尾部。因为执行读IO请求时,需要将读取的数据存入***的读缓存中,并将该读IO请求返回给上层的虚拟机,该读IO才能完成;而执行写IO请求时,存储设备将与该写IO请求写入写缓存中即可以向虚拟机返回写IO成功,后续将写缓存中的数据存入存储介质中时,不影响该IO向虚拟机呈现的写时延。因此队列中按照读IO在写IO之前的顺序,可提高读IO的响应时间,保证***读取操作的时延较小。
S203、对***IO队列中的IO请求按优先级从高到低的顺序进行处理。
具体的:若IO请求为读IO请求,则根据读IO请求中携带的地址信息从存储***中存储介质中对应的地址读取数据;若IO请求为写IO请求,则根据写IO请求中携带的地址信息将写IO请求中携带的数据写入存储介质中对应的地址。
对***IO队列中的IO请求按优先级从高到低的顺序进行处理时,根据存储介质对读请求与写请求的具体执行过程不同,还可以依据先执行读IO请求,再执行写IO请求的优先级顺序进行处理。
其中,读请求的处理过程具体包括:根据读请求的指示,将要读取的数据存入***的读缓存中,并将该读IO请求返回给上层的虚拟机,该读IO完成;
写请求的处理过程具体包括:存储设备将数据存入写缓存,并向上层虚拟机返回写IO,该写IO完成。
需要说明的是,当前处理周期内所有被调度的IO请求均处理完成后,可以进行下一周期的IO请求处理操作,即仍然执行S101—S103的操作。
本实施例中,存储***接收N个虚拟机发送的IO请求,再对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列,最后分别从N个IO队列中选择预定数量的IO请求进行处理。这样实现了***在执行当前处理周期内的IO请求时,对其中每个虚拟机的IO请求都能进行处理,减少了单个虚拟机的IO时延。
图3是本发明实施例二提供的虚拟机的输入输出IO请求处理方法流程示意图。如图3所示,本发明涉及的两个典型的应用场景包括有存储设备与主机分离设置和存储设备和主机融合在一个***之中,以下以存储介质为SSD硬盘,且存储设备与主机分离设置的应用场景为例进行详细说明。本实施例以下步骤的执行主体可以是独立外置的存储设备,该存储设备可以利用内置的控制芯片控制IO请求的处理过程。本实施例提供的虚拟机的输入输出IO请求处理方法具体包括:
S301、接收N个虚拟机发送的IO请求,其中,N为不小于2的自然数;
具体的,存储***在接收N个虚拟机发送的IO请求之后,还可以分别根据接收的IO请求中携带的虚拟机的配置信息识别IO请求所属的虚拟机。以Hyper-V虚拟机为例,存储***先从虚拟机的配置信息中读取虚拟机的信息,例如从Hyper-V虚拟机的配置信息中读取虚拟机及其硬盘映像信息,并对***同一处理周期内的IO请求进行识别,确定***中IO请求归属于哪个虚拟机。在确定IO请求的归属时,可根据***中IO请求的地址信息,确定该IO请求归属于哪一个虚拟机。
因为本实施例中存储介质为SSD硬盘,SSD硬盘一般由多个FLASH闪存颗粒组成,每个闪存颗粒内部包括有一至两个访问通道,而IO请求在访问通道中的传输是串行操作方式,即同一个访问通道在同一个时刻只能执行一个IO请求。因此基于SSD硬盘的存储***和磁介质硬盘类似,需要对IO请求执行IO排队,构成独立的IO队列进行IO存取操作。本实施例中,每个虚拟机可对应一个IO队列,因此对虚拟机的IO请求进行操作即对每个虚拟机对应的IO队列中的IO请求进行操作。如图4所示,假设***内有3个虚拟机,则对应分别有3个IO队列,IO队列内分别有读IO和写IO两种IO请求。
S302、对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列;
每个虚拟机向存储***发送的IO请求都可按照IO请求的时序建立一个独立的IO队列。存储***在处理来自虚拟机的IO请求时,可以按照该IO队列中IO请求排列的顺序依次对这些IO请求进行处理。因为服务器内可以有N个虚拟机,所以对应的可以获得N个独立的IO队列,每个IO队列都对应一个虚拟机。
S303、分别从N个IO队列中选择预定数量的IO请求进行处理。
具体的,如图5所示,分别从N个IO队列中选择预定数量的IO请求进行处理时,可以包括以下几个步骤:
S401、从N个IO队列中选择预定数量的IO请求;
N个不同IO队列中,各自选择IO请求的预定数量可以相同,也可以不同。IO请求的预定数量具体可以根据虚拟机IO读写的实际情况,如***内虚拟机的个数、存储***的性能等由用户进行确定。在图4所示的例子中,设定两个IO队列中选择IO请求的预定数量都为3,即每次从每个虚拟机中调度3个IO请求。
S402、根据选择的IO请求建立***IO队列,其中,在***IO队列中,读IO请求的优先级高于写IO请求的优先级;
***IO队列可以是***内设置一个总的队列,在分别从N个虚拟机所对应的IO队列中调度预定数量的IO请求之后,还可以根据选择的IO请求建立总体的***IO队列,分别将各IO队列的预定数量的IO请求加入该***IO队列中,以便进行统一处理。
建立***IO队列时,读IO请求的优先级高于写IO请求的优先级。具体可以将N个IO队列中每个队列的预定数量的IO请求中的读IO请求加入***IO队列的首部,写IO请求加入***IO队列的尾部。因为执行读IO请求时,需要将读取的数据存入***的读缓存中,并将该读IO请求返回给上层的虚拟机,该读IO才能完成;而执行写IO请求时,存储设备将与该写IO请求写入写缓存中即可以向虚拟机返回写IO成功,后续将写缓存中的数据存入存储介质中时,不影响该IO向虚拟机呈现的写时延。因此队列中按照读IO在写IO之前的顺序,可提高读IO的响应时间,保证***读取操作的时延较小。
还是图4为例,每个虚拟机一次调度的3个IO请求中,分别有读IO和写IO两种,***的虚拟机在N个虚拟机所对应的IO队列中选择预定数量的IO请求并建立统一的***IO队列中时,要先将读IO加入***IO队列的首部,将写IO加入***IO队列的尾部。因为执行读IO请求时,需要将读取的数据存入***的读缓存中,并将该读IO请求返回给上层的虚拟机,该读IO才能完成;而执行写IO请求时,存储设备将与该写IO请求对应的写缓存中的数据标记为已写盘即可,虚拟机不参加执行。因此队列中按照读IO在写IO之前的顺序,可提高读IO的优先级,保证***读取操作的时延较小。
S403、对***IO队列中的IO请求按优先级从高到低的顺序进行处理。
具体的:若IO请求为读IO请求,则根据读IO请求中携带的地址信息从存储***中存储介质中对应的地址读取数据;若IO请求为写IO请求,则根据写IO请求中携带的地址信息将写IO请求中携带的数据写入存储介质中对应的地址。
对***IO队列中的IO请求按优先级从高到低的顺序进行处理时,根据存储介质对读请求与写请求的具体执行过程不同,还可以依据先执行读IO请求,再执行写IO请求的优先级顺序进行处理。
其中,读请求的处理过程具体包括:根据读请求的指示,将要读取的数据存入***的读缓存中,并将该读IO请求返回给上层的虚拟机,该读IO完成;
写请求的处理过程具体包括:存储设备将数据存入写缓存,并向上层虚拟机返回写IO,该写IO完成。
需要说明的是,当前处理后期内所有被调度的IO请求均处理完成后,可以进行下一周期的IO请求处理操作,即仍然执行S301—S303操作。
本实施例中,在外部存储设备与主机分离设置且存储介质为SSD硬盘的实施场景下,存储***接收N个虚拟机发送的IO请求,再对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列,最后分别从N个IO队列中选择预定数量的IO请求进行处理。这样实现了***在执行当前处理周期内的IO请求时,对其中每个虚拟机的IO请求都能进行处理,减少单个虚拟机的IO时延。
图6是本发明实施例三提供的一种虚拟机的输入输出IO请求处理装置结构示意图。如图6所示,本发明实施例提供的虚拟机的IO请求处理装置61,包括:
接收模块601,用于接收N个虚拟机发送的IO请求,其中,N为不小于2的自然数;
队列模块602,用于对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列;
处理模块603,用于分别从N个IO队列中选择预定数量的IO请求进行处理。
具体的,处理模块603可以用于分别从N个IO队列中选择预定数量的IO请求进行处理,具体包括:
分别从N个IO队列中选择预定数量的IO请求;
根据选择的IO请求建立***IO队列,其中,在***IO队列中,读IO请求的优先级高于写IO请求的优先级;
对***IO队列中的IO请求按优先级从高到低的顺序进行处理。
具体的,接收模块601还可以用于分别根据接收的IO请求中携带的虚拟机的配置信息识别IO请求所属的虚拟机。
具体的,处理模块603用于将N个IO队列中的每个队列的预定数量的IO请求中的读IO请求加入***IO队列的首部,写IO请求加入***IO队列的尾部。
具体的,处理模块603用于当IO请求为读IO请求时,则根据读IO请求中携带的地址信息从存储***中存储介质中对应的地址读取数据;或者当IO请求为写IO请求时,则根据写IO请求中携带的地址信息将写IO请求中携带的数据写入存储介质中对应的地址。
本实施例中,虚拟机的输入输出IO请求处理装置的接收模块601用于接收N个虚拟机发送的IO请求;队列模块602用于对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列;处理模块603,用于分别从N个IO队列中选择预定数量的IO请求进行处理。这样实现了***在执行当前处理周期内的IO请求时,对其中每个虚拟机的IO请求都能进行处理,减少单个虚拟机的IO时延。
图7是本发明实施例四提供的一种虚拟机的输入输出IO请求处理装置结构示意图。如图7所示,本发明实施例提供的虚拟机的输入输出IO请求处理装置71,包括:
接收器701,用于接收N个虚拟机发送的IO请求,其中,N为不小于2的自然数;
处理器702,用于对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列;
分别从N个IO队列中选择预定数量的IO请求进行处理。
具体的,处理模块702可以用于分别从N个IO队列中选择预定数量的IO请求进行处理,具体包括:
分别从N个IO队列中选择预定数量的IO请求;
根据选择的IO请求建立***IO队列,其中,在***IO队列中,读IO请求的优先级高于写IO请求的优先级;
对***IO队列中的IO请求按优先级从高到低的顺序进行处理。
具体的,接收模块701还可以用于分别根据接收的IO请求中携带的虚拟机的配置信息识别IO请求所属的虚拟机。
具体的,处理模块702还可以用于将N个IO队列中的每个队列的预定数量的IO请求中的读IO请求加入***IO队列的首部,写IO请求加入***IO队列的尾部。
具体的,处理模块702还可以用于当IO请求为读IO请求时,则根据读IO请求中携带的地址信息从存储***中存储介质中对应的地址读取数据;或者当IO请求为写IO请求时,则根据写IO请求中携带的地址信息将写IO请求中携带的数据写入存储介质中对应的地址。
本实施例中,虚拟机的IO请求处理装置的接收器701用于接收N个虚拟机发送的IO请求;处理器702用于对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列,并分别从N个IO队列中选择预定数量的IO请求进行处理。这样实现了***在执行当前处理周期内的IO请求时,对其中每个虚拟机的IO请求都能进行处理,减少单个虚拟机的IO时延。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种虚拟机的输入输出IO请求处理方法,所述方法应用于存储***中,其特征在于,包括:
接收N个虚拟机发送的IO请求,其中,N为不小于2的自然数;
对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列;
分别从所述N个IO队列中选择预定数量的IO请求进行处理;
所述分别从所述N个IO队列中选择预定数量的IO请求进行处理包括:
分别从所述N个IO队列中选择预定数量的IO请求;
根据选择的IO请求建立***IO队列,其中,在所述***IO队列中,读IO请求的优先级高于写IO请求的优先级;
对所述***IO队列中的IO请求按优先级从高到低的顺序进行处理。
2.根据权利要求1所述的方法,其特征在于,所述接收N个虚拟机发送的IO请求之后,还包括:
分别根据接收的IO请求中携带的虚拟机的配置信息识别IO请求所属的虚拟机。
3.根据权利要求1所述的方法,其特征在于,所述根据选择的IO请求建立***IO队列,具体包括:
将所述N个IO队列中的每个队列的预定数量的IO请求中的读IO请求加入所述***IO队列的首部,写IO请求加入所述***IO队列的尾部。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述分别从所述N个IO队列中选择预定数量的IO请求进行处理,具体包括:
若所述IO请求为读IO请求,则根据所述读IO请求中携带的地址信息从所述存储***中存储介质中对应的地址读取数据;或者,
若所述IO请求为写IO请求,则根据所述写IO请求中携带的地址信息将所述写IO请求中携带的数据写入所述存储介质中对应的地址。
5.一种虚拟机的输入输出IO请求处理装置,所述装置应用于存储***中,其特征在于,包括:
接收模块,用于接收N个虚拟机发送的IO请求,其中,N为不小于2的自然数;
队列模块,用于对每个虚拟机发送的IO请求建立一个IO队列,以获得N个IO队列;
处理模块,用于分别从所述N个IO队列中选择预定数量的IO请求进行处理;
所述处理模块还用于分别从所述N个IO队列中选择预定数量的IO请求进行处理,具体包括:
分别从所述N个IO队列中选择预定数量的IO请求;
根据选择的IO请求建立***IO队列,其中,在所述***IO队列中,读IO请求的优先级高于写IO请求的优先级;
对所述***IO队列中的IO请求按优先级从高到低的顺序进行处理。
6.根据权利要求5所述的装置,其特征在于,所述接收模块还用于:
分别根据接收的IO请求中携带的虚拟机的配置信息识别IO请求所属的虚拟机。
7.根据权利要求5所述的装置,其特征在于,所述处理模块具体用于:
将所述N个IO队列中的每个队列的预定数量的IO请求中的读IO请求加入所述***IO队列的首部,写IO请求加入所述***IO队列的尾部。
8.根据权利要求5-7任一项所述的装置,其特征在于,所述处理模块具体用于:
若所述IO请求为读IO请求,则根据所述读IO请求中携带的地址信息从所述存储***中存储介质中对应的地址读取数据;或者
若所述IO请求为写IO请求,则根据所述写IO请求中携带的地址信息将所述写IO请求中携带的数据写入所述存储介质中对应的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310754241.0A CN104750547B (zh) | 2013-12-31 | 2013-12-31 | 虚拟机的输入输出io请求处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310754241.0A CN104750547B (zh) | 2013-12-31 | 2013-12-31 | 虚拟机的输入输出io请求处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104750547A CN104750547A (zh) | 2015-07-01 |
CN104750547B true CN104750547B (zh) | 2018-05-18 |
Family
ID=53590290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310754241.0A Active CN104750547B (zh) | 2013-12-31 | 2013-12-31 | 虚拟机的输入输出io请求处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104750547B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648832B (zh) * | 2016-12-09 | 2020-01-14 | 武汉烽火信息集成技术有限公司 | 提高虚拟机资源利用率的装置及方法 |
CN111258705B (zh) * | 2018-11-30 | 2023-12-08 | 华为技术有限公司 | 用于检测云硬盘输入输出io邻位干扰的方法和装置 |
CN111831397B (zh) * | 2020-07-17 | 2024-02-20 | 杭州海康威视***技术有限公司 | 处理io请求的方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1326567A (zh) * | 1998-11-16 | 2001-12-12 | 艾利森电话股份有限公司 | 处理***调度 |
CN101458635A (zh) * | 2007-12-14 | 2009-06-17 | 韩国电子通信研究院 | 服务器虚拟环境的磁盘输入/输出调度器及其调度方法 |
US7761875B2 (en) * | 2005-06-10 | 2010-07-20 | Hewlett-Packard Development Company, L.P. | Weighted proportional-share scheduler that maintains fairness in allocating shares of a resource to competing consumers when weights assigned to the consumers change |
-
2013
- 2013-12-31 CN CN201310754241.0A patent/CN104750547B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1326567A (zh) * | 1998-11-16 | 2001-12-12 | 艾利森电话股份有限公司 | 处理***调度 |
US7761875B2 (en) * | 2005-06-10 | 2010-07-20 | Hewlett-Packard Development Company, L.P. | Weighted proportional-share scheduler that maintains fairness in allocating shares of a resource to competing consumers when weights assigned to the consumers change |
CN101458635A (zh) * | 2007-12-14 | 2009-06-17 | 韩国电子通信研究院 | 服务器虚拟环境的磁盘输入/输出调度器及其调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104750547A (zh) | 2015-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693601B2 (en) | Enabling virtual functions on storage media | |
KR102380670B1 (ko) | 메모리 제어기에서의 세분화된 대역폭 프로비저닝 | |
US8893146B2 (en) | Method and system of an I/O stack for controlling flows of workload specific I/O requests | |
US9021178B2 (en) | High performance path for command processing | |
US9348747B2 (en) | Solid state memory command queue in hybrid device | |
US20150253992A1 (en) | Memory system and control method | |
KR101812300B1 (ko) | 다수의 메모리 채널들을 가진 컴퓨팅 시스템에서의 메모리 버퍼들의 할당 | |
CN110413590A (zh) | 数据迁移方法、装置、设备和介质 | |
CN111880744B (zh) | 一种数据迁移方法、装置、电子设备和介质 | |
CN106201652B (zh) | 一种数据处理方法及虚拟机 | |
TWI715248B (zh) | 主機輸出入命令的執行裝置及方法及電腦程式產品 | |
CN104750547B (zh) | 虚拟机的输入输出io请求处理方法及装置 | |
CN114328281A (zh) | 固态硬盘异常掉电处理方法、装置、电子设备及介质 | |
US9817583B2 (en) | Storage system and method for allocating virtual volumes based on access frequency | |
CN109710578B (zh) | 一种日志记录方法及*** | |
EP2454671A2 (en) | Inserting a gap in information sent from a drive to a host device | |
CN117492661A (zh) | 数据写入方法、介质、装置和计算设备 | |
CN116302105B (zh) | 访问指令调度方法、***、硬盘及控制器、存储介质和程序产品 | |
US20200301732A1 (en) | Information processing system and non-transitory computer readable medium storing program | |
CN115712394A (zh) | 数据读写方法、装置、计算机设备及可读存储介质 | |
US20170154142A1 (en) | Method and apparatus for simulating slow storage disk | |
US8966133B2 (en) | Determining a mapping mode for a DMA data transfer | |
CN108762682B (zh) | 一种线程模型 | |
US9195595B2 (en) | Portable apparatus using multi-core storage mechanism and data access method therefor | |
US10228883B2 (en) | Storage device that postpones completion of read command to begin execution of a non-read command |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |