一种数据均衡方法及存储设备与流程

文档序号:13886921阅读:185来源:国知局
本发明涉及存储
技术领域
,尤其涉及一种数据均衡方法及存储设备。
背景技术
:软件定义存储是未来的趋势,而大部分软件定义存储都是基于分布式架构的存储,包括近几年流行起来的超融合架构,其采用的存储也是分布式架构的存储,这种架构的一个好处是扩容非常方便,而且很多做软件定义存储的厂商都宣称独立于硬件,不跟硬件绑定,这就给了用户自己采购硬件的灵活性,在提供硬件灵活性的同时,磁盘的异构也成为一个不得不面对的问题。异构存储是指在一个存储系统中同时采用多种型号的磁盘,例如同时采用了7200每分钟转速(roundperminute,简称rpm)、容量为4tb和1tb的两种型号的磁盘。如果把磁盘上存储的数据按照一定的大小切成数据块,例如64kb,不同的数据块被访问的频率并不相同,一些数据块被频繁访问,被频繁访问的这块数据也称为热数据,另一些数据块被访问的次数很少,这些数据被称为冷数据。当一个异构存储设备接收到输入/输出(input/output,简称io)指令时,由于io指令主要针对热数据,因此在读写数据的过程中,存储大量热数据的磁盘比从存储少量热数据的磁盘要承载更多的io请求。通常情况下,4tb磁盘存储的热数据量会是1tb磁盘的4倍,即表明4tb磁盘的io请求是1tb磁盘的近似4倍。由于硬盘的技术原因,7200rpm的4tb磁盘跟7200rpm的1tb磁盘在性能上近似,因此4tb磁盘处理io请求所用时间是1tb磁盘处理io请求所用时间的4倍,可见,大容量的磁盘是整个存储设备的瓶颈。技术实现要素:本发明提供了一种数据均衡方法以及存储设备,解决了各磁盘处理io请求所用时间不等的情况,能够提高存储设备响应io请求的速度。本发明第一方面提供一种数据均衡方法,该方法应用于存储设备,存储设备具有至少两种磁盘,至少两种磁盘的容量和/或磁盘读写速度不同,该数据均衡方法包括:分别统计存储设备中每个磁盘的热数据量,热数据量为热数据占用存储空间的大小;确定存储设备中每个磁盘的热数据均衡值;将第一类磁盘中的目标热数据迁移到第二类磁盘,直至存储设备中每个磁盘的热数据量与热数据均衡值的差值均小于第一预设阈值,第一类磁盘中每个磁盘的热数据量大于磁盘的热数据均衡值,第二类磁盘中每个磁盘的热数据量小于磁盘的热数据均衡值。在一种可能的实现方式中,该数据均衡方法还包括:创建热队列,热队列用于存储热数据,热数据的访问频率不小于第一预设频率;分别统计存储设备中每个磁盘的热数据量包括:根据存储设备中每个磁盘在热队列中的数据块,确定磁盘的热数据量。在另一种可能的实现方式中,确定存储设备中每个磁盘的热数据均衡值包括:获取存储设备的总数据量、磁盘数量以及热数据比例,热数据比例为存储设备中热数据总量与总数据量之比;根据总数据量、磁盘数量以及热数据比例计算得到热数据均衡值,并将热数据均衡值作为各磁盘的热数据均衡值。在另一种可能的实现方式中,确定存储设备中每个磁盘的热数据均衡值包括:获取存储设备的总数据量、磁盘数量以及热数据比例,热数据比例为存储设备中热数据总量与总数据量之比;根据第一目标磁盘的磁盘读写速度,确定第一目标磁盘的热数据存储权值,第一目标磁盘的磁盘读写速度与第一目标磁盘的热数据存储权值成正相关性;根据总数据量、热数据比例、第一目标磁盘的热数据存储权值以及存储权值和,确定第一目标磁盘的热数据均衡值,存储权值和为存储设备中各磁盘的热数据存储权值之和,第一目标磁盘为存储设备中的任意一个磁盘。在另一种可能的实现方式中,将第一类磁盘中热数据迁移到第二类磁盘包括:将第一类磁盘中各磁盘的目标热数据合并为目标热数据集合,目标热数据是指每个磁盘的热数据多于磁盘的热数据均衡值的部分;确定第二目标磁盘与第二目标磁盘的热数据均衡值的差值,第二目标磁盘为第二类磁盘中的任意一个磁盘;从目标热数据集合中选取差值对应的目标热数据,将选取的目标热数据迁移到第二目标磁盘。在另一种可能的实现方式中,该数据均衡方法还包括:创建温队列以及冷队列,温队列用于存储温数据,冷队列用于存储冷数据,温数据的访问频率小于第一预设频率且不小于第二预设频率,冷数据的访问频率小于第二预设频率,第一预设频率大于第二预设频率。根据io指令,调整存储设备中各队列的数据块。在另一种可能的实现方式中,根据io指令调整存储设备中各队列的数据块包括:接收主机下发的io指令;若io指令指定的数据块为温数据,则将io指令指定的数据块从温队列存入热队列;若io指令指定的数据块为冷数据,则将io指令指定的数据块从冷队列存入温队列。在另一种可能的实现方式中,在将io指令指定的数据块从温队列存入热队列之后,该数据均衡方法还包括:若热队列存储的数据块的数量超过热队列的长度,则从热队列中选取待调热数据,将待调热数据移动到温队列。在另一种可能的实现方式中,在将io指令指定的数据块从冷队列存入温队列之后,数据均衡方法还包括:若温队列存储的数据块的数量超过温队列的长度,则从温队列中选取待调温数据,将待调温数据移动到冷队列。第二方面提供一种存储设备,存储设备具有至少两种磁盘,至少两种磁盘的容量和/或磁盘读写速度不同,存储设备包括:统计模块,用于分别统计存储设备中每个磁盘的热数据量,热数据量为热数据占用存储空间的大小;确定模块,用于确定存储设备中每个磁盘的热数据均衡值;迁移模块,用于将第一类磁盘中的目标热数据迁移到第二类磁盘,直至第一类磁盘存储设备中每个磁盘的热数据量与热数据均衡值的差值均小于第一预设阈值,第一类磁盘中每个磁盘的热数据量大于磁盘的热数据均衡值,第二类磁盘中每个磁盘的热数据量小于磁盘的热数据均衡值。在一种可能的实现方式中,存储设备还包括:创建模块,用于创建热队列,热队列用于存储热数据,热数据的访问频率不小于第一预设频率;统计模块具体用于根据存储设备中每个磁盘在热队列中的数据块,确定磁盘的热数据量。在另一种可能的实现方式中,确定模块具体用于获取存储设备的总数据量、磁盘数量以及热数据比例,热数据比例为存储设备中热数据总量与总数据量之比;根据总数据量、磁盘数量以及热数据比例计算得到热数据均衡值,并将热数据均衡值作为各磁盘的热数据均衡值。在另一种可能的实现方式中,确定模块具体用于获取存储设备的总数据量、磁盘数量以及热数据比例,热数据比例为存储设备中热数据总量与总数据量之比;根据第一目标磁盘的磁盘读写速度,确定第一目标磁盘的热数据存储权值,第一目标磁盘的磁盘读写速度与目标磁盘的热数据存储权值成正相关性;根据总数据量、热数据比例、第一目标数据的热数据存储权值以及存储权值和,确定第一目标磁盘的热数据均衡值,存储设备中各磁盘的热数据存储权值之和,第一目标磁盘为存储设备中的任意一个磁盘。在另一种可能的实现方式中,迁移模块具体用于将第一类磁盘中各磁盘的目标热数据合并为目标热数据集合,目标热数据是指每个磁盘的热数据多于磁盘的热数据均衡值的部分;确定第二目标磁盘与第二目标磁盘的热数据均衡值的差值,第二目标磁盘为第二类磁盘中的任意一个磁盘;从目标热数据集合中选取差值对应的目标热数据,将选取的目标热数据迁移到第二目标磁盘。在另一种可能的实现方式中,创建模块,还用于创建温队列以及冷队列,温队列用于存储温数据,冷队列用于存储冷数据,温数据的访问频率小于第一预设频率且不小于第二预设频率,冷数据的访问频率小于第二预设频率,第一预设频率大于第二预设频率;该存储设备还包括:调整模块,用于根据io指令,调整存储设备中各队列的数据块。在另一种可能的实现方式中,调整模块,具体用于接收主机下发的io指令;若io指令指定的数据块为温数据,则将io指令指定的数据块从温队列存入热队列;或,用于若io指令指定的数据块为冷数据,则将io指令指定的数据块从冷队列存入温队列。在另一种可能的实现方式中,调整模块,还用于若热队列存储的数据块的数量超过热队列的长度,则从热队列中选取待调热数据,将待调热数据移动到温队列。在另一种可能的实现方式中,调整模块,还用于若温队列存储的数据块的数量超过温队列的长度,则从温队列中选取待调温数据,将待调温数据移动到冷队列。在本发明实施例中,存储设备可以分别统计存储设备中每个磁盘的热数据量并确定每个磁盘的热数据均衡值,以热数据均衡值将磁盘划分为第一类磁盘和第二类磁盘,将第一类磁盘中多于热数据均衡值的部分迁移到第二类磁盘,直至每个磁盘的热数据相等或大致相等。由于每个磁盘存储的热数据量基本相等,因此各磁盘处理io请求的时间基本相同,避免了大磁盘承载的io请求较多,小磁盘承载的io请求较少的情况,因此提高了存储设备响应io请求的速度。附图说明图1为本发明实施例中数据均衡方法的一个流程示意图;图2为本发明实施例中数据均衡方法的另一个流程示意图;图3为本发明实施例中数据均衡方法的另一个流程示意图;图4为本发明实施例中调整队列数据的一个示意图;图5为本发明实施例中调整队列数据的另一个示意图;图6为本发明实施例中调整队列数据的另一个示意图;图7为本发明实施例中存储设备的一个结构示意图;图8为本发明实施例中存储设备的另一个结构示意图;图9为本发明实施例中存储设备的另一个结构示意图;图10为本发明实施例中存储设备的另一个结构示意图。具体实施方式下面首先对本发明中数据均衡方法所应用的存储设备进行介绍:存储设备可以具有至少两种容量的磁盘。例如,存储设备包括1tb、2tb、4tb三个磁盘。在存储设备中,各磁盘可以是集中存储在机房中的存储节点,也可以是分散在各地,通过网络连接的存储节点。每个磁盘的存储数据可分为多个大小相等的数据块,数据块大小可以设为64千字节(kilobyte,简称kb),也可以设置为其他字节数,具体此处不作限定。举例来说,服务器节点的初始配置可能是8个hdd磁盘,每个磁盘容量为1tb,随着业务的发展,服务器节点需要扩容,在初始配置的基础上增加4tb的磁盘2个,此时服务器节点成为异构式存储设备。在该异构式存储设备中,一般4tb磁盘存储的热数据为1tb磁盘存储的热数据的4倍。相应的,对4tb磁盘的io访问量是1tb磁盘的io访问量的4倍。但是,1tb磁盘和4tb磁盘的读写性能相近,服务器响应io请求的过程中,4tb磁盘完成读写的时间是1tb磁盘的4倍,由此可见,存储有大量热数据的磁盘是io访问的性能瓶颈。为了解决上述问题,请参阅图1,本发明中数据均衡方法的一个实施例包括:步骤101、分别统计存储设备中每个磁盘的热数据量。本实施例中,热数据量为热数据占用存储空间大小。对于存储设备中的每个磁盘,存储设备可以统计每个磁盘的热数据量。步骤102、确定存储设备中每个磁盘的热数据均衡值。具体的,存储设备确定存储设备中每个磁盘的热数据均衡值之后,可以依据热数据均衡值,将磁盘划分为第一类磁盘和第二类磁盘。其中,第一类磁盘中每个磁盘的热数据多于磁盘的热数据均衡值,第二类磁盘中每个磁盘的热数据少于磁盘的热数据均衡值。步骤103、将第一类磁盘中的热数据迁移到第二类磁盘,直至存储设备中每个磁盘的热数据量与热数据均衡值的差值均小于第一预设阈值。需要说明的是,第一预设阈值是指单个磁盘的热数据量与热数据均衡值之间的允许误差,它的取值可以设置为0,也可以设置为n个数据块的大小,n可以是1,2,3,4,5,还可以根据实际情况设定为其他数值。第一预设阈值也可以设置为总数据量的0.5%,1%,2%,还可以设置为其他值,具体此处不作限定。当存储设备中每个磁盘的热数据与热数据均衡值的差值小于第一预设阈值时,表明每个磁盘的热数据量基本相同。在此情况下,每个磁盘承载的io请求大致相等,各磁盘响应io请求的时间基本相同,解决了各磁盘承载io请求不均的情况,提高了存储设备响应io请求的速度。在实际应用中,存储设备将第一类磁盘中的热数据迁移到第二类磁盘可以通过多种方式实现:基于图1所示实施例,在本发明的一个可选实施例中,步骤103具体可以为:将第一类磁盘中各磁盘的目标热数据合并为目标热数据集合;确定第二目标磁盘的热数据量与第二目标磁盘的热数据均衡值的差值;从目标热数据集合中选取差值对应的目标热数据,将选取的目标热数据迁移到第二目标磁盘。其中,目标热数据是指每个磁盘的热数据多于磁盘的热数据均衡值的部分第二目标磁盘为第二类磁盘中的任意一个磁盘。具体的,第二类磁盘包括m个磁盘,第二目标磁盘可以用第j个磁盘表示,1≤j≤m。存储设备可以确定第二目标磁盘的热数据量与第二目标磁盘的热数据均衡值的差值,计算公式可以如下:δd(j)=d(j)-d'(j),d(j)为第j个磁盘的热数据量,d'(j)为第j个磁盘的热数据均衡值,δd(j)为第j个磁盘的热数据量与第j个磁盘的热数据均衡值的差值。按照第j个磁盘对应的差值δd(j),存储设备从目标热数据集合中选取大小为δd(j)的热数据迁移到第j个磁盘,直至第二类磁盘的每个磁盘的热数据量与磁盘热数据均衡值的差值小于第一预设阈值,此时第一类磁盘的每个磁盘的热数据量与磁盘热数据均衡值的差值也小于第一预设阈值,使得存储设备中每个磁盘的热数据量与磁盘热数据均衡值的差值均小于第一预设阈值。基于图1所示实施例,在本发明的另一个可选实施例中,步骤103可以为:对于第一类磁盘,存储设备可以从任意一个磁盘开始,从磁盘中选取多于热数据均衡值的部分热数据(即目标热数据),将该部分热数据迁移到第二类磁盘中的一个或多个磁盘,直至第一类的所有磁盘完成迁移。在迁移完成后,第一类磁盘的每个磁盘的热数据量等于热数据均衡值,若存储设备还包括若干与热数据均衡值不等的磁盘,再将上述磁盘中热数据量大于热数据均衡值的磁盘组作为新的第一类磁盘,将上述磁盘中热数据量小于热数据均衡值的磁盘组作为新的第二类磁盘,再次执行将第一类磁盘的热数据迁移到第二类磁盘的步骤,直至存储设备中每个磁盘的热数据量与热数据均衡值的差值小于第一预设阈值。基于图1所示实施例,在本发明的一个可选实施例中,步骤102具体可以为:存储设备获取存储设备的总数据量、磁盘数量以及热数据比例,热数据比例为存储设备中热数据总量与总数据量之比;存储设备根据总数据量、磁盘数量以及热数据比例计算得到热数据均衡值,并将热数据均衡值作为各磁盘的热数据均衡值。本实施例中,存储设备可以根据总数据量、磁盘数量以及热数据比例计算得到热数据均衡值。计算公式可以为:热数据均衡值=总数据量×热数据比例/磁盘数量。其中,热数据比例为存储设备中热数据总量与总数据量之比。热数据比例可以由io访问统计结果来确定,也可以由经验设定,例如10%,15%,20%等,此处不作限定。举例来说,总数据量为10gb,热数据比例为10%,磁盘数量为4,则每个磁盘的热数据均衡值=10gb×10%/4=250mb。如果每个磁盘的读写性能相同,则每个磁盘响应io指令的速度相同,可以实现每个磁盘均衡承载io请求的目标。由于异构式存储设备中存在多种磁盘,每种磁盘的读写性能不一样,导致存储设备响应io指令的速度存在差异。为了解决由于磁盘读写性能不同导致存储设备响应io指令的速度不同的问题,本发明还可以根据各磁盘的磁盘读写速度,确定对应的热数据均衡值,以使得各磁盘响应io指令的速度大致相同。具体实现过程请参阅以下实施例,基于图1所示实施例,在本发明的另一个可选实施例中,步骤102具体可以为:获取存储设备的总数据量、磁盘数量以及热数据比例,热数据比例为存储设备中热数据总量与总数据量之比;根据第一目标磁盘的磁盘读写速度,确定第一目标磁盘的热数据存储权值,第一目标磁盘的磁盘读写速度与第一目标磁盘的热数据存储权值成正相关性;根据总数据量、热数据比例、第一目标磁盘的热数据存储权值以及存储权值和,确定第一目标磁盘的热数据均衡值,存储权值和为存储设备中各磁盘的热数据存储权值之和,第一目标磁盘为存储设备中的任意一个磁盘。本实施例中,第一目标磁盘是指存储设备中任意一个磁盘,可以用第i个磁盘表示。存储设备根据第i个磁盘的磁盘读写速度确定第i个磁盘的热数据存储权值之后,可以根据总数据量、热数据比例、第i个磁盘的热数据存储权值以及存储权值和,确定第i个磁盘的热数据均衡值。计算公式可以如下:第i个磁盘的热数据均衡值=总数据量×热数据比例×第i个磁盘的存储权值/存储权值和。需要说明的是,磁盘的磁盘读写速度与磁盘的存储权值成正相关性,即磁盘读写速度越大,磁盘的热数据存储权值越大,否则,磁盘的热数据存储权值越小。在这种情况下,读写速度慢的磁盘需要存储的热数据量少于读写速度快的磁盘需要存储的热数据,在同一时段内读写速度慢的磁盘承载的io请求小于读写速度快的磁盘,从而使得存储设备中各磁盘响应io请求的速度一致。在实际应用中,存储设备可以通过数据队列的方式来管理存储设备中的数据。请参阅图2,本发明提供的数据均衡方法的另一个实施例包括:步骤201、创建热队列;本实施例中,存储设备可以记录各磁盘的数据块的访问频率以及访问时间,然后根据访问频率以及访问时间选取数据块存入热队列,完成热队列的初始化。其中,热队列用于存储热数据,热数据的访问频率不小于第一预设频率。存储设备根据访问频率以及访问时间选取数据块的方法可以是近期最少使用(leastrecentused,简称lru)算法,或类lru算法,此处不作限定。步骤202、分别根据存储设备中每个磁盘在热队列中的数据块,确定各磁盘的热数据量。具体的,存储设备可以确定热队列中每个数据块对应的磁盘,记录与单个磁盘对应的数据块,从而统计出各磁盘的热数据量。举例来说,热队列的数据块,与磁盘的对应关系如下表所示:热队列磁盘数据块1磁盘1数据块2磁盘2数据块3磁盘1数据块4磁盘2存储设备可以确定磁盘1以及磁盘2的热数据量均为2个数据块大小。步骤203、确定存储设备中每个磁盘的热数据均衡值。步骤204、将第一类磁盘中的热数据迁移到第二类磁盘,直至存储设备中每个磁盘的热数据量与热数据均衡值的差值小于第一预设阈值。步骤203至步骤204,与图1所示实施例中步骤102至步骤103相似,此处不再赘述。本实施例中,每个磁盘承载的io请求大致相等,各磁盘响应io请求的时间基本相同,解决了各磁盘承载io请求不均的情况,提高了存储设备响应io请求的速度。其次,本实施例提供了一种热数据均衡的具体实施方式,便于本发明的实施。请参阅图3,本发明提供的数据均衡方法的另一个实施例包括:步骤301、创建热队列、温队列以及冷队列;本实施例中,存储设备可以记录数据块的访问频率以及访问时间,然后根据访问频率以及访问时间选取数据块分别存入热队列、温队列以及冷队列,完成队列初始化。其中,热队列用于存储热数据,温队列用于存储温数据,冷队列用于存储冷数据。可以理解的是,存储设备根据访问频率以及访问时间选取数据块的方法可以是lru算法,或类lru算法,此处不作限定。具体的,存储设备可以通过设置第一预设频率,以区分热数据和温数据,设置第二预设频率以区分温数据和冷数据,第一预设频率大于第二预设频率。热数据的访问频率不小于第一预设频率,温数据的访问频率小于第一预设频率且不小于第二预设频率,冷数据的访问频率小于第二预设频率。步骤302、根据存储设备中每个磁盘在热队列中的数据块,确定磁盘的热数据量。步骤303、确定存储设备中每个磁盘的热数据均衡值。步骤304、将第一类磁盘中的热数据迁移到第二类磁盘,直至存储设备中每个磁盘的热数据量与热数据均衡值的差值小于第一预设阈值。步骤303至步骤304,与图1所示实施例中步骤102至步骤103相似,此处不再赘述。步骤305、根据存储设备中每个磁盘在温队列中的数据块,确定磁盘的温数据量。其中,温数据量为温数据占用存储空间的大小。步骤306、确定存储设备中每个磁盘的温数据均衡值。具体的,存储设备确定存储设备中每个磁盘的温数据均衡值之后,可以依据温数据均衡值,将磁盘划分为第三类磁盘和第四类磁盘。其中,第三类磁盘中每个磁盘的温数据多于磁盘的温数据均衡值,第四类磁盘中每个磁盘的温数据少于磁盘的温数据均衡值。步骤307、将第三类磁盘中目标温数据迁移到第四类磁盘,直至存储设备中每个磁盘的温数据量与温数据均衡值的差值小于第二预设阈值。对于第三类磁盘,存储设备可以从任意一个磁盘开始,从磁盘中选取多于温数据均衡值的部分温数据(目标温数据),将该部分温数据迁移到第四类磁盘中的一个或多个磁盘,直至第三类的所有磁盘完成迁移。在迁移完成后,第三类磁盘的每个磁盘的温数据量等于温数据均衡值,若存储设备还包括若干与温数据均衡值不等的磁盘,再将上述磁盘执行步骤305至步骤307,直至存储设备中每个磁盘的温数据与温数据均衡值的差值小于第二预设阈值。需要说明的是,第二预设阈值是指单个磁盘的温数据量与温数据均衡值之间的允许误差,它的取值可以设置为0,也可以设置为一个数据块的大小或两个数据块的大小,也可以设置为总数据量的0.5%,1%,2%,还可以设置为其他值,具体此处不作限定。当存储设备中每个磁盘的温数据与温数据均衡值的差值小于第二预设阈值时,表明每个磁盘的温数据量基本相同。在此情况下,当外部设备访问大量温数据时,每个磁盘承载的io请求大致相等,各磁盘响应io请求的时间基本相同,解决了各磁盘承载io请求不均的情况,提高了存储设备响应io请求的速度。基于图3所示实施例,在本发明的一个可选实施例中,步骤305具体可以为:获取存储设备的总数据量、磁盘数量以及温数据比例,温数据比例为存储设备中温数据总量与总数据量之比;根据总数据量、磁盘数量以及温数据比例计算得到温数据均衡值,并将温数据均衡值作为各磁盘的温数据均衡值。本实施例中,存储设备可以根据总数据量、磁盘数量以及温数据比例计算得到温数据均衡值。计算公式可以为:温数据均衡值=总数据量×温数据比例/磁盘数量。基于图3实施例,在本发明的另一个可选实施例中,步骤305具体可以为:获取存储设备的总数据量、磁盘数量以及温数据比例,温数据比例为存储设备中温数据总量与总数据量之比;根据第一目标磁盘的磁盘读写速度,确定第一目标磁盘的温数据存储权值,第一目标磁盘的磁盘读写速度与第一目标磁盘的温数据存储权值成正相关性;根据总数据量、温数据比例、第一目标磁盘的温数据存储权值以及存储权值和,确定第一目标磁盘的温数据均衡值,存储权值和为存储设备中各磁盘的温数据存储权值之和,第一目标磁盘为存储设备中的任意一个磁盘。本实施例中,第一目标磁盘可以用第i个磁盘表示,存储设备可以根据总数据量、温数据比例、第i个磁盘的温数据存储权值以及存储权值和,确定第i个磁盘的温数据均衡值。计算公式可以如下:第i个磁盘的温数据均衡值=总数据量×温数据比例×第i个磁盘的存储权值/存储权值和。基于图3所示实施例,在本发明的另一个可选实施例中,该数据均衡方法还包括:接收主机下发的io指令;若io指令指定的数据块为温数据,则将io指令指定的数据块从温队列存入热队列;若io指令指定的数据块为冷数据,则将io指令指定的数据块从冷队列存入温队列。本实施例中,如果存储设备确定io指令指定的数据块在温队列中,那么表明该数据块在接收io指令之前为温数据。由于该数据块为最近被访问的数据,存储设备可以将该数据块从温队列存入热队列,将该数据块从温数据修改为热数据。作为一个可选的实施方式,存储设备可以将该数据块存入热队列的队首,作为热队列的新队首元素,并将热队列的其他元素向队尾移动。如果存储设备确定io指令指定的数据块在冷队列中,那么表明该数据块在接收io指令之前为冷数据。由于该数据块为最近被访问的数据,存储设备可以将该数据块从冷队列存入温队列,将该数据块从冷数据修改为温数据。作为一个可选的实施方式,存储设备可以将该数据块存入温队列的队首,作为温队列的新队首元素,并将温队列的其他元素向队尾移动。可以理解的是,当数据块从温队列存入热队列之后,数据块从温数据转变为热数据,数据块所在磁盘的热数据量增加,且数据块所在磁盘的温数据量减少。本实施例中,当外部设备访问冷数据时,冷数据不会通过一次访问就成为热数据,至少要经过两次访问才能进入热队列,这样使得热队列的数据块都是访问频繁的数据,温队列的数据块都是访问频率中等的数据,冷队列的数据块都是访问频率很低的数据。基于前一个实施例,在本发明的另一个可选实施例中,该数据均衡方法还包括:若热队列存储的数据块的数量超过热队列的长度,则从热队列中选取待调热数据,将待调热数据移动到温队列。本实施例中,当io指定数据块从温队列存入热队列之后,若热队列包含的数据块数量大于热队列长度,则存储设备从热队列中选取待调热数据,将待调热数据存入温队列,待调热数据可以是热队列队尾的数据块。作为一个可选实施方式,存储设备可以将待调热数据移动到温队列的队首,并将温队列中位于io指定数据块之前的元素向后移动。其中,热队列长度是指热队列可以存储的数据块的最大数量,具体可以通过以下方式计算:热队列长度=总数据量×热数据比例/单个数据块字节数。可以理解的是,当待调热数据从热队列存入温队列之后,待调热数据从热数据转变为温数据,待调热数据所在磁盘的热数据量减少,待调热数据所在磁盘的温数据量增加。基于前一个实施例,在本发明的另一个可选实施例中,该数据均衡方法还包括:若温队列存储的数据块的数量超过温队列的长度,则从温队列中选取待调温数据,将待调温数据移动到冷队列。本实施例中,当io指定数据块从冷队列存入温队列之后,若温队列包含的数据块数量大于温队列长度,则存储设备从温队列中选取待调温数据,将待调温数据存入冷队列,待调温数据可以是温队列队尾的数据块。作为一个可选实施方式,存储设备可以将待调温数据移动到冷队列的队首,并将冷队列中位于io指定数据块之前的元素向后移动。其中,温队列长度是指温队列可以存储的数据块的最大数量,具体可以通过以下方式计算:温队列长度=总数据量×温数据比例/单个数据块字节数。可以理解的是,当待调温数据从温队列存入冷队列之后,待调温数据从温数据转变为冷数据,待调温数据所在磁盘的温数据量减少,待调温数据所在磁盘的冷数据量增加。冷数据量为冷数据占用存储空间的大小。为便于理解,下面以一个具体应用场景对本发明实施例提供的数据均衡方法进行详细说明:在本发明提供的具体应用场景中,存储服务器包括三个磁盘disk_1,disk_2,disk_3,磁盘容量分别为1tb、1tb、4tb,总数据量为6gb,热数据比例为10%。存储服务器可以根据磁盘数据块的访问频率,将disk_1,disk_2,disk_3的数据分别存入热队列401、温队列402以及冷队列403。存储服务器可以根据disk_1、disk_2和disk_3在热队列中的数据块统计各磁盘对应的热数据量,下面disk_1、disk_2和disk_3的初始热数据量分别以100mb,200mb,300mb为例,存储服务器确定热数据均衡值=6gb×10%/3=200mb;存储服务器可以将disk_3中选取100mb迁移到disk_1,从而使得disk_1、disk_2和disk_3的热数据量均为200mb。存储服务器可以接收io指令,若io指令访问温队列402中的数据块404,则将数据块404插入热队列401的队首,此时热队列401的热数据量大于热队列401的队列长度,则将热队列401的队尾数据405从热队列移动到温队列402的队首,如图4所示。数据块404的大小以10mb为例,假设数据块404所在磁盘为disk_2,则disk_2的热数据量增加10mb。假设数据块405所在磁盘为disk_3,则disk_3的热数据量减少10mb,存储服务器可以确定disk_1、disk_2和disk_3的热数据量分别为100mb、210mb、290mb。若io指令访问冷队列403中的数据块501,存储服务器可以将数据块501插入温队列402的队首,由于温队列402的温数据量大于温队列402的队列长度,则将温队列402的队尾数据502从温队列移动到冷队列403的队首,如图5所示。若io指令访问热队列401的数据块601,则将数据块601插入到热队列的队首,并将队列中第1个数据到第4个数据向队尾移动一位,由于601仍然为热数据,因此存储设备中每个磁盘的热数据量不变,无需修改磁盘的热数据量。请参阅图7,本发明提供一种存储设备,存储设备具有至少两种容量的磁盘,能够实现图1、图2、图3所示实施例或可选实施例中的数据均衡方法。本发明提供的存储设备700的一个实施例包括:统计模701,用于分别统计存储设备中每个磁盘的热数据量,热数据量为热数据占用存储空间的大小;确定模块702,用于确定存储设备中每个磁盘的热数据均衡值;迁移模块703,用于将第一类磁盘中的目标热数据迁移到第二类磁盘,直至存储设备中每个磁盘的热数据量与热数据均衡值的差值小于第一预设阈值,第一类磁盘中每个磁盘的热数据量大于磁盘的热数据均衡值,第二类磁盘中每个磁盘的热数据量小于磁盘的热数据均衡值。在本发明的一个可选实施例中,请参阅图8,存储设备700还包括:创建模块801,用于创建热队列,热队列用于存储热数据,热数据的访问频率不小于第一预设频率;统计模块702具体用于根据存储设备中每个磁盘在热队列中的数据块,确定磁盘的热数据量。基于图7所示实施例,在本发明的另一个可选实施例中,确定模块702具体用于获取存储设备的总数据量、磁盘数量以及热数据比例,热数据比例为存储设备中热数据总量与总数据量之比;根据总数据量、磁盘数量以及热数据比例计算得到热数据均衡值,并将热数据均衡值作为各磁盘的热数据均衡值。基于图7所示实施例,在本发明的另一个可选实施例中,确定模块702具体用于获取存储设备的总数据量、磁盘数量以及热数据比例,热数据比例为存储设备中热数据总量与总数据量之比;根据第一目标磁盘的磁盘读写速度,确定第一目标磁盘的热数据存储权值,第一目标磁盘的磁盘读写速度与第一目标磁盘的热数据存储权值成正相关性;根据总数据量、热数据比例、第一目标磁盘的热数据存储权值以及存储权值和,确定第一目标磁盘的热数据均衡值,存储权值和为存储设备中各磁盘的热数据存储权值之和,第一目标磁盘为存储设备中的任意一个磁盘。基于图7所示实施例或可选实施例,在本发明的另一个可选实施例中,迁移模块703具体用于将第一类磁盘中各磁盘的目标热数据合并为目标热数据集合,目标热数据是指每个磁盘的热数据多于磁盘的热数据均衡值的部分;确定第二目标磁盘与第二目标磁盘的热数据均衡值的差值,第二目标磁盘为第二类磁盘中的任意一个磁盘;从目标热数据集合中选取差值对应的目标热数据,将选取的目标热数据迁移到第二目标磁盘。基于图7所示实施例,在本发明的另一个可选实施例中,创建模块801,还用于创建温队列以及冷队列,温队列用于存储温数据,冷队列用于存储冷数据,温数据的访问频率小于第一预设频率且不小于第二预设阈值,冷数据的访问频率小于第二预设频率,第一预设频率大于第二预设频率;请参阅图9,存储设备700还包括:调整模块901,用于根据io指令,调整存储设备中各队列的数据块。基于前一个实施例,在本发明的另一个可选实施例中,调整模块901具体用于接收主机下发的io指令;若io指令指定的数据块为温数据,则将io指令指定的数据块从温队列存入热队列;或,用于若io指令指定的数据块为冷数据,则将io指令指定的数据块从冷队列存入温队列。基于前一个实施例,在本发明的另一个可选实施例中,调整模块901,还用于若热队列存储的数据块的数量超过热队列的长度,则从热队列中选取待调热数据,将待调热数据移动到温队列。在本发明的另一个可选实施例中,调整模块901,还用于若温队列存储的数据块的数量超过温队列的长度,则从温队列中选取待调温数据,将待调温数据移动到冷队列。为便于理解,下面以一个具体应用场景对本发明实施例提供的存储设备进行详细说明:存储服务器包括三个磁盘disk_1,disk_2,disk_3,磁盘容量分别为1tb、1tb、4tb,总数据量为6gb,热数据比例为10%。创建模块801可以根据磁盘数据块的访问频率,将disk_1,disk_2,disk_3的数据分别存入热队列401、温队列402以及冷队列403。统计模块701可以根据disk_1、disk_2和disk_3在热队列中的数据块统计各磁盘对应的热数据量,下面disk_1、disk_2和disk_3的初始热数据量分别以100mb,200mb,300mb为例,确定模块702确定热数据均衡值=6gb×10%/3=200mb;迁移模块703可以将disk_3中选取100mb迁移到disk_1,从而使得disk_1、disk_2和disk_3的热数据量均为200mb。调整模块901可以接收io指令,若io指令访问温队列402中的数据块404,则将数据块404插入热队列401的队首,此时热队列401的热数据量大于热队列401的队列长度,则调整模块901将热队列401的队尾数据405从热队列移动到温队列402的队首,如图4所示。数据块404的大小以10mb为例,假设数据块404所在磁盘为disk_2,则disk_2的热数据量增加10mb。假设数据块405所在磁盘为disk_3,则disk_3的热数据量减少10mb,确定模块702可以确定disk_1、disk_2和disk_3的热数据量分别为100mb、210mb、290mb。若io指令访问冷队列403中的数据块501,调整模块901可以将数据块501插入温队列402的队首,由于温队列402的温数据量大于温队列402的队列长度,则将温队列402的队尾数据502从温队列移动到冷队列403的队首,如图5所示。若io指令访问热队列401的数据块601,则调整模块901可以将数据块601插入到热队列的队首,并将队列中第1个数据到第4个数据向队尾移动一位,由于601仍然为热数据,因此存储设备中每个磁盘的热数据量不变,无需修改磁盘的热数据量。以上从功能模块的角度对本发明提供的存储设备进行了介绍,下面从硬件装置角度对本发明提供的存储设备进行了介绍:本发明还提供一种存储设备1000,可以实现图1至图3所示实施例或可选实施例中的数据均衡方法,请参阅图10,存储设备1000包括通讯接口1001、控制器1002、缓存1003以及磁盘1004;通讯接口1001、控制器1002、缓存1003和磁盘1004之间通过总线相互连接。其中,控制器1002可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件等。缓存1003可以是随机存取存储器(randomaccessmemory,简称ram),磁盘1004可以是非易失性存储器(non-volatilememory,简称nvm)。缓存1003用于存储数据以及操作指令,其中,通过调用缓存1003存储的操作指令,控制器1002用于执行以下方法:分别统计存储设备中每个磁盘的热数据量,热数据量为热数据占用存储空间的大小;确定存储设备中每个磁盘的热数据均衡值;将第一类磁盘中目标热数据迁移到第二类磁盘,直至存储设备中每个磁盘的热数据量与热数据均衡值的差值小于第一预设阈值,第一类磁盘中每个磁盘的热数据量大于磁盘的热数据均衡值,第二类磁盘中每个磁盘的热数据量小于磁盘的热数据均衡值。在本发明的一个可选实施例中,控制器1002还用于创建热队列,热队列用于存储热数据,热数据的访问频率不小于第一预设频率;以及,用于分别根据存储设备中每个磁盘在热队列中的数据块,确定各磁盘的热数据量。在本发明的另一个可选实施例中,控制器1002具体用于获取存储设备的总数据量、磁盘数量以及热数据比例,热数据比例为存储设备中热数据总量与总数据量之比;根据总数据量、磁盘数量以及热数据比例计算得到热数据均衡值,并将热数据均衡值作为各磁盘的热数据均衡值。在本发明的另一个可选实施例中,控制器1002具体用于获取存储设备的总数据量、磁盘数量以及热数据比例,热数据比例为存储设备中热数据总量与总数据量之比;根据第一目标磁盘的磁盘读写速度,确定第一目标磁盘的热数据存储权值,第一目标磁盘的磁盘读写速度与第一目标磁盘的热数据存储权值成正相关性;根据总数据量、热数据比例、第一目标磁盘的热数据存储权值以及存储权值和,确定第一目标磁盘的热数据均衡值,存储权值和为存储设备中各磁盘的热数据存储权值之和,第一目标磁盘为存储设备中的任意一个磁盘。在本发明的另一个可选实施例中,控制器1002具体用于创建温队列以及冷队列,温队列用于存储温数据,冷队列用于存储冷数据,温数据的访问频率小于第一预设频率且不小于第二预设频率,冷数据的访问频率小于第二预设频率,第一预设频率大于第二预设频率;根据io指令,调整存储设备中各队列的数据块。在本发明的一个可选实施例中,控制器1002具体用于接收主机下发的io指令;若io指令指定的数据块为温数据,则将io指令指定的数据块从温队列存入热队列;若io指令指定的数据块为冷数据,则将io指令指定的数据块从冷队列存入温队列。在本发明的一个可选实施例中,控制器1002具体用于若热队列存储的数据块的数量超过热队列的长度,则从热队列中选取待调热数据,将待调热数据移动到温队列。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;前述的存储介质包括:rom、ram、磁碟或光盘等各种可以存储程序代码的介质。本实施例的设备,通过上述模块实现数据均衡的过程与上述相关方法实施例实现数据均衡的实现机制相同,详细可以参考上述相关方法实施例的记载,此处不再赘述。以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1