写锁预取长度的确定方法及装置与流程

文档序号:17856599发布日期:2019-06-11 22:36阅读:167来源:国知局
写锁预取长度的确定方法及装置与流程

本发明涉及存储技术领域,具体而言,涉及一种写锁预取长度的确定方法及装置。



背景技术:

同一个共享存储设备可以接收来自不同主机的向同一个地址写入不同数据的请求,为了避免共享存储设备同时对同一个地址写入不同的数据,造成数据写入错误,在处理任意一个数据写入请求时,共享存储设备首先要获取待写入地址的写锁权限,以锁定该地址的写权限,然后才能向对应的地址写入数据,现有技术通常预取待写入地址附近固定长度的写锁权限,以达到提升写性能的目的,而预取固定长度的写锁权限由于没有考虑当前业务写数据的特点,在特定场景下往往会造成系统资源的浪费,无法使系统达到较优的性能。



技术实现要素:

本发明实施例的目的在于提供一种写锁预取长度的确定方法及装置,依据当前业务场景的数据写入特点动态地确定每个检测周期内写锁预取长度,解决了写锁预取长度固定造成的系统资源浪费的问题,优化了系统的性能。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种写锁预取长度的确定方法,应用于共享存储设备,共享存储设备的存储空间预先被划分为多个区段,所述方法包括:统计当前检测周期内每个区段的写入频率,其中,检测周期是依据共享存储设备的写入频率确定的;确定当前检测周期内由写入频率大于第一预设阈值且连续区段的个数最多的区段组成的目标特征块;将目标特征块中区段的个数作为下一个检测周期的写锁预取长度。

第二方面,本发明实施例还提供了一种写锁预取长度的确定装置,应用于共享存储设备,共享存储设备的存储空间预先被划分为多个区段,所述装置包括:统计模块,用于统计当前检测周期内每个区段的写入频率,其中,检测周期是依据共享存储设备的写入频率确定的;第一确定模块,用于确定当前检测周期内由写入频率大于第一预设阈值且连续区段的个数最多的区段组成的目标特征块;第二确定模块,用于将目标特征块中区段的个数作为下一个检测周期的写锁预取长度。

相对现有技术,本发明实施例提供的一种写锁预取长度的确定方法及装置,首先,共享存储设备统计当前检测周期内每个区段的写入频率;然后,确定当前检测周期内的目标特征块,其中,目标特征块由写入频率大于第一预设阈值且连续区段的个数最多的区段组成;接下来,将目标特征块中区段的个数作为下一个检测周期的写锁预取长度。与现有技术相比,本发明实施例依据当前业务场景的数据写入特点动态地确定每个检测周期内写锁预取长度,解决了写锁预取长度固定造成的系统资源浪费的问题,优化了系统的性能。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的写锁预取长度的确定方法应用场景示意图。

图2示出了本发明实施例提供的共享存储设备的方框示意图。

图3示出了本发明实施例提供的写锁预取长度的确定方法流程图。

图4示出了本发明实施例提供的滑动窗口滑动示例图。

图5为图3示出的步骤s103的子步骤一种流程图。

图6为图3示出的步骤s103的子步骤另一种流程图。

图7示出了本发明实施例提供的滑动窗口中写入频率的示意图。

图8示出了本发明实施例提供的写锁预取长度的确定装置的方框示意图。

