用于独立磁盘冗余阵列(RAID)系统的文件服务器转让专利

申请号 : CN200780035418.4

文献号 : CN101652752B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 潘塔斯·苏塔迪嘉

申请人 : 马维尔国际贸易有限公司

摘要 :

一种独立磁盘冗余阵列(RAID)系统包括N个存储阵列。N个存储阵列每个都包括目标处理模块和1到M个硬盘驱动器,其中M和N是大于1的整数。数据处理模块将针对第一数据块的第一数据存储请求指定给多个目标处理模块中的第一目标处理模块,以处理第一数据块的错误检查和纠正(ECC)数据。多个目标处理模块中的这一个目标处理模块将第一数据块的第一部分和与第一数据块相关联的ECC数据发送到多个目标处理模块中的另一目标处理模块。

权利要求 :

1.一种独立磁盘冗余阵列RAID系统,包括:

N个存储阵列,其中所述N个存储阵列每个彼此不同,并且所述N个存储阵列中的每个包括:目标处理模块;和

M个硬盘驱动器,其中M和N是大于1的整数;

以及

数据处理模块,其不同于所述目标处理模块,并且将针对第一数据块的第一数据存储请求指定给所述目标处理模块中的一个目标处理模块,以处理所述第一数据块的错误检查和纠正ECC数据,并且其中,所述目标处理模块中的所述一个目标处理模块将所述第一数据块的第一部分和与所述第一数据块相关联的ECC数据发送到所述目标处理模块中的另一目标处理模块,并且其中所述数据处理模块从不同于所述RAID系统的主机设备接收所述第一数据块。

2.根据权利要求1所述的RAID系统,其中,由所述目标处理模块中的所述另一目标处理模块接收到的所述ECC数据与所述第一部分相对应。

3.根据权利要求1所述的RAID系统,还包括接收所述第一数据块并且将所述第一数据块转发到所述数据处理模块的接口。

4.根据权利要求3所述的RAID系统,其中,所述接口包括以下至少一种:网络接口、千兆比特以太网网络接口和数据总线。

5.根据权利要求1所述的RAID系统,还包括在所述数据处理模块和所述N个存储阵列之间、并且在所述N个存储阵列之间交换数据的交换模块,其中,所述交换模块包括多端口高速交换机。

6.根据权利要求1所述的RAID系统,其中,所述数据处理模块将针对第二数据块的第二数据存储请求指定第二目标处理模块,以处理所述第二数据块的ECC数据,并且其中,所述第二目标处理模块将所述第二数据块的第一部分和与所述第二数据块相关联的ECC数据发送到所述目标处理模块中的第三目标处理模块。

7.根据权利要求6所述的RAID系统,其中,所述第一数据块和所述第二数据块是在所述目标处理模块中的所述一个目标处理模块和所述第二目标处理模块中以交叠的方式被分别处理的。

8.根据权利要求1所述的RAID系统,其中,所述数据处理模块包括接口、存储器和至少一个处理器。

9.根据权利要求1所述的RAID系统,其中,所述数据处理模块对所述第一数据块执行文件系统FS协议功能,并且其中,所述FS协议功能包括下述至少一种:网络文件服务器NFS协议功能,通用因特网文件服务器CIFS协议功能。

10.根据权利要求1所述的RAID系统,其中,所述数据处理模块确定要应用于所述第一数据块的RAID存储级别。

11.根据权利要求1所述的RAID系统,其中,所述数据处理模块将所述第一数据块映射到所述N个存储阵列中的所选存储阵列,并且更新用于所述N个存储阵列的存储映射。

12.根据权利要求1所述的RAID系统,其中,当所述数据处理模块接收到数据取回请求时,所述数据处理模块将所述数据取回请求指定给所述目标处理模块中的第一目标处理模块,其中,所述目标处理模块中的所述第一目标处理模块从所述目标处理模块中的其他目标处理模块取回与所述数据取回请求相对应的数据,并且取回与所述数据中的有错误的部分相关的ECC数据,以及其中,所述目标处理模块中的所述第一目标处理模块通过使用所述ECC数据来对所述部分执行数据恢复。

