一种存储设备及其存储数据的方法转让专利

申请号 : CN201511017042.7

文献号 : CN105677236B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 余小安

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

摘要 :

本发明实施例公开了一种存储设备及其存储数据的方法,存储设备包含缓存控制器、缓存和持久化存储介质,缓存包含多个数据块。方法包括缓存控制器根据多个数据块中每一个数据块的写访问的次数AC以及写访问所访问的地址的数量AN获得刷盘指数。将多个数据块中的部分数据块中的数据存储到所述持久化存储介质。其中,部分数据块中的每一个数据块的刷盘指数在多个数据块的刷盘指数从大到小的序列中的位置均大于序列阈值。本发明实施例将刷盘指数低、写放大较大的数据块暂不存储到持久化存储介质。将其在cache中聚合,提升刷盘指数。当数据块的刷盘指数提升后,再将数据块存储到持久化存储介质中,减少了数据的写放大。

权利要求 :

1.一种存储设备存储数据的方法,其特征在于,所述存储设备包含缓存控制器、缓存和持久化存储介质,所述缓存包含多个数据块;所述方法包括:所述缓存控制器根据所述多个数据块中每一个数据块的写访问的次数AC以及所述写访问所访问的地址的数量AN获得刷盘指数;

将所述多个数据块中的部分数据块中的数据存储到所述持久化存储介质;其中,所述部分数据块中的每一个数据块的刷盘指数在所述多个数据块的刷盘指数从大到小的序列中的位置均大于序列阈值。

2.根据权利要求1所述的方法,其特征在于,还包括:

将所述多个数据块中除所述部分数据块外的数据块中的数据写入所述持久化存储介质的临时数据区。

3.根据权利要求1所述的方法,其特征在于,所述缓存控制器优先将所述部分数据块中超过缓存时间的数据块中的数据存储到持久化介质中。

4.根据权利要求1所述的方法,其特征在于,所述多个数据块中的数据还存储在所述存储设备的日志中。

5.根据权利要求1所述的方法,其特征在于,每一个数据块的刷盘指数具体为:X*AC-Y*AN,其中X和Y为常量。

6.一种存储设备,所述存储设备包含缓存控制器、缓存和持久化存储介质,所述缓存包含多个数据块;其中,缓存控制器,用于根据所述多个数据块中每一个数据块的写访问的次数AC以及所述写访问所访问的地址的数量AN获得刷盘指数;将所述多个数据块中的部分数据块中的数据存储到所述持久化存储介质;其中,所述部分数据块中的每一个数据块的刷盘指数在所述多个数据块的刷盘指数从大到小的序列中的位置均大于序列阈值;

所述持久化存储介质用于存储所述部分数据块中的数据。

7.根据权利要求6所述的存储设备,其特征在于,所述缓存控制器还用于,将所述多个数据块中除所述部分数据块外的数据块中的数据写入所述持久化存储介质的临时数据区。

8.根据权利要求6所述的存储设备,其特征在于,所述缓存控制器,优先将所述部分数据块中超过缓存时间的数据块中的数据存储到持久化介质中。

9.根据权利要求6所述的存储设备,其特征在于,所述多个数据块中的数据还存储在所述存储设备的日志中。

10.根据权利要求6所述的存储设备,其特征在于,每一个数据块的刷盘指数具体为:X*AC-Y*AN,其中X和Y为常量。

说明书 :

一种存储设备及其存储数据的方法

技术领域

[0001] 本发明涉及数据存储技术领域,尤其涉及一种存储设备及其存储数据的方法。

背景技术

[0002] 在现有技术中,将写数据先写入存储设备的缓存(Cache)中,同时将写数据写入存储设备的日志中,写日志保障数据不因掉电丢失。当Cache满或日志写满数据,将Cache中的数据全部写入到持久化存储介质中,同时删除日志,其中,将缓存中的数据写到持久化存储介质中称为刷盘。刷盘造成有些合并度比较小的数据写入持久化存储介质中,写放大率仍然较高。

