基于IO模式识别的IO批量处理方法、装置及存储介质转让专利

申请号 : CN202111058565.1

文献号 : CN114115719B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈元强蔡涛

申请人 : 深圳市木浪云科技有限公司

摘要 :

提供了一种基于IO模式识别的IO批量处理方法、装置及存储介质。接收一组IO请求;对一组IO请求的场景进行IO场景模式特征提取,将所提取的IO场景模式特征与IO场景特征模式库中的场景模式特征进行相似度匹配,以对一组IO请求的场景进行IO场景模式识别,确定与IO请求的场景匹配的IO场景特征模式;其中,IO场景模式特征库是经过聚类处理后而得到的;基于所确定的IO请求场景特征模式,启动IO场景预读,将与IO请求的场景匹配的场景模式特征和IO请求对应的存储数据预读到内存缓存;响应IO请求,对预读的内存缓存进行读取,批量返回IO请求对应的数据,达到批量处理与一组IO请求对应的数据的目的。

权利要求 :

1.一种基于IO模式识别的IO批量处理方法,其特征在于,包括:

接收一组IO请求;

对所述一组IO请求的场景进行IO场景模式特征提取,将所提取的IO场景模式特征与IO场景特征模式库中的IO场景模式特征进行相似度匹配,以对所述一组IO请求的场景进行模式识别,确定与所述IO请求的场景匹配的IO场景特征模式;

基于所确定的IO场景特征模式,批量处理与所述一组IO请求对应的数据;

其中,

所述IO场景特征模式库是经过如下的聚类处理而得到的:

对所述一组IO请求之前的一时间周期内的IO请求的场景进行模式特征提取,确定多个IO场景特征模式;

分别确定所述多个IO场景特征模式中的每一个未被归类的IO场景特征模式的特征向量到至少一个聚类中心的距离,其中,所述特征向量为相应模式的读偏移量或写偏移量值组成的向量;

在所述距离皆大于预设距离门限的情况下,建立新的IO场景特征模式类,将该未被归类的IO场景特征模式归属为新建的IO场景特征模式类,并将该未被归类的IO场景特征模式的特征向量作为新的聚类中心;在所述距离小于预设距离门限的情况下,将该未被归类的IO场景特征模式归属为与所述距离相应的IO场景特征模式类。

2.根据权利要求1所述的方法,其中,分别确定所述多个IO场景特征模式中的每一个未被归类的IO场景特征模式的特征向量到至少一个聚类中心的距离,包括:在不存在聚类中心的情况下,取所述多个IO场景特征模式中的任意一个模式的特征向量X1作为Z1 IO场景特征模式类的聚类中心;计算下一个模式的特征向量X2到Z1模式类的聚类中心的距离d21,其中,d21=d(X2,X1);

在已有聚类中心Z1,Z2,...Zk的情况下,计算尚未归类的模式的特征向量Xi到各距离中心Zj(j=1,2,...,k)的距离dij=d(Xi,Xj),其中,i的取值范围为1至尚未归类的IO场景特征模式的个数,k为已有聚类的个数。

3.根据权利要求2所述的方法,其中,在所述距离皆大于预设距离门限的情况下,建立新的IO场景特征模式类,将该未被归类的模式归属为新建的IO场景特征模式类,并将该未被归类的IO场景特征模式的特征向量作为新的聚类中心;在所述距离小于预设距离门限的情况下,将该未被归类的IO场景特征模式归属为与所述距离相应的IO场景特征模式类,包括:在不存在聚类中心的情况下,如果d21>T1,则建立新的IO场景特征模式类Z2,并将X2归属于Z2 IO场景特征模式类;如果d21<T1,则将X2归属于所述Z1 IO场景特征模式类;

在已有聚类中心Z1,Z2,...Zk的情况下,如果dij>T1,则将Xi对应的IO场景特征模式作为新的IO场景特征模式类Zk+1;否则,如果diq=min(dij),则将Xi属于Zq IO场景特征模式类,其中Zq取Z1,Z2,...Zk中的一个值,q取1,2,..k中的一个值;

其中,T1为所述预设距离门限。

4.根据权利要求1所述的方法,其中,对所述一组IO请求之前的一时间周期内的IO请求的场景进行模式特征提取,包括:基于IO访问不连续事件,将所述一时间周期内的IO请求对应的时间划分为多个分析窗口,其中,所述一时间周期内的IO请求为原始IO;

获取所述多个分析窗口中的每一个分析窗口t内的原始IO的记录集合rR,并提取所述原始IO记录集合rR的IO请求的场景的模式特征。

5.根据权利要求4所述的方法,其中,获取所述多个分析窗口中的每一个分析窗口t内的原始IO记录集合rR,并提取所述原始IO记录集合rR的IO请求的场景的模式特征,包括:根据读偏移,降序排序所有的IO访问记录sR;

当降序排列的IO访问记录sR中的任何一IO访问记录不连续时,结束本次分析窗口分析,并记下此时不连续的IO访问时刻,作为下一个分析窗口的开始时刻;

当降序排列的访问记录sR中的任何一IO访问记录为连续时,以固定偏移间隔CFL为单位分组读IO偏移;获取具有连续IO偏移的分析结果到IO场景特征模式sR,作为所述原始IO记录集合rR的IO请求的场景的模式特征;

进入下一个分析窗口,直到所述多个分析窗口全部结束,并将所有时间分析窗口分析完成后得到的全部的IO请求的场景的模式特征形成IO场景特征模式库。

6.根据权利要求1所述的方法,其中,对所述一组IO请求的场景进行IO场景的模式特征提取,将所提取的IO场景的模式特征与IO场景特征模式库中的IO场景模式特征进行相似度匹配,包括:初始化时间窗口t;

读取时间窗口t内的连续IO请求的偏移结果集合,并生成偏移结果集合的特征向量,作为所提取的IO场景的模式特征向量;

计算所提取的IO场景模式特征向量与所述IO场景特征模式库中的各个特征向量的距离;

在所述距离小于距离阈值的情况下,则确定所提取的IO场景模式特征向量对应的IO场景模式与所述IO场景特征模式库中的特征向量对应的一IO场景模式匹配,否则,则确定为不匹配。

