固态存储器容量管理系统和方法与流程

文档序号:13672645阅读:302来源:国知局

本发明涉及信息存储器容量调整管理的领域。



背景技术:

诸如数字计算机、计算器、音频装置、视频设备和电话系统的多种电子技术,有助于在大多数商业、科学、教育和娱乐领域内分析和传递数据及信息方面提高生产率并减少成本。这些活动经常涉及大量信息的传递和存储,并且执行这些活动的网络和系统的复杂度及成本可能是极大的。固态驱动器(ssd)常常用于在各种环境(例如,数据中心、服务器群、云中,等等)中提供固定存储空间(例如,类似于使用一些硬盘驱动器(hdd)的方式)。

nand闪存ssd通常有助于相对迅速地访问所存储的信息,但倾向于具有可能不利地影响整体性能的其他特性。例如,闪存装置信息更新通常涉及可能不利地影响装置的有效寿命并消耗带宽的写入放大。由于写入放大引起的不利影响的程度和数据写入操作的大小之间通常是对应的。当使用小的数据存储块大小时,在随机写入的应用中ssd写入放大常常不是重要的。然而,存在很多使用大的块大小的原因。许多系统仍使用传统大块顺序写入(例如,以符合形式上与hdd等相关联的每秒输入/输出(iops)需求)。而且,分布式文件系统经常合并输入/输出(i/o)以形成用来刷新存储器的大小很大的块。

在减小写入大小的努力中,一些传统系统尝试压缩数据。然而,可能存在与数据压缩相关联的成本或不利影响,这会导致整体性能的减弱或劣化(例如,在被压缩部件消耗的芯片面积、信息吞吐量、功耗等的方面)。因此,常常在与数据压缩相关联的成本或不利影响和压缩关于消减写入放大而具有的益处之间存在折衷。因此,已在ssd中尝试了压缩,但考虑到了的压缩的较高成本和不利影响,仍未在ssd中广泛使用。



技术实现要素:

本发明有助于高效且有效的信息存储装置操作。在一个实施方式中,额外(bonus)容量法包括:接收与第一组逻辑存储地址块相关联的第一量的原始信息;将第一量的原始信息压缩成第一量的压缩信息,其中,第一量的压缩信息的大小小于第一量的原始信息,并且差值为第一节省容量;将第一量的压缩信息存储在第一组物理存储地址块中;跟踪第一节省容量;以及将第一节省容量的至少一部分用于存储活动,存储活动不同于用于第一量的原始信息的直接联系的地址协调空间(directbondingaddresscoordinationspace)。除了直接联系地址协调空间之外的存储活动可包括各种活动(例如,将第一节省容量转换到新的额外驱动器(newbonusdrive)中、用于新的额外卷(newbonusvolume)、冗余容量(over-provisioning)等)。

第一节省容量的跟踪和第一节省容量到新的额外驱动器或卷的转换对主机是透明的,并且主机继续将物理块地址视为分配给原始数据。在一个实施方式中,在逻辑块地址层和闪存转译层(flashtranslationlayer,闪存转换层)之间的中间转译层中执行额外映射关系(bonusmappingrelation)。可在实际的原位数据压缩期间执行调整新的额外驱动器。可在使用额外块(bonusblock)期间在线建立逻辑块地址和物理块地址之间的额外映射关系。当与压缩相关联的压缩增益低于阈值时,省略压缩。

在一个实施方式中,可为附加信息重复步骤。在一个示例性实施方案中,方法进一步包括:接收与第二组逻辑存储地址块相关联的第二量的原始信息;将第二量的原始信息压缩成第二量的压缩信息,其中,第二量的压缩信息的大小小于第二量的原始信息,并且差值为第二节省容量;将第二量的压缩信息存储在第二组物理存储地址块中;跟踪第二节省容量;以及将第二节省容量的至少一部分用于存储活动,存储活动不同于用于第二量的原始信息的直接联系的地址协调空间。可以跨多个存储驱动器有效地全局管理数据压缩。

在一个实施方式中,存储系统包括:主机接口、压缩部件、中间转译层部件和nand闪存存储部件。主机接口被配置为从主机接收信息并将信息发送至主机,其中,信息包括根据逻辑块地址配置的原始信息。压缩部件被配置为将原始信息压缩成压缩信息。中间转译层部件被配置为根据中间转译层块地址布置压缩信息,并跟踪由原始信息和压缩信息之间的差引起的节省容量。nand闪存存储部件根据物理块地址存储压缩信息并将反馈提供至中间转译层部件。

在一个示例性实施方案中,中间转译层部件根据节省容量开始创建新的驱动器。中间转译层部件可在模块级上执行操作,允许来自物理层的递归反馈。节省容量用于创建新的额外驱动器,并且该创建对于主机是透明的。