图标:100-共享存储设备;101-存储器;102-通信接口;103-处理器;104-总线;200-写锁预取长度的确定装置;201-检测周期确定模块;202-统计模块;203-第一确定模块;204-第二确定模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参照图1,图1示出了本发明实施例提供的写锁预取长度的确定方法应用场景示意图,图1中,双活aa存储集群可以包括通信连接的两个独立的存储集群:a存储集群和b存储集群,主机a与a存储集群通信连接、主机b与b存储集群通信连接,a存储集群和b存储集群均包括多个存储节点。a存储集群中的双活成员lun(logicalunitnumber,逻辑单元号)与b存储集群中的双活成员lun互为镜像,即这两个双活成员lun中的存储的数据是一致的,由此保证当任意一个存储集群出现故障时,业务可以迅速切换至另一个存储集群,避免由于存储集群故障造成的业务中断。因此,这两个双活成员lun实际上可以抽象为同一个线性存储空间,也称为双活lun,由该双活lun统一对a主机和b主机供存储服务,不同主机均可以访问此线性存储空间,当a主机向此线性存储空间写数据时,实际上时a主机向a存储集群中的双活成员lun写数据,该数据同时会写入b存储集群中的双活成员lun中对应的地址,以使a存储集群中的双活成员lun与b存储集群中的双活成员lun中的数据保持一致。当b主机向此线性存储空间写数据时,与此类似。为了防止a主机和b主机通过不同的存储集群向双活lun上的同一个地址写入不同数据,造成数据写入错误,任意一个主机向双活lun上的地址写入数据时,首先要获取写入该地址的写锁权限,以锁定该地址的写权限,然后才能向对应的地址写入数据。在本发明实施例中,共享存储设备100可以是a存储集群或b存储集群中任意一个或者多个存储节点。

请参照图2,图2示出了本发明实施例提供的共享存储设备100的方框示意图。共享存储设备100还可以是,但不限于,主机、实体服务器、存储阵列等。共享存储设备100的操作系统可以是,但不限于,windows系统、linux系统等。所述共享存储设备100包括存储器101、通信接口102、处理器103和总线104,所述存储器101、通信接口102和处理器103通过总线104连接,处理器103用于执行存储器101中存储的可执行模块,例如计算机程序。

其中,存储器101可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口102(可以是有线或者无线)实现该共享存储设备100与至少一个其他共享存储设备100、以及外部存储设备之间的通信连接。

总线104可以是isa总线、pci总线或eisa总线等。图2中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器101用于存储程序,例如上文所述的写锁预取长度的确定装置200。该写锁预取长度的确定装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述共享存储设备100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器103在接收到执行指令后,执行所述程序以实现本发明上述实施例揭示的写锁预取长度的确定方法。

第一实施例

请参照图3,图3示出了本发明实施例提供的写锁预取长度的确定方法流程图。该方法包括以下步骤:

步骤s101,依据共享存储设备的预设最大写入频率和共享存储设备的平均写入频率,采用分段函数确定检测周期。

在本发明实施例中,数据读出和写入频率通常采用每秒输入/输出操作iops(input/outputoperationspersecond,iops)表示,写入频率通常采用写iops表示,写iops即每秒写访问的次数。检测周期是预先依据共享存储设备100的写iops确定的,检测周期的确定和写请求的iops强度相关,当写iops数值高时,检测周期设置较短;反之设置较长,因为在写iops数值高时,单位时间内的写io多,如果检测周期过长,则无法充分反映写访问的特征。检测周期数是用来统计双活lun中每个区段上写入频率的时间周期,在当前检测周期结束时,依据当前检测周期内统计的每个区段的写入频率,确定下一个检测周期的写锁预取长度。共享存储设备100的写iops包括预设最大写iops和平均写iops,其中,预设最大写iops可以是共享存储设备100预先经过性能测试得到的该共享存储设备100可以提供的预设最大写iops,平均写iops可以是共享存储设备100采用专门的性能监控软件根据当前的预设时长内共享存储设备100的写访问的次数计算得到的写访问的平均iops,例如,预设时长为2秒,2秒内该共享存储设备100接收到的写访问的次数为10000次,则2秒内该共享存储设备100的平均写iops=10000/2=5000。

在本发明实施例中,依据预设最大写iops和平均写iops确定检测周期的分段函数可以为:

其中,t为检测周期,iopsavg_w为写访问的平均写iops,w为预设最大写iops。

步骤s102,统计当前检测周期内每个区段的写入频率,其中,检测周期是依据共享存储设备的写入频率确定的。

