数据写入方法及装置制造方法

文档序号:6509543阅读:140来源:国知局
数据写入方法及装置制造方法
【专利摘要】本发明公开了一种数据写入方法及装置,其中,该数据写入方法包括:在有目标数据需要写入的情况下,确定所述目标数据对应的关联数据块,所述关联数据块的原有数据与所述目标数据具有关联关系;将所述目标数据写入所述关联数据块的空白页中。本发明实施例所提供的数据写入方法,通过将目标数据写入关联数据块的空白页中,能够使具有关联关系的数据集中在关联数据块中,可以提高后续的清理效率。
【专利说明】数据写入方法及装置
【技术领域】
[0001]本发明涉及数据存储领域,尤其涉及一种数据写入方法及装置。
【背景技术】
[0002]一些存储设备例如固态存储设备(Solid State Drive,简称SSD)和缓存(Cache)可以利用闪存(Flash)芯片作为数据存储的介质,可以是一种非易失性闪存,例如:与非门闪存(Nand Flash)和与或门闪存(Nor Flash)等类型的芯片。目前比较常见的以NandFlash为存储介质的居多。其中,每个片选(CE)包含8192个块(Block),每个块包含128或64个页(Page),块是Nand Flash的最小擦除(Erase)单元,页是Nand Flash的最小读写单元,每个页大小为4K字节(Byte)。
[0003]对于机械硬盘来说,硬盘可以直接用磁头将对应的区域磁化为“O”或者“1”,而Nand Flash的物理特性决定了以Nand Flash为存储介质的存储设备在写入目标数据之前,必须执行擦除操作(Erase before Overwrite)。若需要向某个块中写入目标数据,即使只更改I位(bit)也必须先对该块整个进行擦除操作,这种先擦后写导致了写放大。写放大对存储设备的性能造成很大的影响,尤其是在小输入/输出(I/O)情况下,存储设备的写特性效率低。
[0004]为了降低写放大的影响,SSD可以定期进行垃圾回收(Garbage Collection,简称GC),缓存可以定期启动淘汰机制。垃圾回收过程的一个例子为:假设SSD包括Blockl和Block3,其中,Blockl被写入数据、Block3未被写入数据,若需要修改Blockl中的原有数据,则需要将Blockl中原有的有效数据搬移至SSD的其他Block例如Block3,再擦除Blockl。若SSD初始预留了部分块作为冗余空间(free space)使用,且SSD并不告知操作系统,那么在目标数据写入时,SSD可以将该目标数据写入到全新的块中并将原有数据所占用的页标记为“Garbage”(可以回收再利用)。但是,由于可用冗余空间随着SSD中写入目标数据的增加而减少,直至最终耗尽,继而需要SSD定期回收,即将未被标记为“Garbage”的无效页复制到SSD的缓存并集中起来重新写入一个新的擦除过的块,再将全部页都被标记为“Garbage”的块进行擦除使之变成可用空白块,进而实现循环利用。该过程为垃圾回收过程,虽然垃圾回收降低了写放大对SSD造成的影响,但是写放大仍然存在,而且垃圾回收的时机和频率可能会对主机的性能稳定性和1/0延时造成影响。如何提升垃圾回收的效率是目如SSD亟待解决的问题。
[0005]目前可以采用两种方法提升垃圾回收的效率,第一种方法是可以通过增加冗余空间的比例来提升垃圾回收效率,例如Intel X25-E系列企业的SSD拥有超过20%的冗余空间,需要进行垃圾回收的块上标记为“Garbage”的无效页,随着冗余空间的增加而增加,只需要搬移少量页即可回收该块,进而满足实际使用的需求。举例而言,若Blockl拥有
3.125%的冗余空间,Block2拥有96.875%的冗余空间,则Blockl搬移64-2=62个页才回收两个空白页,而Block2仅搬移64-62=2个页就回收62个空白页。该方法存在以牺牲存储容量为前提的问题,增加的冗余空间实际上是SSD容量的损失。另一种方法是可以通过分梯度进行垃圾回收,即根据当前可用于冗余空间的块的数量确定垃圾回收力度,换言之,当可用于冗余空间的块较多时,例如SSD全容量没有用完时,垃圾回收几乎不启动,以此来降低垃圾回收力度进而降低垃圾回收对SSD业务的影响。该方法存在垃圾回收难以一直保持在较低力度的问题,若持续有业务写入,垃圾回收保持在较低力度对SSD业务的影响会增加。
[0006]综上所述,现有技术在不影响SSD性能如不增加冗余空间的情况下,垃圾回收过程中数据清理的效率低。