额外容量法可以包括:接收与第一量的物理块地址相关联的逻辑块寻址原始信息;将逻辑块寻址原始信息压缩成压缩信息,并将该压缩信息与第二量的物理块地址相关联;跟踪第一量的物理块地址和第二量的物理块地址之间的容量差;以及指定容量差用作额外存储器(bonusstorage),其中容量差的压缩、跟踪和使用对于主机是透明的。额外存储器可用来在原始驱动器的逻辑块地址计数用完之后,创建额外驱动器。额外驱动器的容量可在一组写入操作之后更新,并且额外驱动器的逻辑块计数改变。

可在逻辑块地址层和闪存转译层之间的中间转译层中执行跟踪和指定容量差。中间转译层确保与主机的兼容性。中间转译层处理更新以便基于容量差形成额外驱动器。中间转译层块地址计数和物理块地址计数是相同的,并在使用期间恒定。中间转译层操作可在主机和闪存转译层之间,创建自定义的唯一接口以实现额外驱动器的创建。

附图说明

包括联系在本说明书中并形成该说明书的一部分的附图用于例示本发明的原理,并且不旨在将本发明限于其中所示的特定实施方案。除非另外具体指示,否则附图不是按比例绘制的。

图1是根据一个实施方式的示例性额外容量存储方法的框图。

图2a是根据一个实施方式的示例性存储空间的框图。

图2b是根据一个实施方式的示例性信息存储的框图。

图3a是根据一个实施方式的示例性另外信息存储的框图。

图3b是示例性传统信息存储的框图。

图4a是传统ssd产品数据路径的框图。

图4b是根据一个实施方式的ssd产品的框图。

图5是根据一个实施方式的具有逻辑卷管理(lvm)的示例性存储组织的框图。

图6是根据一个实施方式的在集群上同时运行多个服务的示例性分布式系统的框图。

图7a是根据一个实施方式的额外存储方法的框图。

图7b是根据一个实施方式的示例性数据压缩方法的框图。

图8是根据一个实施方式的额外驱动器生成机制的框图。

图9a是根据一个实施方式的额外驱动器的示例性应用的框图。

图9b是根据一个实施方式的额外驱动器的示例性应用的另一框图。

图10a是根据一个实施方式的额外驱动器生成机制的框图,其中一些原始数据未被压缩。

图10b是根据一个实施方式的利用额外容量的示例性应用的框图。

图11a是无中间转译层(mtl)的传统方法1110的框图。

图11b是根据一个实施方式的示例性中间转译层(mtl)方法1120的框图。

图12是根据一个实施方式的示例性格式转换层级结构的框图。

图13是根据一个实施方式的在不同层的存储块格式的框图。

图14是根据一个实施方式的示例性数据方案压缩方法的流程图。

具体实施方式

现在详细参考本发明的优选实施方式,在附图中示出本发明的实例。尽管将联系优选实施方式对本发明进行描述,但应理解它们不旨在将本发明限于这些实施方式。相反,本发明旨在覆盖可包括在如由所附权利要求限定的本发明的精神和范围内的替换、修改和等同形式。此外,在本发明的以下详细描述中,阐述众多具体细节以便提供本发明的透彻理解。然而,对于本领域技术人员显而易见的是,本发明可在没有这些具体细节的情况下实践。在其他实施方式中,未详细描述众所周知的方法、过程、部件和电路以便不会不必要地模糊本发明的方面。

本存储器容量管理系统和方法有助于固态驱动器(ssd)中高效且有效的信息存储与增强的资源利用。在一个实施方式中,原始数据被压缩,并且原始数据量和压缩数据量的差被认为是存储器节省容量或额外存储器容量。额外存储器容量可用来调整可用于各种存储活动的有效存储器容量(例如,额外存储空间、冗余容量等),并可快速实时调整。在一个示例性实施方案中,额外存储器容量通过闪存转译逻辑和文件系统之间的中间转译层暴露于主机。如由主机“看到”的,物理ssd的逻辑地址容量可为灵活的和可扩展的,尽管其物理容量是固定的。与传统的一对一的逻辑块地址(lba)到物理块地址(pba)(lbatopba)存储方法相比,这实际上可使更多lba存储在具有固定数量的pba的ssd中。存储器容量管理可利用额外存储器容量用于除了直接联系的地址协调空间之外的各种活动,可包括各种活动(例如,将额外节省容量转换到新的额外驱动器中、用于新的额外卷、冗余容量等)。

