对多倍冗余存储器的安全写操作的制作方法

文档序号:6483925阅读:230来源:国知局
专利名称:对多倍冗余存储器的安全写操作的制作方法
技术领域
本发明涉及存储器的领域,更具体地,涉及多倍冗余阵列的操作。
背景技术
在存储系统中,可使用称作RAID(独立磁盘冗余阵列)的技术将独立存储设备的阵列配置为作为单个虚拟存储设备来操作。配置为利用RAID存储系统进行操作的计算机系统能够在RAID存储系统上执行输入和输出(I/O)操作(诸如读和写操作),如同该RAID存储系统是单个存储设备一样。RAID存储系统包括独立存储设备阵列和RAID控制器。RAID控制器提供独立存储设备阵列的虚拟视图—这意味着独立存储设备阵列表现为带有存储元件的有序列表的单个虚拟存储设备。存储元件通常称作存储块,而存储在其中的数据称作数据块。I/O操作是对于该虚拟存储设备中的—个或多个存储块来限定的。当在该虚拟存储设备上执行I/O操作时,RAID控制器将该I/O操作映射到独立存储设备的阵列上。为了虚拟化该存储设备阵列,并映射I/O操作,RAID控制器可以采用数据处理领域中技术人员公知的几种标准RAID技术中的任何一种。
在提供存储设备的阵列作为单个虚拟存储设备的虚拟化视图时,RAID控制器的功能是将该虚拟存储设备中的数据块分布在整个阵列中。实现这一目的的一种方法是使用称作“条带化”的技术。条带化包括以循环的方式将数据块分布在整个存储设备中。当在RAID存储系统中存储数据块时,将称作条带的多个数据块存储在每一存储设备中。条带的大小可以由具体RAID实现来确定,或者是可配置的。包括存储在第一存储设备上的第一条带和存储在后续存储设备上的后续条带的一行条带称作基带条。基带条的大小是包括该基带条的所有条带的总大小。由于多个存储设备能够在I/O操作期间并行地行动,因而当与单个存储设备相比时,以这种方式使用多个独立存储设备来存储数据块提供了高性能I/O操作。
诸如磁盘存储设备的物理存储设备因较差的可靠性而闻名,因而RAID控制器的另一个功能是提供可靠的存储系统。一种提供可靠性的技术包括在独立存储设备阵列中存储校验信息及数据。校验信息是允许已变得不可读的数据再生的冗余信息,其中该数据是由于诸如这种设备的阵列中单个存储设备故障的单点故障而变得不可读的。不可读数据根据可读数据和冗余校验信息的结合而再生。校验信息被记录为奇偶校验数据,它占用基带条中的单个条带,并且其是通过将异或(XOR)逻辑操作符运用到基带条中的所有数据条带而计算来的。例如,包括数据条带A、B、C的基带条将进一步由按照A XOR B XOR C计算出的奇偶校验条带来补足。如果在存储系统中发生单点故障,那么奇偶校验条带就用于再生不可访问的数据条带。例如,如果包括数据条带A、B、C和PARITY的基带条跨四个独立存储设备W、X、Y、Z分别存储,并且存储设备X故障,那么存储在设备X上的条带B将是不可访问的。条带B可以根据其余数据条带和PARITY条带通过XOR计算而计算出。该恢复性计算是A XOR C XORPARTY=B。
多倍冗余RAID阵列是构建于独立硬盘驱动器之外的存储设备,其以这样一种方式存储数据和奇偶校验信息,即几个组成硬盘驱动器可能故障而不会丢失写入到该阵列中的任何数据。基于简单起见,在此以双倍冗余阵列来对此进行描述;本发明优选实施例的技术可以扩展到具有更多冗余的阵列。
例如,图1中示出了一种用于一个四磁盘阵列的支持上述恢复性XOR技术的公知方案。该技术依赖于以下内容1.每一列表示一个磁盘。
2.该图中的每个单元表示该磁盘上数据(顶行)或奇偶校验(底行)的条带。
3.该模式重复到涵盖整个阵列。
4.每一数据条带用于确切地两个奇偶校验条带。
5.每一数据条带及其两个奇偶校验条带位于不同磁盘上。
6.没有两个数据条带共享相同的两个奇偶校验条带。
7.如果移除了任何两个磁盘(列),那么丢失的数据可以根据其余两个磁盘恢复。
例如,移除第一(左手)的两个磁盘。可以由以下恢复AC xor(A xor C)然后,还可以由以下恢复BA xor(A xor B)当写操作中断(例如,因掉电或者阵列控制器的复位)时,阵列控制器必须采取措施来重新同步该模式。例如,假设以数据B’覆写到数据B上。这意味着三个条带(一个数据和两个奇偶校验条带)不得不被写入。如果在这些写操作期间掉电,那么这些磁盘驱动器将无法完成这些写操作并且这些条带将最终包含旧的和新的数据或奇偶校验的混合。当重新供电时,阵列控制器必须采取某种行动将奇偶校验条带与数据条带重新同步一如果不完成这项操作的话,那么该模式将无法正确地重建并且将产生数据恶化。
实现RAID-5即单倍冗余类型的RAID的当前RAID适配器,通常通过将正被写入的每一基带条的索引存储在小型非易失性存储器(NVRAM)中,来管理该操作。当该适配器启动时,它检查其NVRAM并且发现阵列上的哪一个模式需要被重新同步。通过读取所有的数据条带并计算新的奇偶校验来完成这一重新同步。对于需要被同时写入的每个模式而言,该方案需要~32位的NVRAM。这一技术只有在能够读取所有的数据条带时才奏效。如果无法读取单个数据条带(例如,由于磁盘故障),则无法计算奇偶校验条带,而数据丢失。这接近于RAID-5的可接受的边缘,因其是被设计为允许单个故障存在的RAID(已有疑义地存在两个故障,即磁盘故障和电源故障或者控制器复位)。
这一技术当应用于双倍冗余阵列时是不可接受的,其中该双倍冗余阵列被假定为允许两个故障存在而不会丢失数据。这一问题的一般解决方案(其增强RAID-5情形和解决双倍冗余情形)是为阵列控制器配备大量的非易失性存储器(在此称作NVS以与NVRAM相区别)。该控制器准备新的数据和奇偶校验并在开始写入到磁盘之前将它们存储在NVS中。如果该控制器被复位或者磁盘在写操作期间掉电,则由于其试图写的数据仍然存在于NVS中,因此该控制器能够尝试再次写入。如果该写操作成功,那么不需要进一步动作来重新同步该模式。即使一个磁盘(或者甚至是双倍冗余阵列的两个磁盘)故障,也没有问题。
这种方案的缺点在于需要大量的NVS-足以处理与控制器需要可接受地执行的一样多的并发写操作。以前,这种方案曾经是可接受的,因为单个存储控制器通常具有快速写高速缓存和RAID功能—仅需要一片由两个组件共享的NVS。
然而,在存储区域网络(SAN)环境中,可期望具有在分离的单元中的高速缓存和RAID。使用NVS进行RAID更新意味着高速缓存和RAID单元都需要它们自己的NVS。
通常,存在RAID阵列的至少两个控制器,以使单个控制器的故障不会导致对该阵列的访问的丢失。这些控制器必须进行通信以使对该RAID阵列的访问同步。任何非易失性信息必须对于这两个控制器都可见。在最简单的情况下,这些控制器使用设备网络进行通信,但是如果NVS的内容要被屏蔽,那么网络带宽就被不利地消耗了,否则该带宽应该对于用户I/O可用。
另外一个缺点是,给定使用NVRAM技术管理RAID-5阵列的存储适配器/控制器,不可能在不进行硬件升级的情况下使用NVS方案来实现可接受的双倍冗余RAID存储器。