【发明内容】

[0007]抟术问是页
[0008]有鉴于此,本发明要解决的技术问题是,如何提升数据清理效率,降低数据清理对于系统业务的影响。
[0009]解决方案
[0010]为了解决上述技术问题,在第一方面,本发明提出了一种数据写入方法,包括:
[0011]在有目标数据需要写入的情况下,确定所述目标数据对应的关联数据块,所述关联数据块的原有数据与所述目标数据具有关联关系;
[0012]将所述目标数据写入所述关联数据块的空白页中。
[0013]结合第一方面,在第一种可能的实现方式中,所述确定所述目标数据对应的关联数据块,包括:
[0014]确定所述目标数据的逻辑扇区编号LBA ;
[0015]计算所述目标数据的LBA对应存储区域的热度;
[0016]根据所述目标数据的LBA对应存储区域的热度,查找热度级别表,确定所述目标数据对应的关联数据块。
[0017]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根据所述计算所述目标数据的LBA对应存储区域的热度,包括:
[0018]根据公式H=N*T/N计算所述目标数据的LBA对应存储区域的热度;
[0019]其中,H为所述目标数据的LBA对应存储区域的热度;Τ为距离上次写入所述LBA对应存储区域的时间;Ν为所述LBA对应存储区域的写入次数;Ν’为所有LBA对应存储区域的平均写入次数。
[0020]结合第一方面的第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述将所述目标数据写入所述关联数据块的空白页中,包括:
[0021]在所述目标数据的LBA的热度对应的关联数据块存在空白页的情况下,将所述目标数据写入所述空白页中。
[0022]结合第一方面的第一种可能的实现方式或第二种可能的实现方式,在第四种可能的实现方式中,还包括:
[0023]在所述目标数据的LBA对应存储区域的热度对应的关联数据块不存在空白页的情况下,申请新的空白块作为待写入所述目标数据的关联数据块,将所述目标数据的LBA对应存储区域的热度与所述新的空白块的对应关系记录在所述热度级别表中。
[0024]结合第一方面,在第五种可能的实现方式中,所述关联数据块中的原有数据包括有效数据和无效数据,所述确定所述目标数据对应的关联数据块,还包括:
[0025]计算所述目标数据与所述原有数据中的有效数据的逻辑相关度;
[0026]在确定所述目标数据与所述有效数据的逻辑相关度小于设定阈值的情况下,确定所述有效数据所在的块为所述目标数据的关联数据块。
[0027]结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述计算所述目标数据与所述原有数据中的有效数据的逻辑相关度,包括:
[0028]根据公式L=AN*AT计算所述目标数据与所述有效数据的逻辑相关度;
[0029]其中,L为所述逻辑相关度;ΛΝ为所述目标数据与所述有效数据在所述SSD中存储的份数;ΛΤ为所述目标数据与所述有效数据的写入时间间隔。
[0030]结合第一方面或第一方面的第一种至第六种可能的实现方式中的任一种可能的实现方式,在第七种可能的实现方式中,所述数据写入方法还包括:
[0031]在固态硬盘进入垃圾回收状态时,对所述关联数据块中的无效页进行垃圾回收;或
[0032]在缓存启动淘汰机制时,对所述关联数据块中的数据进行集中清理。
[0033]在第二方面,本发明提出了一种数据写入装置,包括:
[0034]确定单元,用于在有目标数据需要写入的情况下,确定所述目标数据对应的关联数据块,所述关联数据块的原有数据与所述目标数据具有关联关系;
[0035]写入单元,与所述确定单元连接,用于将所述目标数据写入所述关联数据块的空白页中。
[0036]结合第二方面,在第一种可能的实现方式中,所述确定单元包括:
[0037]第一确定子单元,用于确定所述目标数据的逻辑扇区编号LBA ;
[0038]第一计算子单元,与所述第一确定子单元连接,用于计算所述目标数据的LBA对应存储区域的热度;
[0039]第二确定子单元,与所述第一计算子单元连接,用于根据所述目标数据的LBA对应存储区域的热度,查找热度级别表,确定所述目标数据对应的关联数据块。
[0040]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一
计算子单元用于根据公式计算所述目标数据的LBA对应存储区域的热度;
[0041]其中,H为所述目标数据的LBA对应存储区域的热度;T为距离上次写入所述LBA对应存储区域的时间;Ν为所述LBA对应存储区域的写入次数;Ν’为所有LBA对应存储区域的平均写入次数。
[0042]结合第二方面的第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述写入单元包括:
[0043]第一写入子单元,用于在所述目标数据的LBA对应存储区域的热度对应的关联数据块存在空白页的情况下,将所述目标数据写入所述关联数据块。
[0044]结合第二方面的第一种可能的实现方式或第二种可能的实现方式,在第四种可能的实现方式中,还包括:
[0045]第二写入子单元,与所述第一写入子单元连接,用于在所述目标数据的LBA对应存储区域的热度对应的关联数据块不存在空白页的情况下,申请新的空白块作为写入所述目标数据的关联数据块,将所述目标数据的LBA对应存储区域的热度与所述新的空白块的对应关系记录在所述热度级别表中。
[0046]结合第二方面,在第五种可能的实现方式中,所述关联数据块中的原有数据包括有效数据和无效数据,所述确定单元包括:
[0047]第二计算子单元,用于计算所述目标数据与所述原有数据中的有效数据的逻辑相关度;
[0048]第三确定子单元,与所述第二计算子单元连接,用于在确定所述目标数据与所述有效数据的逻辑相关度小于设定阈值的情况下,确定所述有效数据所在的块为所述目标数据的关联数据块。
[0049]结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述第二计算子单元用于根据公式L=AN*AT计算所述目标数据与所述有效数据的逻辑相关度;
[0050]其中,L为所述逻辑相关度;ΛΝ为所述目标数据与所述有效数据在所述SSD中存储的份数;ΛΤ为所述目标数据与所述有效数据的写入时间间隔。
[0051]结合第二方面或第二方面的第一种至第六种可能的实现方式中的任一种可能的实现方式,在第七种可能的实现方式中,所述数据写入装置还包括:
[0052]垃圾回收单元,与所述写入单元连接,用于在固态硬盘进入垃圾回收状态时,对所述关联数据块中的无效页进行垃圾回收;或
[0053]清理单元,与所述写入单元连接,用于在缓存启动淘汰机制时,对所述关联数据块中的数据进行集中清理。
[0054]有益.效果
[0055]本发明实施例的数据写入方法,通过将目标数据写入关联数据块的空白页中,能够使具有关联关系的数据集中在关联数据块中,可以提高后续的清理效率。
[0056]根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。
【专利附图】