上述系统和方法包括在原始数据实际写入到物理位置之前压缩原始数据。压缩可包括数据减少以在写入数据之前去除冗余,并且配置在线穿过内核栈而不重启或重新格式化(否则涉及四处移动大量数据)。在一个示例性实施方案中,对所存储数据的每个表征统计和分析的空间可用性被释放,然后全局和局部地去除原始数据中的数据冗余,以减小最终写入到物理nand闪存页面中的总数据量。即使ssd的物理容量恒定,额外存储器容量可以以多个可调整大小的逻辑卷的形式暴露。上述系统和方法可有效延伸对单独ssd驱动器的可控制性,并且针对不同的工作负载灵活安装不同的总lba计数,这转而可减少驱动器空间浪费并增强效率。

图1是根据一个实施方式的示例性额外容量存储方法的框图。

在方框10中,接收与第一组逻辑存储地址块相关联的第一量的原始信息。第一量的原始信息可对应于多个逻辑块地址。

在方框20中,第一量的原始信息被压缩成第一量的压缩信息。第一量的压缩信息的大小小于第一量的原始信息,并且差值为第一节省容量。

在方框30中,将第一量的压缩信息存储在第一组物理存储地址块中。第一量的压缩信息可对应于多个物理块地址。可存在比与未压缩的原始信息相关联的逻辑块地址数量更少的物理块地址。

在方框40中,跟踪第一节省容量。第一节省容量的跟踪对于主机透明,并且主机继续将物理块地址视为分配给原始数据。

在方框50中,将第一节省容量的至少一部分用于存储活动,该存储活动不同于用于第一量的原始信息的直接联系的地址协调空间。第一节省容量的使用也可对主机透明。应认识到,第一节省容量可应用于各种活动(例如,用于新的额外驱动器、用于新的额外卷、冗余容量等)。

在一个实施方式中,将第一节省容量的至少一部分转换成新的额外驱动器。在逻辑块地址层和闪存转译层之间的中间转译层中执行额外映射关系。可在实际原位数据压缩期间执行调整新的额外驱动器,并且可在使用额外块期间在线构建额外映射。在一个实施方式中,当与压缩相关联的压缩增益低于阈值时,省略压缩。

在一个实施方式中,可为额外信息重复示例性额外容量存储方法的步骤。在一个示例性实施方案中,方法进一步包括:接收与第二组逻辑存储地址块相关联的第二量的原始信息;将第二量的原始信息压缩成第二量的压缩信息,其中,第二量的压缩信息的大小小于第二量的原始信息,并且差值为第二节省容量;将第二量的压缩信息存储在第二组物理存储地址块中;跟踪第二节省容量;以及将第二节省容量的至少一部分用于存储活动,该存储活动不同于用于第二量的原始信息的直接联系的地址协调空间。应认识到,可将第二节省容量与第一节省容量组合使用。在一个示例性实施方案中,第一节省容量与第二节省容量在新的额外驱动器或卷中组合。可以跨多个存储驱动器有效地全局管理数据压缩。

图2a是根据一个实施方式的示例性存储空间的框图。上半部是根据一个实施方式的具有逻辑块地址(lba)配置的可扩展磁盘阵列(sda)的示例性部分的框图。sda部分包括逻辑块地址lba101、lba102、lba103、lba104、lba105、lba106、lba107、lba108、lba109、lba110、lba111和lba112。在一个示例性实施方案中,相应的块可被认为是lba的计数。在所示实例中,由于存在12个lba块,lba计数为12。图2a的下半部是根据一个实施方式的具有物理块地址(pba)配置的并行磁盘阵列(pda)的示例性部分的框图。pda部分包括物理块地址pba131、pba132、pba133、pba134、pba135、pba136、pba137、pba138、pba139、pba140、pba141和pba142。在一个示例性实施方案中,相应的块可被认为是pba的计数。在所示实例中,由于存在12个pba块,pba计数为12。在一个实施方式中,pba块为4k字节大小,并且相应的lba也为4k字节大小(以4k字节从0kb增加到48kb的kb增量在图2a和图2b的底部指示)。

图2b是根据一个实施方式的示例性信息存储的框图。初始,接收一大块原始数据a并且压缩成压缩数据a。原始数据a和压缩数据a之间的信息的大小或量的差被称为d-a。原始数据a为16k字节并且与lba层100中的逻辑块地址lba101、lba102、lba103和lba104相关联。然而,实际上,压缩数据a存储在物理存储器中,并且由于压缩数据a仅为12k字节的数据,因此其存储在pda层130中的pba131、pba132和pba133中。再次,pba块为4k字节大小,并且相应的lba也为4k字节大小(以4k字节从0kb增加到48kb的kb增量在图的底部指示)。如图2b所示,差d-a允许pba134保持为空。与将pba134留空但保持被调拨(committed)并与原始数据a相关联的传统方法不同,pba134可用作额外存储器,该额外存储器可用来存储其他信息。在图3a和图3b中示出能够使用压缩差用于额外存储器与传统方法中的不能使用压缩差之间的差异。

