针对固态硬盘的存储方法及设备与流程

文档序号:19075166发布日期:2019-11-08 21:21阅读:342来源:国知局
针对固态硬盘的存储方法及设备与流程

本公开的各种实施例总体上涉及存储领域,并更为具体地涉及针对固态硬盘的存储方法及设备。



背景技术:

RAID 1配置是一种用于利用两个或更多驱动器实现高可靠性的常用配置。常规方法中,该配置在相同层级和容量上需要两个或更多等同的驱动器,以实现2倍的读取性能并在降级(degraded)时仍能获得可接受的性能。从性能的角度上来讲,这对于硬盘驱动器(HDD)的情况常常是有利的。而对于固态硬盘(SSD)的情况,单独的磁盘就可以提供所需的足够的读写操作(IOPS)且装配其他等同的磁盘仅仅用于提供足够的可靠性。这意味着,为实现该可靠性,往往需要至少2倍数量的SSD并因此增加了成本。如图1所示,图1图示了传统的具有2n个磁盘的用于提供n个磁盘容量的RAID 1配置的示意图(其中n为正整数)。

此外,由传统RAID 1配置提供的恒定的性能以及恒定的可靠性对于一些应用来说可能是过于冗余的,在这样的应用中,热点数据(hot data)和冷门数据(cold data)之间的比例可能相对较小,且热点数据通常由最近的更新来写入,并且较频繁地访问热点数据以用于读取。如常常出现的情况,在具有基于SSD的基于列(column)的noSQL数据库的解决方案中,其中列被存储为多个版本,并且仅仅最近的版本最可能被访问。对于这种应用而言,最新的热点数据的写入和读取可以被缓存并共享到公共磁盘上。顺序地利用数据的规律性检查点,源磁盘数据可以以几乎相同的R1重建时间来被安全地重建。



技术实现要素:

为了解决上述问题,本公开的实施例提供了一种针对固态硬盘的存储方法及设备。针对RAID 1配置并针对特定负载,通过使用该方法及设备,可以大幅降低所需SSD驱动器的数目而不会损失所需的数据恢复能力,并且降级性能也可以被保持在相对高的水平。

本公开的实施例的方法将使用较低层级的、大容量的、被共享到高性能层级SSD驱动器的硬盘驱动器驱动器(HDD)或驱动器瓦式磁记录驱动器(SMR)用于顺序的检查点数据。同时,使用另一高性能的SSD驱动器作为快速缓存,用来确保针对降级操作情况下的最佳的随机性能。

高性能层级驱动器(SSD)可以具有很好的随机读写操作(IOPS)能力。与SSD相比,虽然HDD(SAS/SAS NL/SMR)在随机读写方面不具竞争力,但对于顺序读写(sequential IO),HDD可以达到与SSD类似水平。此外,HDD的容量通常非常大,并且可以被用作检查点驱动器来顺序地转存SSD中的数据。最新的HDD可以具有4T和8T水平的容量并较为廉价。随着新SMR技术,单一的HDD可以提供更大的容量。

本公开的实施例的方法对HDD和SSD各自的优势进行了最佳的组合,并如RAID 1一样,能够对热点数据和冷门数据两者提供的所需的冗余度。

本公开的第一方面提供了一种针对固态硬盘的存储方法,包括:设置检查点驱动器和缓存驱动器;将数据驱动器中的数据块备份到所述检查点驱动器;以及当所述数据驱动器损坏时,将备份到所述检查点驱动器中的数据块的一部分以及所述缓存驱动器中的数据块的一部分写回到另一数据驱动器中。

根据本公开的示例性实施例,其中所述检查点驱动器包括硬盘驱动器,并且所述缓存驱动器和所述数据驱动器包括固态硬盘。

根据本公开的示例性实施例,其中所述缓存驱动器为所述数据驱动器的一部分。

根据本公开的示例性实施例,所述方法还包括:在将数据驱动器中的数据块备份到所述检查点驱动器之前:针对每一次写入操作,为将被写入的数据驱动器分配一个版本号;以及将所述数据块写入到所述将被写入的数据驱动器和所述缓存驱动器中;

