配置用于独立磁盘冗余阵列存储系统的存储器的制作方法

文档序号:6382803阅读:180来源:国知局
专利名称:配置用于独立磁盘冗余阵列存储系统的存储器的制作方法
技术领域
本发明涉及配置用于RAID存储系统的存储器,特别涉及配置包括虚拟化RAID控制器和分离存储器(detached memory)的RAID存储系统的存储器。
背景技术
在存储系统中,独立存储设备阵列可以配置成使用称作RAID(RedundantArray of Independent Disks,独立磁盘冗余阵列)的技术来作为单个虚拟存储设备工作。配置成与RAID存储系统一起工作的计算机系统能够如同RAID存储系统是单个存储设备一样对RAID存储系统执行输入和输出(I/O)操作(如读取和写入操作)。RAID存储系统包括独立存储设备的阵列和RAID控制器。RAID控制器提供独立存储设备阵列的虚拟化视图(view)-这意味着独立存储设备阵列看上去如同具有存储单元(storage element)顺序列表的单个虚拟存储设备。存储单元通常称作存储块,而存储在其内的数据称作数据块。I/O操作关于虚拟存储设备中的一个或多个存储块来限定。当对虚拟存储设备执行I/O操作时,RAID控制器将I/O操作映射到独立存储设备阵列上。为了虚拟化存储设备阵列并且映射I/O操作,RAID控制器可以采用如论文“A Case forRedundant Arrays of Inexpensive Disks(RAID)(廉价磁盘冗余阵列(RAID)的情况)”(D.Patterson等人,1988)所述的标准RAID技术。下面将考虑这些技术中的一些技术。
在作为单个虚拟存储设备提供存储设备阵列的虚拟化视图中,RAID控制器的一个功能是将虚拟存储设备中的数据块分散到阵列上。为此,一种实现方法是使用称作数据条分割(striping)的技术。数据条分割涉及以循环方式将数据块分散到多个存储设备上。当在RAID存储系统中存储数据块时,将称作“数据条(strip)”的多个数据块存储在每个存储设备中。数据条的大小可以由具体RAID实现来确定或者可以是可配置的。由存储在第一存储设备上的第一数据条和存储在随后存储设备中的随后数据条组成的一行数据条称作“数据带”(stripe)。数据带的大小是组成数据带的所有数据条的总大小。与单个存储设备相比,以这种方式使用多个独立存储设备来存储数据块提供高性能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可以通过XOR计算根据其余数据条和PARITY数据条来计算。此恢复计算为A XOR C XOR PARITY=B。
对于在出现故障的情况下有效的校验信息,需要它是正确的并且对它进行维护。因此,在RAID存储系统中改变数据必须通过对校验信息的适当改变来反映。由于下述原因,在数据改变影响小于整个数据带大小的数据单元(称作“小量写入”)的情况下,这可能是繁重的。考虑使用数据条分割技术的带有RAID控制器的RAID存储系统,其中每个数据带包括多个数据条和一个奇偶数据条。如果该系统配置成存储系统虚拟视图(虚拟存储设备)中的单个块对应于单个数据条,则向虚拟存储设备写入单个块的操作由RAID控制器实现为在RAID数据带中写入单个数据条的操作。数据带中单个数据条的改变必须通过对相应奇偶数据条的适当改变来反映。因此,必须重新计算数据带的奇偶数据条。为了重新计算奇偶数据条,必须从现有奇偶数据中排除数据带中被覆写的数据条(“旧”数据条)。这可以通过对奇偶数据和旧数据条执行XOR运算来实现。而且,替换数据条(“新”数据条)必须包括在奇偶数据中,从而创建修改后的奇偶数据条。这可以通过对奇偶数据和新数据条执行XOR运算来实现。随后,修改后的奇偶数据条和新数据条必须写在数据带内。因此,为了将替换数据条写到现有数据带,则需要执行下列操作两次读取操作(旧数据条和奇偶数据条);修改奇偶数据条;以及两次写入操作(新数据条和修改后的奇偶数据条)。这种执行小量写入的方法由于维护校验信息的一致性所需的附加读取和写入操作而导致RAID存储系统的性能降低。这称作小量写入操作的读取-修改-写入问题。
由于上述小量写入操作的性能问题,最好是当向RAID存储系统写入时覆写一个或多个完整数据带,从而避免维护现有校验信息的需要。为了让写入操作覆写一个或多个完整数据带,则所要写入到RAID存储系统的数据单元需要具有适当的大小,即数据带大小(除去奇偶数据条)的倍数。为了覆写一个或多个完整数据带,还需要将数据单元写入到与RAID数据带中的第一数据条相对应的RAID存储设备虚拟视图中的块上。向与RAID数据带中第一数据条之外的任何数据条相对应的块的写入操作包括写入作为小量写入操作的数据带的一部分。确保写入操作对应于RAID数据带中的第一数据条称作“数据带对齐(alignment)”。因此,为了保证写入操作完全覆写一个或多个RAID数据带,它必须满足给定RAID存储系统的数据带大小和对齐标准。满足这些标准的写入操作称作“数据带对齐写入”。数据带对齐写入不需要维护RAID数据带中的现有校验信息,因为一个或多个数据带被新写入的数据完全替换,并且对于此新数据计算新校验信息,作为写入操作的一部分。确保向RAID存储系统的所有写入操作是数据带对齐将通过消除小量写入的读取-修改-写入问题而提高性能。
向RAID存储系统的写入操作将不是总是数据带对齐的,并且由于通过定义小量写入操作涉及大小小于完整RAID数据带的数据单元,因此小量写入操作绝对不是数据带对齐的。现有RAID存储系统可以采用诸如高速缓冲存储器的存储器,其中,聚集多个小量写入操作成为构成完整数据带的单个写入操作。因而,小量写入的集合可以是数据带对齐的,并且写入到RAID存储设备。为了让该高速缓冲存储器有效,它必须配置成在包括数据带大小和对齐的多个RAID存储系统参数内工作。这些参数可以针对不同RAID存储系统而不同,并且典型地针对由不同厂商提供的RAID存储系统而不同。经常地,高速缓冲存储器集成在RAID控制器内,从而容易地由用户或控制器本身采用适当的数据带大小和对齐参数配置它。
日益地,RAID存储系统在诸如存储区域网(SAN)的结构中本身变得虚拟化。SAN包括链接一个或多个服务器到一个或多个存储设备的网络。SAN中的存储设备可以包括实现为RAID存储系统的虚拟存储设备。在SAN内,一个或多个交换机连接各设备,并且在主机和存储设备之间通过SAN提供路由。SAN虚拟化存储设备从而确保连接到SAN的存储设备的互操作性。虚拟化SAN中的存储设备的一个特性是存储设备的实际实现细节对于SAN中的其他设备可能是未知的。例如,SAN中的主机可能不能确定连至SAN的存储设备是实现为单磁盘还是RAID存储系统。虚拟化SAN中的存储设备还允许将数据分散到多个存储设备,包括多个RAID存储系统上,从而进一步提高性能和可靠性。这使用可以连至SAN中的交换机的存储工具(storageappliance)如IBM TotalStorage(总存储)虚拟化引擎来实现。最好高速缓冲存储器不集成在存储设备如RAID存储系统内,而是在SAN内单独实现,从而当将数据分散到多个SAN存储设备上时可以使用它们。例如,可以在连至SAN内的交换机的存储工具内实现高速缓冲存储器。
在高速缓冲存储器不与RAID存储系统的RAID控制器相集成并且例如通过SAN虚拟化RAID控制器的情况下,RAID存储系统的特定数据带大小和对齐特性不容易用于高速缓冲存储器。将高速缓冲存储器与虚拟化RAID控制器相分离导致的一个问题是不能采用适当的数据带大小和对齐特性来自动配置高速缓冲存储器,因为这些特性对于高速缓冲存储器是未知的,并且必须人工进行配置或者根本不进行配置。不适当的数据带大小和对齐特性的后果包括由于写入操作不太可能是适当数据带对齐的而导致遇到读取-修改-写入问题的可能性增大。因此最好是提供一种减轻传统存储系统的这些问题的系统和方法。