图3a是根据一个实施方式的示例性额外信息存储的框图。接收一大块原始数据b并且压缩成压缩数据b。原始数据b和压缩数据b之间的信息的大小或量的差被称为d-b。原始数据b为16k字节并且与逻辑块地址lba105、lba106、lba107和lba108相关联。然而,实际上,压缩数据b存储在物理存储器中,并且由于压缩数据b仅为12k字节的数据,因此其存储在pba134、pba135和pba136中。如图3a所示,差d-b允许一个或多个pba保持为空。出于说明目的,空的或额外的pba在pba141和pba142中示出并且指定为d-b和d-a。与通常的传统方法不同,pba141和pba142(也称为d-b和d-a)可用作能够用来存储其他信息的额外存储器。

图3b是示例性传统信息存储的框图。在传统信息存储方法中,通常存在lba对pba的直接的一对一的联系或关联。为维持逻辑块地址和物理块地址之间的严格的一对一存储块对应,差“d-a”与pba134相关联,并且差“d-b”与pba138相关联。pba134和pba138留空但保持被调拨并分别与原始数据a和原始数据b相关联。pba134和pba138充当直接联系的地址协调空间来对相应的差“d-a”和“d-b”进行说明,并使得能够保持用于原始数据的lba对pba的直接的一对一的联系或关联(即使其为实际上存储在pda130中的压缩数据)。因此,在传统方法中pba134保持被调拨并与原始数据a相关联。pba134不可用于存储压缩数据b,并且不可用于其他活动(例如,作为额外存储空间、冗余容量等),其仅保持为空。类似地,在传统方法中pba138保持被调拨并与原始数据b相关联。pba138不可用并且不可用于其他活动,其仅保持为空。

一些传统ssd产品在它们的控制器内具有集成压缩功能。在图4a中示出传统ssd产品数据路径的一个实例。ssd产品数据路径包括主机接口操作411、主机循环冗余校验(crc)解码412、压缩413、加密414、纠错码(ecc)编码415、nandcrc编码416、nand接口操作417、nand部件存储操作431至437、nand接口操作457、nandcrc解码456、ecc解码455、解密454、解压缩453、主机crc解码452和主机接口操作451。在一个实施方式中,ssd产品数据路径中的一些不同的相应操作可由一个部件执行(例如,主机接口操作411和主机接口操作451可由单个输入/输出主机接口部件执行,加密操作414和解密操作454可由单个加密/解密部件执行,等等)。压缩引擎与主数据路径中的其他模块串联。在ssd接收主机数据并校验奇偶性之后,数据在其块(例如,4k字节、512字节等)内压缩。每个原始数据块基于块内容和不同种类文件的可压缩性可或多或少地被压缩。可加密数据。由于压缩引擎处理和解压缩引擎处理在数据路径中串行化,因此压缩功能对ssd的吞吐量和延迟可具有显著影响。尤其对于高吞吐量要求,经常使用多个硬件压缩引擎,并因此占用更多的硅面积并消耗更多功率。

图4b是根据一个实施方式的ssd480产品或系统的框图。存储系统包括主机接口部件481、压缩部件482、中间转译层部件483、闪存转译层(ftl)部件484,以及nand闪存存储部件485。主机接口部件481被配置为接收来自主机的信息以及发送信息至主机,其中信息包括根据逻辑块地址配置的原始信息。压缩部件482被配置为将原始信息压缩成压缩信息。中间转译层部件483被配置为根据中间转译层块地址布置压缩信息,并跟踪由原始信息和压缩信息的差引起的节省容量。闪存转译层(ftl)部件484执行闪存转译层控制。nand闪存存储部件485根据物理块地址存储压缩信息并提供反馈至中间转译层部件。

在一个示例性实施方案中,中间转译层部件483根据节省容量创建新驱动器。中间转译层部件483可在模块级上执行操作,允许来自物理层的递归反馈。节省容量用于创建新的额外驱动器,并且该创建对于主机是透明的。

图5是根据一个实施方式的具有逻辑卷管理(lvm)的示例性存储组织的框图。示出了根据一个示例性实施方案的逻辑卷管理层之间的关系。lvm可包括层级结构,其包括物理卷、卷组和逻辑卷。层级结构中的每一层或每个级别可在彼此之上从物理卷到卷组到逻辑卷到文件系统而建立。逻辑卷可在底层卷组的自由空间内扩展。另一方面,如果底层卷组没有足够的自由空间,则可通过添加另一物理卷以先扩展底层卷组来扩展逻辑卷。在一个示例性实施方案中,额外空间用来创建附加物理卷。

