多级缓存下固态硬盘的写方法及装置转让专利

申请号 : CN201080003686.X

文献号 : CN102203749B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈骞

申请人 : 华为技术有限公司

摘要 :

本发明提供一种多级缓存下固态硬盘的写方法及装置。该方法包括获取HDD的IO负载值及获取IO负载阈值;如果所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值大于等于所述IO负载阈值,将所述HDD中最高热度的内容写入所述SSD中,将所述SSD中最低热度的内容写入所述HDD中,以进行所述SSD和HDD中内容的互换。本发明实施例可以降低成本。

权利要求 :

1.一种多级缓存下固态硬盘的写方法,其特征在于,包括:

获取普通硬盘HDD的输入输出IO负载值及获取IO负载阈值;

如果多级缓存中的所述HDD中内容的最高热度超过所述多级缓存中的固态硬盘SSD中内容的最低热度,且所述HDD的IO负载值大于等于所述IO负载阈值,将所述HDD中最高热度的内容写入所述SSD中,将所述SSD中最低热度的内容写入所述HDD中,以进行所述SSD和HDD中内容的互换。

2.根据权利要求1所述的方法,其特征在于,所述IO负载阈值为预先设定的固定值。

3.根据权利要求2所述的方法,其特征在于,所述预先设定的固定值为80%。

4.根据权利要求1所述的方法,其特征在于,所述获取IO负载阈值,包括:根据一定时间内的HDD的负载值,获取所述IO负载阈值。

5.根据权利要求4所述的方法,其特征在于,所述根据一定时间内的HDD的负载值,获取所述IO负载阈值的计算公式为:Uthld=Max(Umin,Min(Umax,Uaver+(Utmax-Uaver)×(1-Uaver)))其中,Uthld为IO负载阈值,Umax和Umin分别为预先设定的IO负载允许的最大值和最小值,Uaver为预先设定的时间内的HDD的IO负载的平均值,Utmax为预先设定的时间内的HDD的IO负载的峰值,Max()为取最大值运算,Min()为取最小值运算。

6.根据权利要求1所述的方法,其特征在于,当所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值小于所述IO负载阈值时,所述方法还包括:比较所述SSD中内容的最低热度和所述HDD中内容的最低热度;

如果所述SSD中内容的最低热度小于等于所述HDD中内容的最低热度时,将所述SSD中热度最低的内容与所述HDD中热度最高的内容互换,使得所述SSD中的内容的最低热度大于所述HDD中内容的最低热度。

7.根据权利要求1所述的方法,其特征在于,当所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值小于所述IO负载阈值时,所述方法还包括:获取进入SSD的热度阈值;

比较所述HDD中内容的最高热度和所述热度阈值;

如果所述HDD中内容的最高热度大于等于所述热度阈值,将所述HDD中最高热度的内容写入所述SSD中,将所述SSD中最低热度的内容写入所述HDD中,以进行所述SSD和HDD内容的互换。

8.根据权利要求7所述的方法,其特征在于,所述获取进入SSD的热度阈值的计算公式为:Hthld=Max(Hmin,Min(Hmax,Hlow+(Hhigh-Hlow)×(1-Uaver)))其中,Hthld为热度阈值,Hhigh和Hlow分别为SSD上内容热度的最高值和最低值,Uaver为预先设定的时间内的HDD的IO负载的平均值,Hmax和Hmin分别为预先设定的允许的热度的最大值和最小值,Max()为取最大值运算,Min()为取最小值运算。

9.根据权利要求1-8任一项所述的方法,其特征在于,所述获取HDD的IO负载值,包括:通过shell下的iostat-x命令,获取所述HDD的IO负载值;

或者,

通过系统提供的API接口,获取所述HDD的IO负载值。

10.一种多级缓存下固态硬盘的写装置,其特征在于,包括:

获取模块,用于获取普通硬盘HDD的输入输出IO负载值及获取IO负载阈值;

第一互换模块,用于如果多级缓存中的所述HDD中内容的最高热度超过所述多级缓存中的固态硬盘SSD中内容的最低热度,且所述HDD的IO负载值大于等于所述IO负载阈值,将所述HDD中最高热度的内容写入所述SSD中,将所述SSD中最低热度的内容写入所述HDD中,以进行所述SSD和HDD中内容的互换。

