专利名称:无需使用奇偶校验建立优于6级raid的冗余和容错性的方法
技术领域:
本发明总体上涉及存储装置,更具体地,涉及用于不使用奇偶校验而建立优于6 级RAID的冗余和容错性水平。
背景技术:
RAID(廉价马区动器的冗余阵歹Ij,redundant array of inexpensive drives) 存储系统中使用的传统方法主要基于XOR函数(奇偶校验计算)或镜像函数(mirror function)以获得冗余并提供容错性。在RAID 1和RAID 10技术中,驱动器(drive)被镜像以获得冗余。每次在介质上存在新的写入时,需将整个数据复制并写入数据驱动器和对应的镜像驱动器上。参照图1,示出了 RAID 10方式。驱动器DISKO被示出为镜像至驱动器DISK1。驱动器DISK2被示出为镜像至驱动器DISK3。RAID 1和RAID 10方式涉及将一个驱动器的完整内容镜像至另一驱动器。如果存在配置为RAID 1的两个驱动器,其中每个驱动器具有容量 C GB,则RAID组的总容量将是C GB (即,并不是两个驱动器的总容量2C GB)。因此,RAID 1或RAID 10的总存储容量是RAID 1或RAID 10配置中的所有驱动器的总容量的50%。参照图2,示出了 RAID 4禾PRAID 5方式。示出了多个驱动器DISK0、DISK1、DISK2、 DISK3。在RAID 4和RAID 5中,跨过RAID组的多个驱动器DISKO DISK3将数据块分成条。在所示的RAID 4配置中,驱动器0151(0、0151(1、0151(2和0151(3存储数据。奇偶校验块被存储在专用驱动器(即,示出为驱动器DISK3)。在RAID 5中,跨过RAID组中的所有驱动器DISKO DISK3分布奇偶校验。在示出的RAID 5配置中,驱动器DISK3被示出为保存数据(与其中驱动器DISK3仅保存奇偶校验的RAID 4相比较)。D奇偶校验存储在盘DISKO 中。C奇偶校验存储在DISKl上。B奇偶校验被示出为存储在盘DISK2上。A奇偶校验被示出为存储在盘DISK3上。RAID 4和RAID 5方式使用基于XOR函数的奇偶校验生成。通过RAID 4和RAID 5,使用每个数据条来产生奇偶校验。然后,产生的奇偶校验被存储在另一专用驱动器中或跨过RAID组的所有驱动器分布。RAID4和RAID 5在不丢失数据的情况下一次仅能容忍一个驱动器故障。参照图3,示出了 RAID 6方式。在RAID 6方式中,跨过RAID组的多个驱动器(即, 示出为驱动器DISKO DISK4)将数据块A D分成条。计算两个奇偶校验。然后,两个奇偶校验跨过RAID组中的所有驱动器分布这。第一个D奇偶校验(即,数据块D的奇偶校验)被示出为存储在驱动器DISKO上。第二个D奇偶校验被示出为存储在驱动器DISKl上。A C奇偶校验被示出为类似地分布在驱动器DISKl DISK4上。由于双奇偶校验生成,RAID 6配置的性能低于RAID 0、RAID 4或RAID 5配置的性能。在RAID 6配置的数据修改和数据写入过程中涉及的复杂性也使性能变慢。RAID 6 在不丢失数据的情况下仅能提供多达两个驱动器故障的容错性。期望实现一种在不增加实现奇偶校验的处理开销的情况下建立比6级RAID的冗余和容错性的水平更高的方法。
发明内容
本发明关心一种设备,包括至少三个驱动器的逻辑相连组、第一环、第二环、压缩/ 解压电路。每个驱动器包括(i)被配置为存储前一驱动器的压缩数据的第一区域,( )被配置为存储该驱动器的未压缩数据的第二区域,(iii)被配置为存储下一驱动器的压缩数据的第三区域。第一环可连接至逻辑相连组中的下一驱动器。第二环可连接至逻辑相连组的前一驱动器。压缩/解压电路可被配置为对存储在每个驱动器上的数据进行压缩和解压。本发明的目的、特征和优势包括提供一种驱动器存储配置,可以(i)建立优于6级 RAID的冗余和容错性,(ii)无需使用奇偶校验就能实现,(iii)实现用于压缩/解压操作的ASIC,(iv)在驱动器外壳中使用现有的冗余驱动器通道,(ν)使用已处于使用中的驱动器端口来存储数据,(vi)设置固件以实现压缩/解压,(vii)实现用来存储每个驱动器的数据块与存储在另一驱动器中的压缩数据块之间的映射的固件和/或(viii)成本有效地实现。
根据下面的详细描述和所附权利要求以及附图,本发明的这些和其它目的、特征和优点将变得显而易见,图中图1是示出RAID 1和RAID 10方式的示图;图2是示出RAID 4和RAID 5方式的示图;图3是示出RAID 6方式的示图;图4是示出本发明的驱动器实例的示图;图5是示出在双链两逻辑环配置中的多个驱动器的示图;图6是示出用于压缩/解压操作的专用逻辑(logic)的示图;图7是示出驱动器外壳(enclosure)的示图;图8是示出流向驱动器的数据的实例的示图;以及图9是示出三个驱动器故障的实例的示图。
具体实施例方式在最大化存储效率和性能的同时获得更高水平的冗余是不断增长的数据存储的现代世界中的共同目标。本发明可在RAID配置中实现压缩数据的冗余副本的压缩技术。冗余数据可以以双链方式分布。可实现两个逻辑环以在无需奇偶校验和/镜像技术的情况下在RAID配置中达到高水平的冗余和性能。利用冗余压缩技术来提供附加的冗余、更好的容
5错性、存储效率和/或改善的性能。可以将一套驱动器分组成RAID组。每个驱动器的数据内容可被压缩并存储在RAID组中的两个单独的驱动器中。可以实现双链逻辑组织(dual chain logical organization)。驱动器上的冗余端口和驱动器外壳中的冗余驱动器通道可用于提供逻辑组织。在对数据达到50%的压缩率的情况下,本发明可提供50%的存储利用率。这样的存储利用率堪比RAID 1。然而,通过更高水平的压缩,本发明可提供大于RAID 1驱动器组的存储效率。例如,本发明的存储效率可根据施加于数据的压缩量而提高。对于50%的压缩率,本发明的存储效率通常等于RAID 1配置的存储效率。对于大于50%的压缩率,通过本发明可获得的存储效率进一步增加并且通常胜过RAID 4、RAID 5和/或RAID 6的存储效率而在容错性方面没有任何损害。本发明可提供大到2n/3个驱动器故障的地板函数(flooring function)的容错性,其中,η是系统中驱动器的数量。假定三个逻辑相连的驱动器不出故障(将结合图9更详细地进行讨论),则可获得优于RAID 4、RAID5、RAID 6 (和类似变体)的容错性。通常, 在本发明中,不需要来自于幸存(surviving)驱动器的附加读取、修改和/或写入操作(如在RAID 5和RAID 6中——由于奇偶校验重算),从而提高当系统处于劣化状态(例如,具有一个或多个驱动器故障)时的性能。ASIC (专用集成电路)可为实现为用于压缩和/或解压操作,以确保存储子系统的特定性能水平。在驱动器外壳中使用双端口驱动器和/或冗余驱动器通道可确保驱动器的这种特定性能。本发明的双链压缩解决方案可向RAID系统提供改善的容错性、冗余和/或可用性。本发明的RAID组可包括驱动器的集合。示例数据块可存储在单个驱动器中。来自一个驱动器的示例数据的压缩形式可存储在同一 RAID组中的另外两个驱动器中。这三个驱动器可称为“逻辑相连”驱动器。通过引入压缩,可以避免使用奇偶校验和/或镜像的需要。具体驱动器的压缩数据可以以双链方式存储在两个驱动器中。例如,可形成双环。可实现高水平的冗余、容错性和/或性能。参照图4,示出了本发明的驱动器100。驱动器100通常包括区域102、区域104和区域106。区域104可用于存储未压缩数据。区域102可用于存储一个逻辑相连驱动器的压缩数据(例如,来自驱动器n-1的压缩数据)。区域106可用于存储另一个逻辑相连驱动器的压缩数据(例如,来自驱动器n+1的压缩数据)。所实现的具体压缩机制可包括驱动器100的实际内容的一到二(one-to-two)映射(将结合图5进行详细描述)。例如,一个驱动器的数据的压缩形式可存储在两个其他逻辑相连驱动器上。可通过嵌入在控制器上的固件来保存映射信息。映射信息可以用于在驱动器故障和/或错误校正的事件中,通过对来自一个逻辑相连驱动器的压缩数据块进行解压来重建驱动器的数据。当用新的正确执行驱动器更换故障驱动器时,可通过对来自一个逻辑相连驱动器的压缩数据进行解压,在新驱动器中重建故障驱动器的数据。可通过嵌入每个冗余存储阵列控制器上的控制器固件来实现映射信息(将结合图6进行详细描述)O参照图5,示出了驱动器系统(或配置)150的框图。系统150通常包括多个驱动器 100a 100η。驱动器100a 100η的具体数量可以改变以满足特定实施方式的设计标准。
6每个驱动器IOOa IOOn可具有数据段(例如,Dl D5)、压缩段(例如,Cl C5)和压缩段(例如,Cl C5)。例如,驱动器IOOa可具有被配置为存储未压缩数据Dl的数据段。数据块Dl的压缩形式可在两个逻辑相连驱动器中存储为数据Cl。例如,压缩数据Cl可存储在驱动器IOOb和驱动器IOOn中。驱动器IOOa IOOn可形成环160a 160η和环162a 16&1。环160a 160η和环162a 16&ι可形成两个双链逻辑环。通常,环160a 160η可实现为驱动器IOOa IOOn之间的多个逻辑连接。例如,部分160a可将驱动器IOOa的数据Dl逻辑连接至驱动器IOOb的压缩数据Cl。以通常是从左至右的方式示出了环160a 160η。环16 162η具有以通常是从右至左的实施方式的类似实施方式。例如,部分162d 可将驱动器IOOn的数据D5逻辑连接至驱动器IOOd的压缩数据C5。环160a 160η和环 16 162η的具体布置可以改变以满足特定实施方式的设计标准。在所示的实例中,驱动器IOOb可存储数据D2。数据D2的压缩形式可在驱动器 IOOc上存储为数据C2,通过逻辑环160a 160η的部分160b可访问。数据C2也可存储在驱动器IOOa上,通过逻辑环16 162η的部分16 可访问。类似地,驱动器IOOa的数据Dl可具有在驱动器IOOn和驱动器IOOb上存储为数据Cl存储的Dl数据的压缩形式。 驱动器IOOn的压缩数据C5可存储在驱动器IOOa和驱动器IOOd中。通常,驱动器IOOa IOOn中的任意三个可形成逻辑相连组。在一个实例中,驱动器100b、100c和IOOd可以是一个逻辑相连组。逻辑相连组可由未示出为彼此相邻的驱动器形成。驱动器IOOc的数据 D3被示出为在驱动器IOOb和驱动器IOOd中存储为压缩数据C3。参照图6,示出了存储子系统200的示图。子系统200通常包括多个块(或电路)202a 20 。电路20 20 均可实现为压缩/解压电路。中间板204b可实现在电路20 和电路202b之间。压缩电路20 通常包括块(或电路)210、块(或电路)212、 块(或电路)214、块(或电路)216。电路210可以实现为主机接口。电路212可实现为处理器和数据高速缓存。电路214可以实现为压缩/解压引擎。电路216可实现为驱动器接口。电路212通常包括高速缓存电路218和处理器电路220。主机接口 210可具有可接收信号(例如,DATA)的输入端230。信号DATA通常表示一个或多个代表图5中所描述的数据Dl D5的数据块(或包)。主机接口可具有可将信号DATA提供至电路212的输入端 234的输出端232。电路212可具有可将信号DATA提供至电路214的输入端238的输出端 236。电路212还可具有可将信号DATA提供至电路216的输入端242输出端M0。电路214 可具有可将信号(例如,C_DATA)提供至电路216的输入端246的输出端M4。信号C_DATA 可以是信号DATA的压缩形式。信号C_DATA通常表示一个或多个代表图5中描述的压缩数据Cl C5的数据块(或包)。电路202b可具有类似的实施方式。电路214可提供专用逻辑以实现压缩和/或解压操作。电路20 和/或电路202b的逻辑可嵌入在作为控制器固件的一部分与用于RAID 引擎的代码一起运行的代码中,或者可以下载到由控制器固件代码控制和操作的ASIC。下载代码可以以附加电路为代价提高性能。由电路214实现的压缩/解压的具体类型可以改变以满足特定实施方式的设计标准。电路20 和/或电路202b可用于冗余、容错性和/ 或RAID组故障转移(failover)机制。参照图7,示出了驱动器外壳300。示出了包括多个驱动器IOOa IOOn的驱动器外壳300。每个驱动器IOOa IOOn被示出为具有一个端口(例如,Pl)和另一个端口(例如,P2)。外壳通常包括电路302、电路304、中间板204以及电路310。电路302可实现为主 ESM。电路308可实现为备用ESM。每个驱动器100A IOOn的端口 Pl和P2中的一个可以是主端口。每个驱动器100A IOOn的端口 Pl和P2中的另一个可以是次端口。未压缩数据Dl D5和压缩数据Cl C5通往驱动器的I/O路径可以保持分离。未压缩数据Dl D5和压缩数据Cl C5 二者都由同一控制器来操纵。驱动器IOOa IOOn可实现为双端口驱动器以实现冗余(例如,为了在驱动器IOOa IOOn上存储和取回压缩数据Cl C5)。 SOC 304(或310)可以驻留在ESM 302 (或308)中,并且可执行送往驱动器IOOa IOOn的数据的切换/路由。驱动器外壳300上的中间板可用于将压缩数据发送至驱动器外壳300 的冗余ESM 302(或308)。中间板204还可用于利用次端口 P2将压缩数据发送至驱动器 IOOa IOOn0信号DATA的压缩数据C DATA可越过驱动器外壳300中的中间板电路204路由至用相同ESM保存数据Dl D5的备用ESM 308。对于控制器20 所拥有的RAID逻辑驱动器,每个驱动器100A IOOn的主端口 Pl可用于在由ESM 302操纵的主通道上传送未压缩数据。每个驱动器100A IOOn的次端口 P2可用于在由ESM 308操纵的次通道上传送压缩数据。对于由控制器20 所拥有的RAID逻辑驱动器IOOa 100η,第二端口 P2可用作在由ESM B 308操纵的主通道上传送未压缩数据的主端口。主端口 Pl可用作在由ESM 302 操纵的次通道上传送压缩数据的次端口。利用本发明实现的RAID组可具有存储在驱动器IOOa IOOn中的一个中的实际 (未压缩)数据Dl Dn以及存储在两个其他逻辑相连驱动器IOOa IOOn中的压缩数据 Cl Cn。一旦来自主机的每个数据段到达,数据Dl D5就被分成要传送至驱动器接口 216的多个条。与这些处理并行,分成条的数据被压缩引擎压缩并发送至驱动器接口。实际数据Dl Dn和压缩数据Cl Cn —起被发送至驱动器外壳300。参照图8,示出了流向驱动器IOOa IOOn的数据的实例。可在数据通道320上发送数据。每个驱动器IOOa IOOn可在主端口 Pl上从数据通道320接收数据。来自数据通道320的数据可由压缩/解压引擎214进行压缩。每个驱动器IOOa IOOn可在第二端口 P2上从压缩/解压引擎214接收数据。这确保了 RAID组与任意数量的驱动器IOOa IOOn 一起工作而不会损失驱动性能。假定没有三个逻辑相连的驱动器发生故障,则本发明通常提供2n/3个驱动器的容错性,其中,η是RAID组中的驱动器总数。利用50 %的数据压缩率通过本发明与RAID 1实施方式相比将确保相同的存储效率和更大的性能。考虑4个驱动器的实例,如果每个驱动器IOOa IOOn具有容量C GB,则 RAID 1占用的最大空间是2C GB。然而,通过本发明,每个驱动器IOOa IOOn中的数据区域占用0. 5C GB,而两个压缩区域占用0. 5C GB (50%压缩率),因此,在4个驱动器中,RAID 组能够进行存储的实际数据的总容量是2C GB。由于可以像具有跨过两个驱动器分成条的数据的RAID 0组一样访问驱动器100a 100η,所以性能更大。因此,通过等于50%的压缩率本发明可提供等于RAID 1的存储效率。而且,通过大于50%的压缩率本发明可提供大于RAID 1的性能和存储效率。然而,通过实现大于50%的压缩率,可进一步改善驱动器 IOOa IOOn的存储容量效率。由于如果2个以上(假定不存在三个逻辑相连驱动器故障,达到2n/3个)驱动器发生故障本发明可继续进行操作而不会丢失数据,所以本发明通常比RAID 3、RAID 5和RAID 6实施方式更能容错。与RAID 3、RAID5和RAID 6组相比可实现附加的容错性。在 RAID 3、RAID 5和RAID 6组的情况下,每当对组实施修改操作时,需要读取所有驱动器以重新计算奇偶校验并与修改的数据一起更新奇偶校验。通过本发明,对于每次修改操作,数据被分成条并被写入各驱动器IOOa 100η。然后独立地生成条的压缩并将其写入RAID 组中的逻辑相连驱动器上。与奇偶校验生成方法相比,需要的读取和/或更新更少。参照图9,示出的是示出具有3个驱动器故障的驱动器系统150的示图。驱动器系统150可处理多个驱动器故障的情形,只要所有出现故障的驱动器是非相连的即可。用 X标记驱动器100a、驱动器IOOb和驱动器IOOd以示出驱动器故障。即使有3个驱动器故障,所有数据仍将继续可用。下面的表1描述了每个驱动器和数据可用性的状态表 1
驱动器状态数据可用性1故障通过驱动器5中的Cl2故障通过驱动器3中的C23最优通过D34故障通过驱动器3或5中的C45最优通过D5使用RAID 6方式的类似故障将导致整个RAID组的故障。因此,本发明提供了比 RAID 6方式更大的容错性。尽管已参照本发明优选实施方式对本发明进行了具体示出和描述,但本领域的技术人员应当理解,在不会背离本发明的范围的情况下,可以进行形式和细节上的各种变化。
9
权利要求
1.一种设备,包括至少三个驱动器的逻辑相连组,其中,每个所述驱动器包括(i)被配置为存储前一驱动器的压缩数据的第一区域,(ii)被配置为存储所述驱动器的未压缩数据的第二区域, (iii)被配置为存储下一驱动器的压缩数据的第三区域;第一环,连接至所述逻辑相连组的所述下一驱动器;第二环,连接至所述逻辑相连组的所述前一驱动器;以及压缩/解压电路,被配置为对存储在每个所述驱动器上的数据进行压缩和解压。
2.根据权利要求1所述的设备,其中,所述逻辑相连组中的所述驱动器中的一个的所述第二区域连接至所述下一驱动器的所述第一区域。
3.根据权利要求1所述的设备,其中,所述逻辑相连组中的所述驱动器中的一个的所述第二区域连接至所述前一驱动器的所述第三区域。
4.根据权利要求1所述的设备,其中,所述第一环的一部分将所述驱动器中的一个的所述第二区域连接至所述前一驱动器的所述第一区域。
5.根据权利要求1所述的设备,其中,所述第二环的一部分将所述驱动器中的一个的所述第二区域连接至所述下一驱动器的所述第三区域。
6.根据权利要求1所述的设备,其中,所述驱动器中的一个的所述第一区域的压缩数据通过所述第一环的一部分可访问。
7.根据权利要求1所述的设备,其中,所述驱动器中的一个的所述第三区域的压缩数据通过所述第二环的一部分可访问。
8.根据权利要求1所述的设备,其中,映射信息通过(i)被嵌入在存储阵列控制器上并且(ii)在驱动器故障和/或错误校正的事件中用于重建所述驱动器的数据的固件来保存。
9.根据权利要求1所述的设备,其中,所述压缩/解压电路的专用逻辑嵌入在控制器固件RAID引擎代码中。
10.根据权利要求1所述的设备,其中,所述压缩/解压电路的专用逻辑被传送至ASIC 外围设备。
11.根据权利要求1所述的设备,其中,每个所述驱动器包括用于存储和取回压缩数据的双驱动器端口。
12.根据权利要求1所述的设备,其中,每个所述驱动器包括用在驱动器外壳中的冗余驱动器通道。
13.根据权利要求1所述的设备,其中,所述设备建立优于6级RAID的冗余和容错性, 而无需使用奇偶校验。
14.一种设备,包括用于实现至少三个驱动器的逻辑相连组的装置,其中,每个所述驱动器包括,(i)被配置为存储前一驱动器的压缩数据的第一区域,( )被配置为存储所述驱动器的未压缩数据的第二区域,(iii)被配置为存储下一驱动器的压缩数据的第三区域;用于实现连接至所述逻辑相连组的所述下一驱动器的第一环的装置;用于实现连接至所述逻辑相连组的所述前一驱动器的第二环的装置;以及用于实现被配置为对存储在每个所述驱动器上的数据进行压缩和解压的压缩/解压电路的装置。
15.根据权利要求14所述的设备,其中,所述设备建立优于6级RAID的冗余和容错性, 而无需使用奇偶校验。
16.一种在驱动器阵列中实现容错性的方法,所述方法包括以下步骤(A)实现至少三个驱动器的逻辑相连组,其中,每个所述驱动器包括(i)被配置为存储前一驱动器的压缩数据的第一区域,( )被配置为存储所述驱动器的未压缩数据的第二区域,(iii)被配置为存储下一驱动器的压缩数据的第三区域;(B)实现连接至所述逻辑相连组的所述下一驱动器的第一环;(C)实现连接至所述逻辑相连组的所述前一驱动器的第二环;以及(D)实现被配置为对存储在每个所述驱动器上的数据进行压缩和解压的压缩/解压电路。
17.根据权利要求16所述的方法,其中,所述方法建立优于6级RAID的冗余和容错性, 而无需使用奇偶校验。
全文摘要
本发明公开了一种建立优于6级RAID的冗余和容错性而无需使用奇偶校验的方法。一种设备,包括至少三个驱动器的逻辑相连组、第一环、第二环、压缩/解压电路。每个驱动器包括(i)被配置为存储前一驱动器的压缩数据的第一区域,(ii)被配置为存储该驱动器的未压缩数据的第二区域,(iii)被配置为存储下一驱动器的压缩数据的第三区域。第一环可连接至逻辑相连组中的下一驱动器。第二环可连接至逻辑相连组的前一驱动器。压缩/解压电路可被配置为对存储在每个驱动器上的数据进行压缩和解压。
文档编号G06F11/16GK102200938SQ201110076038
公开日2011年9月28日 申请日期2011年3月28日 优先权日2010年3月26日
发明者帕瓦恩·P·S, 维韦克·普拉卡什, 马哈茂德·K·杰贝 申请人:Lsi公司