发明内容

[0003] 本发明实施例提供了一种存储设备及其存储数据的方法。
[0004] 一方面,本申请提出了一种存储设备存储数据的方法,该方法通过缓存控制器获取每个数据块的刷盘指数。数据块的刷盘指数是通过缓存控制器根据多个数据块中每一个数据块的写访问次数AC以及同一个数据块中写访问所访问的地址的数量AN获得。将多个数据块中部分数据块中的数据存储到所述持久化存储介质时,部分数据块中的每一个数据块的刷盘指数在多个数据块的刷盘指数从大到小的序列中的位置均大于序列阈值。从而同时根据一个数据块中的所访问的地址数量以及每个地址的访问次数来确定刷盘指数,减少数据的写放大。
[0005] 在一个可能的设计中,在将刷盘指数满足阈值的数据块中包括的数据写入持久化存储介质后,还将刷盘指数不满足阈值的数据块中的数据写入持久化存储介质的临时数据区。使不满足阈值的数据块中包括的数据在清除缓存和日志的情况下,又发生掉电时,可以直接从临时数据区中将其恢复,保证了缓存中数据的可靠性。
[0006] 在一个可能的设计中,对缓存中的数据块刷盘时,优先将部分数据块中超过缓存时间的数据块中包括的数据存储到持久化存储介质中,再对刷盘指数超出阈值的数据块中包括的数据存储到持久化存储介质中。从而使超过缓存时间的数据块中包括的数据能够及时的刷盘到持久化存储介质中,保证存储设备中数据存储的安全性。
[0007] 在一个可能的设计中,数据在写入缓存的同时,还写入到存储设备的日志中。缓存中的数据在掉电等情况下丢失时,可以通过存储设备的日志将缓存中没有存储到持久化存储介质的数据找回。
[0008] 在一个可能的设计中,刷盘指数具体可以是:X*AC-Y*AN,其中X和Y为常量。通过对AC和AN配置一个常量,对AC和AN的权重进行配置,使计算结果可以根据不同的存储设备进行调节。
[0009] 另一方面,本申请包括了一种存储设备,该存储设备包含缓存控制器、缓存和持久化存储介质,所述缓存包含多个数据块。所述缓存控制器包括用于确定缓存中存储的数据以及计算刷盘指数。刷盘指数是通过缓存控制器根据多个数据块中每一个数据块的写访问次数AC以及同一个数据块中写访问所访问的地址的数量AN获得。以及,缓存控制器用于将缓存中部分刷盘指数满足阈值的数据块中包括的数据刷盘到持久化存储介质中。部分数据块中的每一个数据块的刷盘指数在多个数据块的刷盘指数从大到小的序列中的位置均大于序列阈值。从而同时根据一个数据块中的所访问的地址数量以及每个地址的访问次数来确定刷盘指数,减少数据的写放大。
[0010] 在一个可能的设计中,当对缓存中的数据块刷盘时,优先对部分数据块中超过缓存时间的数据块中包括的数据存储到持久化存储介质中,再对刷盘指数超出阈值的数据块中包括的数据存储到持久化存储介质中。从而使超过缓存时间的数据块中包括的数据能够及时的刷盘到持久化存储介质中,保证存储设备中数据存储的安全性。
[0011] 在一个可能的设计中,数据在写入缓存的同时,还写入到存储设备的日志中。缓存中的数据在掉电等情况下丢失时,可以通过存储设备的日志将缓存中没有刷盘的数据找回。
[0012] 在一个可能的设计中,刷盘指数具体可以是:X*AC-Y*AN,其中X和Y为常量。通过对AC和AN配置一个常量,对AC和AN的权重进行配置,使计算结果可以根据不同的存储设备进行调节。
[0013] 本发明实施例提供一种存储设备及其存储数据的方法,根据多个数据块中每一个数据块的写访问的次数AC以及写访问所访问的地址的数量AN获得刷盘指数。将缓存中部分刷盘指数满足阈值的数据块中包括的数据刷盘到持久化存储介质中。从而减少了部分刷盘指数低的数据块在将数据刷盘到持久化存储介质时造成的写放大的问题,提高了存储设备的使用效率。