11.根据权利要求10所述的装置,其特征在于,还包括:

第二互换模块,用于当所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值小于所述IO负载阈值时,比较所述SSD中内容的最低热度和所述HDD中内容的最低热度;如果所述SSD中内容的最低热度小于等于所述HDD中内容的最低热度时,将所述SSD中热度最低的内容与所述HDD中热度最高的内容互换,使得所述SSD中的内容的最低热度大于所述HDD中内容的最低热度。

12.根据权利要求10所述的装置,其特征在于,还包括:

第三互换模块,用于当所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值小于所述IO负载阈值时,获取进入SSD的热度阈值并比较所述HDD中内容的最高热度和所述热度阈值;如果所述HDD中内容的最高热度大于等于所述热度阈值,将所述HDD中最高热度的内容写入所述SSD中,将所述SSD中最低热度的内容写入所述HDD中,以进行所述SSD和HDD内容的互换。

说明书 :

多级缓存下固态硬盘的写方法及装置

技术领域

[0001] 本发明涉及存储技术,尤其涉及一种多级缓存下固态硬盘的写方法及装置。

背景技术

[0002] 固态硬盘(Solid State Driver,SSD)具有比普通硬盘(Hard Disk Driver,HDD)更优的输入输出(Input Output,IO)性能,且延迟更低,并且SSD还具有其他优点。但是,SSD的寿命受限于SSD的写擦除次数,例如,单级单元(Single-Level Cell,SLC)可擦除100,000次,多级单元(Multi-Level Cell,MLC)可擦除10,000次;假设一块32GB的MLC的SSD,最多可以写入32*10,000约32TB的数据,在最多反复写入这么多的数据后,SSD就会失效。但是,HDD的读写次数对HDD的寿命影响是很小的,HDD的寿命更易受环境温度、震动情况等因素的影响。
[0003] 对于高带宽需求的流媒体的缓存(cache)服务来说,缓存服务是把热点内容缓存到离用户比较近的边缘服务器上。缓存的关键是缓存替换算法,缓存替换算法是指当缓存空间满的时候进行内容替换的原则,实现缓存较热的内容,替换掉较冷的内容。内容的冷热是随着时间的变化,新的内容不断的注入而不断变化的,所以,缓存的存储介质是不停地进行着数据的写入和删除的。
[0004] 对于如流媒体这种高带宽应用来说,HDD的IO能力是不足的,需要采用SSD,以利用SSD的高IO性能。但是,流媒体的缓存服务又需要多个写入删除,这会影响SSD的使用寿命。为此,考虑到IO性能及使用成本,可以组成多级缓存,该多级缓存由SSD和HDD组成。将热的内容存储在SSD,利用SSD的高IO性能,不太热的内容就可以存储在HDD,以降低成本。
[0005] 根据缓存替换算法,需要进入缓存的内容首先进入HDD,淘汰掉HDD中最冷的内容,如果HDD中最热的内容超过SSD中最冷的内容,则需要交换HDD和SSD的内容,以保持SSD和HDD的内容的热度是由高到低的。但是由于内容热度的不断变化,SSD和HDD中的内容需要频繁互换,这样依然会降低SSD的寿命,造成成本增加。

发明内容

[0006] 本发明实施例是提供一种多级缓存时固态硬盘的写方法及装置,以降低成本。
[0007] 本发明实施例提供了一种多级缓存下固态硬盘的写方法,包括:
[0008] 获取HDD的输入输出IO负载值及获取IO负载阈值;
[0009] 如果所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值大于等于所述IO负载阈值,将所述HDD中最高热度的内容写入所述SSD中,将所述SSD中最低热度的内容写入所述HDD中,以进行所述SSD和HDD中内容的互换。
[0010] 本发明实施例提供了一种多级缓存下固态硬盘的写装置,包括:
[0011] 获取模块,用于获取HDD的输入输出IO负载值及获取IO负载阈值;
[0012] 第一互换模块,用于如果所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值大于等于所述IO负载阈值,将所述HDD中最高热度的内容写入所述SSD中,将所述SSD中最低热度的内容写入所述HDD中,以进行所述SSD和HDD中内容的互换。
[0013] 由上述技术方案可知,本发明实施例通过在进行SSD和HDD的内容互换过程中不仅考虑热度因素,还考虑HDD的IO负载值,在HDD中的热度超过SSD中的热度时,还需要IO负载值大于等于IO负载阈值时对SSD进行写操作,而不是在HDD中的热度超过SSD中的热度即进行对SSD的写操作,可以减少对SSD的写操作,降低成本。