【附图说明】
[0057]包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
[0058]图1为根据本发明实施例一的数据写入方法的流程图;
[0059]图2a、图2b为根据本发明实施例二的数据写入方法的流程图;
[0060]图3为根据本发明实施例三的数据写入方法的流程图;
[0061]图4为根据本发明实施例四的数据写入装置的结构框图;
[0062]图5为根据本发明实施例五的数据写入装置的结构框图;
[0063]图6为根据本发明实施例六的数据写入装置的结构框图;
[0064]图7为根据本发明实施例七的数据写入装置的结构框图。
【具体实施方式】
[0065]以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0066]在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0067]另外,为了更好的说明本发明,在下文的【具体实施方式】中给出了众多的具体细节。本领域技术人员应当理解,没有这些具体细节,本发明同样可以实施。在另外一些实例中,对于大家熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
[0068]实施例1
[0069]图1为根据本发明实施例一的数据写入方法的流程图。如图1所示,该数据写入方法主要包括:
[0070]步骤S100、在有目标数据需要写入的情况下,确定所述目标数据对应的关联数据块,所述关联数据块的原有数据与所述目标数据具有关联关系;
[0071]步骤S120、将所述目标数据写入所述关联数据块的空白页中。
[0072]具体地,在有目标数据写入的情况下,首先需要确定写入的位置。目标数据既可以写入空白块,也可以写入具有空白页的非空白块。为了使SSD中的无效页集中,或者使采用非易失性闪存作为存储介质的缓存(Cache)中具有关联关系的数据集中,可以根据目标数据与原有数据的关联关系确定目标数据对应的关联数据块。其中,目标数据与原有数据的关联关系可以包括:目标数据要写入的逻辑扇区编号(Logical Block Addressing,简称LBA)对应存储区域的热度与原有数据所在存储区域的热度相近或相同;或目标数据与原有数据逻辑相关。例如:目标数据与Blockl中原有数据的热度相近或相同;再如:目标数据与Blockl中原有数据中的有效数据逻辑相关,表明目标数据与原有数据具有关联关系,如果关联数据块Blockl中具有空白页(Page),就可以将目标数据块写入Blockl。
[0073]对于SSD,随着SSD中写入数据的增加,在数据空间写满的情况下,可以将数据空间的有效数据搬移到冗余空间,冗余空间慢慢减少,在冗余空间小于一定阈值的情况下,无法进行正常的写入。SSD定期启动垃圾回收,可以将存在无效页的块进行擦除,实现循环利用。其中,垃圾回收过程中,可以按照具有无效页的数量从多到少的顺序,对数据空间的块进行擦除。擦除的块中被标记为“Garbage”的无效页越多,垃圾回收的效率就越高。例如:先将需要擦除的块如Blockl中的有效数据复制到SSD的缓存后搬移至其他块中,然后对Blockl中的无效页中数据进行擦除,擦除后的Blockl可以重新写入数据。其中,一个块中产生无效页的情况可以有多种,例如:在一个块Blockl中写入新的数据时,将该Blockl中原有的该数据所占用的页标记为“Garbage”,然后可以在垃圾回收过程中将Blockl中的无效页擦除。
[0074]对于采用非易失性闪存作为存储介质的缓存,随着缓存中写入数据的增加,在缓存空间写满的情况下,无法进行正常的写入,缓存启动淘汰机制进行清理,可以将集中具有关联关系的数据的关联数据块进行擦除。擦除的块中具有关联关系的数据越多,淘汰效率越闻。
[0075]本实施例的数据写入方法,将目标数据写入关联数据块的空白页,能够使具有关联关系的数据集中在关联数据块中,可以提高后续的清理效率。在SSD的垃圾回收的过程中,无效页可以集中在关联数据块中,擦除关联数据块可以回收较多的空白页,提高了垃圾回收效率,减少SSD的颗粒磨损,延长了 SSD的使用寿命。在采用非易失性闪存作为存储介质的缓存中,可以将具有关联关系的数据集中在关联数据块中,如果缓存空间不足,需要采用淘汰机制进行清理时,擦除关联数据块可以回收较多的空白页,提高了淘汰效率,减少缓存的颗粒磨损,延长了淘汰的使用寿命。
[0076]实施例2
[0077]图2a、图2b为根据本发明实施例二的数据写入方法的流程图。图2a、图2b中与图1标号相同的步骤具有相同的功能,为简明起见,省略对这些步骤的详细说明。
[0078]本实施例中可以通过热点数据来确定关联数据块,其中,由于与数据清理相关,影响热点数据的判别标准的直接因素可以是写入频率,热点数据被重新写入的几率要远远高于非热点数据,因此,可以通过目标数据的LBA来确定。如图2a、图2b所示,与上一实施例的主要区别在于,步骤SlOO可以包括:
[0079]步骤S200、确定所述目标数据的逻辑扇区编号LBA。
[0080]具体地,在有目标数据需要写入时,以非易失性闪存作为存储介质的存储设备接入的主机可以为该目标数据分配对应的逻辑扇区编号(LBA)。所述存储设备接收到目标数据时,可以获取该目标数据的LBA。
[0081]步骤S220、计算所述目标数据的LBA对应存储区域的热度。
[0082]具体地,在写入目标数据之前,可以计算该目标数据被指定存入的LBA对应存储
区域的热度。计算时可以采用的一种可行的公式为:H=(N*T)/N,其中,H为该目标数据的LBA