13.根据权利要求1所述的RAID系统,其中,当所述数据处理模块接收到数据取回请求时,所述数据处理模块将数据取回消息发送到具有与所述数据取回请求相对应的数据的所述目标处理模块。

14.根据权利要求13所述的RAID系统,其中,所述目标处理模块取回与所述数据取回请求相对应的所述数据和与所述数据中的有错误的部分相关的ECC数据,并且其中,所述目标处理模块将与所述数据取回请求相对应的所取回的数 所述ECC数据发送到所述数据处理模块,并且其中,所述数据处理模 用所述ECC数据来对所述部分执行数据恢复。

15.根据权利要求14所述的RAID系统,其中,所述目标处理模块取回与所述数据取回请求相对应的所述数据和与所述数据中的有错误的部分相关的ECC数据,并且其中,所述目标处理模块使用所述ECC数据来对所述部分执行数据恢复。

16.根据权利要求1所述的RAID系统,其中,所述数据处理模块利用操作系统和文件系统协议功能中的至少一种来处理所述第一数据块,并且将RAID冗余和恢复处理指定给所述目标处理模块中所选的一个目标处理模块。

17.根据权利要求1所述的RAID系统,其中,所述数据处理模块维护所述N个存储阵列中存储的数据块的映射,并且与所述目标处理模块共享所述映射。

18.根据权利要求1所述的RAID系统,其中,所述数据处理模块选择所述目标处理模块中的一个目标处理模块并且将RAID冗余和恢复处理指定给所述目标处理模块中所选的一个目标处理模块。

19.根据权利要求1所述的RAID系统,其中,所述数据处理模块在存储到所述N该存储阵列中之后执行纠错码处理来恢复所述第一数据块。

20.根据权利要求10所述的RAID系统,其中,所述RAID存储级别标识所述RAID系统执行分条、磁盘镜像还是奇偶存储。

说明书 :

用于独立磁盘冗余阵列(RAID)系统的文件服务器

[0001] 相关申请的交叉引用
[0002] 本申请要求2006年7月24日递交的美国临时申请第60/820,180号、2007年3月15日递交的美国申请第11/724,549号、2006年11月1日递交的美国申请第11/591,325号的优先权。上述申请的所有公开内容通过引用被结合于此。

技术领域

[0003] 本发明涉及独立磁盘冗余阵列(RAID)系统。

背景技术

