专利名称:用于分级存储管理系统的转换廉价磁盘冗余阵列的制作方法
技术领域:
本发明一般涉及数字数据存储系统,特别涉及对通常被称为“廉价磁盘冗余阵列(RAID)”的独立存储设备冗余阵列的管理。
现代计算机系统的扩充数据存储需要大容量的海量数据存储设备。常用的存储设备是旋转式磁硬盘驱动器,其包括多个组成部分的复杂机械结构容易导致发生故障。一个典型的计算机系统包含多个这样的单元。一个存储单元的故障对系统来说是一个极具破坏性的事件。很多系统直到损坏的单元被修复或替换以及丢失的数据被恢复之后才能运行。
随着计算机系统变得更大、速度更快和更可靠,对存储设备的存储容量、速度和可靠性的需求也相应增加。简单叠加存储单元以增加存储容量将导致任一单元出现故障的概率相应增加。另一方面,只增大现有单元的大小而没有其它任何改进将导致速度的降低并对提高可靠性无益。
最近已考虑到用以提供数据冗余性等级的直接存取存储设备阵列。这种阵列通常被称为“RAID”(独立(或廉价)磁盘的冗余阵列)。在由Patterson、Gibson和Katz于1988年6月在ACM SIGMOD会议上发表的题为“A Case for Redundant Arrays of Inexpensive Disks(RAID)”的文章中,已经对提供不同形式的冗余性的各种类型的RAID进行了描述。Patterson等人分出了五种类型的RAID,其等级被分别指定为1到5。Patterson命名法已成为一种工业标准。
RAID的最初原理是用多个相对价廉的、小的磁盘驱动器来提供一个价格昂贵的大的磁盘驱动器的容量。而且较小的驱动器速度较快,因为它们能够同时读或写(“存取”)数据。另外,由于小驱动器的成本很低,所以可以还包括附加的(冗余)磁盘驱动器,从而结合特定的存储管理技术,当存储在一个小驱动器上的数据出现故障时,该磁盘驱动器允许系统恢复该数据。这样,RAID就能够允许增加后的容量、性能和可靠性。随着RAID在市场上得到认可,其使用并不仅限于小容量的驱动器,现在的RAID系统被配置以各种容量的驱动器。而且,RAID系统可由其它类型的存储设备构成,如光盘驱动器、磁带驱动器、软盘驱动器等。如这里所用,术语“RAID”和“RAID系统”不限于任何特定类型的存储设备。
利用Patterson命名法,RAID等级1为一种镜像配置。按照RAID-1存储器结构,每个数据单元被存储在位于一个阵列中的两个独立存储设备上。因此,如果一个设备发生故障,能够从第二设备上恢复数据。
图1示出了按照RAID-1存储器结构存储的数据。如图1所示,存在设备1上的信息(A,B,C,D)镜像于设备2中(A′,B′,C′,D′)。同样地,存在设备3上的信息(E,F,G,H)镜像于设备4中(E′,F′,G′,H′),而存在设备5上的信息(I,J,K,L)镜像于设备6中(I′,J′,K′,L′)。
根据Patterson的命名法,RAID等级3及更高等级(RAID-3,RAID-4,RAID-5)将奇偶性记录用于数据冗余性。通过将存储在该阵列中不同存储单元的一个特定位置上的所有数据记录进行异或运算而得到奇偶性记录。换言之,在一个由N个存储单元构成的阵列中,位于一个存储单元上的一个特定位置的数据块中的每一位与其它(N-1)个存储单元中该位置上的每一位进行异或以生成一个由奇偶校验位构成的数据块;然后将该奇偶性数据块存储在剩余的(第N个)存储单元的该位置上。如果阵列中的任何存储单元发生故障,能够通过对位于剩余设备的同一位置上的数据块及其相应的奇偶性数据块进行异或而重新生成位于故障单元上任何位置处的数据。
在RAID-3中,不同磁盘驱动器上的所有读/写致动器一致动作以访问位于每个驱动器的同一位置上的数据。RAID-4和RAID-5的特征还在于独立地操作磁盘驱动器单元中的读/写致动器。换言之,一个磁盘驱动器单元上的每个读/写头可以自由存取磁盘任何位置上的数据,而与阵列中其它单元正在访问数据的位置无关。
按照RAID-4,信息被存储在“数据块”中,而每个数据块被存储在不同的存储设备中。在此文中,术语“数据块”是指一个由一个或多个扇区的数据构成的数据相关单元,可从一个存储设备单独访问该数据。包括这样一个RAID-4存储器结构的信息被称为一个“数据条”。每个数据条包括存在阵列中的几个设备202a-202f中的部分信息。在此文中,术语“数据条”是指一组数据块,其中每个数据块最好被存在与另一个存储设备中的另一个数据块地址相关的地址上,也可以包括一组数据块,其中每个(或一些)数据块被存在与被存在其它设备中的其它数据块的地址不相关的地址上。图2示出了按照RAID-4存储的4个数据条204a,204b,204c和204d。如图2所示,一个数据条204a包括一个存在设备1中的数据块201,一个存在设备2中的数据块203,一个存在设备3中的数据块205,一个存在设备4中的数据块207和一个存在设备5中的数据块209。另外,设备202f被用于存储奇偶性数据块211中的“奇偶性”信息。其它的每个设备用于存储用户信息。如果任何一个存储设备发生故障,则通过对存在其它每个设备中的数据条的保留信息进行逻辑异或来恢复存在故障设备中的信息。
在具有独立读/写能力(即RAID-4或RAID-5)的奇偶性保护磁盘阵列中所遇到的一个问题是在对一个数据块进行写操作的任何时候,与奇偶性数据块的更新相关的系统开销。例如,当改变设备1的数据块201中的信息(即,写入“新数据”以更新“旧数据”)时,通常对旧数据、来自奇偶性数据块211的旧奇偶性信息和新数据进行异或以产生更新后的奇偶性信息。新数据和新的奇偶性信息被写入它们各自的数据块中。这些操作可通过按照不同顺序的命令执行,但它们通常需要在每次更新数据时读两个数据块(旧数据和旧奇偶性信息)和写两个数据块(新数据和新奇偶性信息)。在利用高速缓存和其它技术克服此问题的同时,对一个RAID-4系统中的奇偶性磁盘存在过分使用的倾向。
在此作为参考引用的、被授予Clark等人的美国专利4,761,785描述了一种独立的读/写阵列,其中基本均匀地将奇偶性数据块分配给阵列中的磁盘存储单元。Patterson等人将这种类型的阵列指定为RAID-5。图3示出了一个RAID-5配置。将奇偶性数据块基本均匀地分配给阵列中的磁盘分担了更新奇偶性信息所造成的负担,从而避免了在将所有奇偶性记录保存在一个指定磁盘驱动器单元上时可能出现的潜在运行瓶颈,即使在RAID-5系统以及RAID-4系统中一般都使用相同的读-修改-写操作来写数据。RAID-5是Patterson所描述的最高等级的RAID。
每种不同的存储器结构格式都具有其自身的特性,这种特性使得该格式比其它任何格式都更适于存储特定的数据。同时,不存在一种公认为高级的格式。例如,从存储每个字节所花费的成本上看,RAID-1是最昂贵的,奇偶性保护格式的RAID较少,而非冗余存储则更少。非冗余存储与RAID-1通常比奇偶性保护格式速度更快,因为在奇偶性保护格式中更新数据的难度较大。奇偶性保护和镜像格式都是冗余的,但镜像格式更为坚固,因为即使两个存储设备都发生故障,只要发生故障的两个设备中存储了不同的信息,就可以恢复存储在这两个设备上的所有信息。例如,参照图1,如果设备1和设备3都发生故障,存储在这两个设备中的信息仍保留在设备2和4中。因此,能够恢复故障存储设备中的数据。但是,对于奇偶性保护配置来说,发生故障的两个设备中的所有数据都被丢失,因为奇偶性保护配置需要来自N-1个设备的可用信息以重构存储在一个故障设备中的信息,而N是RAID-4数据条中的设备总数。
由于在决定是否以一种特定的配置来组织信息时必须在速度、坚固性和所需空间之间进行权衡,所以能够将阵列的至少一部分指定为非冗余格式,一部分为镜像格式而另一部分为奇偶性保护格式将是非常有利的。动态地将一个阵列的一部分指定为一种格式或另一种格式(即来回将阵列的部分从一种格式转换成另一种格式)则是更加有利的。通过如下方式可以实现这种转换首先将来自被重新格式化的阵列部分的所有数据复制到一个缓冲器(可位于阵列的内部或外部),然后重新格式化阵列的该部分并以新的格式反向复制数据。但是,将数据复制到一个缓冲器需要相当大的系统开销。
因此本发明的一个目的是提供一种用于在计算机系统中存储数据的增强方法及装置。
本发明的另一个目的是为计算机系统提供一种更灵活的存储子系统。
本发明的另一个目的是提供一种用于在计算机系统中管理存储设备的一个冗余阵列的增强方法及装置。
本发明的另一个目的是增强计算机系统的一个存储子系统被重构的能力以满足计算机系统用户的需求。
本发明的另一个目的是提供一种能够有效进行从RAID-1到RAID-4或RAID-5及反向转换的系统和方法。
一种灵活的数据存储装置包括一个能被格式化以支持用户需求的存储设备阵列。依据本发明的最佳实施例,阵列中的每个存储设备存储多个数据块,并且阵列的存储空间被分成多个被称为数据条的数据块组。一个阵列控制器支持独立依据不同存储器结构对数据条的格式化。具体地,最佳实施例中所支持的存储器结构为非冗余、镜像和奇偶性保护(RAID-4或-5)的。在使信息移动最小化的同时,镜像(RAID-1)信息的一个或多个数据条最好可被转换成RAID-4或RAID-5信息的等量个数据条,反之亦然。
依据最佳实施例,每个存储数据块存在于五种状态之一(1)“空”;(2)“数据”;(3)“奇偶性”;(4)“备份”;或(5)“自由”。阵列中存储数据块的每个数据条存在于七种状态之一,这七种状态取决于数据块的状态。其中三种数据条状态为非冗余,两种为奇偶性保护,两种利用镜像结构。只有特别定义的状态跃迁是可行的。当在不危及用户信息的情况下,RAID控制器可改变一个存储设备的一个数据块中的信息(即所存储的信息既不是用户信息,也不是奇偶性信息,并且不用于生成奇偶性信息)时,该数据块最好被指定为一个“空”数据块。当一个数据块被保留用于存储用户信息时,该数据块最好被指定为一个“数据”块。当一个存储设备的一个数据块中所存储的信息是包含在同一数据条中的每个“数据”数据块的逻辑异或(“XOR”)结果时,该数据块最好被指定为一个“奇偶性”数据块。当一个存储设备的一个数据块中所存储的信息是同一数据条的另一个设备中的“数据”数据块所存储的信息的备份时,该数据块最好被指定为一个“备份”数据块。如果一个存储设备的一个数据块中当前没有存储用户信息,则该数据块最好被指定为一个“自由”数据块,但是必须按照RAID-4(5)读-修改-写的顺序变更存储在其中的信息,因为该信息被用于确定该数据条中一个相关“奇偶性”数据块的值。
按照RAID-1,存储每个数据块的两个备份;第一备份存储于第一存储设备,而第二备份存储于第二存储设备。一个数据块的第一备份最好被指定为一个“数据”数据块,而该数据块的第二备份最好被指定为一个“备份”数据块。依据最佳实施例,在“数据”数据块中的信息和“备份”数据块中的信息被存储在不同的存储设备上的同时,相关的“数据”和“备份”数据块被指定于同一数据条中。因此,RAID-1信息的一个数据条最好包括等量的“数据”和“备份”数据块,并且阵列中的存储设备个数最好为一个偶数。即,每个数据条可由来自阵列中每个设备的一个数据块组成。如果阵列中存储设备的个数为奇数,那么由于每个“数据”数据块需要一个相应的“备份”数据块,所以或者一个数据条包括来自少于存储设备个数的存储设备的数据,或者在每个数据条中有一个奇数据块。
依据最佳实施例,通过将RAID-1数据条中的任一个数据块指定为“奇偶性”数据块并改变特定的状态信息,一个处于完全镜像状态中的数据条被转换成奇偶性保护状态(RAID-4或-5)。在这种情况下不需要移动数据。
在从非冗余或奇偶性保护状态转换到完全镜像状态时,状态表定义了转换规则,借以允许进行转换。必须有足够的未使用空间(“空”或“自由”状态)来生成一个与该数据条中每个“数据”数据块相关的“备份”数据块。由于RAID-1信息的“数据”数据块及其相关的“备份”数据块最好存在于同一数据条中,如果存在将被转换的数据条(“转换”数据条)中的信息需要占用多于一半的数据条容量,则必须将至少一部分信息移到另一个数据条中以便为与剩余的“数据”数据块相关的“备份”数据块让出空间。如果信息所移至的数据条(“接收”数据条)是按照RAID-1配置的,则每个接收数据条必须具有足够的空间来存储“数据”数据块及其相关的“备份”数据块。可替换地,一些数据可被移到一个奇偶性受保护或未受保护的接收数据条中,在这种情况下,在接收数据条中只需有足够的空间来存储数据。对“数据”数据块进行备份并更新数据条状态。
参照附图能够更好地理解本发明的结构和操作,在附图中,相同的附图标记代表相同的部件,其中图1示出了按照现有的RAID-1结构存储的数据;图2示出了按照现有的RAID-4结构存储的数据;图3示出了按照现有的RAID-5结构存储的数据;图4示出了依据本发明最佳实施例的RAID系统;图5A,5B和5C描述了依据最佳实施例用以与数据块的状态和使用相映射的数据结构;图6是依据最佳实施例用以执行向与一个RAID控制器相连接的存储设备写数据的流程图;图7是示出了依据最佳实施例的数据块的数据条中可能的状态变化的状态图;图8是依据本发明的一个实施例,用以执行将当前被格式化为镜像结构(RAID-1)的阵列部分转换成奇偶性保护结构(RAID-4或-5)的流程图;图9示出了依据最佳实施例的一个阵列900,其中一个数据条901被格式化为RAID-1结构;图10示出了依据最佳实施例在将图9中RAID-1结构的数据条转换成奇偶性保护数据条之后的图9所示的阵列;图11是示出了依据最佳实施例将一个奇偶性保护数据条(RAID-4或-5)转换成镜像结构(RAID-1)的方法流程图;图12是示出了依据最佳实施例将一个非冗余数据条转换成奇偶性保护数据条(RAID-4或-5)的方法流程图;以及图13示出了依据本发明的另一个实施例的具有奇数个存储设备的阵列。
首先参照图4,示出了一个依据本发明最佳实施例的可重新配置的RAID存储系统。在现有的RAID配置中,最佳实施例中的RAID系统400包括多个存储设备401a-401f。在最佳实施例中,存储设备401a-401f为直接存取存储设备(DASD),具体为旋转式磁硬盘驱动存储设备,应当理解也可以使用其它类型的存储设备取而代之。应当理解,虽然为方便起见在图4中示出了6个DASD,但依据本发明的阵列可由三个或三个以上设备构成。一个RAID控制器403与DASD401a-401f相耦合。依据本发明的一个实施例,RAID控制器403包括随机存取存储器410和可编程微处理器412。存储器410的一部分或全部是非易失性的,以便进一步减少数据丢失的可能性。处理器412执行一个控制程序412,该程序控制阵列的操作,具体地说就是按照这里所述的方法控制存储设备组从一种格式向另一种格式的转换。如图所示,控制程序413驻留在存储器410中,但它也可以驻留在一个单独的控制存储存储器中,如一个只读存储器(ROM)芯片。可从一个任意的独立外设,如磁盘、磁带、光盘等中将控制程序装入存储器410中,或从主机系统404下载控制程序。控制器403最好从主机系统404接收命令和信息。主机系统404可以是任何能够与现有的RAID系统相耦合的设备,包括被编程的通用数字计算机在内。命令指示控制器403将所接收的与该命令有关的信息存储到DASD阵列中。另外,这些命令还指出是按照非冗余格式还是按照RAID-1、-4或-5格式存储该信息。可替换地,控制器403在没有主处理器引导的情况下确定是非冗余地还是按照RAID-1、-4或-5格式存储所接收的信息。
控制器403可通过一条总线与DASD阵列耦合。但是,在最佳实施例中,提供了允许同时向一个以上DASD传送数据的连接。依据本发明的一个实施例,任意的外部存储器405,如一个磁带阵列也可以与控制器403耦合。磁带阵列允许控制器将不经常使用的信息移出DASD阵列以便释放DASD阵列中的空间。可选择地,外部存储器405可以是一个被用作用于写数据的临时高速缓存的DASD,如由DavidA.Styczinski于92年5月6日申请的题目为“用于操作存储设备阵列的方法和装置”、申请号为No.07/879,621的未决申请所述。
在本发明的最佳实施例中,或者使用RAID-4格式,或者使用RAID-5格式,但是不能同时使用两种格式。但是,在另一个实施例中,控制器403可以按照RAID-1、-4或-5格式中的任一种来存储信息。所属技术领域的技术人员应当理解控制器403必须知道向每个配置分配阵列的哪一部分。例如,如果分配阵列的一部分用于按照RAID-1存储信息而分配阵列的一部分用于按照RAID-5存储信息,则控制器403必须知道哪部分被分配给哪种格式。
存储器410中的数据目录411记录如何使用阵列的不同部分。数据目录411存储阵列中数据块的当前状态,即每个数据块是一个“数据”、“备份”、“奇偶性”还是“自由”数据块,以及用于每个数据条的数据冗余形式(镜像、奇偶性保护或非冗余)。数据目录411可以存储附加信息以及用于确定阵列各部分用途的信息。为了能够在掉电或部件故障的情况下进行恢复,最好在别处(例如,在一个DASD的指定位置上或在独立的外设406上)有一个数据目录411的冗余备份(图中未示出),和/或将数据目录411存在RAM410的一个非易失部分中。
图5A,5B和5C示出了依据最佳实施例而用于上述目的的数据目录411中的三种数据结构。图5A示出了一个数据条状态表,图5B示出了一个数据块状态表,而图5C示出了一个主机地址映象表。数据条状态表501包含多个项,每一项包含一个数据条地址字段502和一个数据条状态字段503。数据条地址字段502存储数据条的数据块在存储设备上的起始地址。在最佳实施例中,所有数据块的大小相同并且一个数据条的所有数据块在每个存储设备中分别具有相同的地址;因此一个起始地址标识足以标识整个数据条。数据条状态字段503包含该数据条的当前状态;下面将参照图6详细描述可能出现的状态。
数据块状态表521包含多个项,每一项对应于一个数据块。数据块状态表521中的每一项包含数据条标识字段523,设备ID字段524,状态字段525,版本号字段526和配对设备字段527。数据条ID字段523标识包含有数据块的数据条,并且可以是一个例如指向数据条状态表501中相应项的指针。设备ID字段524包含一个包含该数据块的DASD标识符。由于对任一个DASD来说,每个数据条包含不多于一个的数据块,所以关于数据条和DASD的说明足以对任何数据块进行规定。状态字段525记录数据块的使用状态(“数据”,“备份”,“奇偶性”,“自由”或“空”)。版本号字段526记录一个版本号。版本号随每次数据更新而加1,并用于确定冗余数据块是否同步。配对设备字段527标识用于存储设备的一个镜像数据块的配对数据块或用于奇偶性保护数据块的奇偶性数据块。配对设备字段可以是例如一个指向与配对/奇偶性数据块相对应的数据块状态映象表项的指针,或是一个设备标识符。
主机地址映象表541将主机地址与数据块相映射。依据最佳实施例,一个主计算机系统将存储子系统视为一个大范围的地址。来自主机的用于对一个特定地址进行读或写的命令必须被翻译成涉及一个存储设备ID和该存储设备中的地址,通过主机地址映象表541实现该命令。映象表541包含多项,每一项对应于一个由主机系统编址的数据块。每一项包含一个主机系统地址字段542和一个数据块标识字段543,数据块标识字段包含一个指向用以标识该数据块的数据块表521中的一项的指针。
应当理解上述数据结构只是为了以一个实施例为例进行说明,也可以使用各种不同的数据结构。例如,对于一个跟踪数据块的物理位置的主计算机系统来说,在RAID控制器403中可以不必包括一个主机地址映象表。数据结构可以由一个大表构成,如链接表或其它形式。另外,根据实施的恰当方式,一些字段可能是不必要的,也可能需要一些其它字段。应当理解上述数据结构不是RAID控制器403所使用的唯一数据结构。例如,控制器403最好具备一个在存储设备上分配可用的自由空间列表;这不仅包括具有“自由”或“空”状态的数据块,还包括“数据”数据块的未分配部分。
在正常操作中,控制器403响应从主计算机系统404接收的数据访问命令(读或写数据)。来自主机404的一个数据访问命令包含被读的一个数据块(或其一部分,如一个扇区)的地址。来自主机的地址被用于访问主机地址映象表541中的一项。数据块标识字段543指向数据块表521中与该数据块相对应的项。控制器访问该项以便从字段524中得到一个存储设备标识符并从字段523中得到一个数据条标识符。这些标识符标识了被读的数据块。然后控制器403在传送存储设备中所需数据的地址的同时,向对应的存储设备发送一个读命令。
写操作更为复杂,因为(a)控制器403必须确定数据块当前的使用状态,以及(b)一次写操作可导致数据条状态的改变。图6是在执行一次写操作时RAID控制器403所执行的流程图。响应于来自主机404的写命令,控制器403参考表501、521和541以便确定如上所述用于读操作的存储设备ID和所需数据块的地址(步骤601)。另外,控制器还从表501的数据条状态字段503中确定数据条的当前状态(步骤602)。
下面将参照图7详细描述可能出现的状态及状态跃迁。根据数据条的当前状态,分成三种可能情况。如果当前状态是未受保护状态中的任一种(标号5,6,7),控制器403在传送数据在应写入存储设备中的地址的同时,只向对应的存储设备发送一个写命令(步骤605)。
如果当前状态是镜像状态的一种(标号1和2),控制器403首先向包含该镜像数据的对应存储设备发送一个写命令(步骤610)。然后控制器403使包含该镜像数据的数据块的版本号字段526加1(步骤611)。然后控制器403从配对设备字段527中找到包含该镜像数据备份的设备的设备ID,并向包含该备份的存储设备发送一个写命令(步骤612)。在完成的同时,使包含该备份的数据块的版本号字段526加1以便与包含原始数据的数据块的版本号相等(步骤613)。
如果当前状态是奇偶性保护状态的一种(标号3和4),控制器403首先从包含该数据的存储设备中读出该数据(步骤620),将该数据与将被写入的新数据进行异或以便生成一个临时变更掩码(步骤621),将新数据写入存储设备并使版本号字段加1(步骤622)。然后控制器403从配对设备字段527中得到包含奇偶位的设备标识符,从奇偶性设备中读出旧的奇偶性数据块(步骤625),将这个旧的奇偶性数据与变更掩码进行异或以便生成新的奇偶性数据(步骤626),将新的数据写入奇偶性数据块(步骤627),并使该奇偶性数据块的版本号加1。
然后控制器403确定一个数据块的状态是否发生了任何变化。即,如果数据已被写入一个状态为“自由”或“空”的数据块中,则数据块的状态必须改变成“数据”(步骤630)。如果数据块的状态发生了变化,则数据条的状态也可能发生变化。因此控制器确定数据条的状态是否发生了变化,并更新状态字段503以便反映出这种变化(步骤631)。以后将参照图7对可能的变化和引发这些变化的事件进行描述。
应当理解为了便于理解起见,对图6中所示的关于上述读和写操作的描述进行了简化,并且对理解本发明起非关键性作用的其它操作可随读或写操作执行。特别是,控制器403可具备一个用于提高性能的驻留超高速缓冲存储器并且在这种情况下,在从和/或向一个存储设备读写之前,通常要检查该超高速缓存的内容。可替换地,控制器403可采用一个外部记录设备来对写操作进行临时缓存。
除了能够以RAID-1、-4或-5格式存储所接收的信息以外,最佳实施例的控制器403还能够重新分配阵列,使得其中已按照一种RAID格式存有信息的阵列部分被重新分配成另一种RAID格式。例如,被分配按照RAID-1存储信息的阵列部分可被重新分配成按照RAID-5存储信息。然后按照RAID-5对存储在该阵列部分中的信息进行重新格式化。
为了支持阵列部分从一种RAID格式向另一种格式的转换,每个数据条与一种状态(存储在表501中)相关,并且根据预定的事件而允许发生预定的状态变化。导致状态改变的事件一般为特定的数据写操作、对自由空间的特定请求(即删除一个现存数据块中的数据)和对改变数据条的RAID格式的请求。图7是示出了可用状态和可能状态变化的状态图。
七种状态被定义如下1.“新镜像”此状态隐含写入该数据条的数据还具有一个写入该数据条中的镜像备份。但是这个数据条中的至少一个数据块为“空”。
2.“完全镜像”此状态隐含该数据条中的所有数据都是镜像的并且此数据条中不存在“空”数据块。
3.“奇偶性X”此状态隐含该数据是受奇偶性保护的(例如,RAID-4或RAID-5),但具有足够的“自由”和“奇偶性”数据块来支持所有“数据”空间的备份。
4.“完全奇偶性”此状态隐含该数据是受奇偶性保护的,但不具有足够的“自由”和“奇偶性”数据块来支持所有“数据”数据块的备份。
5.“未被保护”X此状态隐含该数据是未被保护的,但是具有足够的“空”数据块用于所有“数据”数据块的备份。
6.“未被保护”此状态隐含该数据是未被保护的,且不具有足够的“空”数据块用于所有“数据”数据块的备份,但具有一个用作奇偶性数据块的“空”数据块。
7.“完全未被保护”此状态隐含该数据是未被保护的,并且不存在“空”数据块。
图7中示出了下述可能的状态跃迁1a此跃迁发生在数据被写入但在数据条中仍存在至少一个“空”数据块时。
1b此跃迁发生在作为一次写操作的结果,此数据条中不再存在一个“空”数据块(即,数据被写入最后一个现在已变为“数据”数据块的“空”数据块中)时。作为将参照图8详细说明的二级跃迁(从状态1到状态2,再到状态3)的一部分,这种变化还可发生在用于将数据条格式变为奇偶性保护的命令中;在这种情况下,“空”数据块与备份配对并且它们的状态都变为“自由”。
1c此跃迁只发生在用于改变数据条格式的命令中,以便为存储数据生成更多空间。在这种跃迁中,数据条中状态为“备份”的所有数据块都变为“空”状态。
2a此跃迁发生在数据被写入一对“自由”数据块中(导致状态变为“数据”和“备份”)时。还可发生在用于释放一个数据块内的空间的命令中。在后一种情况下,该数据块的备份都被指定为“自由”(表示可用)并且其镜像不受干扰。
2b此跃迁只发生在用于改变数据条格式的命令中。以后将参照图8详细描述关于此状态变化的过程。
2c此跃迁只发生在用于改变数据条格式的命令中。在此跃迁中,所有的“备份”数据块变为“空”状态。
3a此跃迁发生在数据被写入一个“自由”数据块中,从而使状态变为“数据”(下面3b中所述的情况除外)时。还可发生在用于释放一个数据块内的空间的命令中,从而使该数据块的状态变为“自由”。
3b此跃迁发生在数据被写入一个“自由”数据块中,从而使状态变为“数据”(下面3b中所述的情况除外)时,并且其结果是不再剩有足够的“自由”和“奇偶性”数据块用以备份该数据条中的所有“数据”数据块。
3c此跃迁只发生在用于改变数据条格式的命令中。以后将参照图11详细描述关于此状态变化的过程。
3d此跃迁只发生在用于改变数据条格式的命令中。以后将参照图11详细描述关于此状态变化的过程。
3e此跃迁只发生在用于改变数据条格式的命令中。所有的“奇偶性”和“自由”数据块都被变为“空”,使它们可用于存储其它数据。
4a此跃迁发生在数据被写入一个“自由”数据块中时或一个用于释放一个“数据”数据块内的自由空间的命令使该数据块变为“自由”,但在该数据条中不再具有足够的“自由”和“奇偶性”数据块用以支持所有“数据”数据块的备份(启动向镜像状态的跃迁)时。
4b此跃迁发生在一个“数据”数据块被变为“自由”并且其结果是现在具有足够的“自由”和“奇偶性”数据块来支持所有“数据”数据块的备份之后。
4c此跃迁只发生在用于改变数据条格式的命令中。所有的“奇偶性”和“自由”数据块都被变为“空”。
5a此跃迁发生在数据被写入一个“空”数据块,从而使其状态变为“数据”时,或发生在用于释放一个“数据”数据块内空间的命令使该数据块从“数据”变为“空”时,在任一种改变之后,都有足够的“空”数据块来支持所有“数据”数据块的备份(启动向镜像状态的跃迁)。
5b如后所述,此跃迁只发生在用于改变数据条格式的命令中。
5c如后所述,此跃迁只发生在用于改变数据条格式的命令中。
5d此跃迁发生在数据被写入一个“空”数据块中,从而使“空”数据块的状态变为“数据”时,并且其结果是不再具有足够的“空”数据块来支持所有“数据”数据块的备份。
5e如后所述,此跃迁只发生在用于改变数据条格式的命令中。
6a此跃迁发生在数据被写入一个“空”数据块,从而使其状态变为“数据”时,或发生在一个用于释放一个“数据”数据块内空间的命令使该数据块从“数据”变为“空”时,在任一种改变之后,只有一个“空”数据块用于奇偶性校验而没有足够的“空”数据块来支持所有“数据”数据块的备份。
6b此跃迁发生在一个用于释放一个“数据”数据块内空间的命令使该数据块从“数据”变为“空”并且其结果是现在具有足够的“自由”和“奇偶性”数据块来支持所有“数据”数据块的备份时。
6c如后所述,此跃迁只发生在用于改变数据条格式的命令中。
6d此跃迁发生在数据被写入最后一个“空”数据块,从而使其状态变为“数据”时,使得不再具有“空”数据块。
7a此跃迁发生在一个用于释放一个“数据”数据块内空间的命令使该数据块从“数据”变为“空”时。
如上所述,某些跃迁“依命令”而发生以便改变数据条格式。控制器403最好根据来自主机404的命令来配置数据条。主机不记录单个数据条的配置而只知道镜像配置中的特定存储量、奇偶性保护配置中的特定存储量以及未受保护(即非冗余)配置中的特定存储量。控制器403通过为每种配置分配适量的数据条来响应来自主机404的初始配置命令。然后,无论主机404何时写入新数据,它规定该数据是将被镜像、奇偶性保护还是不受保护。控制器403根据此规定选择一个适当的数据条和数据块。由于主机404发现它需要一种具有更多空间的不同配置,主机404可改变配置,例如以释放出更多空间。在这种情况下,主机404将向控制器403发送一个配置命令,请求重新配置一定的存储量(数据条的数量)。控制器根据数据条的当前状态选择一个适当的数据条进行重新配置。控制器403最好选择其中至少已具有一定量数据的数据条。例如,如果从主机404接收到一个命令,用于将一个数据条从未受保护状态转换成奇偶性保护状态与跃迁6(c)相比,更优选跃迁5(c);在处于同一状态中的多个数据条之间,优选具有最多“空”数据块的数据条;以及在具有等量“空”数据块的数据条之间,优选在部分“数据”数据块中具有最多未用空间的数据条(假设部分数据块可被分配)。
应当理解可替换地,主机404将数据块与设备和地址进行映射并(通过或不通过用户输入)确定以哪种方式配置哪些数据条。在这种情况下,控制器403仅仅响应用于改变一个数据条的配置的主机命令。可替换地,按照某种预定算法或条件,控制器403可自身决定改变配置。作为另一替换例,用户可直接向控制器403输入配置变化。关于“依命令”而发生用以改变配置的特定跃迁的描述不仅不构成对那些由主机初始化的配置变化的限制,而且还可包括由控制器本身、用户或通过其它方法产生的“命令”。
图8是依据最佳实施例,用以将当前格式化为RAID-1结构的阵列部分转换成RAID-4(5)结构时所执行的流程图。换言之,一个数据条的状态从状态2变为状态3(或处于从状态1到状态2再到状态3的二级跃迁)。在这个实施例中,阵列由偶数个存储设备构成,且一个数据条由每个存储设备的一个数据块构成,一个数据条的每个数据块位于每个相应存储设备的相同地址范围内。图9示出了用于实现图8所示方法的阵列900。应当注意按照RAID-1格式化的信息通常不存储在一个数据条中。即,按照RAID-1组织的信息只需要将该信息的备份驻留在阵列中的另一个存储设备中。反之,依据本发明,指定RAID-1存储结构中的数据块以形成一个“数据条”,该数据条具有与所转换成的RAID-4或RAID-5数据条相同的维数。应当注意最好将一个数据条中的数据块存储在不同DASD内的相关地址上,例如存储在与存储于其中的第一数据块相关的每个DASD内的相同地址上。但是,在本发明的另一个实施例中,一个数据条内的每个数据块可被存储在与其它数据块地址无关的地址上。为简洁起见,在一个数据条是一个RAID-4数据条或RAID-5数据条的情况下,将该数据条记为“RAID-4(5)”。图10示出了在图9中所示的RAID-1数据条901被转换成RAID-4(5)数据条1001之后的阵列900。本发明利用下述观测值。一个与其本身进行异或的数据块将产生一个全为零的数据块。即(A)XOR(A)=0(EQ1)由于图9和10所示实施例中的一个RAID-1数据条由三对数据块构成,每对数据块包括一个数据块和该数据块的一个备份,在任意五个数据块之间进行异或操作的结果是产生一个与第六数据块相等的数据块。即(A)XOR(A′)XOR(B)XOR(B′)XOR(C)=(C′) (EQ2)其中A′是A的一个精确备份,B′是B的一个精确备份,而C′是C的一个精确备份。
假设五个数据块中的两个是五个数据块中的另两个的备份,则上述关系式将保持真值而与哪五个数据块被异或无关。因此,如图10所示,只需将一个RAID-1数据条中的一个数据块913从“备份”改为“奇偶性”并将其它“备份”数据块905和909中的每一个改为“自由”,该RAID-1数据条就能够转换成一个RAID-4(5)数据条。可以看出对被指定为“奇偶性”数据块的特定数据块的选择将确定该数据条被构造成一个RAID-4还是一个RAID-5数据条。显然,从其本身来说,在一个RAID-4或RAID-5数据条之间是没有区别的,因为它是“奇偶性”数据块在每个用以区分RAID-4与RAID-5系统的数据条中的相对位置。
如图8所示,转换过程的第一步是标识一组将被转换的数据块(步骤801)。在最佳实施例中,每个数据条能够被个别和独立地从RAID-1配置转换成RAID-4(5)配置,反之亦然。由于每个数据条最好由位于每个DASD上的一个特定地址范围内的所有数据块构成,所以仅通过指定该地址范围或指定其中一个数据块即可选择一个数据条。但是,标识一个要转换的数据条的步骤也可涉及其它事情。例如,如果一个数据条由位于彼此无关的混合地址上的数据块构成,则一个数据条的识别就可能涉及选择单独的RAID-1数据块对。可替换地,可将一个存储设备阵列设计成只能选择预定义的数据条组(例如一个包括多个数据块的大地址范围),或将存储设备阵列设计成只在整个阵列上执行转换。用户可手动执行该识别过程或通过依据某些算法的软件来执行该识别过程(例如选择最近使用过的数据条)。转换算法假设已完成了所有的未决写操作,即每个“数据”及其各自的“备份”数据块具有相同的数据。这可通过检查其版本级来进行验证。如果一个写操作还没有完成(版本级不匹配),则在开始处理之前完成该写操作。
依据最佳实施例,有两种镜像状态,分别标识为状态1(“新镜像”)和状态2(“完全镜像”)。只允许进行从状态2向奇偶性保护状态(状态3,“奇偶性X”)的状态跃迁。因此,如果该数据条处于状态1,则必须将其首先转换成状态2(跃迁1b)以便于最终向“奇偶性X”状态跃迁,如步骤802中的分支所示。为了使一个处于“新镜像”状态中的数据条变为“完全镜像”状态,必须对“空”数据块进行镜像,即必须将存在一个“空”数据块中的任何内容镜像到另一个“空”数据块中。如果预先知道所有“空”数据块都为零,则已经满足条件。否则,完成此过程的最简单方式就是通常使“空”数据块置零(可替换地,也可彼此配对和与所作的数据备份配对)(步骤803)。然后“空”数据块的状态就变为“自由”并且该数据条的状态变成“完全镜像”(步骤804)。
利用处于状态2(“完全镜像”)中的数据条,选择一个DASD以便存储与新的RAID-4(5)数据条相关的奇偶性数据块(步骤806)。在图9和10中,示出了选择数据块913,应当理解其它数据块已经被选择。在最佳实施例中,控制器403按照一种用于奇偶性数据块的预定映射算法而自动选择一个奇偶性数据块。即,在最佳实施例中,按照RAID-5构造奇偶性,并通过一个简单的循环公式来确定奇偶设备的个数,例如((N-1)*S MOD N)+1,其中S为数据条个数而N为阵列中存储设备的个数。但是,应当理解还可通过用户、主机来执行对适当奇偶性数据块的选择或隐含于其它判别式中。例如,如果指定了RAID-4,则包含奇偶性的DASD为已知,因此从该数据条的识别中可以知道包含奇偶性的数据块。也可以先选择该奇偶性数据块,并根据该奇偶性数据块的选择而默认适当的数据条。因此可以按照不同的顺序执行步骤801-806,或同时执行特定的步骤。
将所选定的用于存储奇偶性数据的数据块913指定为“奇偶性”数据块(步骤807)。通过指定这是一个奇偶性数据块,应当理解由于已经在系统中进行了一些记录,从而系统能够如此识别和对待该数据块。在最佳实施例中,更新数据块表521的数据块状态字段525中的数据块状态以便反映出所选定的数据块是一个奇偶性数据块,即,表521中的数据块状态变为“奇偶性”。
如果已被指定为“奇偶性”数据块913的数据块以前是一个“数据”数据块(步骤808),则指定与该“数据”数据块相关的“备份”数据块为一个“数据”数据块(步骤809)。然后将剩余的每个“备份”数据块指定为一个“自由”数据块(步骤810)。最后,指定的数据条从“完全镜像”(状态2)变为“奇偶性X”(状态3)(步骤812)。如上所述,最佳实施例中的“指定”意味着改变数据块表521中的数据块状态和数据条状态表501中的数据条状态,应当理解也可以用其它形式表示这种信息。
从等式EQ2可以看出存储在“奇偶性”数据块913中的信息等于数据条1001内的其它每个数据块903-911的异或值,因此不必通过后面的异或操作来计算奇偶性。另外,由于两个数据块905和909被指定为“自由”,所以在从RAID-1转换成RAID-4(5)之后,可以在数据条1001中存储其它信息。
图11是将一个奇偶性保护或非冗余数据条(即“转换数据条”)转换成一个镜像数据条(RAID-1)的方法流程图。为了将一个数据条转换成完全镜像状态,在转换数据条中必须有足够的可用空间以存储每个“数据”数据块的备份。具体地参照图7所示的状态图,从状态3(“奇偶性X”)或状态5(“未被保护”X)向状态2(“完全镜像”)的状态跃迁是可能的。这就是图7所示的跃迁3d和5b。图10示出了一个处于“奇偶性X”状态下的转换数据条1001,该数据条能够被转换成“完全镜像”状态。如果该数据条处于状态4,6或7,则在进行完全镜像之前,该数据条必须首先变成状态3或状态5,如下所述。因此,在将信息存入一个奇偶性保护或未受保护数据条中时,最好在将任何信息存入位于第二DASD内的第二数据块之前,将第一数据块存入第一DASD。以这种方式,信息被合并并且不一定以一种方式进行合并,以便使必需的空间可用。
如图11所示,转换的第一步是识别将被转换的数据块组,即转换数据条(步骤1101)。如前所述,在最佳实施例中,每个数据条能够被个别和独立地从一种配置转换成另一种配置。可以通过上述图8所示的任一种方法来进行识别。
然后系统验证在该数据条中是否存在足够的未用空间来创建每个“数据”数据块的“备份”数据块。具体地,控制器403参照数据条状态表501来确定数据条状态;状态3或状态5下的一个数据条具有足够的未用空间(步骤1102)。如果在转换数据条中没有足够的空间来存储所需的“备份”数据块(即,该数据条处于状态4,6或7),则必须将至少一部分数据从转换数据条重新定位到另一个数据条或另一个存储子系统中,例如重新定位于相关的磁带驱动器405中(参看图4)。图11中的步骤1103-1106示出了这个过程。该系统首先确定是否能够释放一个“数据”数据块中的存储空间(步骤1103)。例如通过询问用户该数据块中的数据是否能被覆盖、压缩或存储于别处,并由用户进行选择来执行该步骤。可替换地,可对控制器403编程以便为数据可重新定位于其上的数据块扫描可用的其它数据条,压缩可被压缩的数据或为重新定位于磁带而选择数据块等,从而自动地重新定位数据块。控制器403可利用最近常用的算法来确定对哪个数据块进行压缩和/或重新定位。如果不能释放其中一个“数据”数据块,则该过程异常中断且不能转换该转换数据条(步骤1106)。如果找到一个合适的候选数据块,则在适当的时候重新定位/压缩/忽略该数据块中的数据,并释放该数据块本身以存储其它数据(步骤1104)。控制器403将状态表521中的数据块状态改为“自由”(如果数据条处于状态4,则变为“完全奇偶性”)或“空”(如果数据条处于状态6或7,则变为“未被保护”或“完全未被保护”),并更新数据条状态(步骤1105)。数据块状态的改变可引发数据条状态变为状态3或状态5。然后重复步骤1102的算法。
如果该数据条已经处于状态3或5,或能被转换成上述任一种状态(步骤1102的“是”分支),则控制器403首先将该数据条中的所有“数据”数据块读入RAM410(步骤1108)。在“数据”数据块被读入RAM410中时,它们排入已部分完成,即已写入“数据”但还没有“备份”的写操作队列中。控制器403通过将“空”、“自由”和“奇偶性”数据块的状态改为“备份”并将适当的项置入配对设备字段527中来更新数据块表521(步骤1109)。只有在数据块被读入RAM且数据块状态被映射之后,数据条状态才变成“完全镜像”(步骤1110)。然后控制器403通过将数据从RAM写到“备份”数据块中来完成排队等候的操作(步骤1112)。以这种方式,在一个DASD发生故障而转换过程仍然继续的情况下,一个从奇偶性保护状态转换到镜像状态的数据条保持了冗余度。
图12是将一个非冗余数据条(即“转换数据条”)转换成一个奇偶性保护数据条(RAID-4或-5)的方法流程图。为了将一个数据条转换成奇偶性保护状态,在转换数据条中必须具有一个可用的未用数据块来存储奇偶性。具体参照图7所示的状态图,从状态5(“未被保护”X)到状态3(“奇偶性X”)或从状态6(“未被保护”)到状态4(“完全奇偶性”)的状态跃迁是可能的。这就是图7所示的状态跃迁5c和6c。如果该数据条处于状态7,则该数据条必须在被奇偶性保护之前变成状态6,如后所述。
步骤1201到1206与上述步骤1101-1106相似。如图12所示,转换的第一步是识别将被转换的数据块组,即转换数据条(步骤1201)。如前所述,每个数据条能够被个别配置并且可以通过上述图8所示的任一种方法来进行识别。
然后系统验证在该数据条中是否存在一个未用数据块以便存储奇偶性信息。具体地,控制器403参照数据条状态表501来确定数据条状态;状态5或状态6下的一个数据条具有足够的未用空间(步骤1202)。如果在转换数据条中没有足够的空间来存储所需的PATIRY数据块(即,该数据条处于状态7),则必须如上述图1所述释放一个数据块。系统确定是否能够释放一个“数据”数据块中的存储空间(步骤1203);如果不能,则处理过程异常中断(步骤1206)。如果找到一个合适的候选数据块,则在适当的时候重新定位/压缩/忽略该数据块中的数据,并释放该数据块本身以存储其它数据(步骤1204)。控制器403将状态表521中的数据块状态改为“空”,并更新数据条状态(步骤1205)。“空”数据块的创建使数据条状态从状态7变成状态6。然后重复步骤1202的算法。
如果该数据条已经处于状态5或6,或能够如上所述被转换成状态6(步骤1202的“是”分支),则控制器403首先选择一个用于存储奇偶性信息的数据块(步骤1208)。可通过上述图8所述的任一种方法执行此步骤。但是,如果选择了一个“数据”数据块,则该数据块中的数据将不得不被重新定位到一个“空”数据块中。因此,最好选择一个可用的“空”数据块。如果存在多于一个的“空”数据块,则通过适当的算法来选择这样一个“空”数据块。然后控制器连续读取数据条中除了被选择用以存储奇偶性信息的数据块以外的所有数据块,并产生所读取数据块的一个累积异或值(步骤1209)。这个累积异或值被暂时存储在RAM410中。当所有数据块已被读出时,所产生的累积异或值即为奇偶性信息。然后将这个奇偶性信息写入所选定的“奇偶性”数据块中(步骤1210)。然后控制器403通过将奇偶性数据块的状态改为“奇偶性”、将任意“空”数据块的状态改为“自由”,并在适当的时候更新配对设备字段527来更新数据块状态表521(步骤1211)。然后控制器在适当的时候将表501中的数据条状态改为“奇偶性X”或“完全奇偶性”(步骤1212)。并设置版本号以反映出奇偶性信息当前有效。
在最佳实施例中,阵列中的存储设备个数为偶数,并且每个数据条由位于每个存储设备的特定地址范围上的所有数据块构成。这种排列简化了数据条与确定奇偶性数据块之间的映射关系。但是,也可以利用一个具有奇数个存储设备的阵列。在这种情况下,一个数据条最好由少于存储设备个数的偶数个数据块构成。例如,一个数据条中的数据块个数为N-1,其中N是存储设备的个数。图13示出了这样一种配置。在图13的阵列中,标记为“数据1A”、“备份1A”、“数据1B”和“备份1B”的数据块构成了一个数据条,而例如标记为“数据3A”、“备份3A”、“数据3B”和“备份3B”的数据块(1301-1304)构成了第二数据条。应当注意每个数据条包含偶数个数据块,但这些数据块并非都位于相同的地址上。利用上述技术可将这样一个数据条转换成RAID-4(5)格式或反向转换。对数据目录表的某些改动是必要的,以便处理更复杂的数据条映射。
可替换地,如果一个数据块已知为“空”且包含的数据全部为零(如果一个“空”数据块的内容未知或非零,则将零写入该数据块中以满足条件),则可以利用改进的上述技术将一个包含了奇数个数据块的数据条从RAID-1转换成RAID-4(5)。这种情况可能出现在例如将一个新的DASD加入到现有的阵列中时。在这种情况下,通过(a)选择一个奇偶性数据块(可以是空数据块)并将其指定为“奇偶性”数据块,(b)如果选定的数据块是一个“备份”数据块,则指定其它每个“备份”数据块和“空”数据块为“自由”;(c)如果选定的数据块是一个“数据”数据块,则指定相关的“备份”数据块为一个“数据”数据块,并指定所有其它“备份”数据块和“空”数据块为“自由”;以及(d)如果选定的数据块是“空”数据块,则指定每个“备份”数据块为“自由”,可以将一个选定的数据条转换成RAID-4(5),其中该数据条包含按照RAID-1配置的一对或多对数据块以及一个空数据块。相似地,可以利用剩余的一个未配对数据块(作为一个“自由”数据块或作为一个为防止存储设备故障而未受保护的“数据”数据块)进行向RAID-1的反向转换。
依据本发明的最佳实施例,通过一个RAID控制器来执行“自由”、“备份”、“数据”或“空”数据块的指定。RAID控制器可以是一个可编程设备,例如一个用于PC服务器的IBM SSA RAID适配器,一个PC ServeRAID SCSI适配器,或一个AS/400高级系统模型300中的磁盘单元控制器,其中每种设备都是由国际商业机器公司生产制造的。可替换地,该控制器可以是一个状态机、专用硬件或一个ASIC(专用集成电路)。可替换地,可通过运行于实际上系统的通用中央处理器上的软件来执行由一个存储子系统的专用RAID控制器所执行的功能,所述中央处理器除了RAID控制器功能之外还可执行其它各种任务。
依据最佳实施例,特别指定每个数据块以便确定新数据是否能被写入该数据块中,并且如果能,则确定是否必须按照读-修改-写的算法写入新数据。所属技术领域的技术人员应当理解也可利用其它的指定方法来达到相似的结果,并且每个数据块的指定也可用于与本发明无关的其它目的。
一个用于存储设备阵列的控制程序可作为存储在一个计算机程序产品上的处理器可执行指令序列而执行,所述计算机程序产品包括磁软盘、磁带、光盘、集成电路芯片或可编程计算机可读的其它存储设备。
依据最佳实施例,一组RAID-1配置的数据块可被转换成RAID-4或RAID-5配置,反之亦然。但是,应当理解也可以使用具有相似特性并与RAID级数或其它限定无关的其它配置。特别是指6级以上的工业识别RAID级。一般地,这些系统具有RAID-4或5级的全部特性,但还具有诸如双重奇偶性数据块或附加备用数据块之类的其它特性。
图1、2、3、9、10和13示出了存储设备阵列,阵列中的每个设备包含相对较少的数据块。选择数目较少的数据块只是为了进行说明,而不应将本发明限定在任何特定的数目上。虽然本发明是通过利用较少数目的数据块而实现的,但所属技术领域的技术人员应当理解存储设备阵列中的每个存储设备实际上可包括很多个数据块。
虽然前述的用于将一个数据条从一种格式转换成另一种格式的特定系统和方法能够完全达到本发明的目的,但应当理解这只是本发明的一个最佳实施例并且只代表本发明所广泛关注的主题,本发明的保护范围包括对所属技术领域的技术人员来说是显而易见的其他实施例,因此除了后述的权利要求以外,不能对本发明进行任何限定。
权利要求
1.一种用于将存储在多个数据存储设备上的第一存储器结构转换成存储在所述多个数据存储设备上的第二存储器结构的方法,该方法包括步骤(a)识别将被转换的数据块组,其中每个数据块被分别存储在所述多个数据存储设备的不同数据存储设备上,所述数据块组包括多个数据块对,每一对数据块具有相同的数据;(b)选择所述数据块组的一个第一数据块;(c)将第一数据块指定为一个奇偶性数据块;(d)从不包括所述第一数据块的所述数据块组中的每个数据块对中分别选择一个数据块;以及(e)将从不包括所述第一数据块的所述数据块组中的每个数据块对中分别选择的每个数据块指定为可用于存储替换数据。
2.如权利要求1所述的方法,其特征在于所述数据块组包括一个数据条,其中每个数据块被存储在各数据存储设备中的相同地址上。
3.如权利要求1所述的方法,其中每个所述数据存储设备存储多个所述数据块,所述多个数据存储设备包含多个所述数据块组;以及其中可将第一数据块组从所述第一存储器结构转换成所述第二存储器结构,而第二数据块组保持按照所述第一存储器结构而配置。
4.如权利要求3所述的方法,其特征在于可个别和独立地将每个数据块组从所述第一存储器结构转换成所述第二存储器结构。
5.如权利要求1所述的方法,其特征在于所述第一存储器结构是按照RAID-1配置的数据块组,而所述第二存储器结构是按照RAID-4或RAID-5配置的数据块组。
6.如权利要求1所述的方法,其中第一存储器结构包括多个“备份”数据块和“数据”数据块,每个“备份”数据块是一个相关的“数据”数据块的备份并且每个“备份”数据块被存储在一个与存储相关“数据”数据块的DASD不同的DASD上,第二存储器结构包括 一奇偶性数据块和一组奇偶性保护数据块,每个奇偶性保护数据块被存储在一个与存储奇偶性数据块和其它每个奇偶性保护数据块的DASD不同的DASD上;其中如果所述第一数据块是一个“备份”数据块,则所述用于将从不包括所述第一数据块的所述数据块组中的每个数据块对中分别选择的每个数据块指定为可用于存储替换数据的步骤包括指定每另一个“备份”数据块为一个“自由”数据块;以及其中如果所述第一数据块是一个“数据”数据块,则所述用于将从不包括所述第一数据块的所述数据块组中的每个数据块对中分别选择的每个数据块指定为可用于存储替换数据的步骤包括(1)指定与第一数据块相关的“备份”数据块为一个“数据”数据块,以及(2)指定每另一个“备份”数据块为一个“自由”数据块。
7.如权利要求1所述的方法,其特征在于所述数据存储设备是旋转式磁硬盘驱动器。
8.一种数据存储系统,包括多个数据存储设备;一个可编程处理器,用于控制所述多个数据存储设备的操作,所述可编程处理器执行一个控制程序以将存储在所述多个存储设备上的第一存储器结构转换成存储在所述多个存储设备上的第二存储器结构;其中所述控制程序维护用于所述数据存储系统的状态信息;以及其中所述控制程序,响应对将被转换的数据块组的识别,其中每个将被转换的数据块被分别存储在所述多个数据存储设备的不同数据存储设备上,所述数据块组包括多个数据块对,每一对数据块具有相同的数据,(a)更新所述状态信息以将所述数据块组的一个第一数据块指定为一个奇偶性数据块,以及(b)更新所述状态信息以将从不包括所述第一数据块的所述数据块组中的每个数据块对中分别选择的每个数据块指定为可用于存储替换数据。
9.如权利要求8所述的数据存储系统,其特征在于所述可编程处理器被包含在一个与主计算机系统相连的控制器中,所述控制器包括一个包含所述状态信息的随机存取存储器。
10.如权利要求8所述的数据存储系统,其特征在于所述第一存储器结构是按照RAID-1配置的数据块组,而所述第二存储器结构是按照RAID-4或RAID-5配置的数据块组。
11.如权利要求8所述的数据存储系统,其特征在于所述数据存储设备是旋转式磁硬盘驱动器。
12.如权利要求8所述的数据存储系统,其特征在于所述数据块组包括一个数据条,其中每个数据块被存储在各数据存储设备中的相同地址上。
13.如权利要求8所述的数据存储系统,其中每个所述数据存储设备存储多个所述数据块,所述多个数据存储设备包含多个所述数据块组;以及其中所述控制程序将第一数据块组从所述第一存储器结构转换成所述第二存储器结构,而第二数据块组保持按照所述第一存储器结构而配置。
14.如权利要求13所述的数据存储系统,其特征在于所述控制程序能够个别和独立地将每个数据块组从所述第一存储器结构转换成所述第二存储器结构。
15.如权利要求8所述的数据存储系统,其特征在于所述控制程序自动地根据对将从所述第一存储器结构转换成所述第二存储器结构的数据块组的识别而选择所述第一数据块。
16.一种用于控制一个数据存储系统的控制器,所述数据存储系统具有多个用于存储数据的数据存储设备,所述控制器包括一个可编程处理器,用于控制所述多个数据存储设备的操作,所述可编程处理器执行一个控制程序以将存储在所述多个存储设备上的第一存储器结构转换成存储在所述多个存储设备上的第二存储器结构;以及一个随机存取存储器,用于包含由所述控制程序维护的状态信息;其中所述控制程序,响应对将被转换的数据块组的识别,其中每个将被转换的数据块被分别存储在所述多个不同的数据存储设备上,所述数据块组包括多个数据块对,每一对数据块具有相同的数据,(a)更新所述状态信息以将所述数据块组的第一数据块指定为一个奇偶性数据块,以及(b)更新所述状态信息以将从不包括所述第一数据块的所述数据块组中的每个数据块对中分别选择的每个数据块指定为可用于存储替换数据。
17.如权利要求16所述的控制器,其特征在于所述第一存储器结构是按照RAID-1配置的数据块组,而所述第二存储器结构是按照RAID-4或RAID-5配置的数据块组。
18.如权利要求16所述的控制器,其中每个所述数据存储设备存储多个所述数据块,所述多个数据存储设备包含多个所述数据块组;以及其中所述控制程序将第一数据块组从所述第一存储器结构转换成所述第二存储器结构,而第二数据块组保持按照所述第一存储器结构而配置。
19.如权利要求18所述的控制器,其特征在于所述控制程序能够个别和独立地将每个数据块组从所述第一存储器结构转换成所述第二存储器结构。
20.一种数字处理装置可读并确实采用了由数字处理装置可执行的指令构成的控制程序以便控制一个数据存储系统的程序存储设备,所述数据存储系统具有多个用于存储数据的数据存储设备,所述程序执行用于将第一存储器结构转换成第二存储器结构的方法,该方法包括步骤(a)接收对将从所述第一存储器结构转换成所述第二存储器结构的数据块组的识别,每个将被转换的数据块被分别存储在所述多个数据存储设备的不同数据存储设备上,所述数据块组包括多个数据块对,每一对数据块具有相同的数据,(b)更新状态信息以将所述数据块组的第一数据块指定为一个奇偶性数据块,以及(c)更新所述状态信息以将从不包括所述第一数据块的所述数据块组中的每个数据块对中分别选择的每个数据块指定为可用于存储替换数据。
21.如权利要求20所述的程序存储设备,其特征在于所述第一存储器结构是按照RAID-1配置的数据块组,而所述第二存储器结构是按照RAID-4或RAID-5配置的数据块组。
22.如权利要求20所述的程序存储设备,其中每个所述数据存储设备存储多个所述数据块,所述多个数据存储设备包含多个所述数据块组;以及其中所述控制程序将第一数据块组从所述第一存储器结构转换成所述第二存储器结构,而第二数据块组保持按照所述第一存储器结构而配置。
23.一种用于将存储在多个数据存储设备上的第一存储器结构转换成存储在所述多个数据存储设备上的第二存储器结构的方法,该方法包括步骤(a)识别将被转换的数据块组,其中每个数据块被分别存储在所述多个数据存储设备的不同数据存储设备上,所述数据块组包括多个包含数据的数据块和一个包含由所述多个包含数据的数据块而得出的奇偶性的第一数据块;(b)选择包含奇偶性的所述数据块以包含所述多个包含数据的数据块中的第一数据块中所包含的数据备份;(c)选择所述数据块组中的至少另一个数据块以包含所述包含数据的所述数据块组中的至少一个数据块中所包含的数据备份;以及(d)指定从所述数据块组中选定的每个数据块可用于存储所述数据块组中另一个数据块所包含的数据备份。
24.一种数据存储系统,包括多个数据存储设备;一个可编程处理器,用于控制所述多个数据存储设备的操作,所述可编程处理器执行一个控制程序以控制所述数据存储系统的操作;其中所述多个数据存储设备中的数据被组织成多个数据块组,所述数据块组中的每个数据块被分别存储在所述多个数据存储设备的不同数据存储设备上;其中所述控制程序支持依据多种不同存储器结构对所述数据块组的格式化,所述至少一种存储器结构为冗余数据格式,第一数据块组和第二数据块组的格式化可彼此独立;以及一个随机存取存储器,用于存储由所述控制程序维护的状态信息,所述状态信息包括用于每个数据块的数据块状态和分别用于所述第一数据块组和所述第二数据块组的组状态,所述组状态信息包括对每个数据块组所依据的存储器结构的标识;其中所述控制程序,响应对将从第一存储器结构转换成第二存储器结构的数据块组的标识,(a)更新用于将被转换的所述数据块组中的数据块的数据块状态信息,以及(b)更新用于所述数据块组的组状态信息,以识别按照第二存储器结构配置的数据块组。
25.如权利要求24所述的数据存储系统,其特征在于所述第一存储器结构是按照RAID-1配置的数据块组,而所述第二存储器结构是按照RAID-4或RAID-5配置的数据块组。
26.如权利要求24所述的数据存储系统,其特征在于所述每个数据块组包括一个数据条,其中每个数据块被存储在各数据存储设备中的相同地址上。
27.如权利要求24所述的数据存储系统,其特征在于所述状态信息包括分别用于所述多个数据块组中的每个数据块组的组状态,所述多个数据块组中的每个数据块组彼此单独和独立地按照各自的存储器结构而配置。
全文摘要
一个灵活的存储设备阵列存储多个数据块(903,905,907,909,911,913),这些数据块被分成了所谓数据条(901,1001)的数据块组,一个数据条中的每个数据块被存储在不同的设备上(401a-40lf)。一个阵列控制器(403)支持依据不同存储器结构而独立格式化的数据条。具体地,最佳实施例中所支持的存储器结构是非冗余、镜像和奇偶性保护。每个存储数据块处于五种状态之一:(1)“空”;(2)“数据”;(3)“奇偶性”;(4)“备份”;或(5)。“自由”。阵列中存储数据块的每个数据条存在于七种状态之一,这七种状态取决于数据块的状态。定义了允许一种类型的数据条被转换成另一种类型数据条的特定状态跃迁,同时使数据的移动最小化(图7)。具体地,通过将镜像数据条中的任何一个数据块指定为一个“奇偶性”,数据块(806-807)并改变特定的状态信息(808-812),可使处于完全镜像状态的数据条被转换成奇偶性保护状态。在这种情况下无须移动数据。将一个非冗余或奇偶性保护数据条转换成一个镜像数据条(1102-1112,1202-1212)也是可能的。
文档编号G06F13/10GK1247608SQ97181961
公开日2000年3月15日 申请日期1997年5月28日 优先权日1997年2月27日
发明者戴维·阿伦·斯太克金司凯 申请人:国际商业机器公司