不使用奇偶校验和镜像法在RAID系统中建立高级别的冗余、容错性及性能的方法转让专利

申请号 : CN201110075786.X

文献号 : CN102200934B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 帕瓦恩·P·S维韦克·普拉卡什马哈茂德·K·杰贝

申请人 : LSI公司

摘要 :

本发明公开了不使用奇偶校验和镜像法在RAID系统中建立高级别的冗余、容错性及性能的方法。其中,一种装置,包括至少两个驱动器的逻辑相连组、环以及压缩/解压缩电路。每个驱动器包括(i)被构造为存储前一驱动器的压缩数据的第一区域以及(ii)被构造为存储驱动器的未压缩数据的第二区域。环可以连接至逻辑相连组中的下一驱动器。压缩/解压缩电路可以被构造为对存储在每个驱动器上的数据进行压缩和解压缩。

权利要求 :

1.一种用于在驱动器阵列中实现容错性的设备,包括

至少两个驱动器的逻辑相连组,其中,每个所述驱动器包括(i)第一区域,被构造为存储前一驱动器的压缩数据,(ii)第二区域,被构造为存储当前驱动器的未压缩数据,(iii)第一端口,被构造为将所述未压缩数据传输至驱动控制器以及(iv)第二端口,被构造为在所述驱动器之间传输所述压缩数据;

环,连接至所述逻辑相连组的下一驱动器;以及

压缩/解压缩电路,被构造为在通过所述第二端口传输所述压缩数据之前对存储在每个所述驱动器上的所述压缩和未压缩数据进行压缩和解压缩,其中,所述驱动器中的一个的所述未压缩数据被存储作为所述驱动器中的至少另一个上的所述压缩数据。

2.根据权利要求1所述的设备,其中,在所述逻辑相连组中的所述驱动器中的一个的所述第二区域连接至所述下一驱动器的所述第一区域。

3.根据权利要求1所述的设备,其中,所述环的一部分将所述驱动器中的一个的所述第二区域连接至所述下一驱动器的所述第一区域。

4.根据权利要求1所述的设备,其中,所述驱动器中的一个的所述第一区域的压缩数据可经所述的环的一部分来访问。

5.根据权利要求1所述的设备,其中,映射信息由(i)被嵌入在存储阵列控制器上并(ii)在发生驱动器故障和/或错误校正时用于重建所述驱动器的数据的固件来保持。

6.根据权利要求1所述的设备,其中,所述压缩/解压缩电路的专用逻辑嵌入控制器固件RAID引擎代码中。

7.根据权利要求1所述的设备,其中,所述压缩/解压缩电路的专用逻辑被传送至ASIC外围设备。

8.根据权利要求1所述的设备,其中,每个所述驱动器包括用于存储并取出压缩数据的驱动器端口。

9.根据权利要求1所述的设备,其中,每个所述驱动器包括用在驱动器外壳中的冗余驱动器通道。

10.根据权利要求1所述的设备,其中,所述设备不使用奇偶校验而建立冗余和容错性。

11.根据权利要求1所述的设备,其中,所述设备提供达n/2个驱动器的容错性,其中,n为驱动器的数目。

12.一种用于在驱动器阵列中实现容错性的设备,包括:

用于实现至少两个驱动器的逻辑相连组的装置,其中,每个所述驱动器包括(i)第一区域,被构造为存储前一驱动器的压缩数据,(ii)第二区域,被构造为存储当前驱动器的未压缩数据,(iii)第一端口,被构造为将所述未压缩数据传输至驱动控制器以及(iv)第二端口,被构造为在所述驱动器之间传输所述压缩数据;

用于实现环的装置,所述环连接至所述逻辑相连组的下一驱动器;以及

用于实现压缩/解压缩电路的装置,所述压缩/解压缩电路被构造为在通过所述第二端口传输所述压缩数据之前对存储在每个所述驱动器上的所述压缩和未压缩数据进行压缩和解压缩,其中,所述驱动器中的一个的所述未压缩数据被存储作为所述驱动器中的至少另一个上的所述压缩数据。

13.根据权利要求12所述的设备,其中,所述设备不使用奇偶校验而建立冗余和容错性。

