用于ssd中灵活的raid的方法和设备的制作方法

文档序号:6496152阅读:219来源:国知局
用于ssd中灵活的raid的方法和设备的制作方法
【专利摘要】一种采用独立磁盘冗余阵列(RAID)方案的固态驱动器(SSD)包括闪存芯片、所述闪存芯片上的可擦除块,以及闪存控制器。所述可擦除块用于存储闪存页。所述闪存控制器以可操作方式耦接到所述闪存芯片。所述闪存控制器还用于将某些所述闪存页组织成RAID行组,并且将RAID行组成员组成信息写入所述RAID行组中的每个所述闪存页。
【专利说明】用于SSD中灵活的RAID的方法和设备
相关申请案的交叉参考
[0001]本发明要求2011年8月12日递交的发明名称为“用于SSD中灵活的RAID的方法和设备(Method and Apparatus for Flexible RAID in SSD)”的第 61/523,251 号美国临时申请案以及2012年4月30日递交的发明名称为“用于SSD中灵活的RAID的方法和设备(Method and Apparatus for Flexible RAID in SSD)”的第 13/460686号美国专利申请案的在先申请优先权,这些在先申请的内容以引入的方式并入本文本中,如全文再现一般。
【技术领域】
[0002]本发明涉及存储器,更确切地说,涉及用于SSD中灵活(flexible)的RAID的方法和设备。
【背景技术】
[0003]非易失性存储器已用作计算机和便携式信息设备中的存储器。近来,作为仅使用硬盘驱动器(HDD)的一个替代方案,使用NAND闪存存储器的固态驱动器(SSD)在计算机中的使用变得更加流行。有人认为SSD很有可能占据传统上被认为限于HDD的使用领域。
[0004]近来固态驱动器(SSD)越来越多地用于计算机系统中,要么作为硬盘驱动器(HDD)的高速缓存器,要么直接替代HDD。在这样的新架构中,SDD越来越多地用于:a)提高存储的(缓存的)数据的存取速度;b)减小HDD的功率消耗;c)减小系统的尺寸、重量和功率消耗;以及d)减小存储的(缓存的)数据的存取延迟。
[0005]基于NAND闪存存储器的SSD (固态驱动器)已广泛用于需要数据存取速度的各种应用中。传统的RAID (独立磁盘冗余阵列)方案已用于许多SSD设计中。然而,这些传统RAID方案只在RAID组中的所有元件都良好时才起作用。

【发明内容】

[0006]本发明的实施例大体实现了技术优势,它们提供了一种用于SSD中灵活的RAID的系统和方法。
[0007]在一个实施例中,采用独立磁盘冗余阵列(RAID)方案的固态驱动器(SSD)包括闪存芯片、所述闪存芯片上的可擦除块,以及闪存控制器。可擦除块用于存储闪存页。闪存控制器以可操作方式耦接到闪存芯片。闪存控制器还用于将某些闪存页组织成RAID行组(RAID line group),并且将 RAID 行组成员组成信息(membership information)写入 RAID行组中的每个闪存页。
[0008]在一个实施例中,采用独立磁盘冗余阵列(RAID)方案的固态驱动器(SSD)包括闪存芯片、可擦除块以及闪存控制器。可擦除块位于闪存芯片中并且用于存储一个或多个闪存页。闪存控制器以可操作方式耦接到闪存芯片。闪存控制器用于:将某些闪存页组织成RAID行组;用于从RAID行组中排除坏的闪存页;以及用于将RAID行组成员组成信息以二进制/十六进制数的形式写入RAID行组中的每个闪存页内的RAID行(RAIDL)字段。[0009]在一个实施例中,在固态驱动器(SSD)中使用独立磁盘冗余阵列(RAID)方案的方法包括:将闪存芯片阵列中的闪存页组织成RAID行组以及将RAID行组成员组成信息写入RAID行组中的每个闪存页。在校验计算和损坏(corrupt)的闪存页的重建中的至少一个过程中,RAID行组信息识别出将要被排除的闪存页。
【专利附图】