发明内容
因此,在第一方面,本发明提供一种用于将数据和奇偶校验安全地写入多倍冗余存储器的装置,包括第一存储组件,其可操作地将至少第一标记存储在存储设备中,以唯一地索引将由至少数据写操作写入的模式;写组件,其可操作地执行所述至少数据写操作;另一存储组件,其可操作地利用至少另一标记覆写所述存储设备中的标记,以唯一地索引将由奇偶校验写操作写入的模式;以及另一写组件,其可操作地执行所述奇偶校验写操作。
优选地,所述第一存储组件进一步包括第二存储组件,其可操作地利用第二标记覆写所述存储设备中的所述至少第一标记,以索引将由第一奇偶校验写操作写入的模式;以及所述写组件进一步可操作地执行所述第一奇偶校验写操作。
优选地,第一方面的方案可以具有双倍冗余。
优选地,第一方面的装置可以具有大于双倍的冗余。
第一方面的方案可以适用于将每一数据和奇偶校验写操作串行化。
第一方面的方案可以进一步包括RAID存储器,优选地,其可以是RAID-5存储器。
第一方面的方案可以适用于执行延迟奇偶校验更新。
优选地,第一方面的方案可以进一步包括快速写高速缓存。
在第二方面,本发明提供一种用于将数据和奇偶校验安全地写入多倍冗余存储器的方法,包括将至少第一标记存储在存储设备中,以唯一地索引将由至少数据写操作写入的模式;执行所述至少数据写操作;利用至少另一标记覆写所述存储设备中的标记,以唯一地索引将由奇偶校验写操作写入的模式;以及执行所述奇偶校验写操作。
优选地,所述将至少第一标记存储在存储设备中,以唯一地索引将由至少数据写操作写入的模式的步骤进一步包括利用第二标记覆写所述存储设备中的所述至少第一标记,以索引将由第一奇偶校验写操作写入的模式;以及所述执行所述至少数据写操作的步骤包括执行所述第一奇偶校验写操作。
优选地,上述多倍冗余存储器是双倍冗余的。
优选地,上述多倍冗余存储器具有大于双倍的冗余。
优选地,所有包括执行写操作的步骤是串行化的。
优选地,所述多倍冗余存储器包括RAID存储器。
优选地,所述RAID存储器是RAID-5存储器。
优选地,第二方面的方法还包括执行延迟奇偶校验更新的步骤。
优选地,第二方面的方法还包括执行快速写高速缓存操作的步骤。
在第三方面,本发明提供一种计算机程序,包括在有形介质中包含的计算机程序代码,当该计算机程序被加载到计算机系统中并在其上执行时,其执行第二方面的方法的所有步骤。
有利地,本发明提供对磁盘故障与电源复位或者磁盘故障与控制器复位的组合的保护。
此外,有利地,本发明缓解了减少用户I/O的可用宽带的带宽消耗的问题。
本发明的另一个优点在于,其可以从双倍冗余阵列扩展到具有更高阶冗余的阵列。