7.一种基于IO模式识别的IO批量处理装置,其特征在于,包括:

接收模块,被配置为接收一组IO请求;

模式识别模块,被配置为对所述一组IO请求的场景进行IO场景的模式特征提取,将所提取的场景模式特征与IO场景特征模式库中的IO场景模式特征进行相似度匹配,以对所述一组IO请求的场景进行模式识别,确定与所述IO请求的场景匹配的IO场景特征模式;

预读模块,被配置为将与所述IO请求的场景匹配的IO场景模式特征和所述IO请求对应的存储数据预读到内存缓存;

响应模块,被配置为基于所确定的IO场景特征模式,批量处理与所述一组IO请求对应的数据;

其中,

所述IO场景特征模式库是经过如下的聚类处理而得到的:

对所述一组IO请求之前的一时间周期内的IO请求的场景进行模式特征提取,确定多个IO场景特征模式;

分别确定所述多个IO场景特征模式中的每一个未被归类的IO场景特征模式的特征向量到至少一个聚类中心的距离,其中,所述特征向量为相应模式的读偏移量或写偏移量值组成的向量;

在所述距离皆大于预设距离门限的情况下,建立新的IO场景特征模式类,将该未被归类的IO场景特征模式归属为新建的IO场景特征模式类,并将该未被归类的IO场景特征模式的特征向量作为新的聚类中心;在所述距离小于预设距离门限的情况下,将该未被归类的IO场景特征模式归属为与所述距离相应的IO场景特征模式类。

8.一种计算机可读存储介质,其上存储有程序,其特征在于,在所述程序运行时,使得计算机执行如权利要求1至6中任一项所述的方法。

说明书 :

基于IO模式识别的IO批量处理方法、装置及存储介质

技术领域

[0001] 本公开涉及云存储领域,具体而言,涉及一种基于IO模式识别的IO批量处理方法、装置及存储介质。

背景技术

[0002] 分布式存储系统在读写数据时,通常以数据块为单位。数据块从KB到MB不等。一个文件或大块数据写入到分布式存储系统中,通常要对数据块进行再分块,并随机分布到各个服务器的磁盘中。
[0003] 由于普通机械磁盘读写速度通常比较慢,特别是随机读,如果数据块在KB级别,每秒钟也就几MB。当应用层读写一个文件,通常会发起数十万个随机IO读请求到磁盘,读写一个上GB级数据,速度会相当的慢。常规的方案是加上简单的预读,但也只能在相对连续的情况下,才能略微提高速度。
[0004] 针对上述的问题,目前尚未提出有效的解决方案。

发明内容

[0005] 本公开实施例提供了一种基于IO模式识别的IO批量处理方法、装置及存储介质,以至少解决由于数据块随机分布到分布式存储系统中导致数据读写速度非常慢的技术问题。
[0006] 根据本公开实施例的一个方面,提供了一种基于IO模式识别的IO批量处理方法,包括:接收一组IO请求;对所述一组IO请求的场景进行模式特征提取,将所提取的IO场景模式特征与IO场景特征模式库中的场景模式特征进行相似度匹配,以对所述一组IO请求的场景进行模式识别,确定与所述IO请求的场景匹配的IO场景的特征模式;其中,所述IO场景模式特征库是经过聚类处理后而得到的;基于所识别的场景模式,批量处理与所述一组IO请求对应的数据。
[0007] 根据本公开实施例的另一方面,还提供了一种基于IO模式识别的IO批量处理装置,包括接收模块,被配置为接收一组IO请求;模式识别模块,被配置为对所述一组IO请求的场景进行模式特征提取,将所提取的场景模式特征与IO场景特征模式库中的场景模式特征进行相似度匹配,以对所述一组IO请求的场景进行模式识别,确定与所述IO请求的场景匹配的IO场景的特征模式;其中,所述IO场景模式特征库是经过聚类处理后而得到的;预读模块,被配置为将与所述IO请求的场景匹配的场景模式特征和所述IO请求对应的存储数据预读到内存缓存;响应模块,被配置为基于所识别的IO场景模式,批量处理与所述一组IO请求对应的数据。包括对预读的内存缓存进行读取,批量返回所述IO请求对应的数据。根据本公开实施例的又一方面,还提供了一种计算机可读存储介质,其上存储有程序,在所述程序运行时,使得计算机执行如上任一项所述的方法。
[0008] 在本公开实施例中,通过,从而解决了由于数据块随机分布到分布式存储系统中导致数据读写速度非常慢的技术问题。

附图说明