附图说明

[0014] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0015] 图1为本发明第一实施例的方法流程示意图;
[0016] 图2为本发明第二实施例的方法流程示意图;
[0017] 图3为本发明第三实施例的方法流程示意图;
[0018] 图4为本发明实施例中SSD和HDD中内容热度排列示意图;
[0019] 图5为本发明第四实施例的方法流程示意图;
[0020] 图6为本发明第五实施例的方法流程示意图;
[0021] 图7为本发明第六实施例的装置结构示意图。

具体实施方式

[0022] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0023] 图1为本发明第一实施例的方法流程示意图,包括:
[0024] 步骤11:获取HDD的IO负载值及获取IO负载阈值;
[0025] 其中,该IO负载阈值可以为预先设定的固定值,例如80%。该IO负载阈值也可以为动态获取的值,即根据一定时间内的HDD的负载值,动态计算得到所述IO负载阈值。
[0026] 步骤12:如果所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值大于等于所述IO负载阈值,将所述HDD中最高热度的内容写入所述SSD中,将所述SSD中最低热度的内容写入所述HDD中,以进行所述SSD和HDD中内容的互换。
[0027] 本实施例通过在进行SSD和HDD的内容互换过程中不仅考虑热度因素,还考虑HDD的IO负载值,可以减少对SSD的写操作,降低成本。
[0028] 图2为本发明第二实施例的方法流程示意图,本实施例以IO负载阈值为固定值为例,本实施例包括:
[0029] 步骤21:确定HDD中内容的最高热度超过SSD中内容的最低热度。
[0030] 其中,可以根据点击量来确定HDD或者SSD中各内容的热度,例如,点击量高的内容则热度高。
[0031] 步骤22:获取HDD的当前IO负载值。
[0032] 其中,可以通过shell下的iostat-x命令,获取所述HDD的IO负载值,也可以通过系统提供的API接口,获取所述HDD的IO负载值。
[0033] 具体地,在linux环境下,可以通过shell命令iostat-x来获取磁盘的负载信息,其中%util字段反映的就是当前磁盘/分区的整体负载情况,如下的例子显示了系统中共有5块磁盘c0d0~c0d4,c0d0的IO负载值为29.47%,c0d4的IO负载值为12.37%:
[0034] Cache:#iostat-x
[0035] Linux 2.6.27.45-0.1-default(Cache)10/29/10 _x86_64
[0036] avg-cpu:%user %nice%system%iowait %steal %idle
[0037] 13.01 0.02 8.88 4.30 0.00 74.89
[0038]
[0039]
[0040] 另外,如果操作系统或者文件系统提供了系统API接口,则可以通过API接口获取IO负载值。
[0041] 步骤23:判断该当前IO负载值是否大于等于预先设定的阈值,如果是,执行步骤24,否则,执行步骤25。
[0042] 通常,%util字段的值达到70%和80%说明磁盘的负载比较高,所以,可以将HDD的IO阈值设置为一个较高的值,例如80%。
[0043] 步骤24:进行HDD和SSD内容的互换。
[0044] 例如,应用模块向HDD和SSD发送指示消息,该指示消息可以使得HDD将热度高的内容移动到SSD中,将SSD中热度低的内容移动到HDD中,实现SSD和HDD的内容互换。
[0045] 步骤25:保持内容不移动。
[0046] 例如,不发送指示内容移动的消息。
[0047] 本实施例通过在HDD中内容的热度超过SSD中内容的热度后,将HDD的IO负载阈值与预先设定的固定值比较,在超过该固定值后再写入SSD中,可以减少SSD中写操作的次数,延长SSD的使用寿命,降低成本。
[0048] 图3为本发明第三实施例的方法流程示意图,本实施例可以进一步保证命中率,本实施例包括:
[0049] 步骤31:确定HDD中内容的最高热度超过SSD中内容的最低热度;
[0050] 步骤32:获取HDD的当前IO负载值;
[0051] 步骤33:判断该当前IO负载值是否大于等于预先设定的阈值,如果是,执行步骤35,否则,执行步骤34。
[0052] 上述步骤的具体内容可以参见步骤21-23。
[0053] 因为设置了HDD的IO负载阈值,可能改变SSD和HDD中内容的热度排序,可能导致SSD的尾部内容(热度最低的内容)低于HDD的头部内容(热度最高的内容)。例如,参见图4,左侧的内容表明SSD和HDD的热度是按序排列的,右侧的内容表明SSD和HDD的内容的热度出现不按序排列的情况,其中,图4中,热度的值越大表明热度越高。
[0054] 此时,为了保证命中率,需要保证SSD尾部内容的热度至少高于HDD尾部内容的热度。为此,本实施例还包括如下步骤:
[0055] 步骤34:判断SSD尾部内容热度是否大于HDD尾部内容热度,如果是,执行步骤36,否则,执行步骤35。
[0056] 步骤35:进行HDD和SSD内容的互换,保证SSD尾部内容热度大于HDD尾部内容热度。
[0057] 例如,应用模块向SSD和HDD发送指示消息,该指示消息指示HDD将HDD中最热的内容移动至SSD中,并且指示SSD将热度最小的内容移动至HDD中。
[0058] 步骤36:保持内容不移动。
[0059] 本实施例通过在HDD中内容超过SSD中内容后,将HDD的IO负载阈值与预先设定的固定值比较,在超过该固定值后再写入SSD中,可以减少SSD中写操作的次数,延长SSD的使用寿命,降低成本。并且,本实施例通过比较SSD和HDD的尾部内容的热度,在HDD尾部内容的热度大于等于SSD尾部内容的热度后,将HDD的热度最高的内容互换SSD中热度最低的内容,可以保证用户向缓存中获取数据的命中率。
[0060] 图5为本发明第四实施例的方法流程示意图,本实施例以IO负载阈值为动态阈值为例,本实施例包括:
[0061] 步骤51:确定HDD中内容的最高热度超过SSD中内容的最低热度。
[0062] 步骤52:获取HDD的当前IO负载值。
[0063] 其中,步骤51-52的具体内容可以参见图2的步骤21-22。
[0064] 步骤53:获取一定时间内的HDD的负载值,并根据一定时间内的HDD的负载值,获取动态的IO负载阈值。
[0065] 例如,计算公式可以如下:
[0066] Uthld=Max(Umin,Min(Umax,Uaver+(Utmax-Uaver)×(1-Uaver)));
[0067] 其中,Uthld为IO负载阈值,Umax和Umin分别为预先设定的IO负载允许的最大值和最小值,Uaver为预先设定的时间内的HDD的IO负载的平均值,Utmax为预先设定的时间内的HDD的IO负载的峰值,Max()为取最大值运算,Min()为取最小值运算。
[0068] 通过上述计算公式可以看出,Uthld能够反映最近一段时间的平均IO负载情况;Uthld稍高于平均IO负载Uaver,如果Uaver较大,则Uthld上浮较小,如果Uaver较小,则Uthld上浮较大;可以将Umax设置为80%,Umin设置为40%。
[0069] 步骤54:判断该当前IO负载值是否大于等于该动态的IO负载阈值,如果是,执行步骤55,否则,执行步骤56。
[0070] 步骤55:进行HDD和SSD内容的互换。
[0071] 步骤56:保持内容不移动。
[0072] 步骤55-56的具体内容可以参见步骤24-25。
[0073] 可以理解的是,本实施例为了保证命中率,可以如图3所示,进一步比较SSD尾部内容和HDD尾部内容的热度,并进行如图3所示的相应处理。
[0074] 本实施例通过在HDD中内容超过SSD中内容后,将HDD的IO负载阈值与动态阈值比较,在超过该动态阈值后再写入SSD中,可以减少SSD中写操作的次数,延长SSD的使用寿命,降低成本。另外,本实施例采用动态阈值可以更好地反映实际情况,均衡系统资源。
[0075] 图6为本发明第五实施例的方法流程示意图,包括:
[0076] 步骤61:确定HDD中内容的最高热度超过SSD中内容的最低热度。
[0077] 步骤62:获取HDD的当前IO负载值。
[0078] 步骤61-62的具体内容可以参见步骤21-22。
[0079] 步骤63:判断当前IO负载值是否大于等于IO负载阈值,若是,执行步骤65,否则,执行步骤64。
[0080] 其中,该IO负载阈值可以为固定值,也可以为动态值,具体判断内容可以参见步骤23或者步骤53-54。
[0081] 如果按照IO负载阈值的方式进行处理,可能出现内容都被HDD拦截的情况,此时即使HDD的IO能够负担,但是从尽可能均衡利用系统资源的角度看,可以要求HDD不要拦截太多,将部分比较热的内容升级到SSD中。为此,本实施例还包括:
[0082] 步骤64:判断HDD中内容的热度是否大于等于进入SSD的热度阈值,若是,执行步骤65,否则,执行步骤66。
[0083] 其中,进入SSD的热度阈值可以采用如下计算公式得到:
[0084] Hthld=Max(Hmin,Min(Hmax,Hlow+(Hhigh-Hlow)×(1-Uaver)))
[0085] 其中,Hthld为热度阈值,Hhigh和Hlow分别为SSD上内容热度的最高值和最低值,Uaver为预先设定的时间内的HDD的IO负载的平均值,Hmax和Hmin分别为预先设定的允许的热度的最大值和最小值,Max()为取最大值运算,Min()为取最小值运算。
[0086] 从上述计算公式可以看出,Hthld能够随最近一段时间的HDD的IO平均负载动态变化;如果Uaver较大,则Hthld相对Hlow增加较小,如果Uaver较小,则Hthld相对Hlow增加较大;Hmax可以设置为Hhigh的80%,Hmin可以设置为Hlow。
[0087] 步骤65:进行HDD和SSD内容的互换。
[0088] 步骤66:保持内容不移动。
[0089] 步骤65-66的具体内容可以参见步骤24-25。
[0090] 另外,可以理解的是,本实施例依然可以如图3所示再进行SSD和HDD中尾部内容比较及相应处理流程,以保证命中率。
[0091] 本实施例通过在进行SSD和HDD的内容互换过程中不仅考虑热度因素,还考虑HDD的IO负载值,可以减少对SSD的写操作,降低成本。另外,本实施例通过设置进入SSD的阈值,可以均衡HDD和SSD的占用情况。
[0092] 图7为本发明第六实施例的装置结构示意图,包括获取模块71和第一互换模块72;获取模块71用于获取所述HDD的IO负载值及获取IO负载阈值;第一互换模块72用于如果所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值大于等于所述IO负载阈值,将所述HDD中最高热度的内容写入所述SSD中,将所述SSD中最低热度的内容写入所述HDD中,以进行所述SSD和HDD中内容的互换。
[0093] 本实施还可以进一步包括第二互换模块73,第二互换模块73用于当所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值小于所述IO负载阈值时,比较所述SSD中内容的最低热度和所述HDD中内容的最低热度;如果所述SSD中内容的最低热度小于等于所述HDD中内容最低热度时,将所述SSD中热度最低的内容与所述HDD中热度最高的内容互换,使得所述SSD中的内容的最低热度大于所述HDD中内容的最低热度。
[0094] 本实施还可以进一步包括第三互换模块74,第三互换模块74用于当所述多级缓存中的HDD中内容的最高热度超过所述多级缓存中的SSD中内容的最低热度,且所述HDD的IO负载值小于所述IO负载阈值时,获取进入SSD的热度阈值并比较所述HDD中内容的最高热度和所述热度阈值;如果所述HDD中内容的最高热度大于等于所述热度阈值,将所述HDD中最高热度的内容写入所述SSD中,将所述SSD中最低热度的内容写入所述HDD中,以进行所述SSD和HDD内容的互换。
[0095] 本实施例通过在进行SSD和HDD的内容互换过程中不仅考虑热度因素,还考虑HDD的IO负载值,可以减少对SSD的写操作,降低成本。
[0096] 可以理解的是,上述方法及设备中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
[0097] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0098] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同互换;而这些修改或者互换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。