现在将仅以举例的方式参照附图描述本发明的优选实施例,其中图1示出用于四磁盘阵列的公知编码方案;图2示出根据本发明优选实施例的装置的框图;图3示出根据本发明优选实施例的方法步骤。
具体实施例为了理解本发明的优选实施例,再次考虑图1中示出的公知编码方案。对该模式的写操作是串行化的。如果同时提交对条带A和B的写操作,那么阵列控制器将首先进行一个写操作然后进行另一个写操作。
为了将更新的数据B’写在现有数据B上,需要磁盘I/O步骤的公知序列。这一序列是
1.读取旧数据,B。
2.计算奇偶校验增量,B xor B’。
3.读取第一旧奇偶校验,B xor D。
4.通过将第一旧奇偶校验与奇偶校验增量进行异或-(B xor D)xor(B xor B’),即B’xor D,来计算第一新奇偶校验。
5.读取第二旧奇偶校验,A xor B。
6.通过将第二旧奇偶校验与奇偶校验增量进行异或-(A xor B)xor(B xor B’),即A xor B’,来计算第二新奇偶校验。
7.在B之上写入B’。<——写操作#08.写入第一新奇偶校验,B’xor D。<——写操作#19.写入第二新奇偶校验,A xor B’。<——写操作#2(对于本领域技术人员显而易见的是,可以进行某种重新排序,而不会映象最终结果。)在本发明的优选实施例中,将标记存储在NVRAM中,以唯一标识该模式内在每一个写操作#0、#1、#2时被写入的条带。
转到图2,其示出了用于将数据和奇偶校验安全地写入包括第一写组件112的多倍冗余存储器的装置100,其中第一写组件112包括写入器102,其与第一存储组件108协作,以存储一个标记,以唯一地索引将由数据写操作写入的模式,然后该写入器执行对存储器(110)的写操作。写组件112还可以进一步包含第二写入器104,其也与第一存储组件108协作,以存储一个标记,以唯一地索引将由第一奇偶校验写操作写入的模式,然后该写入器执行对存储器110的写操作。在对存储器非原子写操作的情况下,数据和奇偶校验可以如并行写操作114所示的那样并行地写入。在必须保持原子性的写操作的情况下,有效地分解组件112以提供两个独立的写入器102、104,并且将并行写组件112中所示的写操作分解为串行化的写操作对,即第一个为数据、第二个为第一奇偶校验(应当指出,第二奇偶校验写操作也必须被串行化)。
第三写入器106与存储组件108协作,以利用至少另一个标记来覆写存储器中的标记,以唯一地索引将由第二奇偶校验写操作写入的模式,然后将该奇偶校验写入存储器110。
存储在存储组件108即NVRAM中的信息是正被写入的模式的索引(0至该模式依该阵列被重复的次数);正被写入的数据条带的索引(对于4磁盘阵列为0至3);以及当前正执行的写操作的索引(对于双倍冗余阵列上面标注的#0至#2)。
第二和第三项唯一地标识该模式内哪一条带正被写入。存在表示该信息的可选方法,例如包括但不限于在模式内使用X-Y坐标。对数据处理领域的技术人员而言,明显的是,存在多种可选表示法。
这意味着存储在NVRAM中的数据在每次写操作之前便被改变。上述NVRAM标记的使用包括对上述算法增加以下步骤6A.将NVRAM设置为{模式P,数据B,写操作0}7.将B’写在B之上7A.将NVRAM设置为{模式P,数据B,写操作1}8.写入第一新奇偶校验,B’xor D8A.将NVRAM设置为{模式P,数据B,写操作2}9.写入第二新奇偶校验,A xor B’9A.擦除NVRAM标记。
在有一个以上的适配器/控制器共享该阵列的环境中,NVRAM标记的值必须在所有适配器/控制器上改变。
转到图3,其示出了根据本发明优选实施例的方法步骤的流程图。
在步骤202,将标记写入NVRAM以存储用于该数据写操作的模式索引、条带索引和写操作索引。在步骤204,写入数据。在步骤206,将标记写入NVRAM以存储用于第一奇偶校验写操作的模式索引、条带索引和写操作索引。在步骤208,写入第一奇偶校验。在非原子更新的情况下,这些写操作可以并行发生。否则,它们必须串行化,并且,第二奇偶校验写操作(下面将讨论)也必须串行化。
在步骤210,将标记写入NVRAM以存储用于第二奇偶校验写操作的模式索引、条带索引和写操作索引。在步骤212,写入第二奇偶校验。在步骤214,NVRAM被无效。
如果在任意点子系统掉电或者适配器/控制器复位,而无磁盘故障,则能够容易地使模式重新同步。
如果存在磁盘故障,且该磁盘包含在复位时正被写入的数据或奇偶校验条带,则由于其余磁盘上的所有条带都已经同步,所以该模式可以被重新同步。
如果存在磁盘故障并且该磁盘是与包含在复位时正被写入的数据或奇偶校验条带的磁盘不同的磁盘,那么可以如下地使模式重新同步1.如果NVRAM指示“写操作0”,则类似于这样的情形,即其中两个磁盘已经故障—一个已经真正故障,而一个包含正被写入的数据条带。由于该模式是多倍冗余的,所以所有数据都能够重建,将该模式返回到该写操作开始之前的状态。
2.如果NVRAM指示“写操作2”,则类似于这样的情形,即其中两个磁盘已经故障—一个已经真正故障,而一个包含第二奇偶校验条带。由于该模式是多倍冗余的,所以所有数据都能够重建,完成被中断的该写操作。
3.如果NVRAM指示“写操作1”,则存在三种情况A)故障的磁盘包含在“写操作0”期间被写入的数据条带。
这与两个磁盘故障—已经真正故障的磁盘和包含“写操作1”数据的磁盘情况相同。
该模式的冗余保证所有数据都能够被重建,将该模式返回到该写操作开始之前所处的状态。
B)故障的磁盘包含在“写操作2”期间要被写入的第二奇偶校验条带。
这与两个磁盘故障—已经真正故障的磁盘和包含“写操作1”数据的磁盘情况相同。
该模式的冗余保证所有数据都能够被重建,完成被中断的写操作。
C)故障的磁盘是一个不同的磁盘。
故障的磁盘上的数据条带总是可以被重建,并且重新同步该模式以完成被中断的写操作。
故障的磁盘上的每一数据条带具有两个奇偶校验条带。这两者都不在故障的磁盘上。
这些奇偶校验条带中至多有一个被与在“写操作0”期间写入的数据条带共享,因此总是存在至少一种重建该数据条带的途径。
本发明的第一优选实施例要求,尽管可以并行地发出各种读命令,但是必须顺序地发出三个写命令—直到写操作#1已经完成时才开始写操作#2等等。
这一实施例的一个缺点在于,三个磁盘写操作是串行的,意味着发送到该阵列的写操作将比使用NVS方案对相同阵列的写操作花费更长的时间,在NVS方案中这三个磁盘写操作可以并行发出。
如果RAID阵列在快速写高速缓存之后,因此至少部分地与主机响应时间隔离,那么这种情况可以稍微得到缓解。
缓解这一缺点的其它可能方法是,在步骤8A之后,通过向主机写I/O发出成功完成的信号—这相当于常常应用到RAID-5的公知“延迟奇偶校验更新”技术。
在本发明的第二实施例中,除非应用要求这样的附加属性,即对RAID阵列的写操作是原子的,否则串行化是不必要的。如果对于被中断的写操作而言以新数据和旧数据之间的转换来结束是可以接受的,那么可以在第一NVRAM标记下发生前两个写操作,然后可以在第二NVRAM标记下发生一个写操作。
例如,考虑对图1的数据A的更新的步骤1.完成所有的读操作并计算要写入的新奇偶校验2.建立指示A和A xor B正被更新的NVRAM标记3.并行写入A和A xor B4.当两个写操作都完成时,建立指示A xor C正被更新的NVRAM标记5.写入A xor C6.清除NVRAM标记因此,如果在并行写操作步骤号3期间发生控制器复位和磁盘故障,那么情况是1.磁盘1丢失。“B”、“C”和“D”保留,而“C”和“A xor C”可以用于重建“A”的旧版本。
2.磁盘2丢失。“C”、“D”以及“A”的部分更新版本保留,而“D”和“B xor D”可以用于重建“B”。如果需要,“C”和“A xor C”可以用于重建“A”的旧版本。
3.磁盘3丢失。“B”、“D”以及“A”的部分更新版本保留。而“D”和“C xor D”可以用于重建“C”。根据需要,“C”和“A xor C”可以用于重建“A”的旧版本。
4.磁盘4丢失。“B”、“C”以及“A”的部分更新版本保留。而“B”和“B xor D”可以用于重建“D”。无法重建“A”的旧或新版本。
这种串行化的减少是需要的,因为这将在阵列写操作上的执行时间降低到接近于当前RADI-5阵列的执行时间。
为了将第二优选实施例扩展到具有多个冗余的阵列,数据写操作必须与第一奇偶校验更新并行进行,但是随后的奇偶校验更新必须串行化。
然而,使得写操作是原子性的—正如在包括三个顺序写操作的第一优选实施例中那样—对于使用不保证可以读出被中断的写操作的磁盘驱动器(例如,具有4KB扇区大小的驱动器,其允许子扇区进行写操作而无需使用非易失性存储器)来说,是期望的。
应当理解的是,上述方法通常将在运行在一个或多个处理器(未示出)上的软件中执行,并且该软件可以作为在承载在诸如磁或光计算机磁盘的任何适合的载体(也未示出)上的计算机程序组件来提供。用于传送数据的信道同样可以包括所有描述的存储介质,以及诸如有线或者无线信号介质的信号承载介质。
本发明可以适宜地体现为用于计算机系统使用的计算机程序产品。这种实现可以包括一系列计算机可读指令,这些指令或者固定在有形介质(诸如磁盘、CD-ROM、ROM、或者硬盘的计算机可读介质)上,或者可经由调制解调器或者其它接口设备通过有形介质(包括但不限于光或者模拟通信线路)、或者无形地使用无线技术(包括但不限于微波、红外线、或者其它传输技术)传送到计算机系统。这一系列的计算机可读指令包括先前描述的全部或部分功能。
本领域技术人员将理解,这种计算机可读指令可以多种用于众多计算机体系结构或操作系统的程序设计语言来编写。此外,这种指令可以使用目前或将来的任何存储技术(包括但不限于半导体、磁或光技术)来存储,或者使用目前或者将来的任何通信技术(包括但不限于光、红外、或者微波技术)来传送。可以预期的是,这样的计算机程序产品可以作为带有随附的打印或电子文档的可移动介质(例如,紧缩套装软件)来发布,利用计算机系统预加载(例如在系统ROM或者固定磁盘上),或者从服务器或者电子公告板通过网络(诸如因特网或者万维网)来发布。
应当理解的是,对本领域的普通技术人员而言,上述实施例的各种修改是显而易见的。
权利要求
1.一种用于将数据和奇偶校验写入多倍冗余存储器的装置,包括第一存储组件,其可操作地将至少第一标记存储在存储设备中,以唯一地索引将由至少数据写操作写入的模式;写组件,其可操作地执行所述至少数据写操作;另一存储组件,其可操作地利用至少另一标记覆写所述存储设备中的标记,以唯一地索引将由奇偶校验写操作写入的模式;以及另一写组件,其可操作地执行所述奇偶校验写操作。
2.如权利要求1所述的装置,其中所述第一存储组件进一步包括第二存储组件,其可操作地利用第二标记覆写所述存储设备中的所述至少第一标记,以索引将由第一奇偶校验写操作写入的模式;以及所述写组件进一步可操作地执行所述第一奇偶校验写操作。
3.如权利要求1或2所述的装置,具有大于双倍的冗余。
4.如权利要求2所述的装置,适用于将每一数据和奇偶校验写操作串行化。
5.一种用于将数据和奇偶校验安全地写入多倍冗余存储器的方法,包括将至少第一标记存储在存储设备中,以唯一地索引将由至少数据写操作写入的模式;执行所述至少数据写操作;利用至少另一标记覆写所述存储设备中的标记,以唯一地索引将由奇偶校验写操作写入的模式;以及执行所述奇偶校验写操作。
6.如权利要求5所述的方法,其中所述将至少第一标记存储在存储设备中,以唯一地索引将由至少数据写操作写入的模式的步骤进一步包括利用第二标记覆写所述存储设备中的所述至少第一标记,以索引将由第一奇偶校验写操作写入的模式;以及所述执行所述至少数据写操作的步骤包括执行所述第一奇偶校验写操作。
7.如权利要求10或11所述的方法,其中上述多倍冗余存储器具有大于双倍的冗余。
8.如权利要求10至13中任一项所述的方法,其中包括执行写操作的所有步骤是串行化的。
9.如权利要求10至14中任一项所述的方法,其中所述多倍冗余存储器包括RAID存储器。
10.一种计算机程序,包括在有形介质中包含的计算机程序代码,当该计算机程序被加载到计算机系统中并在其上执行时,其执行如权利要求5至9中任一项所述的方法的所有步骤。
全文摘要
本发明提供了一种用于将数据和奇偶校验安全地写入多倍冗余存储器的装置,包括第一存储组件,其可操作地将至少第一标记存储在存储设备中,以唯一地索引将由至少数据写操作写入的模式;写组件,其可操作地执行该至少数据写操作;另一存储组件,其可操作地利用至少另一标记覆写该存储设备中的标记,以唯一地索引将由奇偶校验写操作写入的模式;以及另一写组件,其可操作地执行该奇偶校验写操作。优选地,第一存储组件包括第二存储组件,其可操作地利用第二标记覆写所述存储设备中的所述至少第一标记,以索引将由第一奇偶校验写操作写入的模式;以及写组件进一步可操作地执行第一奇偶校验写操作。
文档编号G06F3/06GK1791863SQ200480013513
公开日2006年6月21日 申请日期2004年6月17日 优先权日2003年6月28日
发明者M·J·费尔赫斯特, I·D·贾德, W·J·斯凯尔斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1