根据本公开的示例性实施例,其中将数据驱动器中的数据备份到所述检查点驱动器包括:将所述数据驱动器中的数据顺序地备份到所述检查点驱动器中;并且将已被备份的最新的版本号记录为检查点号。

根据本公开的示例性实施例,其中将所述数据驱动器中的数据顺序地备份到所述检查点驱动器中包括:在备份完成后,将版本号小于所述检查点号的数据块标识为已备份。

根据本公开的示例性实施例,其中当所述数据驱动器损坏时,将备份到所述检查点驱动器中的数据块的一部分以及所述缓存驱动器中的数据块的一部分写回到另一数据驱动器中包括:将具有等于所述检查点号的数据从所述检查点驱动器中写回到另一数据驱动器中;以及将具有大于所述检查点号的数据从所述缓存驱动器中写回到所述另一数据驱动器中。

本公开的第二方面提供了一种针对固态硬盘的存储设备,包括:检查点驱动器和缓存驱动器;备份装置,用于将数据驱动器中的数据块备份到所述检查点驱动器;以及写回装置,用于当所述数据驱动器损坏时,将备份到所述检查点驱动器中的数据块的一部分以及所述缓存驱动器中的数据块的一部分写回到另一数据驱动器中。

根据本公开的示例性实施例,其中所述检查点驱动器包括硬盘驱动器,并且所述缓存驱动器和所述数据驱动器包括固态硬盘。

根据本公开的示例性实施例,其中所述缓存驱动器为所述数据驱动器的一部分。

根据本公开的示例性实施例,所述设备还包括:版本号分配装置,用于针对每一次写入操作,为将被写入的数据驱动器分配一个版本号;以及写入装置,用于将所述数据块写入到所述将被写入的数据驱动器和所述缓存驱动器中;

根据本公开的示例性实施例,其中所述备份装置被配置为:将所述数据驱动器中的数据顺序地备份到所述检查点驱动器中;并且将已被备份的最新的版本号记录为检查点号。

根据本公开的示例性实施例,其中所述备份装置被配置为:在备份完成后,将版本号小于所述检查点号的数据块标识为已备份。

根据本公开的示例性实施例,其中所述写回装置被配置为:将具有等于所述检查点号的数据从所述检查点驱动器中写回到另一数据驱动器中;以及将具有大于所述检查点号的数据从所述缓存驱动器中写回到述另一数据驱动器中。

本公开的第三方面提供了一种针对固态硬盘的存储的计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据本公开的第一方面所述的方法的步骤。

附图说明

图1图示了传统的包括有2n个磁盘的用于提供n个磁盘容量的RAID 1配置的示意图。

图2示出了根据本公开的实施例的针对固态硬盘的存储的方法的流程图。

图3图示了根据本公开的实施例的针对固态硬盘的存储方法的示意图。

图4图示了根据本公开的另一实施例的针对固态硬盘的存储方法的示意图。

图5图示了根据本公开的实施例的数据缓存的一种示例实现方式。

图6示出了了根据本公开的实施例的针对固态硬盘的存储的装置的框图。

具体实施方式

下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。

图2示出了根据本公开的实施例的针对固态硬盘的存储的方法200的流程图。

如图2所示,方法200包括如下主要步骤:

步骤S201:设置检查点驱动器和缓存驱动器;

步骤S202:将数据驱动器中的数据块备份到所述检查点驱动器;以及

步骤S203:当所述数据驱动器损坏时(或降级时),将备份到所述检查点驱动器中的数据块的一部分以及所述缓存驱动器中的数据块的一部分写回到另一数据驱动器中。

根据本公开的示例性实施例,其中所述检查点驱动器包括硬盘驱动器(HDD),并且所述缓存驱动器和所述数据驱动器包括固态硬盘(SSD)。

例如,图3图示了根据本公开的一个实施例的针对固态硬盘的存储的方法的示意图。如图3所示,所述存储设备通过n+2个磁盘实现了n个SSD磁盘容量,并包括1个SSD驱动器作为缓存驱动器,以及1个4T的HDD驱动器作为检查点驱动器。与图1中所图的传统的RAID 1配置的存储结构相比(即,通过2n个磁盘实现了n个SSD磁盘容量),图3所示的存储结构大大降低了所需的SSD驱动器的数目。