14.根据权利要求12所述的设备,其中,所述设备提供达n/2个驱动器的容错性,其中,n为驱动器的数目。

15.一种用于在驱动器阵列中实现容错性的方法,包括如下步骤:

(A)实现至少两个驱动器的逻辑相连组,其中,每个所述驱动器包括(i)第一区域,被构造为存储前一驱动器的压缩数据,(ii)第二区域,被构造为存储当前驱动器的未压缩数据,(iii)第一端口,被构造为将所述未压缩数据传输至驱动控制器以及(iv)第二端口,被构造为在所述驱动器之间传输所述压缩数据;

(B)实现连接至所述逻辑相连组的下一驱动器的环;以及

(C)实现压缩/解压缩电路,所述压缩/解压缩电路被构造为在通过所述第二端口传输所述压缩数据之前对存储在每个所述驱动器上的所述压缩和未压缩数据进行压缩和解压缩,其中,所述驱动器中的一个的所述未压缩数据被存储作为所述驱动器中的至少另一个上的所述压缩数据。

16.根据权利要求15所述的方法,其中,所述方法不使用奇偶校验而建立冗余和容错性。

说明书 :

不使用奇偶校验和镜像法在RAID系统中建立高级别的冗

余、容错性及性能的方法

[0001] 相关申请的交叉引用
[0002] 本申请可以涉及于2010年3月26日提交的共同未决申请系列第12/732,841号,其全部内容结合于此作为参考。

技术领域

[0003] 本发明总体上涉及数据的存储,更具体地,涉及用于在不使用奇偶校验和镜像法的情况下在RAID系统中实现高水平的冗余、容错性以及性能的方法和/或装置。

背景技术

[0004] RAID(廉价驱动器的冗余阵列,redundant array of inexpensive drives)中使用的传统方式主要基于XOR函数(奇偶校验计算)或者镜像函数(mirror function),以获得冗余并提供容错性。在RAID 1和RAID 10技术中,对驱动器进行镜像以获得冗余。每次在介质上发生新写入时,需要将整个数据进行复制并写入数据驱动器以及对应的镜像驱动器上。
[0005] 参照图1,示出了RAID 10方式。示出了被镜像至驱动器DISK1的驱动器DISK0。示出了被镜像至驱动器DISK3的驱动器DISK2。RAID 1和RAID 10方式涉及将一个驱动器的全部内容镜像至另一个驱动器。如果存在被构造为RAID 1的两个驱动器,其中每个驱动器具有容量C GB,则RAID组的总容量将为C GB(即,不是两个驱动器的总容量2C GB)。因此,RAID 1或RAID 10的总体存储容量为RAID 1或RAID 10构造中的所有驱动器的总容量的50%。
[0006] 参照图2,示出了RAID 4和RAID 5方式。示出了多个驱动器DISK0、DISK1、DISK2以及DISK3。在RAID 4和RAID 5中,跨RAID组的多个驱动器DISK0~DISK3来划分数据块。在所示出的RAID 4结构中,驱动器DISK0、DISK1以及DISK2存储数据。奇偶校验块存储在专用驱动器(即,示为驱动器DISK3)中。在RAID 5中,奇偶校验跨RAID组中的所驱动器DISK0~DISK4而分布。在所示的RAID 5结构中,示出了保存数据的驱动器DISK3(与驱动器DISK3仅保存奇偶校验的RAID 4相比)。D奇偶校验(即,数据块D的奇偶校验)存储在盘DISK0中。C奇偶校验存储在DISK1中。示出了存储在盘DISK2上的B奇偶校验。示出了存储在盘DISK3上的A奇偶校验。
[0007] RAID 4和RAID 5方式使用基于XOR函数的奇偶校验来生成。对于RAID 4和RAID5,每个数据条用于生成奇偶校验。然后,将所生成的奇偶校验存储在另一个专用驱动器中或跨RAID组的所有驱动器来分布。RAID 4和RAID 5一次仅可以容忍一个驱动器故障而不丢失数据。
[0008] 参照图3,示出了专用的压缩数据驱动器方式。示出了多个驱动器DRIVE 1、DRIVE2以及DRIVE 3。还示出了驱动器DRIVE C。驱动器DRIVE 1、DRIVE 2以及DRIVE 3存储未压缩数据D0~D8。驱动器DRIVEC是将数据D0~D8的压缩形式存储为数据C-D0至C-D8的专用驱动器。
[0009] 专用的压缩数据驱动器方法的性能存在缺陷。单个专用驱动器DRIVE C用于存储每个RAID组的压缩数据。将每次新写入分割为多个条(stripe)。对于每一条,在专用驱动器DRIVE C中产生并存储压缩数据C-D0至C-D8。如果在RAID组中存在n个驱动器,则将n-1条压缩数据存储在专用驱动器DRIVE C中。处理这n-1条在完成压缩数据的写入过程中引入延迟并且造成瓶颈。配置有写入数据条和压缩数据的系统将由于排队等候写入进压缩驱动器DRIVE C而同时遭遇延迟。专用压缩数据驱动器方法还具有容错性缺陷。专用压缩驱动器和RAID组中的另一个驱动器的故障将导致数据丢失(逻辑驱动器故障)。
[0010] 参照图4,示出了分布压缩数据方式。示出了多个驱动器DRIVE 1、DRIVE 2、DRIVE3以及DRIVE 4。压缩数据以与奇偶校验在RAID 5方式中被分布的方式类似地跨驱动器而分布。驱动器DRIVE 1~4中的每一个包含来自另外三个驱动器中的每一个的数据条的压缩形式。分布压缩数据方式提供了比专用压缩数据方法更好的性能。然而,在分布压缩数据方法中多于一个驱动器的故障将导致数据丢失。

