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

文档序号:9910603阅读:533来源:国知局
一种存储设备及其存储数据的方法
【技术领域】
[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中的数据块按照刷盘指数进行排列,并根据刷盘指数进行刷盘。所述根据刷盘指数刷盘是指将刷盘指数超出阈值的数据块进行刷盘。阈值可以根据不同的存储设备设定,也可以根据存储设备在不同时刻进行的不同任务设置,在此不再敖述。本发明实施例中的达到阈值包括大于(>)、大于等于(2 )、小于(O、小于等于( <),或等于(=)设定的阈值、又或者是位于设定的阈值区间。
[0022]在本发明的实施例中,将cache中的数据块按照刷盘指数刷盘前,优先对超过缓存时间的数据块中包括的数据存储到持久化存储介质中,再对刷盘指数超出阈值的数据块存储到持久化存储介质中。
[0023]刷盘指数是指同一数据块中写访问所访问的地址的数量AN以及同一数据块中每一个数据的写访问的次数AC进行计算。在本发明的实施例中,刷盘指数可采用的具体计算方式为:
[0024]刷盘指数= (X*AC)_(Y*AN),其中X、Y为常量。
[0025]在本发明的实施例中,刷盘指数还可以采用的具体计算方式为:
[0026]刷盘指数= (AC*M) + (N*AN),其中Μ、Ν为常量。
[0027]在本发明的实施例中,刷盘指数更可以采用的具体计算方式为:
[0028]刷盘指数= (AC*A)/(B*AN),其中Α、Β为常量。
[0029]本领域技术人员知道,上述刷盘指数的计算只是本发明实施例中所列举的一个例子,不能用于对本发明的具体内容进行限定。只要是考虑本发明实施例中所提到的同一数据块中写访问所访问的地址的数量以及同一数据块中每一个数据的写访问的次数,从而计算出一个值或范围,或者是位于该范围的区间都在本发明的保护范围内。
[0030]在本发明实施例中,同一数据块中写访问所访问的地址的数量用于表示写入同一数据块的不同地址的数据条数。同一数据块中每一个数据的写访问的次数用于表示一个数据块中所有同一地址被多次写入的次数。例如Cache中第一数据块包括20个地址,其中地址I写入I次、地址3写入2次、地址4写入I次、地址7写入4次、地址15写入I次、地址16写入3次、地址18写入I次、地址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”数据的名称“Filel”、该区域的索引关键字“0325124”、该区域在存储介质中的物理地址“B00001”。数据块76、地址“19”、数据的名称“File2”、该区域的索引关键字“0327619”、该区域在存储介质中的物理地址“C00001” ;地址“22”、数据的名称“File3”、该区域的索引关键字“0327622”、该区域在存储介质中的物理地址“C00002”。缓存控制器通过查找元数据表,获取元数据表中各个数
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1