[0009] 此处所说明的附图用来提供对本公开的进一步理解,构成本申请的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
[0010] 图1是根据本公开第一实施例的一种基于IO模式识别的IO批量处理方法的流程图;
[0011] 图2是根据本公开第二实施例的一种基于IO模式识别的IO批量处理方法的流程图;
[0012] 图3是根据本申请第三实施例的基于IO模式识别的IO批量处理方法的流程图;
[0013] 图4是根据本申请第四实施例的基于IO模式识别的IO批量处理方法的流程图;
[0014] 图5是根据本公开实施例的一种基于IO模式识别的IO批量处理装置的结构示意图;
[0015] 图6是根据本公开实施例的一种基于IO模式识别的IO批量处理系统的结构示意图;
[0016] 图7是根据本公开实施例的一种用于实现基于IO模式识别的IO批量处理方法的计算机设备的结构示意图。具体实施例
[0017] 为了使本技术领域的人员更好地理解本公开方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
[0018] 需要说明的是,本公开的说明书和权利要求书及上述附图中的术语″第一″、″第二″等是用于区别类似的载体,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语″包括″和″具有″以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0019] 术语定义
[0020] IO:写入数据到磁盘,或从磁盘读取数据。
[0021] 分布式存储系统:分布式存储管理软件安装在多台带有大容量磁盘的服务器上,组成分布式存储系统。分布式存储管理软件负责在这些服务器之间建立存储集群,构成同一个大的存储池子,同时管理数据往各个服务器的磁盘读写,并完成数据块随机分布,以及向上层提供读写接口。
[0022] 概述
[0023] 在分布式海量数据备份和存储系统中,建立索引过程会发起大量的IO访问,对其进行的分析响应往往开销较大,导致系统处理速度慢,性能难以满足用户需要。这些海量IO访问实际上是有规律的,可以理解为是典型的场景化的IO;一组连续的IO访问对应一种访问模式,往往重复出现。采用机器模式识别的方法,通过对这种重复出现的IO模式进行特征提取和机器自动或智能的识别,对IO访问按模式分组进行批量处理和响应,能够提高IO访问的响应速度。通过本方法,可以实现IO模式识别和IO批量处理,支持海量IO模式的识别和处理。
[0024] 实施例1
[0025] 本公开实施例提供了一种基于IO模式识别的IO批量处理方法,如图1所示,该方法包括以下步骤:
[0026] 步骤S101,IO发起模块发起IO读请求。
[0027] 可以发起IO读请求的模块可以是用户业务应用程序、操作系统进程、数据计算与存储指令、文件存储指令。
[0028] 步骤S102,IO活动记录模块接收IO读请求,并记录到IO数据库。
[0029] IO活动记录模块将与IO读请求对应的目标文件关联的IO信息(目标文件ID,时间,读偏移,数据块指纹,数据块位置)记录到IO读写统计数据库ioDB。
[0030] 步骤S103,模式识别模块对所述IO读请求进行IO场景模式特征提取。
[0031] IO模式识别模块通过如下的时间切片方法来分析IO读请求的IO场景模式特征:
[0032] (1)设定IO场景模式分析的时间窗大小,每个时间窗口为一个分析周期。设定初始分析时刻t0,时间窗口设置为dT分钟,依次递增N倍时间窗口,分析窗口t=t0+dT*2,根据场景化的IO速度和访问时长经验值,dT初始化设置为1分钟,N初始化为2,使得所有IO涉及到的数据量大致在128MB内。数据量可以根据存储配置的内存大小,调整初始化设置,最大应不超过1GB。
[0033] (2)设定IO请求不连续条件。设定1秒时间内,IO次数低于100次则判断为访问不连续;否则为连续的IO访问。
[0034] (3)IO请求场景特征模式提取。
[0035] 对于分析周期t,计算出有效的IO请求的场景特征模式。
[0036] ①提取分析周期t内的原始IO记录集合rR。
[0037] ②对于原始记录集合rR,通过如下方法提取IO访问特征。
[0038] 1)将IO访问记录降序排列。根据读偏移,降序排序所有IO访问记录sR。
[0039] 2)判定连续访问条件对IO访问记录进行模式划分。对于sR,从前到后,计算两次IO访问的时间差,判断是否为连续IO访问。当满足不连续条件时,判定为出现一个IO访问不连续事件,结束递增窗口分析,并记录下此时刻t1,本次时间窗口t分析结束。
[0040] 3)以固定偏移间隔CFL(设置为64KB)为单位分组读偏移。
[0041] 4)记录分组的读偏移结果集合sR{sR1,sR2,sR3...sRn}。
[0042] ③保留最近一次连续的分析结果,作为本次分析窗口t内连续IO访问场景的一个模式。把最近一次符合条件的结果记录到集合fR{sR1,sR2,sR3...sRn},该集合序列即为需要提取的IO场景特征模式。
[0043] (4)循环分析,提取所有时间窗口的IO场景特征模式。
[0044] 从上次不连续的IO访问记录的t1时刻开始,重新以N倍的递增窗口重复步骤(3),进入下一个时间窗口分析,直到分析结束,得到不同时间窗口周期内的n个连续IO场景特征模式{f1R{sR1,sR2,sR3...sRn},f2R{sR1,sR2,sR3...sRn},...
[0045] fnR{sR1,sR2,sR3...sRn}}。
[0046] 在PB级以上的海量数据存储情况下,这里的n较大,对其的遍历和读取耗时较高,现有的IO加速的方案开销较大。因此,本实施例中,进一步的采用了聚类算法生成IO场景特征模式库的方法。
[0047] (5)采用模式识别的聚类算法生成IO场景特征模式库。
[0048] 采用模式识别的聚类算法,对步骤(4)得到的IO场景特征模式进行聚类分析,得到m个IO场景特征模式{F1R{sR1,sR2,sR3...sRn},F2R{sR1,sR2,sR3...sRn},...FmR{sR1,sR2,sR3...sRn}}组成的集合,及IO场景模式库;
[0049] 其中,F1R,F2R,...FmR即为具备连续性访问特征的IO序列模式。这里的m<<n,因此,有效降低IO场景特征模式的遍历耗时,支持海量IO模式的识别,提高了IO处理的性能。
[0050] 所述聚类分析的算法过程如下:
[0051] 条件及约定:
[0052] 1)以每个模式的读偏移量为特征向量,即X1=f1R
[0053] (x11=sR1,x12=sR2,x13=sR3,...x1n=sRn),X2=f2R
[0054] (x21=sR1,x22=sR2,x23=sR3,...x2n=sRn),...,Xn=fnR
[0055] (xn1=sR1,xn2=sR2,xn3=sR3,...xnn=sRn)为特征向量,其中,{f1R,f2R,...,fnR}为待分类的IO场景特征模式集合。
[0056] 2)设定类内距离门限T1
[0057] 计算模式的特征向量到聚类中心的距离测度,并与门限T1比较,决定该模式归属于哪类或作为新的一类中心。其中,距离可以采用欧式距离计算。
[0058] 在一个实施例中,聚类的方法可以通过以下步骤实现:
[0059] ①取任意的一个模式特征向量作为一个聚类中心。如取X1模式类的中心Z1=X1。
[0060] ②计算下一个模式特征向量X2到Z1的距离d21=d(X2,X1)。若d21>T1,则建立新的模式类X2=Z2;若d21<T1,则X2属于Z1模式类。
[0061] ③假设已有聚类中心Z1,Z2,...Zk,计算尚未确定的模式特征向量Xi到各距离中心Zj(j=1,2,...,k)的距离dij==d(Xi,Xj)。如果dij>T1,则Xi作为新的模式类Zk+1;否则,如果diq=min(dij),则Xi属于Zq模式类,其中q为1至k中的一个。
[0062] ④检查是否所有的模式都划分完类别,如是则结束,否则返回到③。
[0063] 所述距离d可以采用欧氏(Euclidean)距离、绝对值(Manhattan)距离、切氏(Chebyshev)距离、明氏(Minkowski)距离、马氏(Mahalanobis)距离来计算。如欧氏距离计算如下:d(x,y)=||x‑y||=(sum(xi‑yi)2)1/2。
[0064] 步骤S104,模式识别模块对IO读请求进行模式识别。
[0065] 当存储底层收到上层IO读请求,基于相似度计算,对IO请求进行分类识别。
[0066] 识别过程如下:
[0067] (1)初始化时间窗口t为一个经验值,设置为分析时间窗口的N%(N<100,越大越准确,但加速效果就越差)。
[0068] (2)统计t时间窗口的IO访问模式特征。
[0069] ①预先设置最高次数tC(tC为设定特征向量比较的最高次数,达到这个次数就退出比较,避免没有特征匹配时进入死循环),读取t时间窗口内的连续IO访问的偏移结果集合aO={aR1,aR2,aR3...aRn},生成a0的特征向量:
[0070] Xa=aR(xa1=aR1,xa2=aR2,xa3=aR3,...xan=aRn)。
[0071] ②扫描历史IO场景特征模式库,比较相似度。
[0072] 1)设定距离相似度阈值T2。
[0073] 2)从第1个IO场景特征模式为基础,如果在连续的tC内,计算特征向量Xa与Xi(i=i‑m)的距离dai=d(Xa,Xi)。如果dai<=T2,可以认为这次IO场景与Xi场景具有很高的相似性。如果dai>T2,继续下一组tC,直到找不到匹配偏移。
[0074] 3)如果匹配成功,提取这次IO场景的特征模式;否者结束该步骤。
[0075] 步骤S105,预读模块对IO场景模式进行预读。
[0076] ①读取IO场景特征模式库到内存。
[0077] ②对于内存中的IO分组模式信息F2R{sR1,sR2,sR3...sRn},集合中的每个分组模式都包含数据块指纹,数据块位置。
[0078] ③启动预读模块读取所有的IO分组模式。
[0079] 1)从节点底层存储读取数据块。
[0080] 2)保留数据块到内存缓存BM。
[0081] ④当设定的K时间(K通常可以设置<=5分钟)无访问,则释放数据块内存。
[0082] 步骤S106,响应模块对IO请求进行响应。
[0083] ①先访问预读生成的数据块内存缓存BM。
[0084] ②如果没有,则继续向存储节点发起底层存储读取请求。
[0085] ③否则,返回与所述IO读请求对应的数据。
[0086] 现有技术中,在分布式存储系统中,无论随机和顺序读,速度都非常慢;采用简单的预读,会读更多的数据,带来更多的网络、磁盘读写性能消耗;对于每次大量有规律的非连续的随机读写,比如启动系统和应用,遍历文件系统等速度会很慢;现有加速方案对IO连续访问规律不具有自动或智能的识别能力。在PB级以上的海量数据备份情况下,IO场景特征模式n较大,对其的遍历和读取耗时较高,开销较大。
[0087] 本实施例中,采用机器模式识别的方法,通过对这种重复出现的IO模式进行特征提取和机器自动或智能的识别,对IO访问按模式分组进行批量处理和响应,能够提高IO访问的响应速度。通过本方法,可以实现1)海量IO访问的批量化处理;2)海量IO请求的快速响应;3)提高系统的整体性能,特别是PB级以上数据快速处理能力。
[0088] 实施例2
[0089] 本公开实施例提供了另一种基于IO模式识别的IO批量处理方法的流程图,如图2所示,该方法包括以下步骤:
[0090] 步骤S202,接收一组IO请求。
[0091] 当存储底层收到上层IO读请求时,表明上层出现IO读需求,所述上层可以是中间层、和/或应用层。
[0092] 步骤S204,对所述一组IO请求的场景进行模式特征提取,将所提取的IOIO场景模式特征与IO场景特征模式库中的IO场景模式特征进行相似度匹配,以对所述一组IO请求的场景进行模式识别,确定与所述IO请求的场景匹配的IO场景特征模式;其中,所述IO场景模式特征库是经过聚类处理后而得到的。
[0093] 与实施例1中的判断相似度的方法不同的是,本实施例中可以用以下度量函数替代实施例1中的距离相似度的计算函数。其余部分和实施例1相似,此处不再赘述。
[0094] 有些聚类算法(如层次聚类)还需要衡量聚类(cluster)之间的距离,假设Ci和Cj为两个cluster,则前四种方法定义的Ci和Cj之间的距离如下表1所示:
[0095]
[0096]
[0097] 表1
[0098] Single‑link定义两个cluster之间的距离为两个cluster之间距离最近的两个点之间的距离,这种方法会在聚类的过程中产生链式效应,即有可能会出现非常大的cluster。
[0099] Complete‑link定义的是两个cluster之间的距离为两个cluster之间距离最远的两个点之间的距离,这种方法可以避免链式效应,对异常样本点(不符合数据集的整体分布的噪声点)却非常敏感,容易产生不合理的聚类。
[0100] UPGMA正好是Single‑link和Complete‑link方法的折中,其定义两个cluster之间的距离为两个cluster之间所有点距离的平均值。
[0101] 最后一种WPGMA方法计算的是两个cluster之间两个对象之间的距离的加权平均值,加权的目的是为了使两个cluster对距离的计算的影响在同一层次上,而不受cluster大小的影响,具体公式和采用的权重方案有关。
[0102] 模式识别的聚类算法可以用人工神经网络(SOM、DNN等)、K‑Means(K均值)、k‑近邻(kNN,k‑Nearest Neighbors)、贝叶斯分类、支持向量机分类,以及如下几类聚类分类方法替代。
[0103] 例如,数据聚类方法主要可以分为划分式聚类方法(Partition‑based Methods)、基于密度的聚类方法(Density‑based methods)、层次化聚类方法(Hierarchical Methods)等,如下表2所示:
[0104]
[0105]
[0106] 表2
[0107] 进一步的,还可以根据应用需要,采用集成学习算法将各种聚类算法集成起来,得到的聚类结果是聚类集成后的最优结果。比如常用的Adaboosting
[0108] (adaptive boosting)算法、Bagging(bootstrap aggregating)方法、随机森林(Random Forest)算法等集成学习方法。
[0109] 上述方法是将所提取的IO场景模式特征与IO场景特征模式库中的IO场景模式特征进行相似度匹配。
[0110] 步骤S206,基于所识别的场景模式,批量处理与所述一组IO请求对应的数据。
[0111] 实施例3
[0112] 请参阅图3,图3是根据本申请第三实施例的基于IO模式识别的IO批量处理方法的流程图。下面将针对图3所示的流程进行详细的阐述,所述基于IO模式识别的IO批量处理方法具体可以包括以下步骤:
[0113] 步骤S301:接收IO读请求。
[0114] 步骤S302:时间窗口t1初始化为分析窗口t的N%。
[0115] 所述分析窗口t为IO历史数据库建立过程中统计历史IO读请求的IO场景模式特征的时间,将所述时间窗口t1初始化为分析窗口t的N%,即t1=t×N%,N<100,N值越大,所述时间窗口t1就越大,则在所述时间窗口t1内的IO读请求次数越多,IO读请求的场景越多,则对应的IO读请求的IO场景模式特征就越丰富,那么后续步骤S303中统计的所述IO读请求的IO场景模式特征也就越准确。相应地,N值越大,在较大的时间窗口t1内较多的IO读请求次数就会影响读加速的效果。
[0116] 步骤S303:统计所述时间窗口t1内所述IO读请求的IO场景模式特征。
[0117] 步骤S304:将所述IO读请求的IO场景模式特征与IO场景特征模式库进行匹配。
[0118] 扫描IO场景特征模式库,将步骤S303中所统计的所述时间窗口t1内所述IO读请求的IO场景模式特征与所述IO场景特征模式库中的模式特征进行相似度匹配,即计算二者的相似度,比较二者的相似度。例如,初始化时间窗口t;取时间窗口t内的连续IO请求的偏移结果集合,并生成偏移结果集合的特征向量,作为所提取的IO场景的模式特征向量;计算所提取的IO场景模式特征向量与所述IO场景特征模式库中的各个特征向量的距离;在所述距离小于距离阈值的情况下,则确定所提取的IO场景模式特征向量对应的IO场景模式与所述IO场景特征模式库中的特征向量对应的一IO场景模式匹配,否则,则确定为不匹配。
[0119] 在一个示例性实施例中,IO场景特征模式库是通过以下方式得到的:对一时间周期内的IO请求的场景进行模式特征提取,确定多个IO场景特征模式,采用模式识别的聚类算法,对所述多个IO场景特征模式进行聚类分析,得到所述IO场景特征模式库。例如,分别确定所述多个IO场景特征模式中的每一个未被归类的IO场景特征模式的特征向量到至少一个聚类中心的距离,其中,所述特征向量为相应模式的读偏移量或写偏移量值组成的向量;在所述距离皆大于预设距离门限的情况下,建立新的IO场景特征模式类,将该未被归类的IO场景特征模式归属为新建的IO场景特征模式类,并将该未被归类的IO场景特征模式的特征向量作为新的聚类中心;在所述距离小于预设距离门限的情况下,将该未被归类的IO场景特征模式归属为与所述距离相应的IO场景特征模式类。
[0120] 步骤S305:获取与所述IO读请求的场景匹配的IO场景模式特征。
[0121] 确定与所述IO读请求的IO场景模式特征匹配成功的场景模式,即通过步骤S304中所计算的相似度,确定与所述IO读请求的IO场景模式特征最接近的包含在lO场景特征模式库对应的IO场景模式。
[0122] 例如,如果所述商值等于0,表明所述IO读请求的IO场景模式特征与所述IO场景特征模式库的特征相似度接近,即判定所述IO读请求的场景与所述IO场景特征模式库匹配成功,则将所述IO请求的第一个IO对应的偏移值作为索引参数,由于所述索引参数是一个偏移值,因此,通过所述索引参数就能快速定位与所述IO请求的IO场景模式特征匹配的所述IO场景特征模式库中的特征。
[0123] 如果所述商值不等于0,表明所述IO读请求的IO场景模式特征与所述IO场景特征模式库的特征相似度很低,即判定所述IO读请求的场景与所述IO场景特征模式库匹配不成功。则继续下一个连续的所述次数tc内的相似度计算,直到将所述IO读请求遍历至找不到匹配偏移。
[0124] 步骤S306:启动IO场景预读,将与所述IO读请求的场景匹配的IO场景特征模式库对应的IO场景分组特征库预读到内存缓存。
[0125] 如果所述访问的内存缓存中不存在与所述IO读请求的场景匹配的IO场景特征模式库,说明IO场景特征模式库的IO场景模式特征与所述IO读请求的IO场景模式特征相似度低,也即相似度匹配不成功,不是所述IO读请求要读的内容,因此不需要读取内存缓存中的数据,则继续向存储节点发起读取请求。
[0126] 如果所述访问的内存缓存中存在与所述IO读请求的场景匹配的IO场景特征模式库,说明IO场景特征模式库的IO场景模式特征与所述IO读请求的IO场景模式特征相似度接近,也即特征相似度匹配成功,因此需要读取内存缓存中的数据,并返回所述IO读请求对应的数据。
[0127] 步骤S307:响应所述IO读请求,对预读的内存缓存进行读取,返回所述IO读请求对应的数据。
[0128] 本申请第三实施例提供的基于IO模式识别的IO批量处理方法,接收IO请求,时间窗口t1初始化为分析窗口t的N%,通过统计时间窗口t1内所述IO读请求的IO场景模式特征,并将所述IO读请求的IO场景模式特征与IO场景特征模式库与进行匹配,获取与所述IO读请求的场景匹配的IO场景特征模式库,启动IO场景预读,将与所述IO读请求的场景匹配的IO场景特征模式库对应的IO场景分组特征库和所述IO读请求对应的磁盘数据预读到内存缓存,响应所述IO读请求,对预读的内存缓存进行读取,返回与所述IO读请求对应的数据。
[0129] 实施例4
[0130] 请参阅图4,图4是根据本申请第四实施例的基于IO模式识别的IO批量处理方法的流程图。下面将针对图4所示的流程进行详细的阐述,所述基于IO模式识别的IO批量处理方法具体可以包括以下步骤:
[0131] 步骤S401:记录目标文件关联的IO信息。
[0132] 步骤S402:通过时间切片方法确定所述分析窗口t;
[0133] 所述分析窗口t,是场景化的IO速度和访问时长经验值,t=t0+dT*N,依次递增N倍时间增量窗口,t0是初始分析时刻,dT是时间增量窗口。依据经验,dT可以初始化设置为1,N可以初始化为2,使得所有IO涉及到的数据量大致在128MB以内。也可以根据存储配置的内存大小,调整初始化设置。
[0134] 步骤S403:在所述分析窗口t,计算有效的IO场景特征模式。
[0135] 在所述分析窗口t,计算有效的IO场景特征模式,即对所述IO场景进行不连续分析,找到满足连续条件的IO场景特征模式即有效性的IO场景特征模式也即连续分析的结果,并保存所述满足连续条件的IO场景特征模式。
[0136] 步骤S404:将最近一次连续的分析结果记录到结果集合fR{sR1,sR2,sR3...sRn}。
[0137] 步骤S403中得到的满足连续条件的分组集合即连续分析的结果,将所述最近一次连续的分析结果记录到结果集合fR{sR1,sR2,sR3...sRn}中。
[0138] 步骤S405:继续从不连续的IO访问时刻开始,进入下一个分析窗口,直到分析结束。
[0139] 在步骤S403计算有效的IO场景特征模式即判断IO场景特征模式是否满足连续的条件,在具体分析过程中采用的是判断IO场景是否不连续,将满足不连续条件的场景剔除,此时需要记录不连续的IO访问时刻,那么,继续从所述不连续的IO访问时刻开始,进入下一个分析窗口,继续对IO场景是否有效进行判断,直到分析结束。
[0140] 步骤S406:对IO场景特征模式进行聚类分析。
[0141] 将在所述分析窗口内满足有效性的M个IO场景特征模式进行聚类分析,形成IO场景特征模式库。
[0142] 例如,在不存在聚类中心的情况下,取M个IO场景特征模式中的任意一个模式的特征向量X1作为Z1模式类的聚类中心;计算下一个模式的特征向量X2到Z1模式类的聚类中心的距离d21,其中,d21=d(X2,X1);在已有聚类中心Z1,Z2,...Zk的情况下,计算尚未归类的模式的特征向量Xi到各距离中心Zj(j=1,2,...,k)的距离dij=d(Xi,Xj),其中,i的取值范围为1至尚未归类的IO场景特征模式的个数,k为已有聚类的个数。
[0143] 在不存在聚类中心的情况下,如果d21>T1,则建立新的IO场景特征模式类Z2,并将X2归属于Z2 IO场景特征模式类;如果d21<T1,则将X2归属于所述Z1 IO场景特征模式类;在已有聚类中心Z1,Z2,...Zk的情况下,如果dij>T1,则将Xi对应的IO场景特征模式作为新的IO场景特征模式类Zk+1;否则,如果diq=min(dij),则将Xi属于Zq IO场景特征模式类,其中Zq取Z1,Z2,...Zk中的一个值,q取1,2,..k中的一个值;其中,T1为所述预设距离门限。
[0144] 将聚类后的场景特征模式形成IO场景特征模式库。
[0145] 步骤S407:接收IO读请求。
[0146] 步骤S408:将所述IO读请求的场景与IO场景特征模式进行相似度匹配,确定与所述IO读请求的场景匹配的IO场景特征模式库对应的IO场景分组特征库。
[0147] 例如,初始化时间窗口t;读取时间窗口t内的连续IO请求的偏移结果集合,并生成偏移结果集合的特征向量,作为所提取的IO场景的模式特征向量;计算所提取的IO场景模式特征向量与所述IO场景特征模式库中的各个特征向量的距离;在所述距离小于距离阈值的情况下,则确定所提取的IO场景模式特征向量对应的IO场景模式与所述IO场景特征模式库中的特征向量对应的一IO场景模式匹配,否则,则确定为不匹配。
[0148] 步骤S409:启动IO场景预读,将与所述IO读请求的场景匹配的IO场景特征模式库对应的IO场景分组特征库和所述IO读请求对应的磁盘数据预读到内存缓存。
[0149] 步骤S410:响应所述IO读请求,对预读的内存缓存进行读取,返回与所述IO读请求对应的数据。
[0150] 本申请第四实施例提供的基于IO模式识别的IO批量处理方法,记录目标文件关联的IO信息,通过时间切片方法确定所述分析窗口t,在所述分析窗口t,计算有效的IO场景特征模式,将最近一次连续的分析结果记录到结果集合fR{sR1,sR2,sR3...sRn},继续从不连续的IO访问时刻开始,进入下一个分析窗口,直到分析结束,保留M个IO场景分组特征库到所述IO分组集合,接收IO读请求,将所述IO读请求的场景与IO场景特征模式进行相似度匹配,确定与所述IO读请求的场景匹配的IO场景特征模式库对应的IO场景分组特征库,启动IO场景预读,将与所述IO读请求的场景匹配的IO场景特征模式库对应的IO场景分组特征库和所述IO读请求对应的磁盘数据预读到内存缓存,响应所述IO读请求,对预读的内存缓存进行读取,返回与所述IO读请求对应的数据。
[0151] 实施例5
[0152] 本申请实施例提供了一种基于IO模式识别的IO批量处理装置,参见图5,该装置包括接收模块52、模式识别模块54、预读模块56和响应模块58。
[0153] 接收模块52,被配置为接收一组IO请求。
[0154] 模式识别模块54,被配置为对所述一组IO请求进行IO场景模式特征提取,将所提取的IO场景模式特征与IO场景特征模式库中的IO场景模式特征进行相似度匹配,以对所述一组IO请求的场景进行模式识别,确定与所述IO请求的场景匹配的IO场景的特征模式;其中,所述IO场景模式特征库是经过聚类处理后而得到的。
[0155] 预读模块56,被配置为将与所述IO请求的场景匹配的IO场景模式特征和所述IO请求对应的存储数据预读到内存缓存;
[0156] 响应模块58,被配置为基于所识别的IO场景模式,批量处理与所述一组IO请求对应的数据。包括对预读的内存缓存进行读取,批量返回所述IO请求对应的数据。
[0157] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。对于方法实施例中的所描述的任意的处理方式,在装置实施例中均可以通过相应的处理模块实现,装置实施例中不再一一赘述。
[0158] 实施例6
[0159] 本申请实施例提供了一种基于IO模式识别的IO批量处理系统,参见图6,该系统包括IO批量处理装置62、IO数据库64、场景特征模式库66以及分布式存储68。
[0160] IO批量处理装置62包括IO请求发起模块621、记录模块622、模式识别模块54、预读模块56、响应模块58。
[0161] IO请求发起模块621发起IO读请求。可以发起IO读请求的模块可以是用户业务应用程序、操作系统进程、数据计算与存储指令、文件存储指令。
[0162] 记录模块622接收IO读请求,并记录到IO数据库64。记录模块622将与IO读请求对应的目标文件关联的IO信息(目标文件ID,时间,读偏移,数据块指纹,数据块位置)记录到IO数据库64。
[0163] 模式识别模块54通过时间切片方法来分析IO读请求的IO场景模式特征,并对IO读请求进行模式识别。例如,对一组IO请求进行IO场景模式特征提取,将所提取的IO场景模式特征与场景特征模式库66中的IO场景模式特征进行相似度匹配,以对所述一组IO请求进行场景模式识别,其中,所述IO场景模式特征库66是经过聚类处理后而得到的。
[0164] 预读模块56对IO场景模式进行预读,将场景IO特征模式库读取到内存。具体为将与所述IO请求的场景匹配的IO场景模式特征和所述IO请求对应的存储数据预读到内存缓存。
[0165] 响应模块58对IO请求进行响应,基于所识别的IO场景模式,批量处理与所述一组IO请求对应的数据。先访问预读生成的数据块内存缓存BM,如果内存中没有相关数据,则继续向分布式存储68中的各个存储设备(68‑1、68‑2、68‑3)发起底层存储读取请求,并批量返回与所述IO读请求对应的数据。
[0166] 实施例7
[0167] 应用场景一:建立文件系统索引。
[0168] 现代备份系统要对备份后的数据建立索引,以便即时搜索内容。在建立索引过程中,需要对磁盘数据进行全量扫描,对于上TB的文件系统,扫描时间将会很长,有的高达数小时,同时也是也是对备份系统有很高的IO开销,影响其他任务运行。在建立索引过程中,IO读请求是有规律的,可以理解为是典型的场景模式化的IO。当备份系统支持场景模式化IO批量处理后,可以进一步降低磁盘的随机读写次数,并大幅度提升索引建立的速度,大大降低磁盘的IO开销,提升备份系统整体任务运行速度。
[0169] 实施例8
[0170] 场景二:操作系统启动
[0171] 无论是Linux、还是Windows系统启动通常也是按照预定的启动路径启动一些服务,启动过程将会发起一些列的随机IO,通常多达几十万次。在没有启用IO加速情况下,运行在分布式存储系统上的操作系统启动的速度通常会很慢,如果要靠硬件提升,通常需要靠存储采用全SSD阵列来提升启动速度,但这样成本太高。通过部署IO批量处理系统,可以有效提升启动速度,使得启动时间大幅度缩短,改善了用户体验。
[0172] 实施例9
[0173] 本公开的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以实施上述实施例1至4中所描述的方法。
[0174] 可选地,在本实施例中,上述存储介质可以位于惯性导航系统的网络中的多个网络设备中的至少一个网络设备。
[0175] 可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0176] 可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例1中的方法。
[0177] 可选地,本实施例中的具体示例可以参考上述实施例1至4中所描述的示例,本实施例在此不再赘述。
[0178] 实施例10
[0179] 下面参考图7,其示出了适于用来实现本公开实施例的计算机设备800的结构示意图。图7示出的计算机设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0180] 如图7所示,计算机设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有设备800操作所需的各种程序和数据。CPU801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线
804。
[0181] 以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
[0182] 根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本公开的方法中限定的上述功能。需要说明的是,本公开的计算机存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于—一电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0183] 附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0184] 描述于本公开实施例中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块或单元也可以设置在处理器中,这些模块或单元的名称在某种情况下并不构成对该模块或单元本身的限定。
[0185] 本公开实施例还可以配置为:
[0186] 1.一种基于IO模式识别的IO批量处理方法,包括:
[0187] 接收一组IO请求;
[0188] 对所述一组IO请求的场景进行IO场景模式特征提取,将所提取的IO场景模式特征与IO场景特征模式库中的IO场景模式特征进行相似度匹配,以对所述一组IO请求的场景进行模式识别,确定与所述IO请求的场景匹配的IO场景特征模式,其中,所述IO场景模式特征库是经过聚类处理后而得到的;
[0189] 基于所确定的IO场景特征模式,批量处理与所述一组IO请求对应的数据。
[0190] 2.根据项1所述的方法,其中,所述IO场景特征模式库是经过如下的聚类处理而得到的:
[0191] 对所述一组IO请求之前的一时间周期内的IO请求的场景进行模式特征提取,确定多个IO场景特征模式;
[0192] 采用模式识别的聚类算法,对所述多个IO场景特征模式进行聚类分析,得到所述IO场景特征模式库。
[0193] 3.根据项2所述的方法,其中,采用模式识别的聚类算法,对所述多个IO场景特征模式进行聚类分析,得到所述IO场景特征模式库,包括:
[0194] 分别确定所述多个IO场景特征模式中的每一个未被归类的IO场景特征模式的特征向量到至少一个聚类中心的距离,其中,所述特征向量为相应模式的读偏移量或写偏移量值组成的向量;
[0195] 在所述距离皆大于预设距离门限的情况下,建立新的IO场景特征模式类,将该未被归类的IO场景特征模式归属为新建的IO场景特征模式类,并将该未被归类的IO场景特征模式的特征向量作为新的聚类中心;在所述距离小于预设距离门限的情况下,将该未被归类的IO场景特征模式归属为与所述距离相应的IO场景特征模式类。
[0196] 4.根据项3所述的方法,其中,在不存在聚类中心的情况下,取所述多个IO场景特征模式中的任一模式的特征向量作为聚类中心。
[0197] 5.根据项3所述的方法,其中,所述距离采用欧氏距离、绝对值距离、切氏距离、明氏距离或马氏距离来计算。
[0198] 6.根据项3所述的方法,其中,分别确定所述多个IO场景特征模式中的每一个未被归类的IO场景特征模式的特征向量到至少一个聚类中心的距离,包括:
[0199] 在不存在聚类中心的情况下,取所述多个IO场景特征模式中的任意一个模式的特征向量X1作为Z1模式类的聚类中心;计算下一个模式的特征向量X2到Z1模式类的聚类中心的距离d21,其中,d21=d(X2,X1);
[0200] 在已有聚类中心Z1,Z2,...Zk的情况下,计算尚未归类的模式的特征向量Xi到各距离中心Zj(j=1,2,...,k)的距离dij=d(Xi,Xj),其中,i的取值范围为1至尚未归类的IO场景特征模式的个数,k为已有聚类的个数。
[0201] 7.根据项6所述的方法,其中,在所述距离皆大于预设距离门限的情况下,建立新的IO场景特征模式类,将该未被归类的模式归属为新建的IO场景特征模式类,并将该未被归类的IO场景特征模式的特征向量作为新的聚类中心;在所述距离小于预设距离门限的情况下,将该未被归类的IO场景特征模式归属为与所述距离相应的IO场景特征模式类,包括:
[0202] 在不存在聚类中心的情况下,如果d21>T1,则建立新的IO场景特征模式类Z2,并将X2归属于Z2 IO场景特征模式类;如果d21<T1,则将X2归属于所述Z1 IO场景特征模式类;
[0203] 在已有聚类中心Z1,Z2,...Zk的情况下,如果dij>T1,则将Xi对应的IO场景特征模式作为新的IO场景特征模式类Zk+1;否则,如果diq=min(dij),则将Xi属于Zq IO场景特征模式类,其中Zq取Z1,Z2,...Zk中的一个值,q取1,2,..k中的一个值;
[0204] 其中,T1为所述预设距离门限。
[0205] 8.根据项2所述的方法,其中,对所述一组IO请求之前的一时间周期内的IO请求的场景进行模式特征提取,包括:
[0206] 基于IO访问不连续事件,将所述一时间周期内的IO请求对应的时间划分为多个分析窗口,其中,所述一时间周期内的IO请求为原始IO;
[0207] 获取所述多个分析窗口中的每一个分析窗口t内的原始IO的记录集合rR,并提取所述原始IO记录集合rR的IO请求的场景的模式特征。
[0208] 9.根据项8所述的方法,其中,获取所述多个时间窗口中的每一个时间窗口t内的原始IO记录集合rR,并提取所述原始IO记录集合rR的IO请求的场景的模式特征,包括:
[0209] 根据读偏移,降序排序所有的IO访问记录sR;
[0210] 当降序排列的IO访问记录sR中的任何一IO访问记录不连续时,结束本次分析窗口分析,并记下此时不连续的IO访问时刻,作为下一个分析窗口的开始时刻;
[0211] 当降序排列的访问记录sR中的任何一IO访问记录为连续时,以固定偏移间隔CFL为单位分组读IO偏移;获取具有连续IO偏移的分析结果到IO场景特征模式sR{sR1,sR2,sR3,...sRn},作为所述原始IO记录集合rR的IO请求的场景的模式特征;
[0212] 进入下一个分析窗口,直到所述多个分析窗口全部结束,并将所有时间分析窗口分析完成后得到的全部的IO请求的场景的模式特征形成IO场景特征模式库。
[0213] 10.根据项1所述的方法,其中,对所述一组IO请求的场景进行IO场景的模式特征提取,将所提取的IO场景的模式特征与IO场景特征模式库中的IO场景模式特征进行相似度匹配,包括:
[0214] 初始化时间窗口t;
[0215] 读取时间窗口t内的连续IO请求的偏移结果集合,并生成偏移结果集合的特征向量,作为所提取的IO场景的模式特征向量;
[0216] 计算所提取的IO场景模式特征向量与所述IO场景特征模式库中的各个特征向量的距离;
[0217] 在所述距离小于距离阈值的情况下,则确定所提取的IO场景模式特征向量对应的IO场景模式与所述IO场景特征模式库中的特征向量对应的一IO场景模式匹配,否则,则确定为不匹配。
[0218] 11.根据项1所述的方法,基于所确定的IO场景的特征模式,批量处理与所述一组IO请求对应的数据,包括:
[0219] 启动IO场景预读,将与所述IO请求的场景匹配的场景模式特征和所述IO请求对应的存储数据预读到内存缓存;
[0220] 响应所述IO请求,对预读的内存缓存进行读取,批量返回所述IO请求对应的数据。
[0221] 12.一种基于IO模式识别的IO批量处理装置,其特征在于,包括:
[0222] 接收模块,被配置为接收一组IO请求;
[0223] 模式识别模块,被配置为对所述一组IO请求的场景进行IO场景的模式特征提取,将所提取的场景模式特征与IO场景特征模式库中的IO场景模式特征进行相似度匹配,以对所述一组IO请求的场景进行模式识别,确定与所述IO请求的场景匹配的IO场景特征模式;其中,所述IO场景模式特征库是经过聚类处理后而得到的;
[0224] 预读模块,被配置为将与所述IO请求的场景匹配的IO场景模式特征和所述IO请求对应的存储数据预读到内存缓存;
[0225] 响应模块,被配置为基于所确定的IO场景特征模式,批量处理与所述一组IO请求对应的数据。
[0226] 13.一种计算机可读存储介质,其上存储有程序,其特征在于,在所述程序运行时,使得计算机执行如项1至11中任一项所述的方法。
[0227] 上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
[0228] 上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。
[0229] 在本公开的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0230] 在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0231] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0232] 另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0233] 以上所述仅是本公开的优选实施例,应当指出,对于本技术领域的普通技术人员来说,在不脱离本公开原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本公开的保护范围。