一种虚拟化环境下用户数据的读写方法、系统及物理的制造方法

文档序号:6493631阅读:163来源:国知局
一种虚拟化环境下用户数据的读写方法、系统及物理的制造方法
【专利摘要】本发明实施例提供一种虚拟化环境下用户数据的读写方法、系统及物理机,其中方法包括:检测各虚拟机是否存在用户数据读写请求;汇集各虚拟机的用户数据读写请求,将读请求加入到读请求队列中,将写请求加入到写请求队列中;当读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整;调取优先级相对高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求。本发明实施例大幅减小了物理机的通信接口和存储用户数据的服务器的读写压力,提高了用户数据的读写效率。
【专利说明】一种虚拟化环境下用户数据的读写方法、系统及物理机
【技术领域】
[0001]本发明涉及虚拟化技术,更具体地说,涉及一种虚拟化环境下用户数据的读写方法、系统及物理机。
【背景技术】
[0002]目前虚拟化技术被越来越多的用户所接受,这里所指的虚拟化包含面向最终用户的桌面虚拟化以及面向服务的计算虚拟化;虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程,通过虚拟化技术可以将单CPU (处理器)模拟成多CPU并行,允许一个平台同时运行多个操作系统,如在一台物理计算机上模拟出二台或多台虚拟的计算机(即虚拟机)。
[0003]在虚拟化应用场景中主要存在两种不同类型的数据:系统数据和用户数据。系统数据是指虚拟机中的操作系统、软件的数据,用户数据是指用户在使用虚拟化系统时所产生的数据,这两类数据通常是分离存储的。现有技术中一种典型的用户数据存储方式是,将用户数据保存在与虚拟机所在物理机不同的服务器上,如将用户数据保存在一种网络文件系统中;通过在虚拟机内安装数据读写客户端,如在虚拟机内安装网络文件系统客户端,在需要进行用户数据读写时,虚拟机与存储用户数据的服务器之间进行通信,实现用户数据的读写,图1为现有技术中虚拟机进行用户数据读写的示意图,可一同参照。
[0004]在虚拟化应用场景中,虚拟机在进行用户数据读写时,均会通过物理机的通信接口与存储用户数据的服务器进行通信,由于虚拟机调度的不确定性,造成每个虚拟机对通信接口的使用是不公平的,这就造成多台虚拟机对物理机的通信接口的竞争,这使得物理机的通信接口和存储用户数据的服务器存在较大的读写压力,使得用户数据的读写效率较低。

【发明内容】

[0005]有鉴于此,本发明实施例提供一种虚拟化环境下用户数据的读写方法、系统及物理机,以解决由于多台虚拟机对物理机的通信接口的竞争,而使得物理机的通信接口和存储用户数据的服务器存在较大的读写压力,造成用户数据的读写效率较低的问题。
[0006]为实现上述目的,本发明实施例提供如下技术方案:
[0007]第一方面,本发明实施例提供一种虚拟化环境下用户数据的读写方法,包括:
[0008]检测各虚拟机是否存在用户数据读写请求;
[0009]当虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求,将读请求加入到读请求队列中,将写请求加入到写请求队列中;
[0010]当读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整,所述第一请求地址为刚加入读请求队列,和/或写请求队列的请求对应的请求地址,所述第二请求地址为刚加入的请求的在前请求对应的请求地址;[0011]检测读请求队列的调取优先级,及写请求队列的调取优先级,调取优先级相对高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求。
[0012]结合第一方面,在第一方面的第一种可能的实现方式中,
[0013]所述读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整包括:
[0014]读请求队列中刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址的对应度,符合预设第一条件时,按照预置的与预设第一条件对应的读请求队列调整方法,对读请求队列进行调整;和/或,
[0015]写请求队列中刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址的对应度,符合预设第二条件时,按照预置的与预设第二条件对应的写请求队列调整方法,对写请求队列进行调整。
[0016]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,
[0017]所述刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址的对应度,符合预设第一条件包括:
[0018]刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址相同,或相连续,或同属于一个文件地址,所述文件地址对应的文件承载有多个数据;
[0019]所述按照预置的与预设第一条件对应的读请求队列调整方法,对读请求队列进行调整包括:
[0020]当刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址相同时,将刚加入的读请求合并到所述在前读请求中,形成具有相同读数据地址的同一请求;或,
[0021]当刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址连续时,将刚加入的读请求所请求的读数据地址与所述在前读请求所请求的读数据地址,按照地址的连续顺序进行叠加,将刚加入的读请求和所述在前读请求合并成具有叠加地址的请求;或,
[0022]当刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址同属于一个文件地址时,对读请求队列进行重排,将刚加入的读请求的排序调整到所述在前读请求之后,使得所述读请求队列中同属于一个文件地址的读请求的排序连续。
[0023]结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,
[0024]所述刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址的对应度,符合预设第二条件包括:
[0025]刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址相同,或相连续,或同属于一个文件地址,所述文件地址对应的文件承载有多个数据;
[0026]所述按照预置的与预设第二条件对应的写请求队列调整方法,对写请求队列进行调整包括:
[0027]当刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址相同时,将刚加入的写请求合并到所述在前写请求中,形成具有相同写数据地址的同一请求;或,[0028]当刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址连续时,将刚加入的写请求所请求的写数据地址与所述在前写请求所请求的写数据地址,按照地址的连续顺序进行叠加,将刚加入的写请求和所述在前写请求合并成具有叠加地址的请求;或,
[0029]当刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址同属于一个文件地址时,对写请求队列进行重排,将刚加入的写请求的排序调整到所述在前写请求之后,使得所述写请求队列中同属于一个文件地址的写请求的排序连续。
[0030]第二方面,本发明实施例提供一种虚拟化环境下用户数据的读写系统,包括:
[0031]请求检测模块,用于检测各虚拟机是否存在用户数据读写请求;
[0032]请求汇集模块,用于在虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求;
[0033]请求列队模块,用于将用户数据读写请求中的读请求加入到读请求队列中,将写请求加入到写请求队列中;
[0034]请求队列调整模块,用于在读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整,所述第一请求地址为刚加入读请求队列,和/或写请求队列的请求对应的请求地址,所述第二请求地址为刚加入的请求的在前请求对应的请求地址;
[0035]请求调取模块,用于检测读请求队列的调取优先级,及写请求队列的调取优先级,调取优先级相对高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求。
[0036]第三方面,本发明实施例提供一种物理机,包括:处理器,通信接口,存储器和通信总线;
[0037]其中所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;
[0038]所述通信接口,用于获取所述处理器调取的用户数据读写请求,向存储用户数据的服务器发送该读写请求;
[0039]所述处理器,用于执行程序;
[0040]所述存储器,用于存放程序;
[0041]其中程序用于:
[0042]检测各虚拟机是否存在用户数据读写请求;
[0043]当虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求,将读请求加入到读请求队列中,将写请求加入到写请求队列中;
[0044]当读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整,所述第一请求地址为刚加入读请求队列,和/或写请求队列的请求对应的请求地址,所述第二请求地址为刚加入的请求的在前请求对应的请求地址;
[0045]检测读请求队列的调取优先级,及写请求队列的调取优先级,调取优先级相对高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求。[0046]基于上述技术方案,本发明实施例提供的虚拟化环境下用户数据的读写方法,当检测到虚拟机存在用户数据读写请求时,将汇集各虚拟机的用户数据读写请求,将读请求加入到预置的读请求队列中,将写请求加入到预置的写请求队列中,并对读请求队列和/或写请求队列进行调整,将当前调取优先级高的队列中的在前请求发送给存储用户数据的服务器,实现了虚拟化环境下用户数据的读写;相比现有技术,本发明实施例所提供的虚拟化环境下用户数据的读写方法,虚拟机的用户数据读写请求并不直接通过通信接口发送给存储用户数据的服务器,而是将用户数据的读写请求截获后,为虚拟机进行用户数据的读写请求的代理,通过读请求队列、写请求队列,读请求队列和/或写请求队列的调整、及调取优先级高的队列中的在前请求,向存储用户数据的服务器发送在前请求,使得调至通信接口的用户数据读写请求变得有序,虚拟机之间将通过代理实现用户数据的读写,而不再进行物理机的通信接口的竞争,大幅减小了物理机的通信接口和存储用户数据的服务器的读写压力,提高了用户数据的读写效率。
【专利附图】