在本发明实施例中,共享存储设备100的存储空间即双活lun可以预先按照预设固定长度被划分为多个区段,作为一种实施方式,预设固定长度可以为2的整数次幂,如226byte(即64mb)、227byte(即128mb),当然,也可以根据应用的特点定义成其它数值。这个值不能太大,否则可能造成两个主机频繁申请同一区段的写权限,降低写入性能;这个值也不能太小,否则会产生大量细粒度的锁,增加锁管理的复杂度,同样导致降低写入性能。当前检测周期内每个区段的写入频率可以为当前检测周期内对每个区段的数据进行的每秒写访问的次数即写iops。

步骤s103,确定当前检测周期内由写入频率大于第一预设阈值且连续区段的个数最多的区段组成的目标特征块。

在本发明实施例中,首先,依据双活lun的所有区段的写入频率计算每个区段的第一平均写入频率,其次,依据每个区段的第一平均写入频率及滑动窗口的预设长度,得到以每一个区段为起点的滑动窗口内的所有区段的第一平均写入频率总和,然后,确定每个滑动窗口内的参考特征块,参考特征块由每个窗口内的写入频率大于第一预设阈值且连续区段的个数最多的区段组成,最后,所有滑动窗口内的多个参考特征块中的区段的个数最多的作为当前检测周期内的目标特征块。

请参照图5,步骤s103还包括如下子步骤:

子步骤s1031,依据所有区段的写入频率计算每个区段的第一平均写入频率。

在本发明实施例中,首先,获取双活lun的区段总个数,双活lun的区段总个数可以通过双活lun的大小及区段的长度预先计算后存储至共享存储设备100,例如,双活lun的大小为10gb,即区段的长度为64mb,则该双活lun的区段总个数为:10gb/64mb=160。其次,依据所述区段的写入频率计算每个区段的第一平均写入频率,例如,双活lun一共包括10个区段,10个区段的写入频率的总和为10000,则每个区段的第一平均写入频率=10000/10=1000。

子步骤s1032,依据每个区段的第一平均写入频率及滑动窗口的预设长度,得到以每一个区段为起点的滑动窗口内的所有区段的第一平均写入频率总和。

在本发明实施例中,作为一种实施方式,第一平均写入频率总和=滑动窗口的预设长度*第一平均写入频率,例如,第一平均写入频率为1000,滑动窗口的预设长度为5,则第一平均写入频率总和=1000*5=5000。

子步骤s1033,判断以每一个区段为起点的滑动窗口内所有区段的写入频率的总和是否大于第一平均写入频率总和的第一预设倍数。

在本发明实施例中,当以每一个区段为起点的滑动窗口内所有区段的写入频率的总和大于第一平均写入频率总和的第一预设倍数时,则认为该滑动窗口内的写访问的区段相对比较集中,此时,需要确定该滑动窗口内的写iops最集中的那些连续的区段,即执行步骤s1034。当以每一个区段为起点的滑动窗口内所有区段的写入频率的总和小于或等于第一平均写入频率总和的第一预设倍数时,则认为该滑动窗口内的写访问的区段相对不集中,此时,直接将滑动窗口滑动一个区段,继续下一个滑动窗口的处理。

在本发明实施例中,第一预设倍数可以依据实际业务场景进行配置。例如,第一预设倍数为10,双活lun的所有区段的写入频率统计结果为100000,区段总个数为1000,滑动窗口的预设长度为15,滑动窗口内所有区段的写入频率的总和为20000,则:双活lun中第一平均写入频率为:100000/1000=100,以当前区段为起点的滑动窗口的第一平均写入频率总和为:15*100=1500,该以当前区段为起点的滑动窗口的第一平均写入频率的第一预设倍数为:1500*10=15000,由于20000大于15000,则判定该滑动窗口内的写范文的区段相对集中,执行步骤s1034。

子步骤s1034,以每一个区段为起点,通过预设长度的滑动窗口依次确定以每一个区段为起点的滑动窗口内,由写入频率大于第一预设阈值且连续区段的个数最多的区段组成的参考特征块。