发明内容

[0011] 本发明涉及一种装置,包括至少两个驱动器的逻辑相连组、环以及压缩/解压缩电路。每个驱动器包括(i)第一区域,被构造为存储前一驱动器的压缩数据以及(ii)第二区域,被构造为存储驱动器的未压缩数据。环可以连接至逻辑相连组中的下一驱动器。压缩/解压缩电路可以被构造为对存储在每个驱动器上的数据进行压缩和解压缩。
[0012] 本发明的目的、特征以及优点包括提供这样一种驱动器存储结构,其可以(i)建立高级的冗余和容错性(ii)不使用奇偶校验来实现(iii)实现用于压缩/解压缩操作的ASIC(iv)使用驱动器外壳中的现有冗余驱动器通道(v)使用已在使用中的驱动器端口以存储数据(vi)设置固件以实现压缩/解压缩(vii)实现固件以存储每个驱动器的数据块与存储在另一个驱动器中的压缩数据块之间的映射和/或(viii)成本有效地实施。

附图说明

[0013] 本发明的这些和其他目的、特点以及优点将从下面的详细说明以及所附权利要求以及附图中变得显而易见,图中:
[0014] 图1是示出RAID 1和RAID 10方式的示图;
[0015] 图2是示出RAID 4和RAID 5方式的示图;
[0016] 图3是示出专用压缩数据驱动器方式的示图;
[0017] 图4是示出分布压缩数据方式的示图;
[0018] 图5是示出本发明的驱动器的实例的示图;
[0019] 图6是示出在压缩数据RAID机制的环链方法中的多个驱动器的示图;
[0020] 图7是示出用于压缩/解压缩操作的专用逻辑(dedicated logic)的示图;
[0021] 图8是示出驱动器外壳的示图;
[0022] 图9是示出数据流向驱动器的实例的示图;
[0023] 图10是示出具有2个驱动器故障的本发明的示图;
[0024] 图11是示出具有2个驱动器故障的分布压缩数据方法的示图;以及[0025] 图12是示出具有2个驱动器故障的专用压缩数据驱动器方法的示图。

具体实施方式