发明内容
因此,在第一方面,本发明提供一种具有存储器的设备,可与虚拟化RAID控制器一起工作,以通过测试多个I/O操作的性能特性来确定最佳I/O配置,其中所述I/O操作的每一个均包括向RAID控制器写入数据块,并且其中所述I/O配置包括数据长度和数据对齐。这提供一个优点是向虚拟化RAID控制器写入存储在存储器中的数据的写入操作具有适当的长度和对齐,以提供数据带对齐写入而不遇到读取-修改-写入问题。
最好,存储器是高速缓冲存储器。
最好,性能特性是响应时间。
因此在第二方面,本发明提供一种用于操作可与虚拟化RAID控制器工作、具有存储器的设备的方法,包括以下步骤执行多个I/O操作,其中所述I/O操作包括向RAID控制器写入数据块;测试所述多个I/O操作的性能特性;以及响应于所述测试步骤,设置后续I/O操作的最优I/O配置,其中所述I/O配置包括数据长度和数据对齐。
在第三方面,本发明还提供一种计算机程序产品,包括存储在计算机可读存储介质上的计算机程序代码,当在数据处理系统上执行时,该计算机程序代码指示数据处理系统执行上述方法。


现在将参照附图仅作为示例来描述本发明的优选实施例,其中图1是本发明优选实施例中的存储区域网(SAN)的结构示意图;图2是虚拟存储设备的示例结构示意图;图3是在其之间将图2的存储块进行数据条分割的图1所示的存储设备阵列的示例结构示意图;图4是示出当向虚拟存储设备写入时由存储工具发起的写入操作的各组成部分的方框图;以及图5是示出用于配置图1的存储工具以向图2的虚拟存储设备提供数据带对齐写入操作的方法的流程图。
具体实施例方式
图1是本发明优选实施例中的存储区域网(SAN)102的结构示意图。SAN102包括交换机106,其中,交换机106包括存储工具1062。在本优选实施例中,存储工具1062是IBM TotalStorage虚拟化引擎。存储工具1062包括存储器10622、数据带大小属性10624以及数据带对齐属性10626。在本优选实施例中,存储器10622是高速缓冲存储器。可选地,存储器10622是输入缓冲器或输出缓冲器。数据带大小属性10624和数据带对齐属性10626是存储工具1062的配置参数。SAN 102将主机104连接到RAID存储系统108。在本优选实施例中,主机104是计算机系统。RAID存储系统108包括RAID控制器1082和存储设备阵列1084。在本优选实施例中,存储设备阵列1084是磁盘阵列。RAID控制器1082使用数据条分割来将数据分散到存储设备阵列1084上。RAID控制器1082还为存储在存储设备阵列1084上的数据维护奇偶信息。使用这些技术,RAID控制器1082提供对作为单个虚拟存储设备的存储设备阵列1084的可靠访问。
图2是虚拟存储设备20的示例结构示意图。虚拟存储设备不是物理存储设备-相反,它表示通过RAID控制器1082提供给SAN 102和主机104的存储设备阵列1084。虚拟存储设备20包括存储块202、204、206和208的顺序列表,它们均是存储固定数据量的存储单元。存储块202、204、206和208各自具有存储容量,表示它们可以存储的数据字节数,并且存储块202、204、206和208的每个的存储容量均相同。如图3所示和如下所述,存储块202、204、206和208由RAID控制器1082在存储设备阵列1084之间进行数据条分割。
图3是在其之间将图2的存储块202、204、206和208进行数据条分割的图1所示的存储设备阵列1084的示例结构示意图。存储设备阵列1084包括单独存储设备30、32和34。存储在虚拟存储设备20中的数据由RAID控制器1082在存储设备阵列1084之间进行数据条分割。数据带36包括分别存储在存储设备30、32和34上的数据条302、322以及奇偶数据条342。在本示例结构中,数据条302、322和奇偶数据条342均包含两个存储块。因此,虚拟存储设备20如下在存储设备阵列1084之间进行数据条分割存储块202和204存储在存储设备30上的数据条302中;并且存储块206和208存储在存储设备32上的数据条322中。另外,RAID控制器1082在存储设备34上维护奇偶数据条342。奇偶数据条342包括两个存储奇偶数据的存储块3422和3424。奇偶数据是由RAID控制器1082使用异或(XOR)逻辑运算器来算出的。存储在存储块3422内的奇偶数据是存储在存储块202中的数据与存储在存储块206中的数据的异或。存储在存储块3424内的奇偶数据是存储在存储块204中的数据与存储在存储块208中的数据的异或。在出现单个故障点例如存储设备30或32之一出现故障的情况下,可以使用奇偶数据条342来重新生成数据带36中的丢失数据条。
工作时,主机104可以与RAID存储系统108一起工作,从而主机104能够执行对虚拟存储设备20的输入和输出(I/O)操作。对虚拟存储设备20的I/O操作通过交换机106和存储工具1062来发生。交换机106将I/O操作引导到使用存储器10622对虚拟存储设备20执行数据带对齐写入操作的存储工具1062。当存储工具1062对虚拟存储设备20执行I/O操作时,RAID控制器1082将I/O操作转换成存储设备阵列1084上的I/O操作。RAID存储系统108和RAID控制器1082可以称作是由SAN 102中的交换机106和存储工具1062虚拟化。
图4是示出当向虚拟存储设备20写入时由存储工具1062发起的写入操作402的各组成部分的方框图。写入操作402包括要写入到虚拟存储设备20的数据单元404。写入操作402还包括数据大小参数406。数据大小参数406的值是要写入到虚拟存储设备20的数据单元404的大小的量度,并且可以表达为虚拟存储设备20的存储块数。写入操作402还包括块参数408。块参数408的值标识应向虚拟存储设备20的存储块202、204、206或208中的哪一个写入数据单元404。特定写入操作的数据大小参数406和块参数408的组合称作写入操作402的参数元组(tuple)。工作时,写入操作402使得数据单元404以块参数408所标识的存储块开始写入到虚拟存储设备20。本领域的技术人员应该熟悉,在向存储设备中的初始存储块写入大于存储块容量的数据单元的情况下,使用以初始存储块开始的顺序存储块集合来存储该数据单元。
为了让存储工具1062使用存储器10622向虚拟存储设备20提供数据带对齐写入操作,需要使用RAID控制器1082的适当数据带大小属性10624和数据带对齐属性10626配置存储工具1062。这些参数可以由存储工具1062通过分析向虚拟存储设备20的一系列写入操作的性能来确定,其中,每个写入操作均具有不同的参数元组。在本优选实施例中,这些写入操作是在RAID存储系统108另外空闲的时候发生的。
图5是示出用于配置图1的存储工具1062以向图2的虚拟存储设备20提供数据带对齐写入操作的方法的流程图。图5的方法由存储工具1062执行,并且涉及向虚拟存储设备20的重复写入操作。在步骤500,编译由多个参数元组构成的集合,其中,每个参数元组包括数据大小参数506和块参数508的不同组合。步骤502发起对参数元组集合中的各参数元组进行循环。在步骤504,对于每个参数元组,存储工具1062以该参数元组作为写入参数执行向虚拟存储设备20的写入操作。在步骤506,执行写入操作的性能测量并对此进行记录。在本优选实施例中,性能测量包括测量完成步骤504的写入操作所花的时间。性能测量可以记录到存储工具1062的存储设备如随机存取存储器(未示出)中。步骤508继续对各参数元组的循环。在步骤510,从每个写入操作的性能记录中确定性能最佳的写入操作。在本优选实施例中,性能最佳的写入操作确定为完成所花时间最少的写入操作。在确定性能最佳的写入操作中,识别对应的参数元组。随后,在步骤512,将存储工具1062配置成使得数据带大小10624的值设为性能最佳的写入操作的数据大小参数406的值,并且把数据带对齐10626的值配置成性能最佳的写入操作的块参数408。
根据性能最佳的写入操作的参数元组采用数据带大小10624和数据带对齐10626参数配置存储工具1062支持存储工具1062使用存储器10622作为高速缓冲存储器来执行数据带对齐写入操作。存储工具1062的数据带对齐写入操作将不会遇到读取-修改-写入问题,从而提高I/O性能。
作为示例,现在将针对下表给出的三个参数元组的集合来考虑图5的方法。