通常,存在两种创建附加物理卷的方法。一种方法是创建新的虚拟磁盘装置以添加到卷组。另一种方法是扩展现有的虚拟磁盘装置、创建新分区,以及向卷组添加新分区。由于第二选项可能需要重启系统,因此创建新的虚拟磁盘装置通常更方便。在卷组扩展之后,对应的逻辑卷准备扩展。此后,可改变文件系统的大小从而用额外空间执行在线扩展。

图6是根据一个实施方式的在集群上同时运行多个服务的示例性分布式系统的框图。图示呈现分布式系统的顶级架构。前端客户端611、612、618和619收集用户的实时请求,并通过交换网621将它们的请求转发至分布式文件系统622。数据存储是基于存储在主节点集群640(其包括主节点641、642和645)中的元数据的。用户数据被分布并存储在数据节点集群650中。数据节点集群650包括数据节点651、652、658、661、662、668、681、682和688。为提高基础结构的效率和利用率,多个服务可同时在集群上运行。一些服务要求相对较高的存储器容量,而其他服务要求相对较大的计算资源。

从存储的观点来看,这可意味着存储数据内容多样化。由于混合的工作负载可形成内容上的全局平衡,这就使得具有合理的数据压缩率的数据压缩方案有价值。在一个实施方式中,数据压缩包括去除原始用户数据中的冗余并且还减轻os堆栈中的潜在次优处理的工作。

图7a是根据一个实施方式的额外存储方法的框图。

在方框710中,接收逻辑块寻址原始信息。逻辑块地址原始信息与第一量的物理块地址相关联。

在方框720中,压缩逻辑块寻址原始信息。压缩信息与第二量的物理块地址相关联。在一个实施方式中,在第二量的物理块地址中存在比第一量的物理块地址中的物理块更少的物理块。在第二量的物理块地址中还可存在比逻辑块寻址原始信息中的逻辑块更少的物理块。第二量的物理块地址可以是第一量的物理块地址的子集合。

在方框730中,跟踪第一量的物理块地址和第二量的物理块地址之间的容量差。

在方框740中,容量差被指定用于额外存储。容量差的压缩、跟踪和使用对于主机是透明的。额外存储可用来创建额外驱动器。在一个实施方式中,额外存储可用来在原始驱动器的逻辑块地址计数用完之后,创建额外驱动器。在一个示例性实施方案中,在一组写入操作之后更新额外驱动器的容量。额外驱动器的逻辑块计数可发生变化。

在一个实施方式中,在逻辑块地址层和闪存转译层之间的中间转译层中执行方框730中的跟踪和方框740中的指定容量差。中间转译层确保与主机的兼容性。中间转译层可处理更新以基于容量差形成额外驱动器。在一个示例性实施方案中,中间转译层块地址计数和物理块地址计数是相同的并且在使用期间是恒定的。中间转译层操作可在主机和闪存转译层之间创建自定义的独特接口以实现额外驱动器的创建。

图7b是根据一个实施方式的示例性数据压缩方法的框图。方法包括处理阶段和数据压缩方案中包括的工作流程。

在方框721中,分布式文件系统(dfs)将来自不同客户端的输入/输出(io)合并且将数据分成大数据块(例如,大小为几兆字节)。大数据块分别标记唯一散列值并在库中跟踪。如果大块具有已在库中的散列值,则大数据块不传送下个步骤进行存储,但系统简单更新元数据以对应地指出唯一的大数据块。

在方框723中,执行在线擦除编码以减少物理存储中实际写入的数据量。

在方框724中,执行基于更细粒度的lba块(例如,4kb、415b等)的本地去重。

在方框725中,对单个块执行数据压缩并将数据压缩与片段块(fractionalblock)组合。

在一个实施方式中,取代保留3个大块副本的是,在线擦除编码以1~1.5的范围内的比率应用,这使得要移动到下一级的数据减少至少50%。为实现该目标,擦除编码计算可通过协通处理器(其更可行且高效)而不是cpu实现。在通过存储结构扩展之后,本地去重去重进一步将大数据块切割成具有相同粒度的更细粒度的小数据块。获得并检查小数据块的散列以进一步移除重复的小块(类似于大数据块的散列检查)。将小数据块发送到驱动器,其中,压缩引擎对每个块工作。在上述3个主要步骤之后,数据显著压缩。数据压缩率是写入数据对原始数据的比率,其以下式表述。

数据压缩方案对用户和文件系统透明,并且也不同于更新文件系统的传统压缩。在一个实施方式中,额外存储方案使用户感觉可在运行中存储比实际使用的pba更多的原始信息lba,使得文件系统不需要改变为兼容的。压缩数据为与其相关元数据一起写入物理介质中的格式。由于压缩数据通常少于原始用户数据,因此用来存储数据的pba的计数小于从文件系统传递的lba的计数。因此,在图7中的压缩流程之后,驱动器容量等效放大。

