高性能和大容量储存重复删除中的数据完整性和损耗电阻的制作方法

文档序号:10488682阅读:190来源:国知局
高性能和大容量储存重复删除中的数据完整性和损耗电阻的制作方法
【专利摘要】一种利用重复删除过程的存储系统可以包括:控制器、储存介质以及包括元数据日志和元数据高速缓冲存储器的非易失性RAM,元数据高速缓冲存储器包括地址表和辨别表,以及元数据日志包括多个事务,所述多个事务指示事务是否被成功写入储存介质中。
【专利说明】
高性能和大容量储存重复删除中的数据完整性和损耗电阻
[0001] 相关申请的交叉引用
[0002] 本申请要求2015年1月29日提交的美国临时专利申请第62/109,418号的优先权, 其全部内容通过引用合并于此。
技术领域
[0003] 本公开的示例性实施例涉及一种包括储存器件的系统和用于管理储存在储存器 件中的数据的方法。
【背景技术】
[0004] 在存储系统或者包括储存器件的储存系统中,各种数据管理技术被考虑用于改善 储存容量和性能。重复数据删除(data deduplication)是去除数据的重复拷贝并利用指向 单个拷贝的指针来代替它们的过程。重复删除通常用于两个主要目的:减小储存数据所需 要的储存容量,以及减小执行备份或复制所需要的网络带宽。大多数现有的重复删除方案 遭遇许多性能问题。

【发明内容】