在步骤500,如表1所示定义参数元组Q、R和S的集合。步骤502发起对各参数元组的循环,以参数元组Q开始。在步骤504,存储工具1062采用参数元组Q作为写入参数来执行向虚拟存储设备20的写入操作。因此,发生写入操作,其中,在虚拟存储设备20的存储块204上写入三个数据块。现在参照图2,参数元组Q的写入操作导致数据写入到虚拟存储设备20中的存储块204、206和208中。该写入操作由RAID控制器1082转换成存储设备阵列1084上的写入操作。现在参照图3,参数元组Q的写入操作导致数据写入到存储设备阵列1084中数据条302的存储块204以及数据条322的存储块206和208。因此,不是整个数据带36被写入(存储块202未被写入),并且必须使用读取-修改-写入处理来更新奇偶数据条342以反映对存储块204、206和208的改变。更新奇偶数据条的后果是增大完成参数元组Q的写入操作所需的时间,从而降低在步骤506测量和记录的写入操作性能。在步骤508,循环继续到如下所述的下一个参数元组R。
在步骤504,存储工具1062采用参数元组R作为写入参数来执行向虚拟存储设备20的写入操作。因此,发生写入操作,其中,在虚拟存储设备20的存储块202上写入两个数据块。现在参照图2,参数元组R的写入操作导致数据写入到虚拟存储设备20中的存储块202和204。该写入操作由RAID控制器1082转换成存储设备阵列1084上的写入操作。现在参照图3,参数元组R的写入操作导致数据写入到存储设备阵列1084中的数据条302的存储块202和204。因此,不是整个数据带36被写入(存储块206和208未被写入),并且必须使用读取-修改-写入处理来更新奇偶数据条342以反映对存储块202和204的改变。更新奇偶数据条的后果是增加了完成参数元组R的写入操作所需的时间,从而降低在步骤506测量和记录的写入操作性能。在步骤508,循环继续到如下所述的下一个参数元组S。
在步骤504,存储工具1062采用参数元组S作为写入参数来执行向虚拟存储设备20的写入操作。因此,发生写入操作,其中,在虚拟存储设备20的存储块202上写入四个数据块。现在参照图2,参数元组S的写入操作导致数据写入到虚拟存储设备20中的存储块202、204、206和208。该写入操作由RAID控制器1082转换成存储设备阵列1084上的写入操作。现在参照图3,参数元组S的写入操作导致数据写入到存储设备阵列1084中的数据条302的存储块202和204以及数据条322的存储块206和208中。因此,写入整个数据带36并且由RAID控制器1082计算奇偶数据条342。由于参数元组S的写入操作没有遇到读取-修改-写入问题,因此在步骤506测量和记录的写入操作性能高。在步骤508,由于所有三个参数元组Q、R和S均被处理,因此循环终止。
在步骤510,根据各写入操作的性能记录确定性能最佳的写入操作。在本例中,参数元组Q和R的写入操作遇到读取-修改-写入问题,因此具有低性能。参数元组S的写入操作没有遇到读取-修改-写入问题,因此由于完成它所需的时间最少而是性能最高的写入操作。随后在步骤512,将存储工具1062配置成使数据带大小10624的值被设成性能最佳的写入操作的数据大小参数406的值,并且将数据带对齐10626的值配置成性能最佳的写入操作的块参数408。因此,将数据带大小10624的值设成四个块的大小,并且将数据带对齐10626的值设成虚拟存储设备20中的块202。
权利要求
1.一种具有存储器的设备,可与虚拟化RAID控制器工作,以通过测试多个I/O操作的性能特性来确定最佳I/O配置,其中,所述I/O操作的每一个均包括向RAID控制器写入数据块,并且其中所述I/O配置包括数据长度和数据对齐。
2.如权利要求1所述的设备,其中所述存储器是高速缓冲存储器。
3.如权利要求1所述的设备,其中所述存储器是输入缓冲器。
4.如权利要求1所述的设备,其中所述存储器是输出缓冲器。
5.如权利要求1所述的设备,其中所述性能特性是响应时间。
6.一种用于操作可与虚拟化RAID控制器工作、具有存储器的设备的方法,包括以下步骤执行多个I/O操作,其中所述I/O操作包括向RAID控制器写入数据块;测试所述多个I/O操作的性能特性;以及响应于所述测试步骤,设置后续I/O操作的最优I/O配置,其中所述I/O配置包括数据长度和数据对齐。
7.如权利要求6所述的方法,其中所述方法是在RAID控制器另外空闲的时候执行的。
8.如权利要求6所述的方法,其中所述存储器是高速缓冲存储器。
9.如权利要求6所述的方法,其中所述存储器是输入缓冲器。
10.如权利要求6所述的方法,其中所述存储器是输出缓冲器。
11.如权利要求6所述的方法,其中所述性能特性是响应时间。
12.一种计算机程序产品,包括存储在计算机可读存储介质上的计算机程序代码,当在数据处理系统上执行时,所述计算机程序代码指示数据处理系统执行如权利要求6所述的方法。
全文摘要
本发明涉及一种具有存储器的设备,可与虚拟化RAID控制器工作,以通过测试多个I/O操作的性能特性来确定最佳I/O配置。
文档编号G06F12/16GK1542600SQ20041000535
公开日2004年11月3日 申请日期2004年2月11日 优先权日2003年4月26日
发明者威廉·J·斯凯尔斯, 威廉 J 斯凯尔斯, C 兰金, 霍华德·C·兰金, 尼古拉斯·M·奥罗克, 斯 M 奥罗克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1