图8是根据一个实施方式的额外驱动器生成机制的框图。在第一时间,响应于用户发起的写入来接收原始数据a。在压缩数据之后,将原始数据a转换成压缩数据a,其中节省容量为在原始数据a和压缩数据a的大小之间的差d-a。节省容量作为额外存储空间b-a被跟踪。在第二时间,原始数据b被接收并压缩以生成压缩数据b,其中节省容量为在原始数据b和压缩数据b的大小之间的差d-b。节省容量作为额外存储空间b-b被跟踪。

在一个实施方式中,虚拟地创建额外驱动器并且命名为sda_x。该额外驱动器可作为存储进一步内容的另一驱动器呈现给用户而不实际安装新的驱动器。ssd上pba的实际计数不改变,但通过数据压缩而成为可用的存储器容量(例如b-a和b-b)可用于存储另外信息。在驱动器使用期间,sda_x的容量可在每串写入操作之后更新。在一个实施方式中,额外驱动器sda_x将既不用于读取也不用于写入,直到驱动器的其他部分被写满。在一个示例性实施方案中,仅在驱动器的原始lba计数用完之后应用额外驱动器。

图9a是根据一个实施方式的额外驱动器的示例性应用的框图。继续图8的信息存储,在第三时间,原始数据c被接收并压缩以生成压缩数据c,其中节省容量为在原始数据c和压缩数据c的大小之间的差d-c。节省容量作为额外存储空间b-c被跟踪。在一个实施方式中,由于驱动器的原始lba计数被原始数据a、b和c用完,并且仅额外存储空间b-a、b-b和b-c可用,因此应用新的驱动器sda-x并使其可用。

在一个示例性实施方案中,过程可相对直接。在一个驱动器的额定容量被完全占用之前,仅某些信息需要转到上级。在此阶段不需要对物理驱动器做任何事。在稍后阶段,额外的lba和额外的容量pba之间的sda_x映射关系在使用sda_x期间在线构建。为实现另外lba和额外容量pba的解释和表示,在主机文件系统和闪存转译层(ftl)之间使用中间转译层(mtl)。mtl处理信息累积和分配到原始驱动器和额外驱动器的pba分配的更新。

应认识到,每个写入的原始数据不必须为相同大小。图9b是根据一个实施方式的额外驱动器的示例性应用的另一框图。继续图8的信息存储,在第三时间,原始数据d被接收并压缩以生成压缩数据d,其中节省容量为在原始数据d和压缩数据d的大小之间的差d-d。即使所有节省容量d-d不可用,但可使用的节省容量d-d的部分作为额外存储空间b-d被跟踪。由于原始驱动器的lba计数被压缩数据a、b和c与额外存储空间b-a、b-b和b-c用完,因此应用新的驱动器sda-x。

图10a是根据一个实施方式的额外驱动器生成机制的框图,其中一些原始数据未压缩。在一个实施方式中,尝试压缩原始数据中的一些是无效的。继续图8的信息存储,在第三时间,接收但不压缩原始数据e。原始数据e存储在pda中。即使没有与原始数据e相关联的节省容量,但额外存储空间b-a和b-b仍被跟踪并可用。

图10b是根据一个实施方式的利用额外容量的示例性应用的框图。信息更新的状态与图9a中的那些类似。再次,节省容量作为额外存储空间b-a、b-b和b-c被跟踪。在一个实施方式中,由于驱动器的原始lba计数被原始数据a、b和c用完,并且仅额外存储空间b-a、b-b和b-c可用,因此可做出关于如何使用额外存储空间b-a、b-b和b-c的决策。应认识到额外存储空间b-a、b-b和b-c可用于各种配置。额外存储空间中的至少一部分(例如,b-b和b-c等)应用于新驱动器sda-x的配置,这使得其可用。可使额外存储空间中的另一部分(例如,b-a等)可用作冗余容量(op)使用。

图11a是无中间转译层(mtl)的传统方法1110的框图。传统方法1110包括主机文件系统1111、闪存转译层(ftl)1113和nand闪存1114。图11b是根据一个实施例的示例性中间转译层(mtl)方法1120的框图。中间转译层(mtl)方法1120包括主机文件系统1121、中间转译层1122、闪存转译层(ftl)1123和nand闪存1124。在一个示例性实施方案中,暴露于主机以供与原始lba一起使用的存储空间逐渐被提取用作额外存储空间。中间块地址(mba)可用于此目的。在插入mtl的情况下,实施两个主功能。一个主功能是动态更新额外驱动器的容量至主机。然而,在其中额外驱动器将不被访问直到原始驱动器中的其他空间被完全占用的情况下,该更新将实际上不在每次更新后导致额外驱动器的立即占用。这意味着可存在其主要目的是为提供信息的目的而同步的更新。mtl的另一主功能是确保与主机的兼容性,使得文件系统和应用程序不需要改变或甚至不需要关注pba使用中的变化。主机可简单利用额外驱动器的“附加容量”。在由中间转译层的实施方案使用期间,物理介质的容量可用来服务于原始lba和新的额外lba两者。