对应存储区域的热度,量化所述LBA对应存储区域的热度情况,H值越小表示该目标数据被重新写入的概率越高;T为距离上次写入所述LBA对应存储区域的时间,随着上次写入所述LBA对应存储区域的时间的增加,热度不断降低;N为所述LBA对应存储区域的写入次数;N’为所有LBA对应存储区域的平均写入次数,即所有LBA对应存储区域的写入次数之和除以总LBA数。
[0083]步骤S240、根据所述目标数据的LBA对应存储区域的热度,查找热度级别表,确定所述目标数据对应的关联数据块。
[0084]具体地,所述存储设备中可以存储并维护一个热度级别表,该热度级别表中可以包括已经写入的原有数据的LBA对应存储区域的热度与该原有数据所在块的对应关系。在根据上述公式计算得到该目标数据的LBA对应存储区域的热度后,可以按热度的值进行热度级别的划分,并将该热度的LBA对应存储区域包含的数据块写入该热度级别中。例如可以定义LBA对应存储区域的热度值为100至200时的热度级别为5,该存储区域包含的数据块Bl0Ckl、Bl0Ck2则为热度级别5下的数据块。根据不同的热度将目标数据分配到不同的关联数据块上去,可以使得热度相近的数据集中在相同的关联数据块上,以达到局部富裕的目的。
[0085]表I热度级别表
[0086]
【权利要求】
1.一种数据写入方法,其特征在于,包括: 在有目标数据需要写入的情况下,确定所述目标数据对应的关联数据块,所述关联数据块的原有数据与所述目标数据具有关联关系; 将所述目标数据写入所述关联数据块的空白页中。
2.根据权利要求1所述的数据写入方法,其特征在于,所述确定所述目标数据对应的关联数据块,包括: 确定所述目标数据的逻辑扇区编号LBA ; 计算所述目标数据的LBA对应存储区域的热度; 根据所述目标数据的LBA对应存储区域的热度,查找热度级别表,确定所述目标数据对应的关联数据块。
3.根据权利要求2所述的数据写入方法,其特征在于,所述计算所述目标数据的LBA对应存储区域的热度,包括:
根据公式
4.根据权利要求2或3中所述的数据写入方法,其特征在于,所述将所述目标数据写入所述关联数据块的空白页中,包括: 在所述目标数据的LBA对应存储区域的热度对应的关联数据块存在空白页的情况下,将所述目标数据写入所述空白页中。
5.根据权利要求2或3中所述的数据写入方法,其特征在于,还包括: 在所述目标数据的LBA对应存储区域的热度对应的关联数据块不存在空白页的情况下,申请新的空白块作为待写入所述目标数据的关联数据块,将所述目标数据的LBA对应存储区域的热度与所述新的空白块的对应关系记录在所述热度级别表中。
6.根据权利要求1所述的数据写入方法,其特征在于,所述关联数据块中的原有数据包括有效数据和无效数据,所述确定所述目标数据对应的关联数据块,还包括: 计算所述目标数据与所述原有数据中的有效数据的逻辑相关度; 在确定所述目标数据与所述有效数据的逻辑相关度小于设定阈值的情况下,确定所述有效数据所在的块为所述目标数据的关联数据块。
7.根据权利要求6所述的数据写入方法,其特征在于,所述计算所述目标数据与所述原有数据中的有效数据的逻辑相关度,包括: 根据公式L=AN*AT计算所述目标数据与所述有效数据的逻辑相关度; 其中,L为所述逻辑相关度;ΛΝ为所述目标数据与所述有效数据在所述SSD中存储的份数;ΛΤ为所述目标数据与所述有效数据的写入时间间隔。
8.根据权利要求1-7中任一项所述的数据写入方法,其特征在于,还包括: 在固态硬盘进入垃圾回收状态时,对所述关联数据块中的无效页进行垃圾回收;或 在缓存启动淘汰机制时,对所述关联数据块中的数据进行集中清理。
9.一种数据写入装置,其特征在于,包括:确定单元,用于在有目标数据需要写入的情况下,确定所述目标数据对应的关联数据块,所述关联数据块的原有数据与所述目标数据具有关联关系; 写入単元,与所述确定单元连接,用于将所述目标数据写入所述关联数据块的空白页中。
10.根据权利要求9所述的数据写入装置,其特征在于,所述确定単元包括: 第一确定子単元,用于确定所述目标数据的逻辑扇区编号LBA ; 第一计算子単元,与所述第一确定子单元连接,用于计算所述目标数据的LBA对应存储区域的热度; 第二确定子単元,与所述第一计算子单元连接,用于根据所述目标数据的LBA对应存储区域的热度,查找热度级别表,确定所述目标数据对应的关联数据块。
11.根据权利要求10所述的数据写入装置,其特征在于,所述第一计算子単元用于根据公式计算所述目标数据的LBA对应存储区域的热度; 其中,Η为所述目标数据的LBA对应存储区域的热度;Τ为距离上次写入所述LBA对应存储区域的时间;Ν为所述LBA对应存储区域的写入次数;Ν’为所有LBA对应存储区域的平均写入次数。
12.根据权利要求10或11中所述的数据写入装置,其特征在于,所述写入単元包括: 第一写入子単元,用于在所述目标数据的LBA对应存储区域的热度对应的关联数据块存在空白页的情况下,将所述目标数`据写入所述关联数据块。
13.根据权利要求10或11中所述的数据写入装置,其特征在于,还包括: 第二写入子単元,用于在所述目标数据的LBA对应存储区域的热度对应的关联数据块不存在空白页的情况下,申请新的空白块作为待写入所述目标数据的关联数据块,将所述目标数据的LBA对应存储区域的热度与所述新的空白块的对应关系记录在所述热度级别表中。
14.根据权利要求9所述的数据写入装置,其特征在于,所述关联数据块中的原有数据包括有效数据和无效数据,所述确定单元还包括: 第二计算子単元,用于计算所述目标数据与所述原有数据中的有效数据的逻辑相关度; 第三确定子単元,与所述第二计算子单元连接,用于在确定所述目标数据与所述有效数据的逻辑相关度小于设定阈值的情况下,确定所述有效数据所在的块为所述目标数据的关联数据块。
15.根据权利要求14所述的数据写入装置,其特征在于,所述第二计算子単元用于根据公式L= △ N* △ T计算所述目标数据与所述有效数据的逻辑相关度; 其中,L为所述逻辑相关度;ΛΝ为所述目标数据与所述有效数据在所述SSD中存储的份数;ΛΤ为所述目标数据与所述有效数据的写入时间间隔。
16.根据权利要求9-15中任一项所述的数据写入装置,其特征在于,还包括: 垃圾回收单元,与所述写入单元连接,用于在固态硬盘进入垃圾回收状态时,对所述关联数据块中的无效页进行垃圾回收;或 清理单元,与所述写入单元连接,用于在缓存启动淘汰机制时,对所述关联数据块中的数据进行集中清 理。
【文档编号】G06F12/02GK103455435SQ201310386086
【公开日】2013年12月18日 申请日期:2013年8月29日 优先权日:2013年8月29日
【发明者】周猛, 张颇, 王斐 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1