在本发明实施例中,第一预设阈值为以每一个区段为起点的滑动窗口内每个区段的第二平均写入频率的第二预设倍数,其中,第二预设倍数可以依据实际业务场景进行预先设置,例如,第二预设倍数为2,滑动窗口的预设长度为5,即滑动窗口包括5个区段,5个区段的写入频率分别为:100、100、300、2000、1700,则该滑动窗口内每个区段的第二平均写入频率为:(100+100+300+2000+1700)/5=840,则第一预设阈值为:840*2=1680。

在本发明实施例中,滑动窗口是以双活lun的第一个区段为起点开始滑动,每次滑动一个区段,直至滑动到双活lun的最后一个区段为滑动窗口的终点,滑动窗口的预设长度指滑动窗口内的区段的个数,滑动窗口的预设长度是预先设定的,通常不会超过20。请参照图4,图4示出了本发明实施例提供的滑动窗口滑动示例图,图4中,双活lun包括10个区段:区段0~区段9,滑动窗口的预设长度为4,即滑动窗口包括4个区段,在开始滑动时,以区段0为滑动窗口起点开始滑动,此时滑动窗口中的区段为区段0~区段3,当滑动窗口滑动一次、即滑动一个区段后,此时滑动窗口中的区段为区段1~区段4,当滑动窗口滑动到以区段6为起点、以区段9为滑动窗口的终点时,则为结束滑动窗口的滑动,此时若再继续滑动到以区段7为起点,以区段9为滑动窗口的终点时,此时滑动窗口中只包括了3个区段,不满足滑动窗口的预设长度,因此,当滑动窗口滑动到以区段6为起点、以区段9为滑动窗口的终点时,滑动结束。

在本发明实施例中,每一个区段为起点的所述滑动窗口内,由写入频率大于第一预设阈值且连续区段可以是多个,连续区段中包括区段最多的区段组成参考特征块。例如,第一预设阈值为1000,滑动窗口中的区段为:区段0~区段9,区段0~区段9的写入频率分别为300、100、1600、1500、1700、200、100、2000、1800、100,请参照图7,图7示出了本发明实施例提供的滑动窗口中写入频率的示意图,其中,区段2~区段4的写入频率均大于第一预设阈值1000,则区段2~区段4为第一个满足条件的连续区段,包含的区段个数为3,区段7~区段8的写入频率均大于第一预设阈值1000,则区段7~区段8为第二个满足条件的连续区段,包含的区段个数为2,则区段2~区段4组成参考特征块。

子步骤s1035,从以所有区段为起点分别确定的滑动窗口内的参考特征块中,将参考特征块中区段的个数最多的作为当前检测周期内的目标特征块。

需要说明的是,子步骤s1031~子步骤s1035只是步骤s103的一种具体实施方式,即通过滑动窗口得到参考特征块,具体实现时,本领域可以通过其他惯用方式得到参考特征块,任何通过其他惯用方式得到参考特征块的方法均落入本方案的保护范围,本方案不对具体参考特征块的实现方式予以限定。请参照图6,图6示出了步骤s103的另一种实现方式,步骤s103包括:

子步骤s1036,将当前检测周期内写入频率大于第二预设阈值且连续的区段作为参考特征块。

在本发明实施例中,第二预设阈值可以是上述第一平均写入频率的第三预设倍数,第三预设倍数可以等于第一预设倍数,也可以等于第二预设倍数,也可以是根据实际场景的需求预先设定的值。

子步骤s1037,将参考特征块中区段个数最多的作为当前检测周期内的目标特征块。

步骤s104,将目标特征块中区段的个数作为下一个检测周期的写锁预取长度。

