具体实施方式
本发明实施例中,根据获得的数据单元所在硬盘的寿命值和获得的寿命阈值的第一比较结果,以及获得的所述数据单元的写操作次数和获得的写操作次数阈值的第二比较结果,将所述数据单元迁移到与所述第一比较结果关联的硬盘上。
其中,与第一比较结果相关联的硬盘,包括寿命值大于寿命阈值的固态硬盘和寿命值小于寿命阈值的固态硬盘两类。本发明实施例是将寿命值大于寿命阈值的固态硬盘上,写操作次数小于写操作次数阈值的数据迁移到寿命值小于寿命阈值的硬盘上;将寿命值小于寿命阈值的固态硬盘上,写操作次数大于写操作次数阈值的数据迁移到寿命值大于寿命阈值的硬盘上。以实现在多个固态硬盘之间进行损耗均衡,针对存储系统避免某一块硬盘因过度擦写而先于其他硬盘出现故障的情况。
下面结合附图,对本发明实施例方案进行详细描述。
图1所示为本发明实施例存储系统的结构示意图,存储系统包括:存储系统控制器101,主机接口控制器102和硬盘接口控制器103,其中,
存储系统控制器101通过主机接口控制器102接收主机发送的操作命令, 并通过硬盘接口控制器103操作接入存储系统的固态硬盘。系统中可以接入多块固态硬盘,多块故态硬盘可以同时工作,固态硬盘的类型可以是SLC或MLC。应当理解的是:本发明实施例存储系统中也可以包括一块或多块固态硬盘,例如固态硬盘104。
本发明实施例存储系统中的存储系统控制器101,用于根据获得的数据单元所在硬盘的寿命值和获得的寿命阈值的第一比较结果,以及获得的所述数据单元的写操作次数和获得的写操作次数阈值的第二比较结果,通过硬盘接口控制器103将所述数据单元迁移到与所述第一比较结果关联的硬盘上。
本发明实施例中,可以在存储系统空闲或发出强制执行命令时,在硬盘之间进行损耗均衡;
相应的,存储系统控制器101,还用于通过主机接口控制器接收主机发送的用于触发硬盘间损耗均衡的执行命令;这里的用于触发硬盘间损耗均衡的执行命令使得存储系统控制器实现对数据单元进行迁移。
在存储系统中,数据是以数据块或文件为单位写入各固态硬盘的,称这样的数据块或文件为数据单元。每次对数据单元进行写操作时,存储控制器会对该写操作进行记录,并且在存储控制器中保存有该系统中所有数据单元的写操作次数。可以理解的是,硬盘中所存储的数据,其使用频率是不同的,对于在某段时间进行写操作次数较多的数据,我们称其为热数据,反之则称为冷数据。针对存储系统,如果在某一块硬盘中的热数据很多,那么这块硬盘就会先于系统中的其他同类硬盘或接入系统的其他同类硬盘出现故障。
本发明实施例所提供的存储系统,可以实现在多个固态硬盘之间进行损耗均衡,从而针对存储系统,避免了某一块硬盘因过度擦写而先于其他硬盘出现故障的情况。
下面将介绍在本发明实施例的损耗均衡方法流程。
图2所示为本发明实施例的损耗均衡方法流程图,包括以下步骤:
S201,获得存储系统的寿命阈值和写操作次数阈值。
上述两种阈值,用于判断是否对某个数据单元进行迁移。其中,寿命阈值可以采用预先设置的方法,也可以采用动态计算的方法获得;而写操作次 数由于一般变化幅度较大,因此多采用动态计算的方法获得。
固态硬盘的寿命值,可以用剩余的可擦写次数表示,也可以用剩余可擦写次数与最大可擦写次数的比值来表示,目前比较常用表示形式是百分比:例如对于一块最大擦写次数为1万次的硬盘,如果其闪存块已经被擦写过2000次(由于现有技术已实现了固态硬盘内部的损耗均衡,因此某个闪存块的擦写次数即可以代表整块硬盘的平均擦写次数),那么该固态硬盘的寿命值即为80%。固态硬盘的寿命值可以保存于存储系统控制器中,也可以记录在固态硬盘的SMART(Self-Monitoring,Analysis and Reporting Technology,自我监测分析与报告技术)信息中。
动态计算系统寿命阈值的方法,是首先获得接入系统的或者系统中所有硬盘的寿命值,再根据预设的寿命阈值计算规则,计算得到系统寿命阈值。一种寿命阈值计算规则是:先对所有硬盘的寿命值求平均,再以平均值减去一个经验参数,即可得到系统寿命阈值。
系统的写操作次数阈值,其动态计算方法与寿命阈值类似:获得接入所述存储系统的或者所述存储系统中各硬盘的闪存块擦写次数,再根据预设的写操作次数阈值规则,计算得到存储系统的写操作次数阈值。一种简单的写操作次数阈值规则是:先计算各硬盘的闪存块擦写次数的平均值,再以所得到平均值减去一个经验参数,即可得到存储系统的写操作次数阈值。
需要说明的是,上述两种阈值计算规则都是基于求平均值再减去一个经验参数的方法,应当理解的是,所述经验参数可以是正数、负数或者0。并且,也可以根据实际需求,采用其他计算规则获得上述两种阈值,本发明实施例对此不加以限定。
S202,获得数据单元所在硬盘的寿命值和数据单元的写操作次数。
在存储系统中,存储系统控制器会对数据单元的写操作次数和硬盘的寿命值进行记录和更新。具体包括:
当存储系统启动时,存储系统控制器会读取每个数据单元的历史写操作次数和数据单元所在硬盘的寿命值,并且在系统运行过程中,当进行写操作时,存储系统会实时记录/更新被写入数据单元的写操作次数和所在硬盘的寿命值。数据单元写操作次数和硬盘寿命可以保存于存储系统控制器中,也可 以记录在固态硬盘的SMART信息中。
在本步骤中,对于某块硬盘上的某个数据单元(数据块或文件),通过读取上述所保存的信息,获得其所在硬盘的寿命值和该数据单元的写操作次数,这两类数据与S101中所获取的两种阈值一起作为数据迁移的判断条件。
S203,根据所述数据单元所在硬盘的寿命值和寿命阈值的第一比较结果和所述数据单元的写操作次数和写操作次数阈值的第二比较结果,将所述数据单元迁移到与所述第一比较结果关联的硬盘上。
在一种实现下,步骤S203之前,进一步的可以包括:比较所述数据单元所在硬盘的寿命值和寿命阈值的大小,比较所述数据单元的写操作次数和写操作次数阈值的大小;
S203在一种实现下即,如果所述数据单元所在硬盘的寿命值大于所述寿命阈值,并且所述数据单元的写操作次数小于所述写操作次数阈值,则将所述数据单元迁移到硬盘寿命值小于所述寿命阈值的硬盘上;应当理解的是:这里的第一比较结果即“所述数据单元所在硬盘的寿命值大于所述寿命阈值”,这里的第二比较结果即“所述数据单元的写操作次数小于所述写操作次数阈值”;这里的迁移的对象“硬盘寿命值小于所述寿命阈值的硬盘”,即与“所述数据单元所在硬盘的寿命值大于所述寿命阈值”的第一比较结果关联的硬盘,也可以理解为:这里的迁移的对象“硬盘寿命值小于所述寿命阈值的硬盘”,即与“所述数据单元所在硬盘的寿命值大于所述寿命阈值”的第一比较结果相对的硬盘。
如果所述数据单元所在硬盘的寿命值小于所述寿命阈值,并且所述数据单元的写操作次数大于所述写操作次数阈值,则将所述数据单元迁移到硬盘寿命值大于所述寿命阈值的硬盘上;应当理解的是:这里的第一比较结果即“所述数据单元所在硬盘的寿命值小于所述寿命阈值”,这里的第二比较结果即“所述数据单元的写操作次数大于所述写操作次数阈值”;这里的迁移的对象“硬盘寿命值大于所述寿命阈值的硬盘”,即与“所述数据单元所在硬盘的寿命值小于所述寿命阈值”的第一比较结果关联的硬盘,也可以理解为:这里的迁移的对象“硬盘寿命值大于所述寿命阈值的硬盘”,即与“所述数据单元所在硬盘的寿命值小于所述寿命阈值”的第一比较结果相对的硬盘。
如果在S201中,所获得的寿命阈值是预置的,那么,可能会出现以下情况:存储系统中的或接入存储系统的所有硬盘寿命值均小于预设的寿命阈值,或者,存储系统中的或接入存储系统的所有硬盘寿命值均大于预设的寿命阈值,此时系统将无法进行数据单元的迁移。如果出现这种情况,存储系统控制器可以向主机发送告警,提醒用户或系统管理员重新设置寿命阈值,也可以转用动态计算寿命的方法。
上述硬盘损耗均衡流程的执行,可以由强制执行命令触发,也可以在存储系统空闲时自动触发,需要说明的是,上述S202-S203,仅是针对某块硬盘上的某个数据单元进行操作,为了完成整个系统中的硬盘间或接入系统的硬盘间的损耗均衡,可以对系统中每块硬盘或接入系统的每块硬盘上的每个数据单元都执行一遍S202-S203的操作。
本发明实施例中,应用上述方案,可以将存储系统中经常进行写操作的数据存储在寿命长的固态硬盘上,不经常进行写操作的数据存储在寿命短的固态硬盘上,从而实现以硬盘为单位进行损耗均衡,换言之,即在硬盘之间进行损耗均衡,针对存储系统避免某一块硬盘因过度擦写而先于其他硬盘出现故障。对于在多块硬盘中存储相关数据的情况,其整体数据有效性和安全性也得到了提高。
图3所示为本发明另一个实施例的损耗均衡方法流程图,示出了在获得存储系统的寿命阈值和写操作次数阈值之后,遍历所有数据单元执行判断及迁移操作的流程,包括以下步骤:
S301,比较下一个数据单元所在的硬盘寿命和系统寿命阈值的大小,如果该数据单元所在硬盘为小于寿命阈值的硬盘,则执行S302,否则执行S304。
由于是遍历过程,所以比较操作的执行对象在损耗流程开始后将从第一个数据单元开始,并根据比较结果执行后续步骤。执行过一次迁移操作之后,再对下一个数据单元执行比较操作,以此类推。
S302,判断该数据单元的写操作次数是否大于写操作次数阈值,如果是,则执行S303,否则执行S306。
S303,将该数据单元迁移到硬盘寿命大于系统寿命阈值的硬盘,迁移完 成后,执行S306。
S304,判断该数据单元的写操作次数是否小于写操作次数阈值,如果是,则执行S305,否则执行S306。
S305,将该数据单元迁移到硬盘寿命小于系统寿命阈值的硬盘,迁移完成后,执行S306。
S306,判断是否已遍历完存储系统中所有的数据单元,如果是,则损耗均衡流程结束,如果否,则返回执行S301。
本步骤用于判断是否系统中的或者接入系统的每块硬盘上的每个数据单元都执行过S301-S305的操作,如果是,说明所有数据单元已经处理完毕,则损耗均衡流程结束,如果否,说明还有数据单元未进行处理,此时应回到S301,对当前所处理数据单元的下一个数据单元进行处理。
本发明实施例中,可以将存储系统中经常进行写操作的数据存储在寿命长的固态硬盘上,不经常进行写操作的数据存储在寿命短的固态硬盘上,从而实现以硬盘为单位进行损耗均衡,换言之,即在硬盘之间进行损耗均衡,针对存储系统避免某一块硬盘因过度擦写而先于其他硬盘出现故障。对于在多块硬盘中存储相关数据的情况,其整体数据有效性和安全性也得到了提高。
相应于上面的方法实施例,本发明实施例还提供一种存储系统控制装置,参见图4所示,包括系统阈值获得模块410、数据单元状态获得模块420和数据单元迁移模块430;
系统阈值获得模块410,用于获得所述存储系统的寿命阈值和写操作次数阈值;
上述两种阈值,用于判断是否对某个数据单元进行迁移。其中,寿命阈值可以采用预先设置的方法,也可以采用动态计算的方法获得;而写操作次数由于一般变化幅度较大,因此多采用动态计算的方法获得。
数据单元状态获得模块420,用于获得数据单元所在硬盘的寿命值和所述数据单元的写操作次数;
在存储系统中,当进行写操作时,存储系统会实时记录/更新被写入数据单元的写操作次数和所在硬盘的寿命值。数据单元写操作次数和硬盘寿命可 以保存于存储系统控制器中,也可以记录在固态硬盘的SMART信息中。对于系统中或者接入系统的某块硬盘上的某个数据单元(数据块或文件),数据单元状态获得模块420通过读取上述所保存的信息,获得该数据单元所在硬盘的寿命值和该数据单元的写操作次数,这两类数据与所述系统阈值获得模块410所获取的两种阈值一起作为数据迁移的判断条件。
数据单元迁移模块430,用于根据所述数据单元所在硬盘的寿命值和寿命阈值的第一比较结果和所述数据单元的写操作次数和写操作次数阈值的第二比较结果,将所述数据单元迁移到与所述第一比较结果关联的硬盘上。
应当理解的是:如果第一比较结果即“所述数据单元所在硬盘的寿命值大于所述寿命阈值”,第二比较结果即“所述数据单元的写操作次数小于所述写操作次数阈值”;这里的迁移的对象“硬盘寿命值小于所述寿命阈值的硬盘”,即与“所述数据单元所在硬盘的寿命值大于所述寿命阈值”的第一比较结果关联的硬盘。
或者,如果第一比较结果即“所述数据单元所在硬盘的寿命值小于所述寿命阈值”,第二比较结果即“所述数据单元的写操作次数大于所述写操作次数阈值”;这里的迁移的对象“硬盘寿命值大于所述寿命阈值的硬盘”,即与“所述数据单元所在硬盘的寿命值小于所述寿命阈值”的第一比较结果关联的硬盘。
参见图5所示,所述装置还可以进一步包括比较模块440,用于比较所述数据单元所在硬盘的寿命值和寿命阈值的大小,及比较所述数据单元的写操作次数和写操作次数阈值的大小;
所述数据单元迁移模块可以是第一数据单元迁移模块430a,用于在所述数据单元所在硬盘的寿命值大于所述寿命阈值,并且所述数据单元的写操作次数小于所述写操作次数阈值时,将所述数据单元迁移到硬盘寿命值小于所述寿命阈值的硬盘上;在所述数据单元所在硬盘的寿命值小于所述寿命阈值,并且所述数据单元的写操作次数大于所述写操作次数阈值时,将所述数据单元迁移到硬盘寿命值大于所述寿命阈值的硬盘上。
对于装置实施例而言,由于其基本相应于方法实施例,所以描述得比较 简单,相关之处参见方法实施例的部分说明即可。
本发明实施例中,上述的硬盘存储系统控制装置,通过将大于寿命阈值的固态硬盘上,小于写操作次数阈值的数据迁移到小于寿命阈值的硬盘上;将小于寿命阈值的固态硬盘上,大于写操作次数阈值的数据迁移到大于寿命阈值的硬盘上,实现了在存储系统中的或接入存储系统的多个固态硬盘之间进行损耗均衡,从而针对存储系统避免某一块硬盘因过度擦写而先于其他硬盘出现故障的情况。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。