[0004] 在此提供的背景技术描述是为了一般地呈现本发明的背景。到本背景技术部分所描述的程度的、目前所提名的发明人的工作,以及另一方面在递交时不能作为现有技术的该描述的多个方面,既没有明确地也没有隐含地被承认是与本发明相对的现有技术。
[0005] 独立磁盘冗余阵列(RAID)系统将数据冗余地存储在多个硬盘上。在某些RAID级别中,数据块被分割并被存储在不同的磁盘上,这缩短了数据存储和取回的等待时间。多个磁盘还趋向于增大平均无故障时间(MTBF)并且增强容错性。
[0006] RAID系统类似于如单个逻辑硬盘驱动器那样的访问或主机设备。RAID系统可以采用硬盘分条(striping),这涉及将每个驱动器的存储空间分割为单元。单元的大小将根据应用在从扇区(512字节)到至多若干兆字节的范围内变化。所有磁盘的分条通常是交错的并且是顺序编址的。
[0007] 除了非冗余阵列(RAID-0)外,还有多种类型的RAID系统。在RAID-0中,采用分条然而没有数据冗余。其提供最佳的性能然而没有容错性。在RAID-1中,使用磁盘镜像而非分条并且至少需要两个驱动器来在存储数据期间实现复制。因为可以同时读取任一个磁盘,所以读性能得到改善。写性能与单个磁盘存储相同。RAID-1在多用户系统中提供最佳的性能以及最佳的容错性。
[0008] 在RAID-2中,使用跨磁盘的分条。某些磁盘存储错误检查和纠正(ECC)信息。在RAID-3中,使用分条并且一个驱动器专用于存储奇偶校验信息。嵌入的错误检查(ECG)信息用于检查错误。通过计算记录在其他驱动器上的信息的异或(XOR)来完成数据恢复。因为I/O操作同时寻址所有的驱动器,所以RAID-3不能够使I/O交叠(overlap)。因此,RAID-3最适用于具有长记录应用的单用户系统。
[0009] 在RAID-4中,使用大分条。可以从任一单个驱动器中读取记录。这允许针对读操作使I/O交叠。因为写操作更新奇偶校验驱动器,所以不能够使I/O交叠。在RAID-5中,使用旋转奇偶阵列(rotating parityarray),这解决了RAID-4的写限制。因此,读和写操作可以是交叠的。RAID-5存储奇偶校验信息然而并不使用冗余数据。然而,奇偶校验信息可以用于重构数据。RAID-5至少需要三个并且一般是五个用于该阵列的磁盘。RAID-5最适用于性能不是很关键的或者执行较少写操作的多用户系统。
[0010] 除了使用在不同驱动器上分布的第二奇偶校验方案外,RAID-6与RAID-5类似。RAID-6提供高容错性以及高驱动故障耐受性。在RAID-7中,使用实时的嵌入式操作系统和控制器。RAID-7使用经由高速总线的高速缓存以及独立计算机的其他特性。
[0011] RAID-10组合RAID-0和RAID-1。存在两种子类型:在RAID-0+1中,数据被组织为多个磁盘上的分条,然后产生分条化的磁盘组的镜像;而在RAID-1+0中,产生数据的镜像然后镜像被分条化。
[0012] 在RAID-50(或RAID-5+0)中,使用一系列RAID-5的组。这些组被以RAID-0的方式分条化从而改善RAID-5的性能而不减弱数据保护。在RAID-53(或RAID-5+3)中,(RAID-0类型中的)分条被用于RAID-3的虚拟磁盘块。这提供了比RAID-3更高的性能然而花费了更高成本。
[0013] 当主机设备发送要存储的数据块时,针对所选RAID方法来执行RAID处理。RAID处理可以包括所选RAID级别的冗余和恢复处理(例如错误检查和纠正(ECC))和/或其他处理。
[0014] 在一种方法中,单个中央处理单元(CPU)从另一设备接收数据块。CPU负责包括ECC的所有RAID处理。就这种方法而言,因为与ECC有关的处理可能是变化的并且耗时的,所以CPU可能通常在速率上限制了数据存储。换言之,CPU中的处理可能引发瓶颈并且增大等待时间。由于使用单个CPU,所以需要在完成了针对一个数据块的RAID构造之后,才能对后一数据块进行处理。

发明内容