根据本公开的示例性实施例,其中所述缓存驱动器可以为所述数据驱动器的一部分。

例如,图4图示了根据本公开的另一实施例的针对固态硬盘的存储方法的示意图,其中缓存驱动器具有分布式的缓存链的形式并分布在每个SSD驱动器中,并作为另一个SSD驱动器的缓存。在如图4中所示的示例中,D1作为D0的缓存、D2作为D1的缓存,D0作为Dn的缓存,其中D1、D2、…Dn为每个SSD驱动器的编号。使用这种分布式的缓存结构是为了避免使得如图3中所示的单独的缓存驱动器成为瓶颈。

根据本公开的示例性实施例,所述方法200还包括:

·针对每一次写入操作:

在步骤S202之前,

(1)为将被写入的数据驱动器分配一个版本号(V)其中所述版本号是较大的正整数,其针对每个数据驱动器而从0开始单调地增加。

(2)将所述数据块写入到所述将被写入的数据驱动器和所述缓存驱动器两者中。

·针对每一次读取操作:

仅访问数据驱动器,并且不访问缓存驱动器与检查点驱动器。然而,系统将跟踪逻辑块地址(LBA)范围的热度图(heat map),并根据缓存的大小,将最热点的访问数据复制到缓存中。

根据LBA,至缓存的写入操作需要被哈希成映射表条目,以便于快速查找。元数据映射条目还需要包含上述生成的对应的版本号,以用于数据比较以及重建恢复,元数据映射条目还需要包含一个比特位来指示对应的数据是否已备份。该映射表可以被存储在相同的缓存驱动器中或被存储在内存中以加速查找。

图5示出了数据缓存的一个示例实施方式,其中:

LBA_S代表缓存中的数据位于数据缓存驱动器中的位置;

LBA_T代表条目所指示的实际LBA;

VER代表用于更新操作的版本号,其为较大正整数,最高位用来指示数据是否已备份。如果VER的最高位为1,则表示已备份(clean),如果VER的最高位为0,则表示未备份(dirty)。

根据本公开的示例性实施例,步骤S202还包括:将所述数据驱动器中的数据顺序地备份到所述检查点驱动器中;并且将已被备份的最新的版本号记录为检查点号。

需要指出,备份的时间间隔可以根据可靠性要求而被静态配置,或根据所消耗的缓存器容量而被动态配置。

还需要指出,系统一直跟踪每一个数据驱动器的最近一个检查点,该最后一个检查点指示出数据驱动器上的具有最近数据更新的最近的快照文件已被备份到检查点驱动器中。

根据本公开的示例性实施例,其中将所述数据驱动器中的数据顺序地备份到所述检查点驱动器中包括:在备份完成后,将版本号小于所述检查点号的数据块标识为已备份。

·针对至缓存的数据复制:

向缓存中复制数据的过程与写入操作类似,不同之处在于,指示数据未被备份(dirty)的比特位需要被置为clean,即指示数据已被备份,且版本号被置为0。

还需要指出,图3中所示的配置中,缓存可以是统一的、被共享的缓存池并且对于每个SSD数据、基于每次访问不具有固定的大小。通过这种方式,可以最高效地利用缓存器。同样,可以根据每个驱动器的缓存的使用情况来安排备份时间间隔。例如,如果某个数据驱动器很少被写入新的数据并且包含较少的dirty数据,则这个数据驱动器可能最不需要被频繁地备份。

接下来在步骤S203处,根据本公开的示例性实施例,其中当所述检查点驱动器损坏时,系统仅仅需要选择另外的备用HDD驱动器,并对与其相关联的所有数据驱动器再次进行一次备份。

根据本公开的示例性实施例,其中当所述数据驱动器损坏时,将备份到所述检查点驱动器中的数据块的一部分以及所述缓存驱动器中的数据块的一部分写回到另一数据驱动器中包括:将具有等于所述检查点号的数据从所述检查点驱动器中写回到另一数据驱动器中;以及将具有大于所述检查点号的数据从所述缓存驱动器中写回到所述另一数据驱动器中。