附图说明

[0014] 图1为本发明实施例提供的一种元数据表;
[0015] 图2为本发明实施例提供的一种缓存中按数据块排列的需要存储到持久化存储介质的数据信息表;
[0016] 图3为本发明实施例提供的一种存储数据的方法流程图;
[0017] 图4为本发明实施例提供的一种存储设备的硬件结构图;
[0018] 图5为本发明实施例提供的一种存储数据的效果对比图。

具体实施方式

[0019] 下面,通过具体实施例结合附图对本发明作进一步的说明。
[0020] 一种存储设备,包括缓存控制器、缓存(cache)和持久化存储介质。缓存用于暂时存储将要写入持久化存储介质的数据,数据通过缓存控制器写入缓存中。缓存控制器用于对写入缓存的内容进行控制,以及对缓存将要写入持久化存储介质的数据进行控制。
[0021] 缓存控制器统计cache中每个数据块的刷盘指数。将cache中的数据块按照刷盘指数进行排列,并根据刷盘指数进行刷盘。所述根据刷盘指数刷盘是指将刷盘指数超出阈值的数据块进行刷盘。阈值可以根据不同的存储设备设定,也可以根据存储设备在不同时刻进行的不同任务设置,在此不再敖述。本发明实施例中的达到阈值包括大于(>)、大于等于(≥)、小于(<)、小于等于(≤),或等于(=)设定的阈值、又或者是位于设定的阈值区间。
[0022] 在本发明的实施例中,将cache中的数据块按照刷盘指数刷盘前,优先对超过缓存时间的数据块中包括的数据存储到持久化存储介质中,再对刷盘指数超出阈值的数据块存储到持久化存储介质中。
[0023] 刷盘指数是指同一数据块中写访问所访问的地址的数量AN以及同一数据块中每一个数据的写访问的次数AC进行计算。在本发明的实施例中,刷盘指数可采用的具体计算方式为:
[0024] 刷盘指数=(X*AC)-(Y*AN),其中X、Y为常量。
[0025] 在本发明的实施例中,刷盘指数还可以采用的具体计算方式为:
[0026] 刷盘指数=(AC*M)+(N*AN),其中M、N为常量。
[0027] 在本发明的实施例中,刷盘指数更可以采用的具体计算方式为:
[0028] 刷盘指数=(AC*A)/(B*AN),其中A、B为常量。
[0029] 本领域技术人员知道,上述刷盘指数的计算只是本发明实施例中所列举的一个例子,不能用于对本发明的具体内容进行限定。只要是考虑本发明实施例中所提到的同一数据块中写访问所访问的地址的数量以及同一数据块中每一个数据的写访问的次数,从而计算出一个值或范围,或者是位于该范围的区间都在本发明的保护范围内。
[0030] 在本发明实施例中,同一数据块中写访问所访问的地址的数量用于表示写入同一数据块的不同地址的数据条数。同一数据块中每一个数据的写访问的次数用于表示一个数据块中所有同一地址被多次写入的次数。例如Cache中第一数据块包括20个地址,其中地址1写入1次、地址3写入2次、地址4写入1次、地址7写入4次、地址15写入1次、地址16写入3次、地址18写入1次、地址20写入5次。在本例子中写访问所访问的地址的数量的和AN为8,写访问的次数AC为10。
[0031] 缓存控制器将cache中的数据块存储到持久化存储介质时,遍历cache中的每条数据,通过查找元数据表,将各个数据在持久化存储介质中存储的位置发送到cache中。对cache中的每条数据找到持久化存储介质中的存储位置,将cache中的数据按照在持久化存储介质的不同数据块分块在cache中重新进行存储。对cache中的数据块存储到持久化存储介质时,还需要将持久化存储介质中该数据块的所有内容读到cache中,与cache中将要写入的内容合并,合并完成后再将整个合并后的数据块写入持久化存储介质中。
[0032] 在一个例子中,图1本发明实施例提供的一种元数据表。如图1示,元数据表用于表示持久化存储介质中各个物理地址的数据信息,在本发明的实施例中,仅示例性的列出了部分内容。包括数据块33、地址“16”、数据的名称“File4”、该区域的索引关键字为“0323316”、该区域在存储介质中的物理地址“A00001”。数据块51、地址“24”数据的名称“File1”、该区域的索引关键字“0325124”、该区域在存储介质中的物理地址“B00001”。数据块76、地址“19”、数据的名称“File2”、该区域的索引关键字“0327619”、该区域在存储介质中的物理地址“C00001”;地址“22”、数据的名称“File3”、该区域的索引关键字“0327622”、该区域在存储介质中的物理地址“C00002”。缓存控制器通过查找元数据表,获取元数据表中各个数据块中各条数据的存储地址。
[0033] 缓存控制器在获得各条数据的存储地址后,将对cache中包括的各个数据根据所在的数据块重新进行排列与存储。在将cache中的数据按照数据块进行排列后,分别对各个数据块计算刷盘指数。
[0034] 在一个例子中,给出了cache中数据按数据块进行排列的情况,在该例子中,不考虑超时。图2为本发明实施例提供的一种缓存中按数据块排列的需要存储到持久化存储介质的数据信息表。
[0035] 若采用的刷盘指数计算公式为:
[0036] 刷盘指数=(X*AC)-(Y*AN)
[0037] 如图2示,则:
[0038] 数据块“33”中包括一个需要写入的数据,写访问的次数AC为1,写访问所访问的地址的数量AN为0。数据块“51”中包括一个需要写入的数据,写访问的次数AC为2,写访问所访问的地址的数量AN为1。数据块“76”中包括二个需要写入的数据,写访问的次数AC为2,写访问所访问的地址的数量AN为5。
[0039] 若X为3,Y为1,则:
[0040] 数据块“33”的刷盘指数为3,数据块“51”的刷盘指数为3,数据块“76”的刷盘指数为1。若阈值为大于等于1,则需要优先对数据块“33”和数据块“51”中包括的数据存储到持久化存储介质中,最后将数据块“76”中包括的存储存储到持久化存储介质中。
[0041] 在将数据块刷盘时,需要将持久化存储介质中数据块的内容读入cache中,与cache中数据块需要写入的内容进行合并。最后将合并后的数据块存储到元数据中包括该数据块的的持久化存储介质中的相应地址。
[0042] 在本发明的实施例中,将数据写入缓存的同时,数据还将被写入到存储设备的日志中。存储设备的日志用于cache在突发情况下(如断电),若cache中的数据没有保存且丢失时,能够通过日志将cache中的数据恢复。
[0043] 在一个例子中,将cache中的部分数据刷盘后,cache中剩余的数据可以写入持久化存储介质的临时数据区中,再将cache中及日志中的所有数据清除。临时数据区是在持久化存储介质中划分的一个存储空间,其存储特点可以与存储介质相同。将未刷盘数据写入持久化存储介质的临时数据区是为了在清除cache和日志后,该部分数据能够被恢复。将cache中剩余的数据发送至持久化存储介质的临时数据区是将cache中剩余的数据进行打包后发送。
[0044] 将cache和日志清除后,将持久化存储介质的临时数据区中的数据读取到cache中。将持久化存储介质的临时数据区读取到cache中是将打包的文件读取到业务服务器中,通过业务服务器对打包内容进行解析后逐条发送到cache中。到下次刷盘时,再对cache中包括的数据块计算刷盘指数,进行刷盘。
[0045] 在本发明的实施例中,也可以不将cache中未达到阈值的数据块存储至持久化存储介质的临时数据区中。当对cache和日志进行清除时,仅清理cache中刷盘到持久化存储介质的内容,以及将日志清除。这样就不需要重新从临时数据区中把数据读取到cache中,减少了写放大。
[0046] 在一个例子中,可以将刷盘指数高的约90%数据刷盘,另外大约10%数据写入持久化存储介质的临时数据区。这样相对于把所有数据都刷盘,可以减少写效率最差的10%数据的写放大。
[0047] 图3本发明实施例提供的一种存储设备存储数据的方法流程图。在一种存储设备存储数据的方法中,该存储设备包含缓存控制器、缓存和持久化存储介质,缓存中包含多个数据块。如图3示,方法包括:
[0048] S301,所述缓存控制器根据所述多个数据块中每一个数据块的写访问的次数AC以及所述写访问所访问的地址的数量AN获得刷盘指数。
[0049] 在本发明的实施例中,将写请求中包括的数据发送至cache的同时,还将该需要写入的数据及相关信息发送至存储设备的日志,在日志中增加一条写入记录。以应对在突发情况下(如cache突然断电),能够通过日志将写入cache中的数据恢复。
[0050] 将一条数据写入cache的同时,缓存控制器将数据按照排序规则将数据存储到cache中的不同位置(例如树形结构存储或名字首字母顺序规则存储)。若写入cache的数据是对cache中原有数据的替换,则将该条数据覆盖的写入原有数据的位置。
[0051] 在缓存控制器的空间满了以后或日志满了后,将触发cache中的缓存控制器启动刷盘。
[0052] 刷盘时,缓存控制器通过读取元数据表确定每个数据块中包括的数据,将cache中的数据分数据块进行重新排布。
[0053] 缓存控制器对cache中的每个数据块根据多个数据块中每一个数据块的写访问的次数AC以及写访问所访问的地址的数量AN获得刷盘指数。多个数据块中的每一个数据的写访问的次数用于表示写入同一数据块的不同地址的数据条数。写访问所访问的地址的数量用于表示一个数据块中所有同一地址被多次写入的次数。
[0054] 在本发明的实施例中,刷盘指数可采用的具体计算方式为:
[0055] 刷盘指数=(X*AC)-(Y*AN),其中X、Y为常量。
[0056] 在本发明的实施例中,刷盘指数还可以采用的具体计算方式为:
[0057] 刷盘指数=(AC*M)+(N*AN),其中M、N为常量。
[0058] 在本发明的实施例中,刷盘指数更可以采用的具体计算方式为:
[0059] 刷盘指数=(AC*A)/(B*AN),其中A、B为常量。
[0060] 本领域技术人员知道,上述刷盘指数的计算只是本发明实施例中所列举的一个例子,不能用于对本发明的具体内容进行限定。只要是考虑本发明实施例中所提到的多个数据块中的每一个数据块的写访问所访问的地址的数量以及多个数据块中的每一个数据的写访问的次数,从而计算出一个值或范围,又或者是位于该范围的区间都在本发明的保护范围内。
[0061] 在本发明的实施例中,将cache中的数据块按照刷盘指数刷盘前,缓存控制器优先对计时超过该数据块的时间阈值的数据块中包括的数据进行刷盘,再对刷盘指数超出阈值的数据块进行刷盘。
[0062] S302,将所述多个数据块中的部分数据块中的数据存储到所述持久化存储介质。其中,所述部分数据块中的每一个数据块的刷盘指数在所述多个数据块的刷盘指数从大到小的序列中的位置均大于序列阈值。
[0063] 在cache启动刷盘后,首先需要根据cache中每个数据块的刷盘指数,根据刷盘指数将cache中的数据块按照一定的排序进行部分刷盘。部分刷盘是指将刷盘指数高于阈值的数据块刷盘。阈值可以根据不同的存储设备而设定不同,也可以根据存储设备在不同时刻进行的不同任务进行不同的设置,在此不再敖述。本发明实施例中的阈值范围包括大于(>)、大于等于(≥)、小于(<)、小于等于(≤),或等于(=)设定的阈值、又或者是位于设定的阈值区间。
[0064] 对超时数据块及刷盘指数满足阈值的数据块在刷盘时,通过查找元数据表,确定该数据块中写入的各个数据在持久化存储介质中的存储位置,将该数据块中包括的各条数据写入持久化存储介质中的具体位置。
[0065] 在一个例子中,根据刷盘指数将cache中的数据块按照一定的排序部分刷盘后,将多个数据块中除所述部分数据块外的数据块中的数据写入持久化存储介质的临时数据区,再将cache中及存储设备的日志中的所有数据清除。持久化存储介质的临时数据区是在存储介质中划分的一个存储空间,其存储特点可以与存储介质相同。将多个数据块中除所述部分数据块外的数据块中的数据写入持久化存储介质的临时数据区是为了在清除cache和日志后,该部分数据能够在掉电等场景下被恢复。
[0066] 将cache和日志清除后,将持久化存储介质的临时数据区中的数据读取到cache中。等到下次刷盘时,再对cache中的数据计算刷盘指数,再将cache中的部分数据存储到持久化存储介质中。需要注意的是,每个数据块在cache中都设定有超时时间,当数据块中的一个数据进入cache后,缓存控制器对该数据块进行时间统计,当该数据块中有新的数据写入时,则对该数据块重新计时。缓存控制器优先将所述部分数据块中超过缓存时间的数据块中的数据存储到所述持久化介质中。
[0067] 在本发明的实施例中,也可以不将cache中未达到阈值的数据块存储至持久化存储介质的临时数据区中。当对cache和日志进行清除时,仅清理cache中存储到持久化存储介质的内容,以及将日志清除。这样就不需要重新从临时数据区中把数据读取到cache中,减少了写放大。
[0068] 图4为本发明实施例提供的一种存储设备的硬件结构图,如图4所示,包括缓存控制器、缓存(Cache)和持久化存储介质。各个部分通过总线协议进行连接。
[0069] 在本发明实施例中,缓存控制器可以是控制器或处理器等。缓存控制器用于将处理后的数据存储至缓存中,再从缓存将数据存储至持久化存储介质。在向缓存发送数据的同时,还将发送的数据写入存储设备的日志中。
[0070] 持久化存储介质可以是直接连接的磁盘设备或固态硬盘(SSD)设备。也可以是通过网络连接的存储区域网络设备(SAN)。持久化存储介质用于数据的永久存储。
[0071] 持久化存储介质的临时数据区可以设置在存储介质中,也可以是单独的存储介质。通过设置临时数据区,从而保证保留在高速缓存器中的刷盘指数低的数据块在高速缓存器断电后,能够通过临时数据区恢复。
[0072] 存储设备的缓存用于接收业务服务器发送的数据,对接收的数据进行排序和暂存,再将数据发送至存储介质或临时数据区中。
[0073] 缓存控制器包括用于根据多个数据块中每一个数据块的写访问的次数AC以及所述写访问所访问的地址的数量AN获得刷盘指数。
[0074] 在本发明的实施例中,将写请求中包括的数据发送至cache的同时,还将该需要写入的数据及相关信息发送至日志,在日志中增加一条写入记录。以应对在突发情况下(如cache突然断电),能够通过日志将写入cache中的数据恢复。
[0075] 当cache中的写入空间满了以后或日志满了后,将触发缓存控制器对cache的刷盘。
[0076] 刷盘时,通过读取元数据表确定每个数据块中包括的数据,将cache中的数据按数据块的顺序进行重新排布。
[0077] 刷盘指数是通过多个数据块中的每一个数据块的写访问的次数AC以及写访问所访问的地址的数量AN进行计算。多个数据块中的每一个数据的写访问的次数用于表示写入同一数据块的不同地址的数据条数。写访问所访问的地址的数量用于表示一个数据块中所有同一地址被多次写入的次数。在本发明的实施例中,刷盘指数可采用的具体计算方式为:
[0078] 刷盘指数=(X*AC)-(Y*AN),其中Z、Y为常量。
[0079] 在本发明的实施例中,刷盘指数还可以采用的具体计算方式为:
[0080] 刷盘指数=(AC*M)+(N*AN),其中M、N为常量。
[0081] 在本发明的实施例中,刷盘指数更可以采用的具体计算方式为:
[0082] 刷盘指数=(AC*A)/(B*AN),其中A、B为常量。
[0083] 本领域技术人员知道,上述刷盘指数的计算只是本发明实施例中所列举的一个例子,不能用于对本发明的具体内容进行限定。只要是考虑本发明实施例中所提到的多个数据块中的每一个数据块的写访问的次数以及多个数据块中的每一个数据的写访问的次数,从而计算出一个值或范围,又或者是位于该范围的区间都在本发明的保护范围内。
[0084] 缓存控制器,还用于将所述多个数据块中的部分数据块中的数据存储到所述持久化存储介质;其中,所述部分数据块中的每一个数据块的刷盘指数在所述多个数据块的刷盘指数从大到小的序列中的位置均大于序列阈值。
[0085] 在cache启动刷盘后,通过查找元数据表,确定该数据块及数据块中写入的各个数据的存储位置,将该数据块中各条数据写入存储介质中的具体位置。根据缓存控制器统计cache中每个数据块的刷盘指数,将刷盘指数高于阈值的部分数据块进行刷盘。
[0086] 将所述多个数据块中的部分数据块中的数据存储到所述持久化存储介质后,将cache中剩余的数据块写入临时数据区中,再将cache中及日志中的所有数据清除。持久化存储介质的临时数据区可以是在存储介质中划分的一个存储空间,也可以是独立的存设备或其它,其存储特点可以与存储介质相同。将未刷盘数据写入临时数据区是为了在清除cache和日志后,该部分数据能够被恢复。
[0087] 将cache和日志清除后,将持久化存储介质的临时数据区中的数据读取到cache中,当等到下次刷盘时,再从持久化存储介质的临时数据区中写入的及业务服务器写入的数据统计超时或刷盘指数,进行刷盘。
[0088] 在本发明的实施例中,将cache中的数据块按照刷盘指数刷盘前,缓存控制器优先将所述部分数据块中超过缓存时间的数据块中的数据存储到所述持久化介质中,再将多个数据块中的部分数据块中的数据存储到持久化存储介质。
[0089] 在一个例子中,也可以不全部清除cache,而保留写到临时数据区中的内容。这样就不需要重新从临时数据区中把数据读取到cache中,减少了写放大。此时,仅需要将日志清除,而不用对cache进行清除。
[0090] 图5为本发明实施例提供的一种存储设备数据存储的数据效果对比图。如图5所示(持久化存储介质在图5中简称为存储介质),图5-1为一种现有技术中的刷盘方式,图5-2为本发明实施例的一种刷盘方式。假设每个写入的数据块的大小为4KB,每次刷盘过程中每个数据块最多能包括4KB的内容。若现有技术中每个t时刻完成一次刷盘,或每写入一次(假设每次写入40Byte)都进行一次刷盘,则实际每次刷盘的效率为实例最大效率的10%。在每次刷盘过程中,浪费了90%的资源。在本发明的实施例中,假设每写入一条数据的内容为40Byte,当写入10次则Cache中刷盘时该数据块的刷盘容量为4KB,此时再进行刷盘可以提高设备的使用效率。在本发明实施例中,通过将刷盘指数低、写放大较大的数据暂不刷盘。
将其在cache中聚合,提升刷盘指数后再对其进行刷盘,从而提升刷盘的效率,减少了写放大。
[0091] 本领域技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
[0092] 结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。