[0015] 一种独立磁盘冗余阵列(RAID)系统包括N个存储阵列,其中N个存储阵列每个包括目标处理模块和1到M个硬盘驱动器,其中M和N是大于1的整数。数据处理模块将针对第一数据块的第一数据存储请求指定给多个目标处理模块中的第一目标处理模块,以处理第一数据块的错误检查和纠正(ECC)数据。多个目标处理模块中的这一个目标处理模块将第一数据块的第一部分和与第一数据块相关联的ECC数据发送到多个目标处理模块中的另一目标处理模块。
[0016] 在其他特征中,由多个目标处理模块中的另一目标处理模块接收到的ECC数据与该第一部分相对应。接口接收第一数据块并且将第一数据块转发到数据处理模块。该接口包括网络接口、千兆比特以太网网络接口和数据总线中的至少一个。交换模块在数据处理模块和N个存储阵列之间并且在N个存储阵列之间交换数据。该交换模块包括多端口高速交换机。数据处理模块将针对第二数据块的第二数据存储请求指定给用于处理第二数据块的ECC数据的第二目标处理模块,其中,第二目标处理模块将第二数据块的第一部分和与第二数据块相关联的ECC数据发送到多个目标处理模块中的第三目标处理模块。在多个目标处理模块中的这一个目标处理模块和第二目标处理模块中,以交叠的方式分别对第一数据块和第二数据块进行处理。
[0017] 在其他特征中,数据处理模块包括接口、存储器和至少一个处理器。数据处理模块对第一数据块执行文件系统(FS)协议功能。FS协议包括网络文件服务器(NFS)和通用因特网文件服务器(CIFS)中的至少一个。数据处理模块确定要应用于第一数据块的RAID存储级别。数据处理模块将第一数据块映射到N个存储阵列中的所选一个存储阵列,并且更新用于N个存储阵列的存储映射。
[0018] 在其他特征中,当数据处理模块接收到数据取回请求时,数据处理模块将数据取回请求指定给多个目标处理模块中的第一目标处理模块。多个目标处理模块中的第一目标处理模块从多个目标处理模块中的其他目标处理模块取回与数据取回请求相对应的数据,并且取回与数据中的有错误的部分相关的ECC数据。
[0019] 在其他特征中,多个目标处理模块中的第一目标处理模块通过使用ECC数据来对所述部分执行数据恢复。当数据处理模块接收到数据取回请求时,数据处理模块将数据取回消息发送到具有与数据取回请求相对应的数据的目标处理模块。这些目标处理模块取回与数据取回请求相对应的数据和与数据中的有错误的部分相关的ECC数据。目标处理模块将与数据取回请求相对应的取回的数据和ECC数据发送到数据处理模块,并且其中,数据处理模块通过使用ECC数据来对所述部分执行数据恢复。这些目标处理模块通过使用ECC数据来对所述部分执行数据恢复。
[0020] 一种独立磁盘冗余阵列(RAID)系统包括N个存储阵列,其中N个存储阵列每个包括目标处理模块和1到M个硬盘驱动器,其中M和N是大于1的整数。数据处理模块以非交叠(non-overlap)的方式将针对数据块的错误检查和纠正(ECC)处理选择性地指定给多个目标处理模块中的所选多个目标处理模块。交换模块提供数据处理模块和N个存储阵列之间的以及N个存储阵列中的每个存储阵列和N个存储阵列中的其他存储阵列之间的通信路径。
[0021] 在其他特征中,数据处理模块将针对第一数据块的数据存储请求指定给多个目标处理模块中的用于处理第一数据块的ECC数据的一个目标处理模块,并且其中,多个目标处理模块中的这一个目标处理模块将第一数据块的第一部分和与第一数据块相关联的ECC数据发送到多个目标处理模块中的另一目标处理模块。由多个目标处理模块中的另一目标处理模块接收到的ECC数据与该第一部分相对应。接口接收数据块并且将数据块转发到数据处理模块。该接口包括网络接口、千兆比特以太网网络接口和数据总线中的至少一个。
[0022] 在其他特征中,交换模块包括多端口高速交换机。交换模块包括以大于或等于1千兆比特每秒的速度进行操作的多端口交换机。交换模块包括多端口千兆比特以太网交换机。数据处理模块将针对第二数据块的第二数据存储请求指定给用于处理第二数据块的ECC数据的第二目标处理模块,其中,第二目标处理模块将第二数据块的第一部分和与第二数据块相关联的ECC数据发送到多个目标处理模块中的第三目标处理模块。
[0023] 在其他特征中,在多个目标处理模块中的这一个目标处理模块和第二目标处理模块中,以交叠的方式分别对第一数据块和第二数据块进行处理。数据处理模块包括接口、存储器和至少一个处理器,并且其中,数据处理模块对第一数据块执行文件系统(FS)协议功能。FS协议包括网络文件服务器(NFS)和通用因特网文件服务器(CIFS)中的至少一个。数据处理模块确定要应用于数据块的RAID存储级别。数据处理模块将数据块映射到N个存储阵列中的所选多个存储阵列,并且更新用于N个存储阵列的存储映射。
[0024] 在其他特征中,当数据处理模块接收到数据取回请求时,数据处理模块将数据取回请求指定给多个目标处理模块中的第一目标处理模块。多个目标处理模块中的第一目标处理模块从多个目标处理模块中的其他目标处理模块请求与数据取回请求相对应的数据,并且请求与数据中的有错误的部分相关的ECC数据。多个目标处理模块中的第一目标处理模块通过使用ECC数据来对所述部分执行数据恢复。
[0025] 在其他特征中,当数据处理模块接收到数据取回请求时,数据处理模块将数据取回消息发送到具有与数据取回请求相对应的数据的目标处理模块。这些目标处理模块取回与数据取回请求相对应的数据和与数据中的有错误的部分相关的ECC数据。这些目标处理模块将与数据取回请求相对应的取回的数据和ECC数据发送到数据处理模块,并且其中,数据处理模块通过使用ECC数据来对所述部分执行数据恢复。这些目标处理模块通过使用ECC数据来对所述部分执行数据恢复。
[0026] 根据下文中所提供的详细描述,本发明的应用的更多方面将变得清楚。应理解,详细描述和特定示例虽然指示了本发明的优选实施例,但是仅意欲用于说明而非意欲限制本发明的范围。