[0005] 本发明的方面包括利用重复删除过程的存储系统。存储系统可以包括控制器、储 存介质以及包括元数据日志和元数据高速缓冲存储器的非易失性RAM。元数据高速缓冲存 储器可以包括地址表和判别表,以及其中,元数据日志可以包括指示事务是否被成功地写 入至储存介质上的多个事务。
[0006] 本发明的进一步方面包括利用重复删除过程的方法。该方法可以包括将地址表和 判别表作为元数据高速缓冲存储器储存在非易失性RAM上、将多个事务之中的事务写入至 元数据日志中,每个事务指示该事务是否被成功地写入到储存介质,以及在非易失性RAM上 更新元数据日志。
[0007] 本发明的额外的方面包括一种装置。该装置可以包括存储器控制器,存储器控制 器适用于在包括元数据日志和元数据高速缓冲存储器的非易失性RAM中使用,其中,元数据 高速缓冲存储器包括地址表和判别表,以及其中,元数据日志包括指示事务是否被成功地 被写入至储存介质上的多个事务。
【附图说明】
[0008] 图1是储存系统的框图。
[0009] 图2是用于重复删除过程的储存系统的框图。
[0010] 图3是示出通过储存系统执行的重复删除过程的示图。
[0011 ]图4和图5是根据本发明的方面的重复删除过程的示图。
[0012] 图6、图7、图8、图9以及图10是示出根据本发明的方面的重复删除的示例的示图。
[0013] 图11是根据本发明的方面的事务的示图。
[0014]图12、图13、图14以及图15是示出根据本发明的方面的重复删除和恢复过程的示 图。
[0015]图16A和图16B是示出根据本发明的方面的元数据上写入整合(consolidation)的 示图。
【具体实施方式】
[0016]以下参考附图更详细地描述各种实施例。然而,本发明可以以不同的形式来实施, 并且不应该被解释为局限于本文所阐述的实施例。更确切地说,提供这些实施例使得本公 开将彻底和完整,以及这些实施例将本发明的范围完全传达给本领域技术人员。贯穿本公 开,相同的附图标记在本发明的各个图和实施例中指代相同的部件。
[0017] 本发明可以以许多方式来实施,包括作为过程、装置、系统、事件的组合、实施在计 算机可读储存介质上的计算机程序产品、和/或处理器(诸如适用于执行储存在其上的和/ 或通过耦接到处理器的存储器提供的指令的处理器)。在本说明书中,这些实施方式或者本 发明可以采用的任何其它形式可以被称为技术。一般而言,在本发明的范围内,所公开的过 程的步骤的顺序可以改变。除非另有说明,否则诸如描述为适用于执行任务的处理器或者 存储器的部件可以被实施为一般部件(其在一定时刻暂时适用于执行该任务)或者特定部 件(其被制造为执行该任务)。如在本文中所使用的,术语'处理器'是指一个或多个器件、电 路和/或适用于处理数据(诸如计算机程序指令)的处理核心。
[0018] 图1示出储存系统或者存储系统的框图。
[0019] 参考图1,储存系统可以包括服务器(或者存储器控制器)10和多个储存器件20。储 存器件20可以储存数据,以及服务器10可以控制将数据储存在储存器件20中。
[0020] 储存系统可以响应于来自主机(未示出)的请求而操作,具体地,储存要由主机访 问的数据。换句话说,存储系统可以被用作主机的主存储系统或辅助存储系统。例如,主机 可以包括诸如移动电话、MP3播放器以及膝上型计算机的便携式电子设备或者诸如台式计 算机、游戏播放器、TV、投影仪的电子设备等。
[0021] 储存器件20可以用易失性存储器件(诸如动态随机存取存储器(DRAM)和静态随机 存取存储器(SRAM))或者非易失性存储器件(诸如只读存储器(R0M)、掩模ROM(MROM)、可编 程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电随机存取存储 器(FRAM)、相变RAM(PRAM)、磁阻式RAM(MRAM)以及电阻式RAM(RRAM))来实施。
[0022] 储存器件20可以利用各种储存器件(诸如固态驱动器(SSD)、多媒体卡(MMC)、嵌入 式MMC(e丽C)、缩小尺寸MMC(RS-MMC)以及微型丽C、安全数字(SD)卡、迷你SD以及微型SD、通 用串行总线(USB)储存器件、通用闪速储存(UFS)器件、紧凑式闪存(CF)卡、智能媒体(SM) 卡、存储棒等)中的任何一种来实施。
[0023]储存器件20可以在电源中断时保留储存的数据、在写入操作期间储存从主机提供 的数据以及在读取操作期间将储存的数据提供给主机。在一些实施例中,储存器件20可以 是非易失性存储器件,例如,闪速存储器。储存器件20可以包括多个存储块。存储块中的每 个可以包括多个页。页中的每个可以包括多个存储单元,多个字线(WL)电耦接至该多个存 储单元。
[0024]服务器10可以响应于来自主机的请求而控制储存器件20。服务器10可以将从储存 器件20读取的数据提供给主机,并且将从主机提供的数据储存到储存器件20中。为此,服务 器10可以控制储存器件20的总体操作,诸如读取操作、写入操作、编程操作以及擦除操作。 [0025]在一些实施例中,服务器10可以包括用于与主机接口的主机接口单元、用于检测 和校正从储存器件20读取的数据中的错误的错误校正码(ECC)单元、用于为服务器10提供 和管理电源的电源管理单元(PMU)、服务器10与储存器件20之间的存储器接口、用于充当服 务器10的工作存储器的存储器以及用于控制储存系统的一般操作的处理器。
[0026] 在如上所述的储存系统中,诸如重复数据删除的数据管理技术可以被考虑用于改 善储存容量和性能。重复数据删除通常从比较两个数据片以识别重复来开始。比较全部数 据将是不实际的。因此,散列值(也称作在整个数据片之上生成的小数量的判别码 (fingerprint))被用于搜索和比较以识别数据重复。
[0027] 关于什么时候执行重复删除,重复删除技术可以被划分为内联重复删除(inline deduplication)和后重复删除(post deduplication)的两个方案。
[0028]在内联重复删除中,当数据被写入储存器件中时,诸如使数据散列、比较判别码值 以及重新参考数据的重复删除操作被执行。内联重复删除的优势在于其不需要将重复数据 实际保存到储存器件。这个方案的缺点在于在储存和计算能力方面,需要大量的系统资源 来执行密集散列计算。
[0029] 后重复删除,不是即时地执行重复删除,而是通过首先将输入数据储存到储存系 统并且随后对它们进行重复删除来延缓所有那些操作。
[0030] 尽管后重复删除减轻了服务器的沉重内联工作负载,但是当其启动重复删除过程 时将击垮服务器,该重复删除过程需要再扫描所有数据以及计算判别码等。
[0031] 对于后重复删除过程,在图2和3中分别描述储存系统和通过该储存系统执行的重 复删除过程的框图。
[0032] 参考图2,储存系统可以包括服务器100和储存器件200。例如,服务器100和储存器 件200分别对应于图1中示出的服务器10和储存器件20。
[0033]服务器100负责处理读取/写入请求、协议处理等,而储存器件200负责储存数据。 服务器100可以包括第一单元110、第二单元120以及第三单元130。第一单元110可以从主机 (未示出)接收输入数据(例如,写入数据)。第二单元120可以计算并且储存用于输入数据的 散列值(或者判别码)。第三单元130可以执行重复删除过程(例如,后重复删除过程)。储存 器件200中的每个可以包括用于储存从服务器100接收到的数据的单元210。
[0034] 参考图3,可以针对后重复删除执行各种步骤。在步骤310处,输入的新数据通过储 存服务器100被接收。在步骤320处,服务器100将输入数据保存到储存器件200。当服务器 100被安排进行后重复删除时,在步骤330处,服务器100从储存器件200读取新保存的数据。 在步骤340处,服务器100计算用于读取的数据的散列值。在步骤350处,服务器100使用计算 出的散列值来查阅并更新映射表。映射表储存多个数据与多个散列值之间的映射关系。在 步骤350处,如果需要,服务器100删除储存器件200中的新保存的数据的重复拷贝。
[0035] 在上述图3的步骤中,步骤330可以在储存系统内导致许多数据通信,以及步骤340 可能需要服务器1〇〇(例如,服务器100的中央处理单元(CPU))被完全占用以计算判别码。
[0036] 在储存技术中,重复数据删除(以下称为"重复删除")是用于消除重复数据的重复 拷贝的专用数据压缩技术。其有时被称为单个实例(数据)储存。这个技术被用于改善储存 器利用率,并且还可以被应用到网络数据传输以减少被发送的字节的数目。
[0037] 在重复删除过程中,当用户应用程序提交请求以通过指定(固定长度或者可变长 度的)数据的唯一块或者字节模式(byte pattern)以及其位置(可以从该位置取回数据)来 写入数据块时,发生写入过程。
[0038] 参考图4,示出执行重复删除的储存系统的实施例的示图。数据块在分析过程期间 被识别(在下文中,该数据与其称为"逻辑地址"的位置关联,以及识别整个数据的过程在下 文中称为"判别(Finger Printing)或者FP")并且储存。数据块真实储存在储存介质中的位 置被识别并且以下称为"物理地址"。随着该分析继续,其它块被收集、识别(逻辑地址、FP) 以及FP与所储存的FP比较(以下称为FP比较)。无论何时出现匹配,冗余块用指向先前储存 的块("物理地址")的小参考来代替(而不是被冗余地储存在储存介质中)。
[0039] 假定相同字节模式可以出现几十次、上百次或甚至上千次(匹配频率取决于块尺 寸),则可以大大地减少必须储存或者传输的数据量。因此,FP用作其物理地址引用的位置 处储存的数据块的一种唯一标识符(例如,在下文中,唯一FP与其相应的物理地址的关系被 保持在称为"FP表"的表格中)。
[0040] 当用户应用程序提交请求以通过指定其位置"逻辑地址"来读取数据块时,发生读 取(取回)过程。同样地,该系统必须记忆通过用户应用程序指定的位置处的数据块是数据 驻留的位置还是仅仅是对数据真实储存的位置的引用。必须为每个可获得的逻辑地址保留 这种信息(例如,逻辑地址与其相应的物理地址或者其引用之间的唯一关系在下方被保持 在称为"地址表"的表格中)。在两个情况中,该系统能够直接基于物理地址的引用或者物理 地址来取回数据块。
[0041] 虽然写入具有重复删除特征的数据块(可能重复)似乎(例如,外部地)是单一操 作,但是实际基本的过程包括若干步骤。为了清楚地描述该技术,在本文中未描述与该技术 不直接有关的一些步骤(例如,在本文中未描述与将模块分配在储存器中、将数据真实地写 入到储存器中分配的模块中和/或修改或者释放FP表或者地址表的条目所需要的所有详细 叙述(nitty-gritty accounting)有关的一些步骤)。如果完整地完成利用重复删除来写入 数据块的所有步骤(并且这发生绝大部分时间),该数据被成功地保存。然而,如果该过程在 任何时候被中断(例如,或许由于电源故障或者其它体系故障),则系统以不一致的状态结 束。出现讹误(corruption),因为写入(或者更新)数据块的逻辑操作实际上是一系列操作 和1/0,以及全部操作不能在任何给定时间点处完全反映在储存介质上。
[0042] 每当数据块被转换时,就出现关于每当相同数据被读回时的潜在数据丢失的问 题。通过定义,重复删除方法储存数据与数据如何被写入或者给出不同。因此,用户、计算机 应用程序以及操作系统关注数据的完整性。当数据正在被读回时,预计该数据被转换回原 始的一个。照此,在许多实施例中,对于启用重复删除的系统而言,期望使映射表中的信息 (以下称为"元信息")以其数据是一致的以及任何时候保护不受任何丢失的方式容易可访 问且持续地储存。在这种实施例中元数据伴随于数据块地被保持为持续(persistent)并且 局部的。元数据是在重复删除过程期间创建的非用户数据。元数据是用于重构原始用户数 据或者信息的"心脏"或者"粘接剂"。在一些实施例中,所有元数据变型在灾难性数据丢失 的情况下被持续保持。重复删除中的更重要类型的元数据中的一种是在地址表和FP表中的 数据。
[0043] 除在转换期间数据损坏之外,在重复删除过程期间还存在数据丢失的其它常规威 胁,诸如电力损失、来自底层系统的突发故障。即使数据丢失较小,它对储存在介质中的整 个信息的一致性和完整性也可能是破坏性的,并且将使该应用程序无法使用或者给出错误 结果。在一些实施例中,避免将元数据储存在DRAM(或者其它易失性/非持久的储存介质)中 的系统。如果元数据被储存在除主储存器以外,然后这个必须被考虑在失效转移 (failover)计划中。如果元数据被储存有用户数据,也存在更少问题。
[0044] 在感兴趣的储存系统中,将重复删除元数据储存在非易失性存储介质上包括将元 数据模块绑定在与关联的用户数据模块相同的事务中。如果存在对不在随机存取存储器 (RAM)中的元数据模块的任何部分读取,该元数据必须从介质读回。其它的重复删除解决方 案需要将重复删除元数据储存在硬盘上,并且访问该硬盘以获取重复删除元数据,这导致 高的延时。
[0045] -些其它的重复删除技术可以读取比所需要的更多的元数据模块,将其缓存在 RAM中以加速读取过程,以及可以推迟RAM中的任何写入请求以给出快速写入的效果。然而, 如果系统突然发生故障这种技术造成数据丢失的威胁,和/或在元数据不能完全被同步或 者恢复的情况下这种技术造成数据完整性问题的威胁。甚至元数据中的小丢失或不完整性 将使储存介质中的全部信息无法使用。
[0046] 减轻该问题的另一方法是使用基于闪存的储存器,其保持数据同时允许低延时。 然而,在高性能和I/O密集操作的情况下,基于闪存的解决方案未提供与基于RAM的解决方 案差不多的高带宽和速度。更糟的是,在基于闪存的解决方案中对储存区域的频繁访问将 使储存介质的性能和耐久性(例如,预期寿命)快速劣化。让该问题更复杂的是,在关于大容 量储存器的不一致性或者电力损失的情况下,恢复的过程由于大量的元数据而耗费巨大时 间。
[0047] 在本文中描述各种技术,该各种技术能够甚至在I/O密集操作(例如,写入和读取) 期间在繁忙和恒定负载下以快速和空间有效的方式处理重复删除处理并且访问其元数据。 此外,在本文中描述了在环境或者储存介质自身的灾难性故障的情况下保护系统免受数据 丢失、大容量储存器中的全部元数据信息的快速恢复和完整性的技术。此外,在本文中描述 了如果基于闪存的解决方案正在被使用,则在不显著地劣化储存驱动器的性能和耐久性 (预期寿命)的情况下持续地储存大量元数据(大容量存储器)的方法。
[0048] 图5示出在写入操作期间由重复删除过程所使用的两个表格的实施例。一个是地 址映射表500(在下方中称为"地址表)",以及另一个是判别映射表502(在下方中称为"FP 表")。地址表500储存输入数据块的地址(逻辑地址)与数据被实际储存的位置(物理地址) 的映射。FP表502储存在判别(FP)和物理地址之间的映射。
[0049] 地址表500充当应用程序知道的地址和数据真实存在于储存介质中的地址之间的 转换层。在数据块的重复的情况下,多个逻辑地址具有相同的映射物理地址。FP表502通过 将数据块的FP与该数据块储存在储存介质中的地址关联来储存关于数据块的信息。两个表 的粘结在于物理地址。在一个表中的任何现有物理地址必须存在于另一个表中。
[0050] 在这个示例中,在使用以上两个表携带逻辑地址以及数据的写入IO操作期间,重 复删除的过程通过查阅地址表500中的条目来启动。如果未找到条目,则数据块使用散列函 数来判别。散列函数的结果是然后用于找到FP表502中的条目的(几乎)唯一标识符(FP) t^ 果未找到FP表502中的条目,则输入的数据块实际上是新的并且该数据块被物理上储存。然 后,数据的位置或者地址与其FP-起储存在FP表502中以及与其逻辑地址一起储存在地址 表500中。在FP在FP表502中被找到的情况下,然后假设与其关联的逻辑地址包含与输入数 据相同的块并且该数据不(再次)储存但是其物理地址与地址表500中的逻辑地址关联。
[0051]在这个示例中,如果找到地址表500中的条目但未找到FP,则输入的数据块表示来 自已经物理上储存的原始数据块的更新数据。更新数据需要被物理上储存并且该数据的位 置或者地址然后与其FP-起储存在FP表502中以及与其逻辑地址一起储存在地址表500中。 因为未找到FP但是在地址表500中存在条目,因此地址表500中的条目不再是有效的并且它 可能需要被清除。清除与否的判定取决于相同逻辑地址是否被地址表500中的任何其它条 目所指向。
[0052]如果找到地址表500中的条目以及也找到FP,则假设与其关联的逻辑地址包含与 输入数据相同的数据块(至少在这个示例中)。如果FP表中的物理地址与地址表500中的物 理地址匹配,则该数据不(再次)被储存,因为它是副本。如果它们是不相同的,然后存在冲 突的情况,这在许多实施例中被假定为几乎是不可能的。
[0053]在读取IO操作期间,用户应用程序提交逻辑地址,数据从该逻辑地址预期或者认 为被取回。因为数据的位置由于重复删除而可能已经改变,因此地址表500用于确定数据的 位置真实的物理地址。正如以上看到的,在IO操作(读取和写入)期间,两个表(FP表502和地 址表500)中的信息被访问并且因此期望储存在其中的数据(在本文中称为元数据)被可靠 地和持续地被储存。
[0054]图6示出重复删除过程的高级实施例。参见图6,将描述用于如何能够以可靠且快 速的方式针对大容量储存器而处理重复删除的各种实施例。也描述了用于高效储存、快速 元数据访问以及在I /0密集操作(读取和写入)期间空间有效(space efficient)的一些示 例。描述了在系统突发故障或者储存器自身的故障的情况下保护系统以及从数据丢失快速 恢复和/或保证整个信息的完整性的各种实施例,这对大容量储存器而言是尤其感兴趣的。 最后,下面描述了在使用基于闪存的解决方案(诸如SSD)的情况下用于储存元数据而不显 著降低储存介质的性能和耐久性(在下文中被称作"预期寿命")的各种实施例。
[0055]各种技术可以被使用如下。
[0056] (1)在重复删除过程中用于高性能的批量处理和并行处理,包括处理元数据日志 事务和日志原子操作(journaling atomic operation):使用主从范式来取得一致的重复 删除结果。对地址表操作的过程作为主,而对FP表操作的过程作为从。"从"将具有评估输入 数据并识别该数据(或其副本)被储存的位置(物理地址)的任务。每当FP表和/或地址表被 修改时,该系统将批量创建异步以及并行处理的日志事务。
[0057] (2)元数据日志:元数据(FP和地址表)的改变被记录、高速缓冲以及被间歇地(例 如,周期性地或者不定期地)涌入储存介质中。可以存在事务定向过程以取得日志过程的原 子性(atomicity)。值得注意的是,FP表是1:1关系,以及地址表是I:N关系。两个表包括完全 相同的物理地址。不存在在FP表中却不在地址表中的物理地址,反之亦然。
[0058] (3)透明的查找表和推迟的元数据写入:使用透明的查找表将元数据高速缓冲在 非易失性RAM(诸如NV-DIMM、MRAM或ReRAM)中,以及元数据被间歇地涌入储存介质中。
[0059] (4)元数据事务整合(consolidation):对于大容量储存器,系统将具有大量的元 数据和日志数据(例如,关于元数据改变的事务的数据)。为了进一步节省空间和有效地写 入,不立即将元数据事务写入至储存介质。根据事务的"最终状态",多个事务可以彼此取 消,或者可以被组合成单个事务,然后该单个事务可以被储存在储存介质中。
[0060] 参见图6中描述的重复删除过程,左边的子过程600和右边的子过程602依赖于分 离的且不同的元数据(例如,地址表对FP表)。两个子过程600和602可以无干扰地(并行地) 一起运行。为了提高并行过程,使用队列(queue)来批量处理数据。队列的使用也开启了添 加不同类型的调度程序(scheduler^其取决于数据的性质)或者重排待处理数据的顺序和 优先级的可能性。
[0061] 图7图示使用了主/从关系的重复删除过程的一个实施例。下面描述各种状态、状 态转换、触发和操作。对于示例性重复删除过程存在三种可能的(3)情况(在下文中被称作 "最终状态")。
[0062] (1)新数据-这是逻辑地址的映射未找到且FP的映射未找到的情况。
[0063] (2)重复数据-存在两种可能出现这的情况。第一是当逻辑地址的映射未找到而FP 的映射被找到时。第二是当逻辑地址的映射被找到,FP的映射也被找到,且两个表的映射指 向同一物理地址。
[0064] (3)更新数据-存在三种出现这的情况。第一是当逻辑地址的映射被找到但FP的映 射未找到时。第二是当逻辑地址的映射被找到,FP的映射也被找到,但两个表的映射不指向 同一物理地址。第三,也是重复删除过程中的最复杂的路线,当在"从"中进行FP匹配时,原 始的条目或者未找到或者不同,这意味着"从"需要指令来运行垃圾收集,该指令的决定仅 能在"主"中基于储存在地址表中的信息来作出。
[0065] 这里区分的情况的重要性与在元数据的最终状态之前对改变元数据的情况分类 有关。
[0066] 在图7中所示的实施例中,所描述的重复删除过程包括两个同时发生的过程,一个 在主域中运行,而另一个在从域中运行。在该示例中,每个输入的数据块必须散列在FP中、 在从中必须搜索其在FP表中的条目以及在主中必须搜索其逻辑地址。相比于在主中寻找地 址表中的逻辑地址的条目,在从中辨别以及寻找其在FP表中的条目的过程是资源密集型的 过程。基于此观点,使用两种类型的队列(在此实施例中至少如此)以保持需要由从来异步 处理的信息。
[0067]首先,FP队列,其包含用来处理从中的所有必要步骤(例如,写入:主和从将具有物 理地址的条目添加至地址表,读取:从将用该物理地址更新FP队列)的所有信息。为了更快 地加速该过程,可能存在多于一个FP队列,但为了简单起见,我们将仅使用一个队列来描述 本发明。任何额外的队列将具有同等的处理机制。
[0068]第二,垃圾收集队列,垃圾收集队列包含其内容为废弃的物理地址,意味着从必须 清除其在FP表中的条目(例如,写入:主,读取:从)。
[0069] 图8示出具有新/重复数据和更新数据的一个实施例。如所示,对队列的使用不仅 增强系统来并行地异步执行子过程以获得高性能,还使得能够保留用于日志的元数据的改 变和状态。下面详细描述元数据日志过程。
[0070] 防止元数据丢失以及使得能够快速恢复的能力在于使用事务。元数据日志事务将 对元数据的一系列改变处理为单个、原子性操作,而不是单独地追踪对表的更新,元数据日 志将对地址表和FP表的改变(例如,数据和操作)作为一组来追踪。换言之,事务保证或者更 新全部元数据或者一个元数据都不更新(例如,针对地址表和FP表)。例如,通向最终状态 "新数据"的过程通过在地址表中添加一对新的逻辑地址与其对应的物理地址以及在FP表 中添加一对新的逻辑地址与其对应的物理地址来修改地址表。在系统作出这些改变之前, 其创建描述其将要做什么的事务。一旦该事务已经被记录(例如,以持续的方式),该系统行 进并修改元数据(在下文中被称作"预写日志")。重复删除系统中的元数据日志仅为一列事 务,且可以使用循环缓冲器来实施。一旦事务被存留(在下文中被称作"提交"),其就不在需 要,且可以被当做"结束"或"完成"。在各种实施例中,元数据日志可以或者内部地位于储存 系统中,或者外部地位于单独的储存设备上以降低储存访问的竞争。
[0071] 在系统故障的情况下,通过回放元数据日志来将系统元数据恢复至一致状态。系 统仅监测元数据中的最近已经改变了的那些部分,而不是检查(储存器中的)所有元数据。 恢复快的多。更好的是,恢复时间不依赖于储存介质的大小(容量)。除了更快的启动和恢复 时间之外,此方式的元数据日志系统也可以解决另一个重大问题:可扩展性。可以将大容量 储存介质组合成非常巨大容量储存器,且元数据日志的大小将完全不会增大,以及恢复时 间恒定。
[0072] 使用用于写入日志元数据的SSD驱动器可以帮助降低写入延时,从而改善总体储 存性能。但是,具体地在基于闪存的储存介质(诸如SSD)上使用日志的另一警告在于因由事 务的记录引起的额外的(即,频繁的)写入而导致元数据日志不太适合。在SSD上的读取和写 入将降低储存器的寿命。正因如此,在一些实施例中,逻辑层被用来透明地查找和写入重复 删除元数据(例如,至/从FP表和地址表)。除表格查找之外,该层体现了推迟写入的想法。
[0073] 总而言之,存在四种修改元数据的改变:将新的条目添加至FP表,将新的条目添加 至地址表,从FP表无效(删除)条目以及无效(重写)地址表中的条目。
[0074] 事务(原子操作)包含以上改变的一种或多种组合。改变的精确次序将取决于系统 朝向哪种"最终状态"。
[0075] 关于元数据日志过程,当接收到用来利用其对应的逻辑地址将数据写入至底层的 储存介质的应用程序请求时,"主"(在主的观点中)在地址表中查找,且具有两种关联情况。
[0076] 第一种情况是如果在地址表中未找到逻辑地址。图9示出这种情况的一个实施例。 在此情况下,之后将添加新的条目(逻辑地址与物理地址的对)至地址表。然而,此时物理地 址是未知的。"从"负责确定输入逻辑地址的对应的物理地址是什么。这里,最终状态是下面 的:(1)新数据,如果"从"不能在FP表中找到FP的条目。在此最终状态处,新的条目被添加至 地址表以及新的条目被添加至FP表。(2)重复数据:如果"从"能够在FP表中找到FP的条目。 最终状态意为新的条目被添加至地址表,且在FP表中将无改变。
[0077] 第二种情况是如果在地址表中找到逻辑地址。图10示出此情况的示例。在此情况 下,我们知道我们不应当添加新的条目,但这里存在要根据"从"如何确定物理地址来区分 的两种情况。这里,最终状态是下面的:(1)更新数据,如果"从"不能在FP表中找到FP的条目 或者如果"从"能够在FP表中找到FP的条目但物理地址与在地址表中找到的物理地址不匹 配,使得在任何一种情形下,新的条目被添加至FP表,且在地址表中将无改变。(2)重复数 据,如果"从"能够在FP表中找到FP的条目,且物理地址与在地址表中找到的物理地址匹配。 最终状态意为新的条目被添加至地址表,且在FP表中将无改变(与在主的观点中的重复数 据最终状态相同)。
[0078] 在最终状态是"更新数据"的情况下,其受到特别的关注,因为其表示用户应用程 序更新它们的数据的情况,因为已经知道了逻辑地址(意为在地址表中找到了其条目)但其 数据是新的(意为在FP表中未找到其FP条目)。在此情况下,"主"必须扫描地址表的条目以 找到包含原始的对应逻辑地址的任何条目。一旦找到具有相同逻辑地址的一个条目,主就 停止扫描,且该过程完成。如果未找到这种条目,则逻辑地址是要(从FP表)清除的候选。从 FP表清除FP条目的过程被称作垃圾收集,且仅在最终状态"更新数据"中需要垃圾收集。
[0079] 下面描述"从"的观点。存在至少两个同时发生的过程。辨别(FP),其中数据从FP队 列取出,且计算其散列值。产生的标识符(FP)将被用来在FP表中搜索条目。这里存在很少的 要区分的情况。如果未找到条目且在FP队列中未找到物理地址(这是"主"在地址表中未找 到条目的情况),或者如果在FP队列中找到了物理地址,则其表示"更新数据"的最终状态。 然后"从"在储存介质中分配新的位置(物理地址),且将数据写入其中。如果找到条目且在 FP队列中未找到物理地址,则其表示"重复数据"的最终状态。如果找到条目且在FP队列中 找到物理地址,则存在两种情况,这两种情况根据在FP队列中找到的物理地址是否与在FP 表中找到的物理地址完全相同而出现。
[0080] 如果它们相同,则必须将数据块从储存介质取回,并将其与FP队列中的数据块逐 位进行比较。这里又存在两种情况。如果逐位比较为相同,则其表示"重复数据"的最终状 态。"从"什么都不做,并将现存的位置(物理地址)返回至主。如果逐位比较为不相同,则其 表示"更新数据"的最终状态。然后"从"在储存介质中分配新的位置(物理地址),并将数据 写入其中。
[0081]如果它们不相同,则其表示"更新数据"的最终状态。然后"从"在储存介质中分配 新的位置(物理地址),并将数据写入其中。
[0082] 参见表1,示出了关于重复删除过程的最终状态的元数据改变。
[0083] 表 1
[0085]基于表1,定义用于元数据日志的储存器上格式(on-storage format)(其为储存 介质中的数据的物理布局)。
[0086]图11示出根据本发明的示例的储存器上元数据日志格式的一个实施例。在此示例 中,地址表条目的内容是虚设地址与物理地址的对,以及FP表条目的内容是物理地址与FP 的对。然而,根据最终状态,一些域(field)是可选的,且可以保持为空。
[0087] 在元数据中刚要作出改变,新的事务1100 (例如,具有独一无二的顺序ID/TID)就 被创建,且将要被改变的所有信息都被记录。如果事务1100在之后被成功写入至储存介质 上,则设置"提交"标志,该"提交"标志指示所有的改变都被安全储存在持久性介质中且该 域可以重新用来记录其他事务。在崩溃或故障之后,恢复简单地包括从储存介质读取元数 据日志,并回放来自此日志的改变,直到元数据再次一致为止。从而该改变据说是原子(不 可分)的,即它们或者成功(初始就成功或者在恢复期间被完全回放),或者完全不被回放 (被跳过),因为它们在崩溃出现之前还未被完全写入至日志中,这通过缺失的"提交"标志 来表示。
[0088] 对于基于闪存的储存而言,在储存介质中持续(重)写元数据存在的一个问题是该 过程将非常快地磨损介质的事实。频繁的表格访问将降低闪存驱动器的性能和耐久性。另 一个问题在于从介质读回元数据日志的延时。基于闪存的储存介质通常不会提供如随机存 取存储器(RAM)那样的高带宽,但RAM是易失性的,且在电源故障或者崩溃之后数据不能被 恢复。为了缓解以上提及的问题,在一些实施例中,使用用于透明查找表(元数据)的逻辑层 和推迟对储存介质的写入过程。
[0089] 在各种实施例中,下面的启用具有逻辑层的透明查找表中的一种或多种:将元数 据储存在非易失性RAM(在下文中被称作"NV-RAM")中、元数据被储存在非易失性RAM中,且 对CPU和系统RAM透明,NV-RAM可以为附-01丽、]?狀1、1^1^1、相变存储器和赛道(瓜〇6廿3。1〇 存储器或者甚至后备电池的DMM,NV-RAM具有DRAM速度和非易失性特性。元数据的备份被 储存在储存介质中(备份元数据包含所有提交的元数据),和/或元数据(地址表和FP表)如 果其变得太大而不能被保持在NV-RAM中则可以被涌入储存介质中(在此情况下该层提供用 于元数据的高速缓冲功能)。
[0090] 图12示出用于透明查找表的逻辑层的一个实施例。在此实施例中,读取操作包括 在NV-RAM中查找元数据,以及在映射元数据之后,所有都与正常读取相同。
[0091] 图13示出使用逻辑层读取的一个实施例。在第一步骤1300处,启动数据读取操作。 该读取操作可以通过控制器或者其他适合于启动该操作的设备来启动。在第二步骤1302 处,该操作查找元数据以识别是否存在重复。如果存在重复数据,则在步骤1304处,使用映 射的地址来读取数据。在步骤1308处,返回该数据。
[0092] 图14示出使用逻辑层的具有重复的写入的一个实施例。在步骤1400处,启动数据 写入操作。在步骤1402处,该操作查找和/或更新元数据。如果对于该写入未找到重复,则将 进行至储存器的写入。如果找到了重复数据,则将更新元数据。在步骤1404处,从驱动器确 认写入。当从驱动器确认了写入时,元数据将确认该写入,且也将元数据提交至日志元数据 中。如果NV-RAM出故障,则日志元数据可以被用来恢复数据。在步骤1406处,可以异步地更 新元数据。
[0093] 图15示出使用逻辑层的无重复的写入的一个实施例。在步骤1500处,启动写入命 令。在步骤1502处,查找和/或更新元数据。在步骤1504处,数据被写入至储存器,以及在步 骤1506处,元数据被异步地更新。在步骤1508处,从储存媒介确认写入。在步骤1510处,从 NV-RAM确认写入。
[0094] 在某种情况下,关于元数据的事务必须被存留至储存介质。为了取得高的带宽、空 间的有效利用以及为了延长基于闪存的储存器的寿命,期望尽可能完全、实际上持续尽可 能短地写入元数据。为了实现这两个目标,在一些实施例中使用经由异步写入的推迟且整 合的事务。根据"最终状态",可能存在或者取消其它事务或者可以被一起组合至单个最终 事务中的事务。
[0095]关于修改地址表的最终状态:具有特定逻辑地址的最终事务将取消所有在前的具 有同一逻辑地址的事务。
[0096]关于修改FP表的最终状态:具有特定物理地址的最终事务将取消所有之前的具有 同一逻辑地址的事务。
[0097] 图16A和图16B示出写入整合的一些实施例。参见图16B,事务8将取消事务1和事务 3,因为每个事务指向逻辑地址Ll。仅最终事务有价值,因为先前的事务(事务1和事务3)不 再有效,以表示储存在Ll下的任何信息的重复删除元数据。此外,事务8是"GC"(垃圾收集/ 清除)最终状态,意为没有什么应当被储存。先前的事务仅过渡出现。
[0098]事务12将取消事务10和事务5,因为每个事务指向逻辑地址L3。仅最终事务有价 值,因为先前的事务(事务10和事务5)不再有效,以表示储存在L3下的任何信息的重复删除 元数据。最后,仅需要记录事务12。
[0099]虽然已经参照本发明的示例性实施例而特别示出并描述了本发明,但本领域技术 人员将理解的是,在不脱离由所附权利要求所限定的本发明的精神和范围的情况下,可以 在其中作出形式和细节上的改变。因此,前述的仅作为示例,而非意在限制。例如,在本文中 示出并描述的元件的任何数量仅作为示例。本发明仅由在所附权利要求及其等价物中所限 定的来限制。
【主权项】
1. 一种利用重复删除过程的存储系统,包括: 控制器; 储存介质;以及 非易失性RAM,包括元数据日志和元数据高速缓冲存储器; 其中,元数据高速缓冲存储器包括地址表和辨别表;以及 其中,元数据日志包括多个事务,所述多个事务指示事务是否被成功写入至储存介质 上。2. 如权利要求1所述的存储系统,其中,所述多个事务中的每个包括提交部分。3. 如权利要求2所述的存储系统,其中,提交部分包括标志,所述标志指示事务被成功 写入至储存介质上。4. 如权利要求1所述的存储系统,其中,地址表将逻辑地址映射至物理地址。5. 如权利要求1所述的存储系统,其中,辨别表将物理地址映射至辨别码。6. 如权利要求1所述的存储系统,其中,所述多个事务中的每个包括数据的类型。7. 如权利要求6所述的存储系统,其中,所述数据的类型包括来自新数据、重复数据、更 新数据和垃圾收集中的至少一种的数据的最终状态。8. -种利用重复删除过程的方法,包括: 将地址表和辨别表作为元数据高速缓冲存储器储存在非易失性RAM中; 将多个事务之中的事务写入元数据日志中,每个事务指示所述事务是否被成功写入至 储存介质中;以及 在非易失性RAM上更新元数据日志。9. 如权利要求8所述的方法,其中,所述多个事务中的每个包括提交部分。10. 如权利要求9所述的方法,其中,提交部分包括标志,所述标志指示所述事务被成功 写入至储存介质上。11. 如权利要求8所述的方法,其中,地址表将逻辑地址映射至物理地址。12. 如权利要求8所述的方法,其中,辨别表将物理地址映射至辨别码。13. 如权利要求8所述的方法,其中,所述多个事务中的每个包括数据的类型。14. 如权利要求13所述的方法,其中,所述数据的类型包括来自新数据、重复数据、更新 数据和垃圾收集中的至少一种的数据的最终状态。15. -种装置,包括: 存储器控制器,适用于在包括元数据日志和元数据高速缓冲存储器的非易失性RAM中 使用; 其中,元数据高速缓冲存储器包括地址表和辨别表;以及 其中,元数据日志包括多个事务,所述多个事务指示事务是否被成功写入至储存介质 上。16. 如权利要求15所述的装置,其中,所述多个事务中的每个包括提交部分。17. 如权利要求16所述的装置,其中,提交部分包括标志,所述标志指示所述事务被成 功写入至储存介质中。18. 如权利要求15所述的装置,其中,所述多个事务中的每个包括数据的类型。19. 如权利要求18所述的装置,其中,所述数据的类型包括来自新数据、重复数据、更新 数据以及垃圾收集中的至少一种的数据的最终状态。
【文档编号】G06F3/06GK105843551SQ201610065709
【公开日】2016年8月10日
【申请日】2016年1月29日
【发明人】因德拉·G·哈里约诺, 张延 , 柴震川
【申请人】爱思开海力士有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1