[0026] 实现具有最大化的存储效率和/或性能的高水平冗余是不断增长的数据存储的现代世界中的共同目标。本发明可以实现压缩技术以在RAID结构中压缩数据的冗余副本。可以以单链方式分布冗余数据。在RAID结构中,可以实现逻辑环以在不需要奇偶校验和/或镜像技术的情况下达到高水平冗余和/或性能。使用用于冗余的压缩技术提供了额外的冗余、更好的容错性和/或改善的性能。一组驱动器可以分组为RAID组。每个驱动器的数据内容可以被压缩并存储在RAID组的另一个驱动器中。可以实现单链逻辑结构。驱动器上的冗余端口以及驱动器外壳中的冗余驱动器通道可以用于提供逻辑结构。
[0027] 在对数据达到50%的压缩的情形下,与RAID 1驱动器组相比,本发明可以使存储利用率增大33.33%。可以根据对数据施加的压缩量来改善本发明的存储效率。对于大于50%的压缩,本发明的存储效率进一步增大,并且通常胜过RAID 4和/或RAID 5的存储效率,而不会牺牲任何容错性。
[0028] ASIC(专用集成电路,application specific integrated circuit)可以实施为用于压缩和/或解压缩操作以确保存储子系统的专用性能。冗余驱动器端口和/或驱动器外壳中的冗余驱动器通道的使用可以确保驱动器的这种 专用性能。本发明的链压缩方案(chained compression solution)可以为RAID系统提供改善的容错性、冗余和/或可用性。
[0029] 本发明的RAID组可以包括驱动器的集合。示例性数据块可以存储在单个驱动器中。来自一个驱动器的示例性数据的压缩形式可以存储在同一RAID组中的另一个驱动器中。两个驱动器可以称为“逻辑相连,logically contiguous”驱动器。通过引入压缩可以避免使用奇偶校验和/或镜像的需要。具体驱动器的压缩数据可以以链方式(chained manner)存储在驱动器中。例如,可以形成环。可以实现高水平的冗余、容错性和/或性能。
[0030] 参照图5,示出了本发明的驱动器100。驱动器100通常包括区域102以及区域104。区域104可以用于存储未压缩数据。区域102可以用于存储一个逻辑相连驱动器的压缩数据(例如,来自驱动器n-1的压缩数据)。
[0031] 所实现的具体压缩机制可以涉及驱动器100的实际内容的一对一映射(将结合图6进行更详细地描述)。例如,一个驱动器的数据的压缩形式可以存储在逻辑相连驱动器上。映射信息可以通过嵌入(embed)在存储阵列控制器上的固件来保持。如果发生驱动器故障和/或错误校正,通过对来自逻辑相连驱动器的压缩数据块进行解压缩,可将映射信息用于重建驱动器的数据。当用新的替代驱动器来替代故障驱动器时,通过对来自逻辑相连驱动器的压缩数据进行解压缩,可以在新驱动器中重建故障驱动器的数据。通过嵌入在每个冗余存储阵列控制器上的控制器固件可以实现映射信息(将结合图7进行更详细的说明)。
[0032] 参照图6,示出了驱动系统(或结构)150的框图。系统150通常包括多个驱动器100a~100n。可以改变所实现的驱动器的具体个数以满足具体实现方式的设计标准。驱动器100a~100n中的每一个可以具有数据部(例如,D1~D5)以及压缩部(例如,C1~C5)。例如,驱动器100a可以具有被构造为存储未压缩数据D1的数据部。数据块D1的压缩形式可作为数据C1存储在逻辑相连的驱动器中。例如,压缩数据C1可以存储在驱动器
100b中。驱动器100a~100n可以形成环106a~106n。环106a~106n可以形成逻辑链环。通常,环106a~106n可以作为驱动器100a~100n 之间的多个逻辑连接来实现。例如,部分106a可以将驱动器100a的数据D1逻辑连接至驱动器100b的压缩数据C1。以总体上从左到右的方式示出环106a~106n。然而,可以以总体上从右到左的方式来实现环
106a~106n。例如部分106d可以将驱动器100n的数据D5逻辑连接至驱动器100d的压缩数据C5。可以改变环160a~160n的具体设置以满足具体实现方式的设计标准。
[0033] 在所示的实例中,驱动器100n可以存储数据D2。数据D2的压缩形式可以在驱动器100C中存储为(通过逻辑环106a~106n的部分160b可访问的)数据C2。类似地,驱动器100a的数据D1可以具有在驱动器100b上存储为数据C1的数据D1的压缩形式。驱动器100n的压缩数据C5可以存储在驱动器100a中。通常,驱动器100a~100n中的任意两个可以形成逻辑相连组。在一个实例中,驱动器100b和100c可以是逻辑相连组。逻辑相连组可以由未被示出为彼此相邻的驱动器形成。驱动器100c的数据D3被示出为作为压缩数据C3存储在驱动器100d中。
[0034] 参照图7,示出了存储子系统200的示图。子系统200通常包括多个块(或电路)202a~202b。电路202a~202b可以均实现为压缩/解压缩电路。可以在电路202a和电路202b之间实现中间板204。压缩电路202a通常包括块(或电路)210、块(或电路)212、块(或电路)214以及块(或电路)216。电路210可以实现为主接口。电路212可以实现为处理器和数据高速缓存。电路214可以实现为压缩/解压缩引擎。电路216可以实现为驱动器接口。电路212通常包括高速缓存电路218和处理器电路220。主接口210可以具有可以接收信号(例如,DATA)的输入端230。该信号DATA通常表示代表图5中所描述的数据D1~D5的一个或多个数据块(或包)。主接口可以具有可以向电路212的输入端234提供(present)信号DATA的输出端232。电路212可以具有可以向电路214的输入端238提供信号DATA的输出端236。电路212还可以具有可以向电路216的输入端242提供信号DATA的输出端240。电路214可以具有可以向电路216的输入端246提供信号(例如,C_DATA)的输出端244。信号C_DATA可以是信号DATA的压缩形式。信号C_DATA通常表示代表图5中所描 述的压缩数据C1~C5的一个或多个数据块(或包)。电路202b可以具有类似的实现方式。电路214可以提供专用逻辑以实施压缩和/或解压缩操作。
[0035] 电路202a和/或电路202b的逻辑可以嵌入在连同用于RAID引擎的代码一起的作为控制器固件的一部分运行的代码中,或者可以卸载至由控制器固件代码控制并操作的ASIC中。代码的卸载会以附加电路为代价来提高性能。可以改变由电路214实现的压缩/解压缩的具体类型以满足具体实现方式的设计标准。电路202a和/或电路202b可以用于冗余、容错性和/RAID组故障转移(failover)机制。
[0036] 参照图8,示出了驱动器外壳300。驱动器外壳300被示出包括多个驱动器100a~100n。每个驱动器100a~100n被示出具有端口(例如,P1)和另一个端口(例如,P2)。外壳通常包括电路302、电路304、中间板204、电路308以及电路310。电路302可以实现为主ESM。电路308可以实施为备用(alternate)ESM。驱动器100a~100n中的每一个的端口P1和P2中的一个可以是第一端口。驱动器100a~100n中的每一个的端口P1和P2中的另一个可以是第二端口。送往驱动器的未压缩数据D1~D5以及压缩数据C1~C5的I/O路径可以保持分离。未压缩数据D1~D5以及压缩数据C1~C5都由同一控制器来处理。
驱动器100a~100n可以实现为双端口驱动器以实现冗余(例如,在驱动器100a~100n上存储并取回压缩数据C1~C5)。SOC 304(或301)可以驻留在ESM 302(或308)中并可以执行送往驱动器100a~100n的数据的切换/路由。驱动器外壳300上的中间板204可以用于向驱动器外壳300的冗余ESM 302(或308)发送压缩数据。中间板204还可以用于使用第二端口P2向驱动器100a~100n发送压缩数据。
[0037] 信号DATA的压缩数据C_DATA可以跨过驱动器外壳300中的中间板电路204而路由至具有相同ESM的保持数据D1~D5的备用ESM 308。对于控制器202a所拥有的RAID逻辑驱动器,驱动器100a~100n中的每一个的第一端口P1可以用于经由由ESM 302管理的第一通道来传送未压 缩数据。驱动器100a~100n中的每一个的第二端口P2可以用于经由由ESM 308管理的第二通道来传送压缩数据。对于控制器202b所拥有的RAID逻辑驱动器100a~100n,端口P2可以用作经由由ESM B 308管理的第一通道来传送未压缩数据的第一端口。端口P1可以用作经由由ESM302管理的第二通道来传送压缩数据的第二端口。
[0038] 使用本发明实现的RAID组可以具有存储在驱动器100a~100n中的一个中的实际(未压缩)数据D1~Dn以及存储在另外两个逻辑相连驱动器100a~100n中的压缩数据C1~Cn。一旦来自主机的每个数据段到达,数据D1~D5就被分割为要被发送至驱动器接口216的多个条。与该处理并行,被划分成条的数据被压缩引擎压缩,并被发送至驱动器接口。实际数据D1~Dn连同压缩数据C1~Cn一起被发送至驱动器外壳300。
[0039] 参照图9,示出了数据流向驱动器100a~100n的实例。可以在通道320上发送数据。驱动器100a~100n中每一个可以在主端口P1上接收来自数据通道320的数据。来自数据通道320的数据可以由压缩/解压缩引擎214来压缩。每个驱动器100a~100n可以在第二端口上接收来自压缩/解压缩引擎214的压缩数据。这确保了RAID组与任意数量的驱动器100a~100n一起工作,而不会损失驱动器性能。假设不存在逻辑相连驱动器故障,本发明通常提供n/2个驱动器的容错性,其中n是RAID组中的驱动器的总数。
[0040] 与RAID 1实施方式相比,本发明使用50%数据压缩率将确保更大的存储器效率和更大的性能。考虑2个驱动器的实例。如果驱动器100a~100n中的每一个具有容量C GB,则RAID 1所占用的最大空间为C GB。然而,关于本发明,驱动器100a~100n中的每一个的数据区域占用0.666CGB并且压缩区域占用0.333C GB(50%压缩率)。在2个驱动器中,RAID组存储的实际数据总容量约为1.33C GB。由于驱动器100a~100n可以像具有跨两个驱动器划分数据的RAID 0组那样被访问,所以性能更大。因此,本发明可以通过等于或大于50%的压缩率来提供大于RAID 1的性能。 然而,通过实现大于50%的压缩率,可以进一步提高驱动器100a~100n存储容量效率。
[0041] 由于本发明在多于1个驱动器故障(假设没有逻辑相连驱动器故障,可达到n/2个驱动器)的情况下可以继续操作而不丢失数据,所以本发明通常比RAID 3和RAID 5实现方式更能容错。与RAID 3和RAID 5组相比,可以实现额外的容错性。在RAID 3和RAID5组的情况下,每当对组实施修改操作时,需要读取所有驱动器以连同修改数据一起重新计算奇偶校验并更新奇偶校验。关于本发明,对于每次修改操作,数据被排成条,并且写入各驱动器100a~100n。然后这些条的压缩被独立地产生,并写入RAID组中的逻辑相连驱动器。与奇偶校验生成方法相比,需要读取和/或更新更少。
[0042] 参照图10,示出了阐述具有2个驱动器故障的驱动系统150的示图。驱动系统150处理多个驱动器失败的情形,只要所有出故障的驱动器故障是不相连的即可。用x标记驱动器100a和驱动器100c以示出驱动器故障。即使具有两个驱动器故障,仍将可继续获得所有数据。下面的表(TABLE)1描述的每个驱动器的状态以及数据可用性:
[0043] 表1
[0044]驱动器 状态 数据可用性
1 故障 经驱动器2中的C1
2 最优 经D2
3 故障 经驱动器4中的C3
4 最优 经D4
5 最优 经D5
[0045] 参照图11,示出了阐述具有2个驱动器故障的分布压缩数据方法的示图。使用分布压缩数据方法的任意2个驱动器的故障导致数据丢失。用X标记DRIVE 2和DRIVE 4以示出驱动器故障。结果,数据D1和D8丢失。
[0046] 参照图12,示出了阐述具有2个驱动器故障的专用数据压缩方法的示图。使用专用压缩数据方法的专用驱动器的故障以及RAID系统中的任何其他驱动器的故障导致数据丢失。用X标记DRIVE 2和专用驱动器DRIVE 4以示出驱动器故障。结果,数据块D1、D4以及D7丢失。
[0047] 与分布压缩数据方法和专用数据压缩方法相比,本发明提供了性能与高水平冗余和容错性之间的更好的折衷。
[0048] 尽管已参照本发明优选实施方式对本发明进行了具体示出和描述,但本领域的技术人员应当理解,在不会背离本发明的范围的情况下,可以进行形式和细节上的各种变化。