附图说明

[0027] 根据详细描述和附图,本发明将得到更充分的理解,其中:
[0028] 图1是根据本发明的RAID系统的原理框图;
[0029] 图2A是数据处理模块的原理框图;
[0030] 图2B是目标处理模块的原理框图;
[0031] 图2C是示例性目标处理模块的更详细的原理框图;
[0032] 图3是示出对数据块进行的处理的原理框图;
[0033] 图4是示出对数据块进行的处理的原理框图;
[0034] 图5是示出对数据块进行的处理的原理框图;
[0035] 图6示出对数据库进行的处理的定时;
[0036] 图7是示出用于处理要存储的数据块的方法的流程图;
[0037] 图8A和图8B是示出通过由数据处理模块所执行的ECC处理来取回数据块的示例性方法的流程图;
[0038] 图9A和图9B是示出通过由多个目标处理模块中的相应目标处理模块所执行的ECC处理来取回数据块的示例性方法的流程图;以及
[0039] 图10是示出通过由多个目标处理模块中的所选一个目标处理模块所执行的ECC处理来取回数据块的示例性方法的流程图。

具体实施方式

[0040] 以下描述本质上仅是示例性的并且决非意欲限制本发明、其应用或使用。为了清楚起见,在附图中将使用相同标号来标识相同元件。在此使用的术语模块、电路和/或设备指专用集成电路(ASIC)、电子电路、执行一个或多个软件和固件程序的处理器(共享、专用或组处理器)和存储器、组合逻辑电路和/或提供所描述的功能的其他适当组件。在此使用的短语“A、B和C的至少一个”应当被解释为表示逻辑(A or B or C),该逻辑使用非排他性逻辑或。应理解,可以以不同顺序来执行方法中的步骤而不会改变本发明的原理。
[0041] 现参考图1,示出了独立磁盘冗余阵列(RAID)系统100。接口104接收要存储在RAID系统100中的数据块。例如,接口104可以是诸如千兆比特以太网网络接口、数据总线等之类的高速接口,然而其也可以是任何其他类型的接口。数据处理模块108执行部分的RAID处理。换言之,数据处理模块108从接口104接收数据块并且对数据执行操作系统(OS)和文件系统(FS)协议功能。例如,FS协议可以包括网络文件服务器(NFS)、通用因特网文件服务器(CIFS)和/或其他适当的协议。数据处理模块108将冗余和恢复处理(例如错误检查和纠正(ECC))分发给其他的目标处理设备,这将在下文中进行描述。
[0042] 数据处理模块108与交换模块112进行通信。仅作为示例,交换模块112可以是诸如纵横制(crossbar)交换机、千兆比特交换机或千兆比特以太网交换机之类的多端口高速交换机。交换模块112可以交换被组织为数据分组的数据。应理解,交换模块112与硬连线连接相比提供了可量测性和灵活性。
[0043] 交换模块112又与两个或多个存储阵列120-1、120-2、...和120-X(总的称作存储阵列120)进行通信,其中X是大于1的整数。每个存储阵列120分别包括目标处理模块122-1、122-2、...和122-X(总的称作目标处理模块122)和一个或多个硬盘驱动器(HDD)124-11、124-12、...和124-XY(总的称作HDD 124),其中Y是大于零的整数。应理解,每个存储阵列120中的存储阵列120和HDD 124的数目可以变化以允许调节规模。
[0044] 现参考图2A,更详细地示出了示例性数据处理模块108。数据处理模块108经由接口104接收用于数据存储的数据块。数据处理模块108可以包括接口150、存储器154和一个或多个处理器156。
[0045] 数据处理模块108可以确定要应用的RAID存储级别,负责与FS相关的处理,可以将数据块映射到存储阵列,将RAID冗余和恢复处理(例如错误检查和纠正(ECC))指定给所选目标处理模块,并且可以更新存储映射,等等。
[0046] 被指定执行RAID冗余和恢复处理的目标处理模块122从数据处理模块108接收指令。所选目标处理模块122针对所指定的数据块生成错误检查和纠正(ECC)。一旦完成,目标处理模块122就通过基于由数据处理模块108所提供的RAID指令,将数据块的多个部分和/或ECC数据选择性地发送到其他阵列中用于存储的其他目标处理模块,来执行数据分摊(data spreading)。某些数据和ECC数据也可以被本地存储。
[0047] 同时,可以针对其他的数据块将RAID冗余和恢复处理指定给其他的目标处理模块122。其他的目标处理模块122以交叠的方式处理其他数据块的ECC。因为数据处理模块108并不处理任何待存储的数据块的ECC,所以数据处理模块108不再引发瓶颈。与数据处理模块108相关联的存储器154可以存储并更新存储阵列120中数据的全局驱动映射158。
[0048] 现参考图2B,每个目标处理模块122可以包括RAID构造模块168和RAID取回模块170。RAID构造模块168处理ECC。RAID取回模块170处理RAID取回请求,这将在下文中进行描述。
[0049] RAID构造模块170处理将被存储在与所选目标处理模块122相关联的本地驱动器124上的数据块的多个部分的ECC。此外,RAID构造模块170为与远程存储阵列120相关联的远程驱动器处理ECC。RAID指令模块172生成用于其他目标处理的RAID指令,并且可以处理从其他的目标处理模块122接收到的RAID指令。RAID指令模块172可以与RAID构造模块170相结合。
[0050] 与除所选目标处理模块外的目标处理模块相关联的远程存储阵列120存储从所选目标处理模块接收到的数据和/或ECC数据。远程存储阵列120可以简单地遵照由所选目标处理模块122发出的RAID指令。
[0051] 应理解,由远程存储阵列120所执行的处理量明显低于由目标处理模块122所执行的RAID构造处理。这使得远程存储阵列120的目标处理模块122能够用于以交叠的方式针对其他数据块来处理RAID构造。
[0052] 现参考图2C,更详细地示出了示例性目标处理模块122。目标处理模块122经由交换模块112接收来自数据处理模块的执行RAID构造的请求和/或由远程目标处理模块所发送的RAID指令。目标处理模块122包括接口178、存储器182和一个或多个处理器184。
[0053] 现参考图3,在使用中,在数据处理模块108处经由接口104接收到了第一数据块200-1。数据处理模块108对该数据块执行OS和FS协议功能。数据处理模块108将数据块指定给与存储阵列120之一相关联的目标处理模块122。此外,目标处理模块122可以确定要应用的RAID存储级别,可以将数据块映射到存储阵列,可以更新存储映射,等等。
[0054] 例如,第一数据块200-1可以被指定给第一存储阵列120-1的目标处理模块122-1。所选目标处理模块122-1生成该数据的ECC。在存储阵列120-1生成第一数据块的ECC的同时,数据处理模块108经由接口104接收第二数据块200-2。数据处理模块108将第二数据块指定给与存储阵列120-2相关联的目标处理模块122-2以生成ECC。
[0055] 交叠地处理针对数据块的RAID构造处理可以针对附加的数据块200-P持续,直到所有的目标处理模块都在处理数据块为止。因此,与其他方法相比,吞吐量可以得到显著提高。
[0056] 现参考图4和图5,更详细地示出了对数据块200-1的处理。在进行了处理之后,数据处理模块108将数据块200-1发送到存储阵列120-1的目标处理模块122-1。数据处理模块108还可以更新驱动映射。目标处理模块122-1处理该数据块的ECC。目标处理模块122-1可以将与数据块200-1相关联的某些数据存储在与存储阵列120-1相关联的本地驱动器124上。此外,目标处理模块122-1可以将RAID指令、数据和/或ECC数据发送到与其他存储阵列相关联的目标处理模块122-2、...以及122-X。远程存储阵列120-2、...以及120-X中的其他的目标处理模块122-2、...以及122-X简单地遵照RAID指令并且具有有限的处理负荷,这使得这些远程存储阵列120-2、...以及120-X的目标处理模块122-2、...以及122-X能够处理其他数据块的ECC。
[0057] 在图5中,在目标处理模块122-1处理第一数据块200-1的ECC的同时,数据处理模块108接收第二数据块200-2。数据处理模块108将第二数据块200-2指定给与存储阵列120-2相关联的目标处理模块122-2。附加的数据块200-P可以被指定给其他存储阵列120的目标处理模块122。
[0058] 现参考图6,在250处一般地示出数据块的示例性RAID处理。这种类型的RAID处理可能遇到瓶颈,其减少了数据接入和取回的次数。在252处示出了根据本发明某些实现方式的数据处理。数据块的RAID构造可以花费可变的时间量。根据本发明的RAID系统即使在存储请求之一花费了明显更长的处理时间量时也可以连续处理数据块。
[0059] 现在参考图7,示出了用于在数据存储请求期间操作RAID系统的方法。控制在步骤300处开始。在步骤302,控制判断是否在数据处理模块108处接收到了要存储的数据块。如果步骤302为真,那么在步骤304,数据处理模块108将针对该数据块的ECC处理指定给多个目标处理模块122之一。数据处理模块108还可以更新全局驱动映射并且可以执行上述的其他功能。在步骤306,所选目标处理模块处理该数据块的ECC。所选目标处理模块可以将RAID指令、数据和/或ECC数据发送到与远程存储阵列相关联的远程目标处理模块。控制在步骤310处结束。
[0060] 现参考图8A到图10,示出了各种用于数据取回的示例性方法。为了取回数据,可以在取回过程中检测到错误时执行ECC处理。这些错误可以由存储与错误相关联的子块的硬盘驱动器检测出来。一旦检测到,就可以由相同的目标处理模块、所选一个目标处理模块和/或数据处理模块来本地地执行ECC恢复。
[0061] 在图8A和图8B中,示出了对取回数据的示例性方法进行说明的流程图。在这种实现方式中,由数据处理模块来执行针对具有ECC错误的数据的ECC处理。在图8A中,控制在步骤320处开始并且前进到步骤322,在步骤322,数据处理模块判断其是否接收到了数据取回请求。如果步骤322为真,那么在步骤324,数据处理模块向所有具有与该数据取回请求相关联的数据的目标处理模块发送广播消息。可替代地,数据处理模块可以使用映射,并且将各条消息独立地发送给每个目标处理模块。
[0062] 在步骤326,数据处理模块判断其是否从目标处理模块接收到了有错误的数据块(以及有错误数据的相应ECC数据)。如果步骤326为真,那么数据处理模块使用ECC数据来恢复该数据。在步骤326和步骤327之后进行步骤328,在步骤328,数据处理模块将纠正后的数据发送给请求设备。如果错误不能够被纠正,那么数据处理模块可以发送错误消息和/或重试取回。控制在步骤329处结束。
[0063] 在图8B中,控制在步骤330处开始并且前进到步骤332。在步骤332,目标处理模块判断其是否从数据处理模块接收到了数据取回请求。在步骤334,目标处理模块将与该取回请求相关的数据取回并发送到数据处理模块。在步骤336,目标处理模块判断是否在子块中检测出了错误。如果步骤336为真,那么目标处理模块将与该子块有关的ECC数据发送到数据处理模块。在步骤336和步骤337之后进行步骤338,在步骤338,控制判断是否发送了与该数据取回请求相关的所有数据。如果还没有,那么控制返回到步骤334。如果步骤338为真,那么控制在步骤339处结束。
[0064] 在图9A和图9B中,示出了对取回数据块的示例性方法进行说明的流程图。在这种实现方式中,由多个目标处理模块中存储数据的相应目标处理模块来执行ECC处理。在图9A中,控制在步骤340处开始。在步骤342,数据处理模块判断其是否接收到了数据取回请求。如果步骤342为真,那么在步骤344,数据处理模块向所有的目标处理模块发送广播消息。可替代地,数据处理模块可以基于映射向目标处理模块发送个体消息。在步骤348,数据处理模块接收数据并将数据转发给请求设备。控制在步骤349处结束。
[0065] 在图9B中,控制在步骤350处开始。在步骤352,目标处理模块判断其是否接收到了数据取回请求。如果步骤352为真,那么在步骤354,目标处理模块将子块中与该取回请求有关的数据发送给数据处理模块。在步骤356,控制判断是否在子块中检测到了错误。如果步骤356为真,那么控制继续到步骤357并且处理ECC以恢复数据然后发送恢复后的数据。如果数据不能够被恢复,那么错误消息可以被发送和/或执行重试。控制从步骤356和步骤357继续到步骤358。在步骤358,控制判断是否发送了所有与该数据取回请求相关联的子块。如果还没有,那么控制返回到步骤354。否则控制在步骤359处结束。
[0066] 在图10中,示出了对取回数据块的示例性方法进行说明的流程图。在这种实现方式中,可以由目标处理模块中所选那个来执行数据恢复。控制在步骤360处开始并且前进到步骤361。在步骤361,数据处理模块判断其是否接收到了数据取回请求。如果步骤361为真,那么在步骤362,数据处理模块将数据取回指定给目标处理模块之一。所选目标处理模块和/或数据处理模块从远程目标处理模块请求数据。
[0067] 在步骤364,远程目标处理模块将与该取回请求相关的数据子块发送给所选目标处理模块。类似地,所选目标处理模块从本地驱动器取回与该取回请求相关的数据。可替代地,远程目标处理模块在没有错误的情况下可以直接将数据发送给数据处理模块。如果有错误,那么远程目标处理模块可以将数据发送给所选目标处理模块用于数据恢复。
[0068] 对于每个远程目标处理模块,在步骤366,远程目标处理模块判断是否在数据子块之一中检测到了错误。如果步骤366为真,那么远程目标处理模块将与该子块相关联的ECC数据发送给所选目标处理模块。没有错误的数据子块可以被发送给目标处理模块或数据处理模块。
[0069] 控制从步骤366和步骤367继续到步骤368。在步骤368,与远程目标处理模块相关联的控制判断是否发送了所有的数据子块。在步骤370,所选目标处理模块将ECC数据用于数据恢复,换言之即用于纠正错误。所选目标处理模块将数据转发给数据处理模块。在步骤372,数据处理模块将恢复后的数据转发给请求设备。
[0070] 本领域中的技术人员现在从前述描述中可以理解能够以各种形式来实现本发明的广义的教导。因此,虽然本发明包括具体的实施例,但是本发明的真实范围不因因此受限,因为在研究了附图、说明书和以下的权利要求后,其他的修改对于技术实践者而言将是显而易见的。