在一个实施方式中,mba计数和pba计数通过在使用期间保持恒定的物理容量和块大小直接决定。原始驱动器部分的lba计数也是恒定的并且与mba计数相同。然而,基于不同数据内容,额外驱动器的lba计数可变化。转换层使用先前描述的全局去重和本地去重的结果,并在主节点保留全局去重的元数据,同时在本地节点保留本地去重的元数据。这些转换成图12中的格式。

图12是根据一个实施方式的示例性格式转换层级结构的框图。格式转换层级结构包括lba层1210、转换层1215、mba层1220、转换层1225和pba层1230。转换为从lba通过mba到pba,使得额外容量能够根据一个实施方式进行利用。小数据块(例如mba)传送到nand闪存存储器中并且进一步压缩,得到更压缩的格式。用于压缩的对应元数据反馈到mtl,并且通过将压缩与本地去重信息进行组合而重组压缩元数据。这在图12中示为从pba层到mba层的两个箭头。在一个实施方式中,压缩处理链包括全局去重、本地去重和压缩结束,并且mtl中的压缩元数据与报头和数据自身一起存储在pba中。在一个示例性实施方案中,mtl为缓存中间结果并将它们进一步处理成压缩格式之处。

图13是根据一个实施方式的在不同层的存储块格式的框图。存储块格式包括逻辑层块格式1310、中间转译层块格式1320和物理层块格式1330。本地去重的元数据插入在用户数据的报头和数据部分之间,如图13的物理层块格式1330中所示(表示为压缩的元数据)。

回来参考图4,在压缩后相关控制信息生成。生成的控制信息在图13中命名为物理层块格式1330中的nand控制元。例如,用于加密的私钥、ecc的配置、raid信息(磁盘冗余阵列信息)等经常作为nand控制元数据存储。然而,图13为说明目的呈现,数据部分自身不需要为相同长度或大小。

在一个实施方式中,数据压缩的效率也可全局管理以利用总体存储系统配置的潜力。实时数据压缩比时常被监控,并且经分析以算出混合来自多个服务的数据内容的方式,以在每次重负载接通数据压缩,并暴露额外驱动器容量。如果统计结果证明压缩可能几乎不能减少数据流,则提交一个标志以从控制和分析面板绕过压缩。

在额外存储器容量方法中的压缩也可促进写入放大的减少。压缩的数块据平均比原始数据块短,并且较少空间用于有效存储主机原始数据。因此,较少信息写入在实际物理存储中。写入较少数据的压缩的优点可帮助减轻ssd中的写入放大。写入放大因为闪存存储器在其重写之前被擦除,并且擦除操作和写入操作中涉及的存储空间的量通常不同而出现。在擦除操作对写入操作中涉及的存储空间之间的差可引起闪存的比实际需要容纳新的或更新的数据的量大得多的部分被擦除和重写。因此,如果写入较少数据,则可能需要被擦除的部分较少并且发生写入放大的机会较小。因此额外存储器容量方法中的压缩还帮助减轻写入放大。

然而,尽管压缩可以帮助写入放大并且实际上较少的位被写入,但可写入传统ssd中的主机数据的总量不增加。在传统的方法中,一个ssd向主机显示的lba的总数与ssd的额定容量直接联系。该状况可关于存储器容量减小ssd中压缩功能的益处。额外存储方法使得系统能够保持与常规存储方法兼容,使得其与旧有系统兼容,同时提供常规系统通常不提供的另外的额外存储。

图14是根据一个实施方式的示例性数据方案压缩方法的流程图。

在步骤1410中,主机利用lba写入一个逻辑块。

在步骤1420中,计算步骤1410中的块的唯一密钥。

在步骤1430中,确定库中是否存在唯一密钥。如果唯一密钥存在,则过程进展到步骤1450。如果唯一密钥不存在,则过程进展到步骤1441。

在步骤1441中,验证crc。这可提供数据的正确或“健全”的指示。

在步骤1442中,确定是否允许压缩。如果允许压缩,则过程进展到步骤1444。如果不允许压缩,则过程进展到步骤1443。

在步骤1443中,写入数据并且过程进展到步骤1470。

在步骤1444中,块被压缩并与其他压缩块组合。

在方框1445中,确定片段(fraction)合并是否成功。如果片段合并成功,则过程进展到方框1448。如果片段合并不成功,则过程进展到方框1447。

在方框1447中,过程暂时保持要与其它数据组合的数据并返回步骤1445。