【附图说明】
[0010]为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:
[0011]图1提供了固态驱动器(SSD)的一个实施例;
[0012]图2所示为闪存页的实例,所述闪存页被组织在独立磁盘冗余阵列(RAID)行组中并且能够被存储在图1中的SDD中的闪存芯片中的可擦除块中。
[0013]图3提供了图2中的闪存页的数据格式的图示,其中数据字段包括RAID行(RAIDL)字段;
[0014]图4提供了 RAID行组的一个实例,其中一个闪存页是损坏的并且两个闪存页出于重建的目的而从RAID行组中排除;
[0015]图5提供了图3中的数据格式中的RAIDL字段的一个实例;
[0016]图6提供了一个实例,其中图2中的RAID行组被划分成第一和第二 RAID行组;
[0017]图7提供了对应于图6中的第一和第二 RAID行组的第一和第二 RAIDL字段的一个实例;
[0018]图8提供了使用图1中的SSD并且可以实施本发明的实施例的实施例系统的方框图;以及
[0019]图9提供了在图1中的SSD中使用RAID方案的方法的实施例。
【具体实施方式】
[0020]下文将详细论述对本发明实施例的实施和使用。但应了解,本发明提供的许多适用发明概念可实施在多种具体环境中。所论述的具体实施例仅为说明性的,而不限制本发明的范围。
[0021]近来,固态驱动器(SSD),也可以称为固态磁盘或电子磁盘,已经并入到计算机系统中,要么作为硬盘驱动器(HDD)的高速缓存器,要么直接替代HDD。在这样的新架构中,SDD越来越多地用于:提高存储的(缓存的)数据的存取速度;减小HDD的功率消耗;减小系统的尺寸、重量和功率消耗;以及减小存储的(缓存的)数据的存取延迟。
[0022]然而,作为NAND闪存或其他非易失性存储器类型的SSD是易于出错的。因此,存储在其中的位会很容易变损坏。此外,随着SSD的程序擦除周期增加,错误率会增加。因此,即使使用了增强型纠错编码(ECC)算法(例如,Bose Ray-Chaudhuri (BCH) ECC算法),某一数据单元也仍然有可能是不可纠正的。
[0023]如下文将更详细地说明,本发明的实施例使SSD能够灵活地将闪存页、可擦除块,以及/或者闪存芯片组织成独立磁盘冗余阵列(RAID)组。RAID行组成员可以基于以下条件来选择或拣选(chosen/selected):例如,每个娃裸片的状态、写入到达模式(writearrival pattern),或是在数据实际上写入存储媒介中时会影响RAID行组中的成员组成的某其他因素或多个因素。换句话说,RAID行组中的成员组成是灵活的(flexible)。RAID行组中的成员可以由RAID组成员组成信息识别出来,该信息可以与要存储的数据一起写入。当某个组成员被读取并被ECC算法确定是损坏的时,RAID行组成员所在位置的下一邻居可以被读取回来并且用于使用例如异或(exclusive or, XOR)过程来重建所述损坏的组成员,分析显示,这样的方法可以大大提高SSD的可靠性并且延长驱动器寿命。
[0024]现参看图1,示出了利用类似于基于硬盘的传统RAID (廉价(或独立)磁盘的冗余阵列)的冗余数据存储机制或方案的SSDlO的实施例。如图所示,SSDlO大体包括闪存控制器12和闪存芯片14,其中每一者都可以包括若干内存裸片(memory die)。闪存控制器12(亦称,NAND闪存控制器或SSD控制器)用于例如将闪存芯片14桥接到主控(host)或使用SSDlO的计算机。在一个实施例中,闪存控制器12是执行固件级代码的嵌入式处理器。闪存控制器12可以例如执行ECC、耗损均衡(wear leveling)、坏块映射(bad block mapping)、读取清除(read scrubbing)和读取扰动(read disturb)管理、读取和写入缓存(read andwrite caching)、垃圾回收(garbage collection),以及加密(encryption)。
[0025]仍然参看图1,在一个实施例中,闪存芯片14可以是非易失性NAND闪存芯片。即使如此,也可以使用其他类型的闪存芯片例如动态随机存取存储器(DRAM)。此外,闪存芯片14可以是多层单元(MLC)闪存存储器或单层单元(SLC)闪存存储器。尽管图1中示出了两个闪存芯片14,但是SSD10中可以包含更多或更少的闪存芯片14。
[0026]在一个实施例中,闪存芯片14被划分成可擦除块16 (亦称,闪存块或RAID块)。闪存擦除块是NAND闪存存储器中可以一次性擦除的最小单元。尽管图1中的每个闪存芯片14中示出了两个可擦除块16,但是每个闪存芯片14中可以包含更多或更少的可擦除块
16。可擦除块16大体用于存储数据闪存页18,如图2所示。
[0027]为了说明的目的,图2中描绘了十七(17)个数据闪存页18。如图所示,闪存页18被闪存控制器12组织、写入或者布置到RAID行组20中。RAID行组20中所包含的十七个闪存页18被指定为页O至页9、页A至页F,以及页P。页P表示校验页(parity page)。每个RAID行组20具有向该RAID行组提供冗余的至少一个校验页。实际上,在任何成员损坏时,校验页可以用于使用RAID行组中的其他成员页以及例如XOR运算来恢复故障成员页。
[0028]由于RAID行组20包括一次性写入的十七个闪存页并且包括一个校验页,因此RAID行组20可以称为16+1RAID组。请注意,RAID行组20中的成员组成是灵活的。换句话说,RAID行组20可以在可擦除块16内或在闪存芯片14上包括更多或更少可用的闪存页18。
[0029]仍然参看图2,已知RAID行组20中的某些闪存页18是坏的(例如,损坏,含有错误,具有程序故障状态,由于位错误或页读取超时而不能成功读取,等等)闪存页18被确定为坏的情况可以有若干种。例如,总线故障或闪存芯片14故障,会使可擦除块16 (亦称,NAND闪存块)中的闪存页18变坏。
[0030]在图2中的实施例中,页9在读取过程中被检测为坏的。由于页9被检测为坏的,因此页9不再参与用于导出页P的校验计算。页9也不再用于重建在后来的读取操作中发现或识别出的损坏的闪存页18。换句话说,页9将留在物理RAID行组20中,但是当进行校验计算时以及当恢复随后发现的故障闪存页中的数据时,它将有效地从RAID行组20中排除。在一个实施例中,页9的内存总线被越过或跳过以排除页9,如本文所述。
[0031]在一个实施例中,一个或多个闪存页18发生程序故障,例如上述实例中的页9,如果仍然使用同一可擦除块16,那么一个选项是从RAID行组20中移除故障闪存页并且随后将RAID行组20重新写入下一个RAID行地址中。这样的选项假定了故障闪存页18(例如,页9)有可能在同一可擦除块16中再次发生故障。校验页程序故障的处理与常规的页程序故障相同。尽管在此场景中一个RAID行可能没有得到充分使用,但是由于程序故障所导致的闪存页18中的故障不是经常发生,因此对SSDlO的影响非常小。在这种情况下,写入格式器(write formatter)可以在除了校验页以外的所有其他页中使用回写命令(copy backcommand)。
[0032]现参看图3,其更详细地示出了图2中的一个闪存页18。如图3所示,闪存页18被划分成逻辑块寻址(LBA)扇区22和RAID行(RAIDL)字段24。LBA扇区22用于存储原始数据或对应于原始数据的元数据。存储在LBA扇区22中的元数据可以关联于原始数据,用于保护原始数据,或者专用于原始数据(例如,指示出原始数据的LBA地址)。
[0033]RAIDL字段24用于存储RAID行组成员组成信息26,此信息用于识别出物理RAID行组20中的某一闪存页18,该闪存页将用于校验计算和/或用于重建后来变损坏的闪存页。存储在RAIDL字段24中的RAID行组成员组成信息26也可以用于识别出哪个闪存页18将从RAID行组20中被排除以进行校验计算以及恢复或重建损坏的闪存页。在一个实施例中,RAID行组成员组成信息26作为二进制/十六进制数存储在RAIDL字段24中。在其他实施例中,RAID行组成员组成信息26可以用其他格式存储。
[0034]图4至图5示出了存储在RAIDL字段24中的RAID行组成员组成信息26如何在一个实施例中用来识别出用于校验计算和闪存页重建过程的闪存页的一个实例。如图4所示,闪存控制器12将某些闪存页18组织或写入RAID行组20中。如图所示,拣选了闪存芯片14上的可擦除块16中总共十七个闪存页18。关于图4中的RAID行组20中的闪存页18,已知两个闪存页18是坏的,即页9和页E。因此,这些页将从校验计算和闪存页数据重建过程中排除。
[0035]为了指示出已知闪存页中页9和页E是坏的,RAID行组成员组成信息26被闪存控制器12写入RAIDL字段24中,如图5所示。在图5中所示的实例中,由于已知闪存页中页9和页E是坏的,因此表示为17’ hlbdff的十六进制数被存储在RAIDL字段24中。如图5所示,当十六进制数转换成二进制时,与页9和页E相关联的位未被设置。因此,这些位均为“O”。与此相反,与使用XOR过程的校验计算以及闪存页重建中要使用的闪存页18相关联的位被设置。因此,这些位均为“I”。
[0036]仍然参看图4至图5,如果在后来的读取操作过程中发现页5由于例如位错误而变坏或损坏,那么RAID行组20中所包含的闪存页18,除了页5以外,都被读取出来。换句话说,指定为页O、页2、页2、页3、页4、页6、页7、页8、页A、页B、页C、页D、页F的闪存页18被读取。一旦被读取,这些闪存页即与校验页即页P —起在XOR过程中使用,以重建闪存页中的页5。请注意,指定为页9和页E的已知坏闪存页18以及指定为页5的新发现的坏闪存页不用于重建指定为页5的闪存页。此外,如果页5由于某原因而不能使用上述过程来恢复或重建,例如由于不可纠正的错误,那么RAIDL字段24可以被更新,以使得与页5相关联的位被设置为“O”。
[0037]在图6至图7中所示的实施例中,RAID行组20可以划分成较小的RAID行组,例如第一较小的RAID行组28和第二较小的RAID行组30。换句话说,灵活的RAID技术可以用于将由固定RAID组(fixed RAID group)大体所需的页数量分解。在这样的实施例中,第一较小RAID行组28中的RAIDL字段24中可以填入表示为17h’ OOOff的十六进制数;第二较小RAID行组30中的RAIDL字段24中可以填入表示为17’hlbdOO的十六进制数。如图7所示,存储在RAIDL字段中的RAID行组成员组成信息26是互补的并且共同识别出RAID行组20中所包含的闪存页18。实际上,前八个闪存页18 (页O至页7)被包含在第一较小RAID行组28中(其中可能发现页5是坏的并且随后被排除),而接下来八个闪存页18被包含在第二较小RAID行组30中(其中页9和页E将从校验/重建计算中被排除)。在此实施例中,第一较小RAID行组28中的一个闪存页(例如,页7)可能必须作为校验页来操作,类似于页P。
[0038]现参看图8,SSD可以并入计算机系统32中。计算机系统32可以用于实施本发明的方法。在这种情况下,主要处理可以在处理器34中执行,所述处理器可以是微处理器或任何其他合适的处理装置。程序代码(例如,实施上述算法或方法的代码)以及数据可以存储在随机存取存储器36中。所述存储器36可以是诸如DRAM等本地存储器或大容量存储器,例如,硬盘驱动器、光盘驱动器或其他存储器(其可为本地存储器或远程存储器)。虽然使用单个块在功能上说明了存储器36,但应理解,可以使用一个或多个硬件块来实施该功倉泛。
[0039]在一个实施例中,处理器34可以用于实施上述各个(或所有)功能。例如,处理器34可以在不同时间用作特定的功能单元,以便实施在执行本发明的技术时所涉及的子任务。或者,可使用不同硬件块(例如,与处理器34相同或不同)来执行不同功能。在其他实施例中,某些子任务由处理器34来执行,而其他子任务则使用独立的电路来执行。
[0040]图4还示出了输入/输出(1/0)38,它可以用于向系统32提供信息。该信息可以包括例如将要存储在SSDlO中的视频。1/038可以包括:用于连接到含因特网等网络的端口,或本地接口(例如,USB或LAN接口)。1/038还可以包括本地用户操作的I/O装置,例如显示器、键盘、鼠标等。换句话说,提供单个框来表示潜在大量的硬件项目。
[0041]SSDlO和其他存储器40 (例如,HDD、光盘驱动器等)在图中示为连接到与1/038相同的总线。这只是可以适用的架构的一个实例。为了简明的目的,即使实际系统中包含合适的额外电路,控制电路例如内存控制器或桥接器也从图中省略。
[0042]现参看图9,示出了方法42的一个实施例。在方框44中,闪存芯片14中拣选的一些闪存页18组织成RAID行组20。在方框46中,RAID行组成员组成信息26被写入RAID行组20中的每个闪存页18中。如上所述,RAID行组成员组成信息26识别出将要在校验计算和/或损坏的闪存页18的重建过程中被排除的闪存页18。在一个实施例中,闪存控制器12或处理器34执行或协调这些步骤。
[0043]使用本文所揭示的灵活的RAID方案、算法或过程,可以承受单个或多个闪存页18故障并且允许SSDlO继续适当地运作。此外,当灵活的RAID技术应用于SSDlO中的可擦除块16或闪存芯片14时,也可以承受故障并且允许SSDlO继续适当地运作。
[0044]本发明的实施例提供了许多新的有利特征。例如,该方案的一个特征是使用RAID成员组成信息来指示出RAID行组中的成员,从而允许RAID行灵活地分组。该方案能够承受RAID组中一个或多个成员发生故障的情况,而无需抛弃剩余的好的存储媒介。该方案可以应用于最新的基于NAND闪存的SSD。该方案也可以应用于其他存储媒介,例如基于硬盘驱动器的RAID系统。
[0045]本发明的实施例可以用于许多产品、过程和服务中。例如,各实施例可以用于下一代外围部件互连高速(PCIE) SSD中以改善SSD的使用,从而延长SSD的寿命。灵活的成员组成比现有的固定RAID算法更为优越。在许多市场上,包括但不限于在企业存储系统中,灵活的RAID技术是有利的。
[0046]如上所述,各实施例具有许多优点。通过使用RAID机制将数据存储在SSD中,单个页的数据损失可以恢复。本文本所描述的灵活的RAID算法的各实施例,提供了一种灵活决定RAID组中成员数量的方法。这样使SSD能够承受RAID中一个或多个成员发生故障的情况并且仍然能够恢复数据。
[0047]通过用RAID算法中灵活的成员组成,可以达成优点,使该设计能够承受单个或多个页、块或硅裸片在SSD中发生故障的情况并且仍然能够恢复数据损失。
[0048]在基于磁盘驱动器的存储系统中,RAID机制可以用于防止单个磁盘发生故障,例如RAID4或RAID5机制,方法是在RAID组中使用一个校验表项。在一个实施例中,本发明计算和存储RAID成员组成信息及数据,这样当RAID组中的一个装置发生故障时,在数据存储到固态驱动器的情况下,在RAID成员组成信息中可以将该装置跳过。这样,当一个成员随时间推移而发生故障时,可以从RAID组中的其他页中读取RAID成员组成信息,并且RAID组中只有这些成员(其他页)才用于确定由RAID算法进行的恢复。
[0049]虽然已参考说明性实施例描述了本发明,但此描述并不旨在限制本发明。所属领域的技术人员在参考该描述后,将会明白说明性实施例的各种修改和组合,以及其他实施例。因此,所附权利要求书意图涵盖任何此类修改或实施例。
【权利要求】
1.一种采用独立磁盘冗余阵列(RAID)方案的存储装置,其包括: 闪存芯片; 可擦除块,所述可擦除块位于所述闪存芯片中,所述可擦除块用于存储一个或多个闪存页;以及 闪存控制器,所述闪存控制器以可操作方式耦接到所述闪存芯片,所述闪存控制器用于将某些所述闪存页组织成RAID行组并且将RAID行组成员组成信息写入所述RAID行组中的每个所述闪存页。
2.根据权利要求1所述的驱动器,其中每个所述闪存页包括用于存储所述RAID行组成员组成信息的RAID行(RAIDL)字段。
3.根据权利要求2所述的存储装置,其中所述RAIDL字段用于指示出所述RAID行组中用于校验计算的闪存页。
4.根据权利要求2所述的存储装置,其中所述RAIDL字段用于指示出所述RAID行组中用于页重建的闪存页。
5.根据权利要求2所述的存储装置,其中所述RAIDL字段用于指示出在校验计算和页重建中至少一个过程中从所述RAID行组中排除的闪存页。
6.根据权利要 求2所述的存储装置,其中所述RAIDL字段用于重建所述RAID行组中后来的坏闪存页。
7.根据权利要求2所述的存储装置,其中所述RAIDL字段存储十六进制数,所述十六进制数用于指示出在校验计算和页重建中至少一个过程中所包含的闪存页。
8.根据权利要求2所述的存储装置,其中所述RAIDL字段存储十六进制数,所述十六进制数用于指示出在校验计算和页重建中至少一个过程中被排除的闪存页。
9.根据权利要求2所述的存储装置,其中每个所述闪存页包括逻辑块寻址(LBA)扇区,所述LBA扇区用于存储数据和元数据中的至少一者。
10.根据权利要求1所述的存储装置,其中所述RAID行组中的所述闪存页中的至少一者是校验块。
11.根据权利要求1所述的存储装置,其中所述闪存控制器用于将所述RAID行组划分成具有互补的RAID行组成员组成信息的较小RAID行组,这些互补的RAID行组成员组成信息共同形成所述RAID行组成员组成信息。一种采用独立磁盘冗余阵列(RAID)方案的存储装置,其包括: 闪存芯片; 可擦除块,所述可擦除块位于所述闪存芯片中,所述可擦除块用于存储一个或多个闪存页;以及 闪存控制器,所述闪存控制器以可操作方式耦接到所述闪存芯片,所述闪存控制器用于将某些所述闪存页组织成RAID行组并且将RAID行组成员组成信息写入所述RAID行组中每个所述闪存页内的RAID行(RAIDL)字段。
12.根据权利要求12所述的存储装置,其中所述闪存控制器用于从所述RAID行组中排除坏的闪存页。
13.根据权利要求12所述的存储装置,其中所述RAID行组成员组成信息包括十六进制数。
14.根据权利要求14所述的存储装置,其中所述RAIDL字段中的所述十六进制数识别出在校验计算和损坏的闪存页的重建中,哪个闪存页被包含在所述RAID行组中以及哪个闪存页从所述RAID行组中排除。
15.根据权利要求14所述的存储装置,其中所述RAIDL字段中的所述十六进制数用于重建在所述RAID行组中的所述闪存页的读取操作过程中发现的所述RAID行组中的一个故障的闪存页。
16.根据权利要求12所述的存储装置,其中所述RAID行组中的所述闪存页中的至少一者是校验块。
17.—种在固态驱动器(SSD)中使用独立磁盘冗余阵列(RAID)方案的方法,所述方法包括: 将闪存芯片中的闪存页组织成RAID行组;以及将RAID行组成员组成信息写入所述RAID行组中的每个所述闪存页,在校验计算和损坏的闪存页的重建中的至少一个过程中,所述RAID行组信息识别出将要被排除的闪存页。
18.根据权利要求18所述的方法,其进一步包括:使用所述RAID行组成员组成信息来重建所述RAID行组中的所述损坏的闪存页。
19.根据权利要求18所述的方法,其中将RAID行组成员组成信息写入所述RAID行组中的每个所述闪存页包括:写入所述RAID行组中的每个所述闪存页中的RAID行(RAIDL)字段。
20.根据权利要求18所述的方法,其中将RAID行组成员组成信息写入所述RAID行组中的每个所述闪存页包括:将十六进制数写入所述RAID行组中的每个所述闪存页中的RAID 行(RAIDL)字段。
21.根据权利要求21所述的方法,其进一步包括使用所述十六进制数来识别出在所述RAID行组中的闪存页以及从所述RAID行组中排除的闪存页。
【文档编号】G06F12/00GK103718162SQ201280038141
【公开日】2014年4月9日 申请日期:2012年8月13日 优先权日:2011年8月12日
【发明者】黄亦仁 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1