在数据完全被恢复到新的SSD数据驱动器之前,新的SSD数据驱动器将不再接受任何用户读写操作。如果有缓存可用,则首先在缓存上进行所有的用户IO的读写操作将,然后(如果必要)在检查点驱动器上进行读写操作。

需要根据IO写操作来工程化地设计系统,并且通过适当地调节缓存大小来保持缓存使用的安全限度,以及通过适当的检查点间隔来将对检查点驱动器的访问最小化。

一旦全部数据已被重建到新的备用驱动器上,则系统返回到正常工作模式。并且新的被用驱动器中的缓存区域也可以针对热点读取操作来开始接受缓存更新以及复制。

根据本公开的示例性实施例,在多于一个数据驱动器(即,两个或更多)损坏的情况下,数据仍然是可恢复的。如果如图3所示,在分配有专门的缓存驱动器的情况下,即使全部数据驱动器都损坏,数据仍然是可访问并且可恢复的。该过程与只有一个数据驱动器损坏的情况类似。

然而,当具有如图3所示的配置的检查点驱动器损坏并且同时一个数据驱动器也损坏的情况下,则必须从外部备份中恢复数据。

工程学示例

例如,如果分配有1000MB的带宽,则从检查点HDD驱动器中恢复的200G的SSD驱动器重建仅需要2000秒。如果2T的HDD被共享到10个200G的SSD驱动器,则从第一个驱动器到最后一个驱动器的检查点时间的最大周期将为2000*10=5.5小时。对于每个SSD数据驱动器给定20G的缓存,并且对10个SSD数据驱动器给定总共300G的整体上的缓存,则被允许的最大用户IO写操作大致为300G/5.5=55G/hour,这足以满足特定应用的需要。

本公开的第二方面提供了一种针对固态硬盘的存储设备600,包括:检查点驱动器601和缓存驱动器602;备份装置603,用于将数据驱动器中的数据块备份到所述检查点驱动器;以及写回装置604,用于当所述数据驱动器损坏时,将备份到所述检查点驱动器中的数据块的一部分以及所述缓存驱动器中的数据块的一部分写回到另一数据驱动器中。

根据本公开的示例性实施例,其中所述检查点驱动器601包括硬盘驱动器,并且所述缓存驱动器602和所述数据驱动器包括固态硬盘。

根据本公开的示例性实施例,其中所述缓存驱动器602可以为所述数据驱动器的一部分,如图4中的结构所示。

根据本公开的示例性实施例,所述设备还包括:版本号分配装置,用于针对每一次写入操作,为将被写入的数据驱动器分配一个版本号;以及写入装置,用于将所述数据块写入到所述将被写入的数据驱动器和所述缓存驱动器中;

根据本公开的示例性实施例,其中所述备份装置603被配置为:将所述数据驱动器中的数据顺序地备份到所述检查点驱动器中;并且将已被备份的最新的版本号记录为检查点号。

根据本公开的示例性实施例,其中所述备份装置603被配置为:在备份完成后,将版本号小于所述检查点号的数据块标识为已备份。

根据本公开的示例性实施例,其中所述写回装置604被配置为:将具有等于所述检查点号的数据从所述检查点驱动器中写回到另一数据驱动器中;以及将具有大于所述检查点号的数据从所述缓存驱动器中写回到述另一数据驱动器中。

综上所述,本公开的各种实施例提供了一种针对固态硬盘的存储的方法及设备,所述方法包括:设置检查点驱动器和缓存驱动器;将数据驱动器中的数据块备份到所述检查点驱动器;以及当所述数据驱动器损坏时,将备份到所述检查点驱动器中的数据块的一部分以及所述缓存驱动器中的数据块的一部分写回到另一数据驱动器中。通过使用该方法及设备,可以大幅降低所需SSD驱动器的数目而不会损失所需的数据恢复能力,并且降级性能也可以被保持在相对高的水平。

以上所述仅为本公开的可选实施例,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的保护范围之内。

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