在方框1448中,中间转译层将块分配到额外驱动器。

在方框1449中,ftl为合并块映射一个pda并写入nand闪存中。

在方框1470中,确定当前块是否为要写入的最后块。如果当前块不是要写入的最后块,则过程返回到步骤1410。如果当前块是要写入的最后块,则过程进展到步骤1470。

在一个实施方式中,系统和方法可快速向用户暴露增量存储器容量。附加容量可呈现为额外驱动器,其使得存储空间能够以提高的效率使用。在一个示例性实施方案中,系统和方法包括通过以下整合多个层:用户空间应用、分布式文件系统、常规文件系统、nand存储驱动器(其可包括软件和固件两者)以及压缩引擎控制方案的硬件配置。在一个示例性实施方案中,中间转译层部件(例如,中间转译层部件483等)在ssd的控制器(例如,嵌入式处理器、应用专用集成电路(asic)、现场可编程门阵列(fpga)等)中实施额外存储器容量方法(例如,类似于在图1、图7a等中示出的方法)。

系统和方法可包括智能监控、分析和决策从而为了数据压缩效率的全局优化而省略压缩和数据内容混合。对于数据压缩幅度较小的某些情形,省略压缩部分。同时,关于数据内容在集群之间的分布,来自分布式文件系统的io合并和块切割可整体有助于空间优化。因此,系统可有效暴露可在没有在物理上安装新驱动器的情况下使用的过多额外驱动器。

中间转译层(mtl)可桥接文件系统和nand闪存存储的闪存转译层。mtl可使得文件系统和用户空间程序与下面的层自然兼容。mtl可充当桥从而缓存然后进一步处理信息。mtl也可将元数据组合成额外容量流和额外容量格式。这可通过在内核空间中运行的自发展驱动器实施。在一个实施方式中,创建自定义的独特接口和通信协议以实现信息交换。额外驱动器可与逻辑卷管理一起工作,并且有效地处理额外驱动器的容量中的微小差异。多层转译可有助于模块任务操作。多层转译可进行分配与信息通知和递归反馈。额外驱动器容量在每次实际原位数据压缩被增量地调整。

因此,所呈现的数据压缩存储系统和方法有助于高效处理和存储。系统和方法可逐渐暴露另外容量给文件系统而不用物理上安装另外驱动器。增量容量可以以逻辑卷中的额外驱动器的格式配置。可在原始驱动器为满之后创建额外驱动器用于另外的写入。系统可执行原位数据压缩率分析,然后因此以递归方式调整数据内容混合。新引入的中间转译层实现信息同步和元数据缓冲、更新和重组。整合全局去重、本地去重和按需压缩的数据压缩通过自发展的mtl来操纵,以利用空间节省潜力,其中所得到的节省用于额外驱动器。额外驱动器可用作正常逻辑卷而不需要改变文件系统或用户空间应用。

按照过程、逻辑块、处理和计算机存储器内对数据位的操作的其他符号表示来呈现详细描述的一些部分。这些描述和表示是数据处理领域的技术人员通常使用的手段,以将他们的工作实有效地传达给本领域其他技术人员。本文的过程、逻辑块、处理通常是指得到期望结果的自相容的步骤或指令的序列。步骤包括物理量的物理操纵。通常,尽管不是必需的,这些量采取能够在计算机系统中存储、传输、组合、比较和以别的方式操纵的电、磁、光或量子信号的形式。有时主要是为了公共使用的原因,将这些信号称为位、数值、元素、符号、字符、项、数字等,经证实这是方便的。

然而,应记住,这些术语和类似术语与适当物理量相关联,并且仅为应用于这些量的方便标签。除非特别指出,否则在下面的讨论中很明显,应该认识到,在整个本发明里,利用术语(诸如,“处理”、“计算”、“推算”、“确定”、“显示”等)的讨论涉及到计算机系统和操纵和转换被表示为物理(例如,电子)量的数据的类似处理设备(例如,电子、光学或量子计算设备)的动作和处理。该术语指将计算机系统的部件(例如,寄存器、存储器、其他此类信息存储、传输或显示设备等)中的物理量操纵或变换成类似地表示为其他部件中的物理量的其他数据的处理设备的动作和处理。

本发明上面描述的具体实施方式是出于说明和描述的目的示出的。它们不旨在为穷尽的或将本发明限于所公开的精确形式,并且显然可以根据以上教导进行许多修改和变化。选择并描述实施方式是为了最好地解释本发明的原理及其实际应用,由此使得本领域其他技术人员能够最佳地利用本发明和各种实施方式并并为达到预期的特定用途而做出各种修改。意图在于本发明的范围由所附权利要求及其等同物限定。方法权利要求内的步骤的列表不暗示执行步骤的任何特定顺序,除非在权利要求中明确陈述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1