在本发明实施例中,写访问往往遵循访问局部性特征,即一旦某个地址被写访问,则其附近的地址也有很大概率被访问,另外,实际业务往往在一段时间内会趋于平稳,因此,将当前检测周期的目标特征块的长度的最大值确定为下一个检测周期的写锁预取长度,可以使下一个检测周期内处理写访问时预取的写锁长度更加合理,从而优化了整个系统的写性能。

在本发明实施例中,依据当前检测周期的数据写入频率动态地确定下一个检测周期写锁预取长度,将当前检测周期的特征块的长度的最大值确定为下一个检测周期的写锁预取长度,与现有技术相比,具有以下有益效果:

第一,将当前检测周期的特征块的长度的最大值确定为下一个检测周期的写锁预取长度,可以使下一个检测周期内处理写访问时预取的写锁长度更加合理,从而优化了整个系统的写性能。

第二,依据预设最大写iops和平均写iops采用分段函数确定检测周期,且分段函数中参数可以依据实际业务场景进行调整,使得检测周期可以充分反映写访问的局部性特征。

第二实施例

请参照图8,图8示出了本发明实施例提供的写锁预取长度的确定装置200的方框示意图。写锁预取长度的确定装置200应用于共享存储设备100,其包括检测周期确定模块201;统计模块202;第一确定模块203;第二确定模块204。

检测周期确定模块201,用于依据共享存储设备的预设最大写入频率和共享存储设备的平均写入频率,采用分段函数确定检测周期。

在本发明实施例中,检测周期确定模块201用于执行步骤s101。

统计模块202,用于统计当前检测周期内每个区段的写入频率,其中,检测周期是依据共享存储设备的写入频率确定的。

在本发明实施例中,统计模块202用于执行步骤s102。

第一确定模块203,用于确定当前检测周期内由写入频率大于第一预设阈值且连续区段的个数最多的区段组成的目标特征块。

在本发明实施例中,第一确定模块203用于执行步骤s103及其子步骤s1031~s1037。

在本发明实施例中,第一确定模块203具体用于:

以每一个区段为起点,通过预设长度的滑动窗口依次确定以每一个区段为起点的滑动窗口内,由写入频率大于第一预设阈值且连续区段的个数最多的区段组成的参考特征块;

从以所有区段为起点分别确定的滑动窗口内的参考特征块中,将参考特征块中区段的个数最多的作为当前检测周期内的目标特征块。

在本发明实施例中,第一确定模块203具体还用于:

依据所有区段的写入频率计算每个区段的第一平均写入频率;

依据每个区段的第一平均写入频率及滑动窗口的预设长度,得到以每一个区段为起点的滑动窗口内的所有区段的第一平均写入频率总和;

当以每一个区段为起点的滑动窗口内所有区段的写入频率的总和大于第一平均写入频率总和的第一预设倍数时,执行以每一个所述区段为起点,通过预设长度的滑动窗口依次确定以每一个区段为起点的滑动窗口内,由写入频率大于第一预设阈值且连续区段的个数最多的区段组成的参考特征块的步骤。

在本发明实施例中,第一确定模块203具体还用于:

将当前检测周期内写入频率大于第二预设阈值且连续的区段作为参考特征块;

将参考特征块中区段个数最多的作为当前检测周期内的目标特征块。

第二确定模块204,用于将目标特征块中区段的个数作为下一个检测周期的写锁预取长度。

在本发明实施例中,第二确定模块204用于执行步骤s104。

综上所述,本发明提供的一种写锁预取长度的确定方法及装置,所述方法应用于共享存储设备,共享存储设备的存储空间预先被划分为多个区段,所述方法包括:统计当前检测周期内每个区段的写入频率,其中,检测周期是依据共享存储设备的写入频率确定的;确定当前检测周期内由写入频率大于第一预设阈值且连续区段的个数最多的区段组成的目标特征块;将目标特征块中区段的个数作为下一个检测周期的写锁预取长度。与现有技术相比,本发明依据当前业务场景的数据写入特点动态地确定每个检测周期内写锁预取长度,解决了写锁预取长度固定造成的系统资源浪费的问题,优化了系统的性能。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1