【附图说明】
[0047]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0048]图1为现有技术中虚拟机进行用户数据读写的示意图;
[0049]图2为本发明实施例提供的虚拟化环境下用户数据的读写方法的流程图;
[0050]图3为本发明实施例提供的虚拟化环境下用户数据的读写方法的另一流程图;
[0051]图4为本发明实施例提供的读请求队列调整的流程图;
[0052]图5为本发明实施例提供的读请求合并的示意图;
[0053]图6为本发明实施例提供的读请求队列调整的另一流程图;
[0054]图7为本发明实施例提供的读请求合并的另一示意图;
[0055]图8为本发明实施例提供的读请求队列调整的又一流程图;
[0056]图9为本发明实施例提供的读请求队列重排的示意图;
[0057]图10为本发明实施例提供的读写请求调取的方法流程图;
[0058]图11为本发明实施例提供的虚拟化环境下用户数据的读写方法的又一流程图;
[0059]图12为本发明实施例提供的虚拟化环境下用户数据的读写系统的结构框图;
[0060]图13为本发明实施例提供的虚拟化环境下用户数据的读写系统的模块设置示意图;
[0061]图14为本发明实施例提供的请求队列调整模块的结构框图;
[0062]图15为本发明实施例提供的读请求队列调整单元的结构框图;
[0063]图16为本发明实施例提供的写请求队列调整单元的结构框图;
[0064]图17为本发明实施例提供的请求列队模块的结构框图;
[0065]图18为本发明实施例提供的请求调取模块的结构框图;
[0066]图19为本发明实施例提供的请求调取模块的另一结构框图;
[0067]图20为本发明实施例提供的虚拟化环境下用户数据的读写系统的另一结构框图;
[0068]图21为本发明实施例提供的物理机的结构框图。
【具体实施方式】
[0069]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0070]图2为本发明实施例提供的虚拟化环境下用户数据的读写方法的流程图,该方法应用于模拟有多台虚拟机的物理机上,参照图2,该方法可以包括步骤:
[0071]步骤S10、检测各虚拟机是否存在用户数据读写请求;
[0072]虚拟机读写请求的检测手段有多种,可选在各虚拟机的操作系统中装载驱动程序,从而实现虚拟机是否存在用户数据读写请求的检测。
[0073]步骤S11、当虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求,将读请求加入到读请求队列中,将写请求加入到写请求队列中;
[0074]现有技术中,各虚拟机的用户数据的读写请求将通过安装在虚拟机各自操作系统上的数据读写客户端,直接发往物理机的通信接口,从而通过物理机的通信接口与存储用户数据的服务器进行通信;而本发明实施例中,各虚拟机的用户数据的读写请求将不直接发往通信接口,在检测到虚拟机存在用户数据读写请求时,将截获该用户数据读写请求,将各虚拟机的用户数据读写请求进行汇集。可选的,可通过在各虚拟机的操作系统中装载的驱动程序,实现用户数据读写请求的截获,从而将各虚拟机的用户数据读写请求进行汇集。
[0075]本发明实施例设置有读请求队列和写请求队列,读请求队列由若干个读请求按照一定的排序规则排序后组成,写请求队列由若干个写请求按照一定的排序规则排序后组成。本发明实施例在汇聚了用户数据读写请求之后,将按照所汇集的用户数据读写请求的类型,将读请求加入到读请求队列中,将写请求加入到写请求队列中;可选的,加入到读请求队列中的读请求先放置在读请求队列的最后位,对于读请求队列中的读请求,排序在前的读请求被调取至通信接口的优先级最高,排序在后的读请求被调取至通信接口的优先级最低,写请求队列中的写请求情况与读请求类似;显然,本发明实施例也可通过用户指定来实现请求优先级的分配,如用户可自定义提升排序在后的请求的优先级等级,使得排序在后的请求优先被调至通信接口。
[0076]步骤S12、当读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整;
[0077]本发明实施例中,第一请求地址为刚加入读请求队列,和/或写请求队列的请求对应的请求地址,第二请求地址为刚加入的请求的在前请求对应的请求地址;刚加入的请求对应的请求地址为请求所指向的服务器的存储地址,该服务器存储有用户数据;对于读请求队列而言,读请求队列中刚加入的请求为读请求,对应的请求地址为读数据地址,读数据地址主要指所请求读取的用户数据在存储用户数据的服务器中的存储位置,即第一请求地址和第二请求地址可以为读数据地址;对于写请求队列而言,写请求队列中刚加入的请求为写请求,对应的请求地址为写数据地址,写数据地址主要指待写数据请求写入的服务器的存储位置,即第一请求地址和第二请求地址可以为写数据地址。值得注意的是,刚加入的读请求的在前请求也为读请求,刚加入的写请求类似,即第一请求地址和第二请求地址对应的请求类型相同。
[0078]本发明实施例中,刚加入的请求对应的请求地址,与该刚加入请求的在前请求对应的请求地址的对应度主要指,刚加入的请求对应的请求地址与在前请求的请求地址是否相关,即刚加入的请求地址与在前请求是否存在直接的关联,或间接的关联,直接关联主要指通过其中一个的请求地址可立刻导出下一个的请求地址,如两个或两个以上的请求地址之间存在相同或连续关系,即存储用户数据的服务器中,该两个或两个以上的请求地址对应的数据存储空间是相同的或连续的;间接关联主要指通过其中一个的请求地址并无法立刻导出下一个请求地址,但这两个请求地址之间具有共同的文件属性,通过从属于同一文件下的请求地址,则可实现从其中的一个请求地址导出另一个请求地址,如两个请求地址对应同一文件地址,但两个请求地址另不连续或相同。值得注意的是,请求地址之间可能存在不相关的情况。
[0079]针对刚加入的请求的请求地址,与在前请求的请求地址的对应度,本发明实施例设置有预设条件,预设条件主要用于衡量刚加入的请求的请求地址,与在前请求的请求地址是否相关,即是否直接关联或间接关联。
[0080]对应的,本发明实施例还设置有与预设条件对应的请求队列调整方法,在刚加入的请求的请求地址,与在前读请求的请求地址的对应度,符合预设条件时,将依照与预设条件对应的请求队列调整方法,对刚加入请求对应的请求队列进行调整;可选的,对于多个请求地址直接关联的情况,可将该多请求地址对应的请求进行合并,对于多个请求地址间接关联的情况,可将请求队列进行重排,使得存在间接关联的请求地址的排序相连续,对于请求队列的具体调整方法可视具体应用情况改变,上述可选方式不应成为其限制。
[0081]显然,本发明实施例可只考虑读请求队列中的读请求对应的读数据地址,与在前读请求的读数据地址的对应度,从而只对读请求队列进行调整;也只可考虑写请求对应的写数据地址,与在前写请求的写数据地址的对应度,从而只对写请求队列进行调整;显然也可同时考虑读请求队列和写请求队列中刚加入的请求对应的请求地址,与该刚加入请求的在前请求对应的请求地址的对应度,从而分别对读请求队列和写请求队列进行调整。
[0082]步骤S13、检测读请求队列的调取优先级,及写请求队列的调取优先级,调取优先级相对高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求。
[0083]本发明实施例可设置多种读请求队列的调取优先级,和写请求队列的调取优先级的确定方法,如可设置调取优先级的轮换周期,在过一周期后,将读请求队列的调取优先级设置为高,将写请求队列的调取优先级设置为低,或将读请求队列的调取优先级设置为低,将写请求队列的调取优先级设置为高;也可通过读请求队列和写请求队列的请求个数的差值确定调取优先级,如读请求的个数大于写请求的个数时,设置读请求队列的调取优先级设置为低,写请求队列的调取优先级设置为高等。在确定了读请求队列和写请求队列的调取优先级后,调取当前调取优先级高的队列中的在前请求,通过物理机的通信接口向存储用户数据的服务器发送所调取的请求。
[0084]本发明实施例提供的虚拟化环境下用户数据的读写方法,当检测到虚拟机存在用户数据读写请求时,将汇集各虚拟机的用户数据读写请求,将读请求加入到预置的读请求队列中,将写请求加入到预置的写请求队列中,并对读请求队列和/或写请求队列进行调整,将当前调取优先级高的队列中的在前请求发送给存储用户数据的服务器,实现了虚拟化环境下用户数据的读写;相比现有技术,本发明实施例所提供的虚拟化环境下用户数据的读写方法,虚拟机的用户数据读写请求并不直接通过通信接口发送给存储用户数据的服务器,而是将用户数据的读写请求截获后,为虚拟机进行用户数据的读写请求的代理,通过读请求队列、写请求队列,读请求队列和/或写请求队列的调整、及调取优先级高的队列中的在前请求,向存储用户数据的服务器发送在前请求,使得调至通信接口的用户数据读写请求变得有序,虚拟机之间将通过代理实现用户数据的读写,而不再进行物理机的通信接口的竞争,大幅减小了物理机的通信接口和存储用户数据的服务器的读写压力,提高了用户数据的读写效率。
[0085]前文已所述,步骤S12可同时考虑读请求队列的调整和写请求队列的调整,图3示出了对应的用户数据的读写方法,图3为本发明实施例提供的虚拟化环境下用户数据的读写方法的另一流程图,该方法应用于模拟有多台虚拟机的物理机上,参照图3,该方法可以包括步骤:
[0086]步骤S100、检测各虚拟机是否存在用户数据读写请求;
[0087]步骤S110、当虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求,将读请求加入到读请求队列中,将写请求加入到写请求队列中;
[0088]步骤S120、当刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址的对应度,符合预设第一条件时,按照预置的与预设第一条件对应的读请求队列调整方法,对读请求队列进行调整;
[0089]本发明实施例设置有预设第一条件,预设第一条件主要用于衡量刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址是否相关,即是否直接关联或间接关联。
[0090]对应的,本发明实施例还设置有与预设第一条件对应的读请求队列调整方法,在刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址的对应度,符合预设第一条件时,将依照与预设第一条件对应的读请求队列调整方法,对读请求队列进行调整;可选的,对于多个读数据地址直接关联的情况,可将该多个读数据地址进行合并,对于多个读数据地址间接关联的情况,可将读请求队列进行重排,使得存在间接关联的读数据地址的排序相连续,对于读请求队列的具体调整方法可视具体应用情况改变,上述可选方式不应成为其限制。
[0091]步骤S130、当刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址的对应度,符合预设第二条件时,按照预置的与预设第二条件对应的写请求队列调整方法,对写请求队列进行调整;
[0092]本发明实施例设置有预设第二条件,预设第二条件主要用于衡量刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址是否相关,即是否直接关联或间接关联。
[0093]对应的,本发明实施例还设置有与预设第二条件对应的写请求队列调整方法,在刚加入的写请求所请求的读数据地址,与在前写请求所请求的写数据地址的对应度,符合预设第二条件时,将依照与预设第二条件对应的写请求队列调整方法,对写请求队列进行调整;可选的,对于多个写数据地址直接关联的情况,可将该多个写数据地址进行合并,对于多个写数据地址间接关联的情况,可将写请求队列进行重排,使得存在间接关联的写数据地址的排序相连续,对于写请求队列的具体调整方法可视具体应用情况改变,上述可选方式不应成为其限制。
[0094]值得注意的是,本发明实施例中步骤S120与步骤S130分别为针对读请求队列和写请求队列所做的处理,步骤S120与步骤S130之间不存在步骤的先后顺序。
[0095]步骤S140、检测读请求队列的调取优先级,及写请求队列的调取优先级,在读请求队列的调取优先级大于写请求队列的调取优先级时,调取读请求队列中的在前读请求,向存储用户数据的服务器发送所调取的读请求;在读请求队列的调取优先级小于写请求队列的调取优先级时,调取写请求队列中的在前写请求,向存储用户数据的服务器发送所调取的写请求。
[0096]前文已述,本发明实施例中,读数据地址之间可以存在直接的关联,或间接的关联;对于直接关联,可选为读数据地址之间所请求的读数据地址相同,或相连续;对于间接关联,可选为读数据地址之间所请求的读数据地址同属于一个文件地址;为便于理解本发明实施例对于读请求队列所进行的调整,下面将以读数据地址相同,或相连续的直接关联,读数据地址同属于一个文件地址的间接关联为例进行描述;值得注意的是,下述示例仅为本发明实施例读数据地址直接关联和间接关联的可选方式,其不应成为本发明实施例的限制。
[0097]可选的,预设第一条件可以是,刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址相同。图4为本发明实施例提供的读请求队列调整的流程图,参照图4,该流程可以包括:
[0098]步骤S1201、判断刚加入的读请求所请求的读数据地址,与读请求队列中的在前读请求所请求的读数据地址是否相同,若是,执行步骤S1202 ;
[0099]步骤S1202、将刚加入的读请求合并到所述在前读请求中;
[0100]刚加入的读请求将合并到在前请求中,形成具有相同读数据地址的同一请求,此处可理解为撤销刚加入的读请求,保留在前读请求,图5为读请求合并的示意图,可一同参照。
[0101]将针对同一读数据地址的多个读请求进行合并,可大幅减少读请求的个数,减少读请求次数,使得通信接口和存储用户数据的服务器的读写压力大幅减小。
[0102]可选的,预设第一条件可以是,刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址相连续。图6为本发明实施例提供的读请求队列调整的另一流程图,参照图6,该流程可以包括:
[0103]步骤S1211、判断刚加入的读请求所请求的读数据地址,与读请求队列中的在前读请求所请求的读数据地址是否连续,若是,执行步骤S1212 ;
[0104]步骤S1212、将刚加入的读请求所请求的读数据地址与所述在前读请求所请求的读数据地址,按照地址的连续顺序进行叠加,将刚加入的读请求和所述在前读请求进行合并。
[0105]刚加入的读请求将合并到所述在前请求中,所合并后的请求为具有叠加地址的请求,图7为读请求合并的另一示意图,可一同参照。
[0106]将读数据地址连续的多个读请求进行合并,可大幅减少读请求的个数,减少读请求次数,使得通信接口和存储用户数据的服务器的读写压力大幅减小。
[0107]可选的,预设第一条件可以是,刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址同属于一个文件地址。图8为本发明实施例提供的读请求队列调整的又一流程图,参照图8,该流程可以包括:
[0108]步骤S1221、判断刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址,是否同属于一个文件地址,若是,执行步骤S1222 ;
[0109]步骤S1222、对读请求队列进行重排,将刚加入的读请求的排序调整到所述在前读请求之后,使得所述读请求队列中同属于一个文件地址的读请求的排序连续。
[0110]本发明实施例通过读请求队列的调整,将使得针对同一文件的读请求的排序连续,图9为读请求队列重排的示意图,可一同参照。
[0111]将同属于一个文件的多个读请求进行连续排序,可使得对相同文件的访问会连续执行,从而使得存储用户数据的服务器的读写压力大幅减小。
[0112]前文已述,本发明实施例中,写数据地址之间存在直接的关联,或间接的关联;对于直接关联,可选为写数据地址之间所请求的写数据地址相同,或相连续;对于间接关联,可选为写数据地址之间所请求的写数据地址同属于一个文件地址;为便于理解本发明实施例对于写请求队列所进行的调整,下面将以写数据地址相同,或相连续的直接关联,写数据地址同属于一个文件地址的间接关联为例进行描述;值得注意的是,下述示例仅为本发明实施例写数据地址直接关联和间接关联的可选方式,其不应成为本发明实施例的限制。
[0113]可选的,预设第二条件可以是,刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址相同。在此情况下,写请求队列调整的实现方式可以是:判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址是否相同;若是,则将刚加入的写请求合并到所述在前写请求中,形成具有相同写数据地址的同一请求。本发明实施例所进行的写请求合并操作与图5所示读请求合并相类似,两者可相互参照。
[0114]可选的,预设第二条件可以是,刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址相连续,在此情况下,写请求队列调整的实现方式可以是:判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址是否相连续;若是,则将刚加入的写请求所请求的写数据地址与所述在前写请求所请求的写数据地址,按照地址的连续顺序进行叠加,将刚加入的写请求合并到所述在前写请求中,合并成具有叠加地址的请求。本发明实施例所进行的写请求合并操作与图7所示读请求合并相类似,两者可相互参照。
[0115]将写数据地址相同或连续的多个写请求进行合并,可大幅减少读请求的个数,减少读请求次数,使得通信接口和存储用户数据的服务器的读写压力大幅减小。
[0116]可选的,预设第二条件可以是,刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址同属于一个文件地址;在此情况下,写请求队列调整的实现方式可以是:判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址,是否同属于一个文件地址;若是,对写请求队列进行重排,将刚加入的写请求的排序调整到所述在前写请求之后,使得所述写请求队列中同属于一个文件地址的写请求的排序连续。本发明实施例所进行的写请求重排操作与图9所示读请求重排相类似,两者可相互参照。
[0117]将同属于一个文件的多个写请求进行连续排序,可使得对相同文件的访问会连续执行,从而使得存储用户数据的服务器的读写压力大幅减小。
[0118]可选的,本发明实施例还可预先缓存,和/或,预先调取存储用户数据的服务器中的用户数据,从而在所汇集的读请求所请求读的数据,与预先缓存和/或预先调取的用户数据相对应时,直接调取预先缓存和/或预先调取的用户数据,完成用户数据的读取操作。具体的,可检测所汇集的读请求所请求读的数据,与预先缓存和/或预先调取的用户数据是否相对应;在所汇集的读请求所请求读的用户数据,与预先缓存和/或预先调取的用户数据相对应时,向对应的虚拟机返回读请求完成响应,调取预先缓存和/或预先调取的对应数据给对应的虚拟机。
[0119]其中,可以通过以往的用户数据读请求,分析出用户数据读取最为频繁的数据,将用户数据调取次数达到预设个数的用户数据进行预先的缓存,可选的,可将用户数据预先缓存在NVM (Nonvolatile memory,非易失性存储器)中;对于用户数据的预先调取,则可通过分析以往的数据读请求,分析出未来最有可能被调取而当前未调取的用户数据,将这部分数据进行预先的调取,预先调取的数据也可存储在NVM中。
[0120]前文已述,确定读请求队列的调取优先级,及写请求队列的调取优先级的方式有多种,对于本发明实施例而言,可优先调取读请求,延迟调取写请求,如可先进行读请求的调取,直至读请求全部调取完、读请求全部发送给存储用户数据的服务器后,再调取写请求。然而为了兼顾了写请求,本发明实施例提供了一种读写请求调取的实现方式,图10为本发明实施例提供的读写请求调取的方法流程图,参照图10,该方法可以包括:
[0121]步骤S141、检测读请求队列的读请求个数,及写请求队列的写请求个数;
[0122]步骤S142、当读请求个数大于写请求个数,且差值不大于预设第一阈值时,确定读请求队列的调取优先级大于写请求队列的调取优先级,调取读请求队列中的在前读请求,向存储用户数据的服务器发送所调取的读请求;
[0123]预设第一阈值可视实际应用请求进行设定。
[0124]步骤S143、当读请求个数小于写请求个数时,确定读请求队列的调取优先级大于写请求队列的调取优先级,调取读请求队列中的在前读请求,向存储用户数据的服务器发送所调取的读请求;
[0125]步骤S144、当读请求个数大于写请求个数,且差值大于预设第一阈值时,确定读请求队列的调取优先级小于写请求队列的调取优先级,调取写请求队列中的在前写请求,向存储用户数据的服务器发送所调取的写请求。
[0126]由于延迟调取写请求可以降低通信接口和存储用户数据的服务器的压力,因此本发明实施例对于读写请求的调取也遵循优先调取读请求,延迟调取写请求的原则,但本发明实施例还设置了第一阈值,使得在写请求个数小于读请求个数,且相差较大时,进行写请求的调取,以免未调用的写请求个数过多。
[0127]由于所汇集的各虚拟机的读写请求中的写请求既包含了待写数据,又包含了待写数据的写数据地址,因此在所汇集的虚拟机的读写请求为写请求时,本发明实施例将缓存写请求对应的待写数据,将包含待写数据对应的写数据地址的写请求加入到写请求队列中;对应的,在调取写请求,向存储用户数据的服务器发送所调取的写请求时,将同时调取所缓存的待写数据,向存储用户数据的服务器发送,包含所述待写数据及所述待写数据对应的写数据地址的写请求。可选的,可将待写数据缓存入NVM中。
[0128]本发明实施例,在将写请求对应的待写数据进行缓存,将写数据地址的写请求加入到写请求队列之后,即可向该写请求对应的虚拟机发送写请求完成应答,从而使得该虚拟机能够快速的进入下次的用户数据写环节。
[0129]可选的,针对读请求的完成响应,本发明实施例可设置读请求响应时间期限(deadl ine ),当读请求队列中的读请求个数大于预设第二阈值时,即读请求个数过多时,则按照预置的读请求响应时间期限,推迟读请求队列中预设个数的读请求的读请求完成响应,以使虚拟机延迟进入下次的用户数据读环节;第二阈值可视实际应用情况进行设定。
[0130]可选的,在汇集了虚拟机的用户数据读写请求之后,将读请求加入到读请求队列,将写请求加入到写请求队列之前还可包括步骤:对所汇集的用户数据的读写请求的访问权限进行验证,对于无权对存储用户数据的服务器进行访问的读写请求进行终止,对于有权对存储用户数据的服务器进行访问的读写请求将继续进行后续的操作;具体的,可缓存各虚拟机的访问权限,若所汇集的虚拟机发出的用户数据读写请求,与缓存的各虚拟机的访问权限不对应(包括缓存中未有该虚拟机名单,或虽有该虚拟机名单,但访问资格与当前的请求不对应),则判定当前虚拟机所发出用户数据读写请求无访问存储用户数据的服务器的权限,可终止读写请求,结束操作,也可向存储用户数据的服务器请求访问权限,并在承载虚拟机的物理机中进行访问权限的缓存;若所汇集的虚拟机发出的用户数据读写请求,与缓存的各虚拟机的访问权限对应,则执行后续的操作。
[0131]图11为本发明实施例提供的虚拟化环境下用户数据的读写方法的又一流程图,图11示出了细化的用户数据的读写方法的流程,对于其中的一些细化方式仅为图3所示流程中对应步骤的可选实现方式,参照图11,该方法可以包括:
[0132]步骤S200、检测各虚拟机是否存在用户数据读写请求;
[0133]步骤S210、当虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求,判断所缓存的访问权限中,是否与所汇集的各虚拟机的用户数据读写请求的访问权限对应,若否,执行步骤S220或步骤S230,若是,执行步骤S240
[0134]此处,访问权限是针对存储用户数据的服务器,如各虚拟机对网络文件系统的访问权限。
[0135]步骤S220、结束流程;
[0136]步骤S230、向存储用户数据的服务器请求访问权限,并在本机中缓存访问权限,返回步骤S210 ;
[0137]步骤S240、判断用户数据读写请求的类型,若是读请求,则执行步骤S250,若是写请求,执行步骤S310 ;
[0138]步骤S250、判断NVM中是否预先缓存和/或预先调取有与读请求对应的用户数据,若是,执行步骤S260,若否,执行步骤S270 ;
[0139]步骤S260、向对应虚拟机返回用户数据,完成读请求;
[0140]步骤S270、将读请求加入到读请求队列中;
[0141]步骤S280、当刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址相同时,将刚加入的读请求合并到所述在前读请求中;[0142]步骤S290、当刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址连续时,将刚加入的读请求所请求的读数据地址与所述在前读请求所请求的读数据地址相叠加,将刚加入的读请求合并到所述在前读请求中;
[0143]步骤S300、当刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址同属于一个文件地址时,对读请求队列进行重排,将刚加入的读请求的排序调整到所述在前读请求之后,使得所述读请求队列中同属于一个文件地址的读请求的排序连续;
[0144]步骤S310、将写请求对应的待写数据缓存入NVM中,将包含待写数据对应的写数据地址的写请求加入到写请求队列中;
[0145]步骤S320、当刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址相同时,将刚加入的写请求合并到所述在前写请求中;
[0146]步骤S330、当刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址连续时,将刚加入的写请求所请求的写数据地址与所述在前写请求所请求的写数据地址,按照地址的连续顺序进行叠加,将刚加入的写请求合并到所述在前写请求中;
[0147]步骤S340、当刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址同属于一个文件地址时,对写请求队列进行重排,将刚加入的写请求的排序调整到所述在前写请求之后,使得所述写请求队列中同属于一个文件地址的写请求的排序连续;
[0148]步骤S350、检测读请求队列的调取优先级,及写请求队列的调取优先级;
[0149]步骤S360、在读请求队列的调取优先级大于写请求队列的调取优先级时,调取读请求队列中的在前读请求,向存储用户数据的服务器发送所调取的读请求;
[0150]步骤S370、在读请求队列的调取优先级小于写请求队列的调取优先级时,调取写请求队列中的在前写请求,同时调取所缓存的待写数据,向存储用户数据的服务器发送,包含所述待写数据及所述待写数据对应的写数据地址的写请求。
[0151]图11所示方法为优选的虚拟化环境下的用户数据的读写方法,其可大幅度减小通信接口和存储用户数据的服务器的用户数据读写压力。
[0152]下面对本发明实施例提供的虚拟化环境下用户数据的读写系统进行描述,下文描述的系统与上文描述的方法相对应,两者可相互参照。
[0153]图12为本发明实施例提供的虚拟化环境下用户数据的读写系统的结构框图,该系统设置于装载虚拟机的物理机上,参照图12,该系统可以包括:
[0154]请求检测模块100,用于检测各虚拟机是否存在用户数据读写请求;
[0155]可在各个虚拟机上安装检测用户数据读写请求的驱动,该驱动可认为是本发明实施例提供的请求检测模块100,本发明实施例的各个虚拟机中均设置有请求检测模块100,可选的,其可实现一个POSix语义兼容的虚拟文件系统,捕捉截获各虚拟机的用户数据读写请求,通过节点内通信方式与请求汇集模块200交互。
[0156]请求汇集模块200,用于在虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求;
[0157]所汇集的各虚拟机的用户数据读写请求可以是安装在各个虚拟机上的请求检测模块100在截获用户数据读写请求后,转发至请求汇集模块200的。
[0158]请求列队模块300,用于将用户数据读写请求中的读请求加入到读请求队列中,将写请求加入到写请求队列中;[0159]本发明实施例设置有读请求队列和写请求队列两个队列。
[0160]请求队列调整模块400,用于在读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整;
[0161]其中,第一请求地址为刚加入读请求队列,和/或写请求队列的请求对应的请求地址,第二请求地址为刚加入的请求的在前请求对应的请求地址。
[0162]请求调取模块500,用于检测读请求队列的调取优先级,及写请求队列的调取优先级,调取优先级相对高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求。
[0163]请求调取模块500与通信接口相通,请求调取模块500可通过通信接口向存储用户数据的服务器,如网络文件系统,发送所调取的请求。
[0164]可选的,除了请求检测模块100可设置于虚拟机上,请求汇集模块200,请求列队模块300,请求队列调整模块400,请求调取模块500可设置于虚拟机监视器上,具体设置方式可如图13所示。
[0165]图14示出了请求队列调整模块的结构,请求队列调整模块400可以包括:
[0166]读请求队列调整单元410,用于在刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址的对应度,符合预设第一条件时,按照预置的与预设第一条件对应的读请求队列调整方法,对读请求队列进行调整;
[0167]写请求队列调整单元420,用于在刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址的对应度,符合预设第二条件时,按照预置的与预设第二条件对应的写请求队列调整方法,对写请求队列进行调整;
[0168]显然,请求队列调整模块400也可包括读请求队列调整模块410,或写请求队列调整模块420。
[0169]图15示出了本发明实施例提供的读请求队列调整单元的结构,参照图15,读请求队列调整单元410可以包括:
[0170]预设第一条件判断子单元411,用于判断刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址是否相同,或是否相连续,或是否同属于一个文件地址,所述文件地址对应的文件承载有多个数据;
[0171]第一读请求合并子单元412,用于在预设第一条件判断子单元411判断刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址相同时,将刚加入的读请求合并到所述在前读请求中,形成具有相同读数据地址的同一请求;
[0172]第二读请求合并子单元413,用于在预设第一条件判断子单元411判断刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址连续时,将刚加入的读请求所请求的读数据地址与所述在前读请求所请求的读数据地址,按照地址的连续顺序进行叠加,将刚加入的读请求和所述在前读请求合并成具有叠加地址的请求;
[0173]读请求重排子单元414,用于在预设第一条件判断子单元411判断刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址同属于一个文件地址时,对读请求队列进行重排,将刚加入的读请求的排序调整到所述在前读请求之后,使得所述读请求队列中同属于一个文件地址的读请求的排序连续。[0174]显然,读请求队列调整单元410也可只设置第一读请求合并子单元412,第二读请求合并子单元413,读请求重排子单元414中的至少一个,对应的,预设第一条件判断子单元411的判断条件进行相应的调整。
[0175]图16为本发明实施例提供的写请求队列调整单元的结构框图,参照图16,写请求队列调整单元420可以包括:
[0176]预设第二条件判断子单元421,用于判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址是否相同,或是否相连续,或是否同属于一个文件地址,所述文件地址对应的文件承载有多个数据;
[0177]第一写请求合并子单元422,用于在预设第二条件判断子单元421判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址相同时,将刚加入的写请求合并到所述在前写请求中,形成具有相同写数据地址的同一请求;
[0178]第二写请求合并子单元423,用于在预设第二条件判断子单元421判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址连续时,将刚加入的写请求所请求的写数据地址与所述在前写请求所请求的写数据地址,按照地址的连续顺序进行叠加,将刚加入的写请求和所述在前写请求合并成具有叠加地址的请求;
[0179]写请求重排子单元424,用于在预设第二条件判断子单元421判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址同属于一个文件地址时,对写请求队列进行重排,将刚加入的写请求的排序调整到所述在前写请求之后,使得所述写请求队列中同属于一个文件地址的写请求的排序连续。
[0180]显然,写请求队列调整模块420也可只设置第一写请求合并子单元422,第二写请求合并子单元423,写请求重排子单元424中的至少一个,对应的,预设第二条件判断子单元421的判断条件进行相应的调整。
[0181]图17示出了请求列队模块的结构,参照图17,请求列队模块300可以包括:
[0182]待写数据缓存单元301,用于缓存写请求对应的待写数据;
[0183]待写数据可缓存在NVM中。
[0184]写请求加入单元302,用于将包含待写数据对应的写数据地址的写请求加入到写请求队列中。
[0185]对应的,在图17所示请求列队模块的基础上,图18示出了请求调取模块的结构,参照图18,请求调取模块500可以包括:
[0186]待写数据调取单元501,用于调取所缓存的待写数据;
[0187]写请求发送单元502,用于向存储用户数据的服务器发送,包含所述待写数据及所述待写数据对应的写数据地址的写请求。
[0188]对应的,在图17所示请求列队模块,图18所示请求调取模块的基础上,本发明实施例提供的虚拟化环境下用户数据的读写系统还可以包括:
[0189]写请求完成响应模块(未图示),用于在待写数据缓存单元301缓存写请求对应的待写数据,写请求加入单元302将包含待写数据对应的写数据地址的写请求加入到写请求队列之后,向写请求对应的虚拟机返回写请求完成响应。
[0190]图19示出了请求调取模块的另一结构,参照图19,请求调取模块500可以包括:
[0191]请求个数检测单元511,用于检测读请求队列的读请求个数,及写请求队列的写请求个数;
[0192]第一调取确定单元512,用于当读请求个数大于写请求个数,且差值不大于预设第一阈值时,或读请求个数小于写请求个数时,确定读请求队列的调取优先级大于写请求队列的调取优先级;
[0193]第一调取单元513,用于在第一调取确定单元512确定读请求队列的调取优先级大于写请求队列的调取优先级时,调取读请求队列中的在前读请求,向存储用户数据的服务器发送所调取的读请求;
[0194] 第二调取确定单元514,用于当读请求个数大于写请求个数,且差值大于预设第一阈值时,确定读请求队列的调取优先级小于写请求队列的调取优先级;
[0195]第二调取单元515,用于在第二调取确定单元514确定读请求队列的调取优先级小于写请求队列的调取优先级时,调取写请求队列中的在前写请求,向存储用户数据的服务器发送所调取的写请求。
[0196]图20为本发明实施例提供的虚拟化环境下用户数据的读写系统的另一结构框图,结合图12和图20所示,图20所示系统还包括:
[0197]预缓取数据检测模块600,用于在汇集各虚拟机的用户数据读写请求之后,检测所汇集的读请求所请求读的数据,与预先缓存和/或预先调取的用户数据是否相对应;
[0198]预先缓存和/或预先调取的用户数据可存储在NVM中。
[0199]用户数据调取模块700,用于在预缓取数据检测模块600检测所汇集的读请求所请求读的数据,与预先缓存和/或预先调取的用户数据相对应时,向对应的虚拟机返回读请求完成响应,调取预先缓存和/或预先调取的对应数据给对应的虚拟机;
[0200]读请求个数检测模块800,用于检测读请求队列中的读请求个数;
[0201]读请求响应推迟模块900,用于在读请求个数大于预设第二阈值时,按照预置的读请求响应时间期限,推迟向虚拟机返回读请求队列中预设个数的读请求的读请求完成响应。
[0202]可选的,本发明实施例提供的虚拟化环境下用户数据的读写系统还可以包括:
[0203]配置模块(未图示),用于为虚拟化环境下用户数据的读写系统中各模块单元的参数进行配置,如为各个虚拟机生成代理ID以及访问密钥,在虚拟机上挂载请求检测模块,配置模块可提供一套软件Π接口或者Webn接口。
[0204]本发明实施例提供的虚拟化环境下用户数据的读写系统,虚拟机的用户数据读写请求并不直接通过通信接口发送给存储用户数据的服务器,而是将用户数据的读写请求截获后,为虚拟机进行用户数据的读写请求的代理,通过读请求队列、写请求队列,读请求队列和写请求队列的调整、及调取优先级高的队列中的在前请求,向存储用户数据的服务器发送在前请求,使得调至通信接口的用户数据读写请求变得有序,虚拟机之间将通过代理实现用户数据的读写,而不再进行物理机的通信接口的竞争,大幅减小了物理机的通信接口和存储用户数据的服务器的读写压力,提高了用户数据的读写效率。
[0205]图21为本发明实施例提供的物理机的结构框图,参照图21,该物理机可以包括:处理器1,通信接口 2,存储器3和通信总线4 ;
[0206]其中处理器1、通信接口 2、存储器3通过通信总线4完成相互间的通信;
[0207]通信接口 2,用于获取处理器I调取的用户数据读写请求,向存储用户数据的服务器发送该读写请求;
[0208]可选的,通信接口 2可以为网卡接口 ;
[0209]处理器I,用于执行程序;
[0210]存储器3,用于存放程序;
[0211]程序可以包括程序代码,所述程序代码包括计算机操作指令。
[0212]处理器I可能是一个中央处理器CPU,或者是特定集成电路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0213]存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
[0214]其中,程序可具体用于:
[0215]检测各虚拟机是否存在用户数据读写请求;
[0216]当虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求,将读请求加入到读请求队列中,将写请求加入到写请求队列中;
[0217]当读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整,所述第一请求地址为刚加入读请求队列,和/或写请求队列的请求对应的请求地址,所述第二请求地址为刚加入的请求的在前请求对应的请求地址;
[0218]检测读请求队列的调取优先级,及写请求队列的调取优先级,调取优先级相对高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求。
[0219]可选的,程序可以包括图12至图20所示的功能模块。
[0220]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0221]专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0222]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或【技术领域】内所公知的任意其它形式的存储介质中。
[0223]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【权利要求】
1.一种虚拟化环境下用户数据的读写方法,其特征在于,包括: 检测各虚拟机是否存在用户数据读写请求; 当虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求,将读请求加入到读请求队列中,将写请求加入到写请求队列中; 当读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整,所述第一请求地址为刚加入读请求队列,和/或写请求队列的请求对应的请求地址,所述第二请求地址为刚加入的请求的在前请求对应的请求地址; 检测读请求队列的调取优先级,及写请求队列的调取优先级,调取优先级高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求。
2.根据权利要求1所述的方法,其特征在于,所述读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整包括: 读请求队列中刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址的对应度,符合预设第一条件时,按照预置的与预设第一条件对应的读请求队列调整方法,对读请求队列进行调整;和/或, 写请求队列中刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址的对应度,符合预设第二条件时,按照预置的与预设第二条件对应的写请求队列调整方法,对写请求队列进行调整。
3.根据权利要求2所述的方法,其特征在于,所述刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址的对应度,符合预设第一条件包括: 刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址相同,或相连续,或同属于一个文件地址,所述文件地址对应的文件承载有多个数据; 所述按照预置的与预设第一条件对应的读请求队列调整方法,对读请求队列进行调整具体包括: 当刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址相同时,将刚加入的读请求合并到所述在前读请求中,形成具有相同读数据地址的同一请求;或,当刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址连续时,将刚加入的读请求所请求的读数据地址与所述在前读请求所请求的读数据地址,按照地址的连续顺序进行叠加,将刚加入的读请求和所述在前读请求合并成具有叠加地址的请求;或, 当刚加入的读请求所请求的读 数据地址,与在前读请求所请求的读数据地址同属于一个文件地址时,对读请求队列进行重排,将刚加入的读请求的排序调整到所述在前读请求之后,使得所述读请求队列中同属于一个文件地址的读请求的排序连续。
4.根据权利要求2所述的方法,其特征在于,所述刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址的对应度,符合预设第二条件包括: 刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址相同,或相连续,或同属于一个文件地址,所述文件地址对应的文件承载有多个数据; 所述按照预置的与预设第二条件对应的写请求队列调整方法,对写请求队列进行调整具体包括: 当刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址相同时,将刚加入的写请求合并到所述在前写请求中,形成具有相同写数据地址的同一请求;或, 当刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址连续时,将刚加入的写请求所请求的写数据地址与所述在前写请求所请求的写数据地址,按照地址的连续顺序进行叠加,将刚加入的写请求和所述在前写请求合并成具有叠加地址的请求;或, 当刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址同属于一个文件地址时,对写请求队列进行重排,将刚加入的写请求的排序调整到所述在前写请求之后,使得所述写请求队列中同属于一个文件地址的写请求的排序连续。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述将写请求加入到写请求队列中包括: 缓存写请求对应的待写数据,将包含待写数据对应的写数据地址的写请求加入到写请求队列中; 所述向存储用户数据的服务器发送所调取的写请求具体包括: 调取所缓存的待写数据,向存储用户数据的服务器发送,包含所述待写数据及所述待写数据对应的写数据地址的写请求。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括: 在缓存写请求对应的待写数据,将包含待写数据对应的写数据地址的写请求加入到写请求队列之后,向写请求对应的虚拟机返回写请求完成响应。
7.根据权利要求1至4任一项所述的方法,其特征在于,在汇集各虚拟机的用户数据读写请求之后,还包括: 检测所汇集的读请求所请求读的数据,与预先缓存和/或预先调取的用户数据是否相对应; 在所汇集的读请求所请求读的用户数据,与预先缓存和/或预先调取的用户数据相对应时,向对应的虚拟机返回读请求完成响应,调取预先缓存和/或预先调取的对应数据给对应的虚拟机。
8.根据权利要求1所述的方法,其特征在于,所述检测读请求队列的调取优先级,及写请求队列的调取优先级包括: 检测读请求队列的读请求个数,及写请求队列的写请求个数; 当读请求个数大于写请求个数,且差值不大于预设第一阈值时,或读请求个数小于写请求个数时,确定读请求队列的调取优先级大于写请求队列的调取优先级; 当读请求个数大于写请求个数,且差值大于预设第一阈值时,确定读请求队列的调取优先级小于写请求队列的调取优先级; 所述调取优先级相对高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求包括: 在读请求队列的调取优先级大于写请求队列的调取优先级时,调取读请求队列中的在前读请求,向存储用户数据的服务器发送所调取的读请求; 在读请求队列的调取优先级小于写请求队列的调取优先级时,调取写请求队列中的在前写请求,向存储用户数据的服务器发送所调取的写请求。
9.根据权利要求1、2、3、4、6或8所述的方法,其特征在于,还包括: 检测读请求队列中的读请求个数; 若读请求个数大于预设第二阈值,则按照预置的读请求响应时间期限,推迟向虚拟机返回读请求队列中预设个数的读请求的读请求完成响应。
10.一种虚拟化环境下用户数据的读写系统,其特征在于,包括: 请求检测模块,用于检测各虚拟机是否存在用户数据读写请求; 请求汇集模块,用于在虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求; 请求列队模块,用于将用户数据读写请求中的读请求加入到读请求队列中,将写请求加入到写请求队列中; 请求队列调整模块,用于在读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整,所述第一请求地址为刚加入读请求队列,和/或写请求队列的请求对应的请求地址,所述第二请求地址为刚加入的请求的在前请求对应的请求地址; 请求调取模块,用于检测读请求队列的调取优先级,及写请求队列的调取优先级,调取优先级相对高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求。
11.根据权利要求10所述的系统,其特征在于,所述请求队列调整模块包括: 读请求队列调整单元,用于在刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址的对应度,符合预设第一条件时,按照预置的与预设第一条件对应的读请求队列调整方法,对读请求队列进行调整;和/或, 写请求队列调整单元,用于在刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址的对应度,符合预设第二条件时,按照预置的与预设第二条件对应的写请求队列调整方法,对写请求队列进行调整。
12.根据权利要求11所述的系统,其特征在于,所述读请求队列调整单元包括:预设第一条件判断子单元,用于判断刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址是否相同,或是否相连续,或是否同属于一个文件地址,所述文件地址对应的文件承载有多个数据; 第一读请求合并子单元,用于在所述预设第一条件判断子单元判断刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址相同时,将刚加入的读请求合并到所述在前读请求中,形成具有相同读数据地址的同一请求;或, 第二读请求合并子单元,用于在所述预设第一条件判断子单元判断刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址连续时,将刚加入的读请求所请求的读数据地址与所述在前读请求所请求的读数据地址,按照地址的连续顺序进行叠加,将刚加入的读请求和所述在前读请求合并成具有叠加地址的请求;或, 读请求重排子单元,用于在所述预设第一条件判断子单元判断刚加入的读请求所请求的读数据地址,与在前读请求所请求的读数据地址同属于一个文件地址时,对读请求队列进行重排,将刚加入的读请求的排序调整到所述在前读请求之后,使得所述读请求队列中同属于一个文件地址的读请求的排序连续。
13.根据权利要求11所述的系统,其特征在于,所述写请求队列调整单元包括: 预设第二条件判断子单元,用于判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址是否相同,或是否相连续,或是否同属于一个文件地址,所述文件地址对应的文件承载有多个数据; 第一写请求合并子单元,用于在所述预设第二条件判断子单元判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址相同时,将刚加入的写请求合并到所述在前写请求中,形成具有相同写数据地址的同一请求; 第二写请求合并子单元,用于在所述预设第二条件判断子单元判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址连续时,将刚加入的写请求所请求的写数据地址与所述在前写请求所请求的写数据地址,按照地址的连续顺序进行叠加,将刚加入的写请求和所述在前写请求合并成具有叠加地址的请求; 写请求重排子单元,用于在所述预设第二条件判断子单元判断刚加入的写请求所请求的写数据地址,与在前写请求所请求的写数据地址同属于一个文件地址时,对写请求队列进行重排,将刚加入的写请求的排序调整到所述在前写请求之后,使得所述写请求队列中同属于一个文件地址的写请求的排序连续。
14.根据权利要求10至13任一项所述的系统,其特征在于,所述请求列队模块包括: 待写数据缓存单元,用于缓存写请求对应的待写数据; 写请求加入单元,用于将包含待写数据对应的写数据地址的写请求加入到写请求队列中; 所述请求调取模块包括: 待写数据调取单元,用于在写请求队列的调取优先级大于读请求队列的调取优先级时,调取所缓存的待写数据; 写请求发送单元,用于向存储用户数据的服务器发送,包含所述待写数据及所述待写数据对应的写数据地址的写请求。
15.根据权利要求14所述的系统,其特征在于,还包括: 写请求完成响应模块,用于在所述待写数据缓存单元缓存写请求对应的待写数据,所述写请求加入单元将包含待写数据对应的写数据地址的写请求加入到写请求队列之后,向写请求对应的虚拟机返回写请求完成响应。
16.根据权利要求10至13所述的系统,其特征在于,还包括: 预缓取数据检测模块,用于在汇集各虚拟机的用户数据读写请求之后,检测所汇集的读请求所请求读的数据,与预先缓存和/或预先调取的用户数据是否相对应; 用户数据调取模块,用于在所述预缓取数据检测模块检测所汇集的读请求所请求读的数据,与预先缓存和/或预先调取的用户数据相对应时,向对应的虚拟机返回读请求完成响应,调取预先缓存和/或预先调取的对应数据给对应的虚拟机。
17.根据权利要求10所述的系统,其特征在于,所述请求调取模块包括: 请求个数检测单元,用于检测读请求队列的读请求个数,及写请求队列的写请求个 数; 第一调取确定单元,用于当读请求个数大于写请求个数,且差值不大于预设第一阈值时,或读请求个数小于写请求个数时,确定读请求队列的调取优先级大于写请求队列的调取优先级; 第一调取单元,用于在所述第一调取确定单元确定读请求队列的调取优先级大于写请求队列的调取优先级时,调取读请求队列中的在前读请求,向存储用户数据的服务器发送所调取的读请求; 第二调取确定单元,用于当读请求个数大于写请求个数,且差值大于预设第一阈值时,确定读请求队列的调取优先级小于写请求队列的调取优先级; 第二调取单元,用于在所述第二调取确定单元确定读请求队列的调取优先级小于写请求队列的调取优先级时,调取写请求队列中的在前写请求,向存储用户数据的服务器发送所调取的写请求。
18.根据权利要求10、11、12、13、15或17所述的系统,其特征在于,还包括: 读请求个数检测模块,用于检测读请求队列中的读请求个数; 读请求响应推迟模块,用于在读请求个数大于预设第二阈值时,按照预置的读请求响应时间期限,推迟向虚拟机返回读请求队列中预设个数的读请求的读请求完成响应。
19.一种物理机,其特征在于,包括:处理器,通信接口,存储器和通信总线; 其中所述处理器、所述 通信接口、所述存储器通过所述通信总线完成相互间的通信;所述通信接口,用于获取所述处理器调取的用户数据读写请求,向存储用户数据的服务器发送该读写请求; 所述处理器,用于执行程序; 所述存储器,用于存放程序; 其中程序用于: 检测各虚拟机是否存在用户数据读写请求; 当虚拟机存在用户数据读写请求时,汇集各虚拟机的用户数据读写请求,将读请求加入到读请求队列中,将写请求加入到写请求队列中; 当读请求队列,和/或写请求队列中的第一请求地址与第二请求地址的对应度符合预设条件时,按照与预设条件对应的请求队列调整方法,对第一请求地址对应的请求队列进行调整,所述第一请求地址为刚加入读请求队列,和/或写请求队列的请求对应的请求地址,所述第二请求地址为刚加入的请求的在前请求对应的请求地址; 检测读请求队列的调取优先级,及写请求队列的调取优先级,调取优先级相对高的请求队列中的在前请求,向存储用户数据的服务器发送所调取的请求。
【文档编号】G06F9/455GK103902348SQ201210572237
【公开日】2014年7月2日 申请日期:2012年12月25日 优先权日:2012年12月25日
【发明者】马久跃, 姜继, 陈克平, 熊劲 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1