混合数据存储和重建系统以及用于数据存储装置的方法

文档序号:6415935阅读:252来源:国知局

专利名称::混合数据存储和重建系统以及用于数据存储装置的方法
技术领域
:本发明涉及数据存储装置。说得更具体一些,本发明涉及用于数据存储装置(诸如磁盘驱动器、磁带驱动器或光盘驱动器)的数据重建。
背景技术
:在计算产业中,众所周知有两种常规的计算机模型。第一种是主机计算模型,而第二种是群集(clustered)计算模型。在主机计算模型中,最终用户的传统的进展是购买一套起始的系统,并且当需要额外的处理能力时,就用较大的系统来替换起始的系统。在此循环中的各个时刻,会发生外伤性的不连续。例如,如果用户扩充起始系统,当他购买第二个升级的主机系统时,他可能需要从一种操作系统转换到另一种操作系统,或者甚至从一个卖主专有的体系结构转换到另一个卖主专有的体系结构。这些改变对于购买升级的机构,在金钱和雇员工时方面都需承担巨大花费。因此,在许多场合避免这种转换。此外,主机模型使得计算机装备的剩余的价值很低。于是,当用升级的系统替代起始系统时,系统替换往往导致投资资本基本上完全丧失。此外,较大的升级的系统的销售量要比较小的系统小。于是,每个典型地升级的新系统的计算成本要比先前的系统的计算成本高。在群集计算模型中,一台主机计算机被一群较小的基于标准的服务器替代。与主机模型相比这可以提供许多优点。由于此群可以作为只是单个系统出发,因此进入此群集模型的门限较低。此外,一般这些较小的系统销售量很大,使得计算成本较低。还有,这些系统是基于标准的,即,它们不呈现对专有体系结构的依赖。这就提供了可以从多个来源得到设备的能力,由此使得用户在每次后续的购买时可以选择最佳的替换设备。群集计算模型本身也呈现出另一些优点。通过只添加满足现有的和不久的将来的需要所需的额外资源量能够更精确地控制升级成本。此外,用户能从广泛的卖方中进行选择,而不涉及转移至或转换至一种新的体系结构。类似地,采用正确的体系结构,可能从来不需要转换至另一种操作系统。还有,群集计算模型也有缺点和问题。例如,群集计算模型在向群集系统以允许此群采取单个主机能进行的工作负荷的方式提供共享数据的能力方面遇到困难。例如,当前实施这样的群集模型极为困难,即,群中的每个服务器需要对相同的数据处理具体事项。某些应用的例子包括航空公司预约系统或财政机关全部的业务往来的清查。群集计算模型的第二个缺点只是缺少在管理存储于主机环境中的存储和数据方面的广泛的经验。这些经验已经包括在管理软件中,但在基于标准的群集环境中还没有得到。常规的磁盘驱动器还包括了这样的缺点,它与丢失操作系统信息有关。例如,常规的磁盘驱动器包含数以百万计的数据扇区。由于任何数目的不同原因,一个或多个扇区可能变得不可读出或有毛病。如果变得不可读出的扇区是操作系统用于特殊目的的一个扇区,则即使能够读出其整个其余部分,在磁盘驱动器中的整个磁盘空间也可能无法使用。例如,在个人计算机环境中,主引导记录、分区引导记录、文件属性表(FAT)或根目录可能变得不可读出或有毛病。这能够导致丢失磁盘驱动器的基本上所有的内容。常规操作系统没有能力来恢复丢失这些关键的文件系统管理数据的盘面中的所有可读的数据。这意味着用户的巨大损失,并且特别令人遗憾。因为丢失的数据是与操作系统相关的,而与存储在磁盘驱动器上的实际数据(它不能读出)很少或毫无关系。至今,任何在这些情形下的恢复数据的服务一般是极为麻烦的。这些服务一般需要把磁盘驱动器从其操作环境中移开,并且将它送至从事于恢复这些数据的服务的公司或服务提供者。提供这项服务不保证成功,并且对于后续的保密性不加保护,为此得放弃为保密目的而对磁盘驱动器的看管。本发明致力于这些问题和别的问题,并且提供胜过现有技术的其他优点。发明概要本发明得出一种用于数据存储装置的混合数据再现系统和方法。按照两种或多种冗余性方案之一,有选择地存储数据,从而按照具有较高冗余度的一种方案存储关键性的数据。附图简述图1是按照本发明的一个方面的与网络相连的存储系统的方框图。图2描绘按照本发明的一个方面的目标模型。图3-1是第一结构的方框图,其中,请求器访问在存储装置上的一个目标。图3-2是第二结构的方框图,其中,请求器访问在存储装置上的一个目标。图4是按照本发明的一个方面的磁盘驱动器的透视图。图5是描绘请求器访问目标的功能方框图。图6描绘按照本发明的一个方面划分的存储媒体的一部分。图7-1和7-2示出流程图,它描述按照本发明的一个方面的请求器访问目标。图8是流程图,描绘按照本发明的一个方面创建目标。图9是流程图,描绘按照本发明的一个方面打开和更新目标。图10是流程图,描述按照本发明的一个方面写至目标。图11是流程图,描绘按照本发明的一个方面为了只读而打开目标。图12是流程图,描述按照本发明的一个方面读出目标。图13是流程图,描述按照本发明的一个方面关闭目标。图14是流程图,描绘按照本发明的一个方面移去目标。图15是流程图,描绘按照本发明的一个方面创建一个分区。图16是流程图,描绘按照本发明的一个方面移去除一个分区。图17是流程图,描绘按照本发明的一个方面输出目标。图18是流程图,描绘按照本发明的一个方面得到目标属性。图19是流程图,描绘按照本发明的一个方面设置或修改目标属性。图20是流程图,描绘按照本发明的一个方面读取加锁属性。图21是流程图,描绘按照本发明的一个方面设置加锁属性。图22是流程图,描绘按照本发明的一个方面复位目标的加锁属性。图23是流程图,描绘按照本发明的一个方面得到装置关联。图24是流程图,描绘按照本发明的一个方面设置装置关联。图25是方框图,描绘按照本发明的一个方面实施的磁盘驱动器阵列。图26是方框图,描绘按照本发明的一个方面的目标磁盘驱动器。图27是方框图,描绘按照本发明的一个方面的一致校验(parity)磁盘驱动器。图28是流程图,描绘按照本发明的一个方面创建一致校验组。图29是流程图,描绘按照本发明的一个方面的写操作,其中,一致校验信息被更新。图30描绘按照本发明的一个方面的数据结构。图31是按照本发明的一个方面的使用嵌入位置信息的磁盘驱动器的方框图。图32是流程图,描绘示于图31的系统的操作。图33是方框图,描绘按照本发明的另一方面的使用嵌入位置信息的数据存储装置的另一实施例。图34是方框图,描绘按照本发明的一个方面实现混合数据重建系统的磁盘驱动器阵列。图35和36是流程图,分别对于面向块的数据和面向目标的数据进行混合数据重建方法的写操作。较佳实施例的详细描述图1是按照本发明的一个方面的数据存储系统100的方框图。系统100包括面向目标的数据存储装置110和112;文件服务器114;请求器116、118和120;以及互连器122。系统100表示一个与网络连接的存储结构,它能够用购自许多不同卖主的装备和软件构成,并且它作为一个单个的大型计算机系统呈现给用户。面向目标的存储装置110-112是完成系统100的数据存储功能的存储部件。存储装置110-112最好包括磁盘驱动器、廉价磁盘冗余阵列(RAID)子系统、磁带驱动器、磁带库、光盘驱动器、投币式自动电唱机(jukebox)或任何其他的能被共享的存储装置。存储装置110和112还设有至请求器116、118和120的输入/输出(I/O)通道连接件,这些请求器将访问装置110和112。请求器116、118和120是一些部件,诸如服务器或客户机,它们共享存储在装置110和112上的信息。请求器116-120最好也构造得直接访问在存储装置110和112上的信息。文件服务器114完成管理和保安功能,诸如请求证实和资源定位。在较小的系统中,最好不用专用文件服务器。作为替代,请求器116-120之一承担这项监视由文件服务器114执行的系统100的操作的功能和职责。此外,如果不需要或不想要由文件服务器114提供的保安和功能,或者性能的首要需要要求请求器组116-120直接与存储装置110和112对话,可把文件服务器114从系统100中去掉。在一较佳实施例中,互连122是一种物理的基础结构,在连接网络的存储系统100中的所有部件经过该基础结构互相沟通。在运作中,当系统100通电时,所有的装置最好或是互相或是对一公共参考点(诸如文件服务器114或互连122)识别它们自己。例如,在基于纤通道(fiberchannel)的系统100中,面向目标的存储装置110和112以及请求器116-120登录在系统的构造(fabric)上。在这样的实施中,系统110的任何部件(它想确定操作结构)能使用构造服务来识别所有其他的部件。请求器116-120从文件服务器114得知存储装置10和112的存在(请求器116-120能对存储装置110和112进行访问)。类似地,存储装置110和112得知在系统100中定位其他装置所需的信息的位置和必须用来调用管理服务(诸如备份)的地址。类似地,在一个较佳实施例中,文件服务器114从构造服务从得知存储装置110和112的存在。取决于特殊系统100的保安实施,请求器116-126(或它们中的任何一个)可以被拒绝访问系统100的某些部件。根据每个请求器可用的存储装置110和112的组,于是该请求器能够识别它可用的文件、数据库、和自由空间。与此同时,系统100中的每个部件最好对文件服务器114识别任何与其相关联的特定考虑。例如,任何存储装置级别的服务属性可以一次传送至文件服务器114,于是系统100中的所有其他部件从文件服务器114得知它们的属性。例如,某个特定的请求器116-120在启动后可能希望知道额外存储装置的引入。例如,当请求器记录在文件服务器114上时,可以提供这一属性。于是每当新的存储装置添加至系统100时,文件服务器114就自动地通知该特定的请求器。于是文件服务器114一般也可以向请求器传送其他重要特性(诸如存储装置是否为RAID5、镜象存储装置、等等)。按照本发明的一个方面,存储在存储装置110和112上的信息最好存储中图2中更好画出的系统中。每个存储装置110和112最好是面向目标的装置,它以这样的模式运作,其中,把数据作为目标124-126加以组织和存取,而不是作为扇区的有序序列。面向目标的装置110和112用目标文件系统来管理目标124-126,目标文件系统对于特定装置上的每个分区说明性地包括目标的一个单层列表。目标文件系统也称为平坦文件系统。存储在每个装置110和112中的存储媒体上的目标124-126最好是安置在装置110或112(它以面向目标装置模式运作)上的容量分配的最小可见单元。在这样一个存储装置上的目标包括与唯一的识别符相关联的一组有序的扇区。数据通过识别符以及在目标中的偏置而引用。当操作系统管理在这些目标结构中的文件和元数据(metadata)(而不是如在现有技术的体系结构中管理数据扇区)的同时,由存储装置110或112本身把目标定位和放置在存储媒体上。目标124-126由接口128存取,其中,目标暴露出可由请求器116-120调用的多个方法,以访问和处理在目标124-126中的属性和数据。于是,如图2所示,从一个请求器116-120发出一个请求130。在一较佳实施例中,请求器116-120是计算机系统或者是系统的群或网络中的一个单元,该单元为对包含目标124-126的存储装置采取行动而提交请求130。于是,请求器116-120可以是客户机和服务器。在任何一种情形中,由请求器116-126之一发出的请求130调用在接口128中的方法之一,如后文将要详细描述的,这又造成对一个或多个目标124-126的处理。图3-1和3-2是能够用来存取存储在存储装置110-112中的目标的两种不同结构的方框图。为简单起见,在图3-1和3-2中只画出单个请求器116和单个面向目标的存储装置110。当请求器116希望打开目标(诸如目标124-126)时,请求器116可以直接访问存储装置110,或者它需要从文件服务器114请求允许和位置信息,以访问在存储装置110上的目标。文件服务器110控制对存储装置110的存取的程度主要随系统100的特定实现的安全性要求而变。在图3-1示出的方框图中,假设系统100是安全的。即,没有要求对在请求器116和存储装置110之间传输的命令信息和数据进行保护。在这种实施中,仍然可以存在用于管理功能的文件服务器114,但不需文件服务器114来监视请求器与存储装置110的交互作用。在这样的实施中,请求器116处于直接在存储装置110上存取和创建目标的地位。于是请求器116能够打开、读出、写入和关闭目标,仿佛它们本来就附着于请求器116。在后文的应用中会更详细描述这些操作。然而,只是为了清楚起见,这里只提供简短的概述。为了读取存储装置110上的一个目标,请求器116最好首先读取这样的一个或多个目标,它们揭示在存储装置110上的逻辑卷名或分区,并且揭示如何开始搜索存储在其上的目标。然后请求器116打开并读取一个目标,它可以是一个根目录。根据这个目标,定位其它目标是直接的,并且是根据目录的内容的。请求器116重复这一过程直到定位出所需的数据。由目标识别符(目标ID)和目标内的位移引用数据。在示于图3-2的第二个实施中,需要保安。因此,把文件服务器114插入请求器116和存储装置110之间的输入/输出(I/O)链,达到需要的保护等级所需的程度。在一个较佳实施例中,请求器116必须首先向文件服务器114请求允许作一组I/O操作。于是文件服务器114(它可能为了额外的安全曾经拒绝向请求器116提供存储位置信息)通过返回足够的信息信任来自请求器116的请求,以允许请求器116直接与存储装置110联系。因为当存储装置110在文件服务器114上登录时,存储装置110最好被通知有关安全性参数,存储装置110最好不允许I/O请求,除非该请求是适当构造的,并且包括编码数据(它包括了来自文件服务器114的有效允许)。于是,过程以一种类似于对图3-1所描述的方式进行。然后,与每个命令相关联的有效载荷可以很不相同。例如,在需要保安的情形下(示于图3-2),在请求器116和存储装置110之间传送的命令和数据都可能是加密的。此外,最好必须将允许信息添加至从请求器116提供给存储装置110的命令参数中。由于在一个实施例中存储装置110和112能够包括硬盘驱动器,因此有必要简短讨论一下磁盘驱动器。图4是硬盘驱动器的透视图,该硬盘驱动器能够作为存储装置110。在磁盘驱动器110中,在一个壳体136内,多个磁盘132设置在主轴电动机组件134的轴颈部。每个磁盘132具有多条同心的圆形记录磁道,它们示意地用138标出。每条磁道138划分或多个分区(将对于图6详加描述)。通过访问一条磁道138中的一个特定的分区,可以将数据存储在磁盘132上,或从磁盘132上检索。最好地一个执行机构(actuator)臂组件140可旋转地安装在壳体136的一个角隅。执行机构臂组件140装有多个磁头万向架组件142,每个磁头万向组件装有一个带读/写磁头或换能器(未示出)的滑块,用于从磁盘132读出信息和在磁盘132上写入信息。音圈电动机144适用于精确地前后旋转执行机构臂组件140,从而在滑块142上的换能器沿一般地由箭头146指出的弧线在磁盘132的表面上移动。图4还以方框图的形式画出磁盘驱动器控制器148,用它以已知方式来控制磁盘驱动器110的某些操作。然而,按照本发明,磁盘驱动器控制器也用来实现与存储在磁盘132上的目标124-126的接口128。图5是当把磁盘驱动器110装在示于图1的系统100中时,它的一部分的方框图。在图5中,磁盘驱动器控制器148包括实现接口128的控制部件150。目标124-126存储在构成磁盘132的存储媒体上。请求部件152在请求器116-120上实现,并且构造来逻辑上表达调用接口128中的方法的请求。在调用了一个方法后,控制部件150执行某些任务,以用所需的方式处理被识别的目标。控制部件150返回一个事件,它能够包括与任何被识别的目标相关联的数据或属性。还可根据由请求器116-120调用的特定方法,返回该事件。为了使面向目标的装置110-112提供带有面向块的装置的操作系统传递的相同的功能,在装置110-112上的存储空间必须达到类似的可处理程度。于是,在一个较佳实施例中,提供了在存储装置110-112上的目标124-126(它们存储在其上)上层的组织层。在一较佳实施例中,面向目标的存储装置110-112将磁盘空间分派成一个或多个独占的区域,称为分区。将对于图6更详细地描述分区。在一个分区中,请求器116-120能够创建目标。在一个较佳实施例中,一个分区中的结构是一个简单的、平坦的组织。任何操作系统能把其自己的结构映射在这个组织上。图6画出在存储媒体(诸如磁盘132之一)上的存储空间的一部分。存储空间包括多个目标,诸如装置控制目标(DCO)154、装置相关目标联性(DAO)156和多个分区,这些分区标以分区0(也用标号158指出)、分区1(也用标号160指出)和分区N(也用标号162指出)。每个分区还包括多个目标,诸如分区控制目标(PCO)164。分区目标列表(POL)166和多个数据目标168(标为数据目标0-数据目标N)。与每个目标相关联的是一组属性。按照本发明的一个方面,提供了一个存取控制属性,它由设置属性(SetAttribute)方法设置(将在后文详加讨论),并且提供了使访问特定目标受控的方法。通过改变存取控制属性的版本号(versionnumber),拒绝或给予某些请求器116-120对特定目标的访问。群集(clustering)目标是这样属性,它指出该特定目标是否应该合乎要求地放置得靠近存储系统中的另一个目标。复制(cloning)属性指出,特定目标是否通过复制存储系统中的另一个目标而创建。一组规模(size)属性确定特定目标的规模特性。例如,规模属性的组包括这样的信息,它指出在目标内写的最大偏移、分配给目标的块数、用于在目标内存储数据的块数和在目标内每块的字节数。一组时间属性指出何出创建目标、修改目标中的数据的最后时间以及修改在目标中的属性的最后时间。目标最好还包括这样一组属性,它们确定修改文件系统中任何数据的最后时间和修改文件系统中任何属性的最后时间。为了指出任何给定目标的其他参数、特性或特征,还可以提供其他的属性。每个目标还与一个目标识别符相关联,该目标识别符由特定的存储装置110-112选择,并且响应于创建目标的命令而返回至请求器116-120。识别符最好是一个规定长度的不带符号的整数。在一个较佳实施例中,识别符的长度默认为由特定的存储装置110-112规定的大小,或者能设置为装置属性。此外,在一个较佳实施例中,为公知的目标、特殊使用和其他希望进行的特定功能保留预定的识别符子组。图6指出,存储媒体一般包括时常具有特定的目标识别符的公知的目标。在某些情形中,这些公知的目标存在于每个装置之上或在每个分区之中。例如,一个公知的目标是装置控制目标154,它最好包含由每个装置110-112保留的属性,并且它与装置本身有关,或者与装置上的所有目标有关。由“设置属性”(Set_Attribute)方法(该方法在后文描述)保留属性。在一个较佳实施例中,每个装置110-112有一个装置控制目标154。表1描述一组值得推荐的装置控制目标(DCO)属性。表1<tablesid="table1"num="001"><table>类型名称字节语义安全性时钟8单调计数器主密钥8主密钥,控制装置密钥装置密钥8装置密钥,控制分区密钥保护等级1确定保护选项分区分区计数1装置上的分区数装置属性目标属性8确定与装置上所有的目标相关联的性质</table></tables>在一个较佳实施例中,DCO属性包括时钟,它只是一个单调计数器;包括加密密钥的主密钥或者控制装置上所有其他密钥的其他主密钥;以及装置密钥,它控制分区密钥,并且可以用来锁定分区。属性还包括保护等级密钥,它识别预定的保护等级并且具有相关联的保安方针;分区计数,它确定装置上的分区数;以及目标属性,它确定与正在访问的特定装置上的所有目标相关联的性质。为了合适地管理跨越多个存储装置110-112的目标,每个存储装置110-112最好也包括一个装置相关联目标156,它规定各个装置110-112之间的相关联性。例如,如果存储装置110和112是装置的镜象对,或者是一个阵列组的部件,则装置相关联目标156识别这种关系。表2示出装置相关联目标156的一些值得推荐的属性。表2<tablesid="table2"num="002"><table>名称字节语义相关联性识别符2此组的唯一的ID相关联性类型2相关联性类型成员表n相关联性识别符2相关联性类型2成员表n</table></tables>这些属性最好包括相关联性识别符,它是相关联的装置的每个给定组的唯一的识别符。属性最好还包括相关联性类型,它确定装置之间的相关联性的类型(例如,镜象对、RAID5、等等)。属性最好还包括成员表,它只是识别装置110-112,它们是上述相关联性的成员。在存储装置110-112上的每个分区158、160和162最好还包括分区控制目标164,它包含了单个分区的性质。目标164最好不仅描述了该分区,而且描述属于该分区中的所有目标的任何目标属性。每个装置110-112最好包括用于在装置上确定的每个分区的一个分区控制目标164。虽然图6描绘了存储在每个分区中的分区控制目标,但情形不必总是如此。分区控制目标可以不存储在分区中,而存储在其上方的平坦文件系统中。表3指出最好包括在分区控制目标168中的多个属性。表3这些属性最好包括主密钥,它确定用于整个分区的加密密钥,并且能够用来设置当前工作密钥。属性最好还包括当前工作密钥和先前工作密钥,最好用它们来对命令和数据消息加密和解密。分区控制目标164最好还包括目标属性,它与指定分区中的所有的目标相关联。图6还画出,每个分区最好包括分区目标列表166,它是当在存储媒体上创建一个分区时,由控制部件150建造的一个目标。分区目标列表166最好在每个分区中具有相同的识别符,并且组成引导在存储媒体上实施的目标文件系统的出发点。表4示出最好与每个分区目标列表相关联的属性列表。表4如表4所示,对于驻留在该分区中的所有目标,目标最好包括目标识别符(目标ID)列表,以及分派给每个目标的用户空间的卷大小。由请求器使用目标识别符,以打开、读出、写入和关闭目标。此外,通过在分区目标列表中设置用户数据属性,用户最好能够对每个目标ID分派用户空间。在分区目标列表166之后,每个分区最好包括多个数据目标168。根据数据存储系统的特定实施,每个数据目标168最好包括一个或多个在表1中设置的属性,并且能够包括附加属性。面向目标的存储装置110-112最好支持请求,以向请求器116-120提供数据或者为其存储数据。此外,在现有技术系统构造中,存储装置110-112最好承担对可能已在其他部件部件处(最可能在操作系统中)实行的其他功能的责任。最好由装置110-112自己来完成空间管理以及保持与在装置110-112上的目标相关联的属性。最好通过调用由接口128支持的方法来完成这些功能,接口128是由在每个存储装置110-112中的控制部件150实现的。在说明书的后文中会详述能调用的多种方法。然而,为了便于更好地理解这些方法,图7-1和7-2提供了流程图,它画出了按照本发明的一个方面对面向目标的文件系统的引导,可以相信,在详述后面给出的方法之前讨论图7-1和7-2,将有助于理解本发明。从方框170延伸至204的图7-1和7-2示出在存储装置110-112之一的特定分区中寻找目标。首先,请求器116在装置控制目标154中得到装置属性。这由方框172指出。调用Get_DCO_Attributes(得到装置控制目标属性)方法使得控制部件150返回存储在装置控制目标154中的属性。这由方框174指出。然后请求器116根据从装置控制目标154返回的属性选出给定的分区。这由方框176指出。如方框173指出的那样,一旦请求器116选出了分区,请求器116就调用Get_DAO_Attributes(得到装置相关性目标属性)方法。这使得控制部件150从存储在存储媒体110上的装置相关联媒体156得到属性。然后控制部件150把装置相关联属性返回至请求器116,如方框175指出的那样。根据装置相关联属性和装置控制属性,请求器116选出一个分区来询问。这由方框176指出。然后请求器116调用Get_PCO_Attributes(得到分区控制目标属性)方法,这将使得控制部件158得到在分区控制目标164中找到的属性,分区控制目标164与要由请求器116询问的特定的分区相关联。这使得控制部件150得到并且返回分区控制目标属性。这由方框178和180指出。如果在选出的分区中的目标不是请求器所关心的目标,则请求器选择另一个分区,如方框182和176所指出的那样。然而,假设请求器已经找到了所关的分区,于是请求器对于选出的分区调用Get_PCO_Attributes(得到分区目标列表属性)方法,如方框184所示。此方法使得控制部件150从与选出的分区相关联的分区目标列表166得到属性。然后把这些属性提供给请求器116,如方框186指出的那样。接着,请求器调用Open_Read_Only_POL(打开只读分区目标列表)方法。这由方框188指出。如后文要详细讨论的,控制部件150得到存储在分区目标列表166中的与选出的分区相关联的数据,但修改在该目标中的一个属性,以指出正在只读的基础上提供数据,从而数据不能修改或扩展。这由方框190指出。然后请求器调用Read_POL(读出分区目标列表)方法,它使得控制部件150提供选出分区中的目标的列表,供请求器116审查。这由方框194指出。在选出的分区中选出所要的目标后,请求器116调用Close_POL(关闭分区目标列表)方法,它使得控制部件150关闭分区目标列表。这由方框196指出。在对于所要的一个或一些目标发现了目标ID之后,于是请求器116调用Open_xxx_Objectx(打开xxx目标x)方法。xxx指出根据请求器所要的特殊的数据处理。而由请求器调用的一种特定的打开方法。Objectx指出来自分区目标列表的目标ID,该分区目标列表识别要由请求器处理或访问的目标。例如,xxx指示可以代表Open_Update(打开更新)操作,或Open_Read_Only(打开只读)操作。这些将在后文讨论,而这一步骤由方框198指出。然后请求器对由控制部件150返回的目标作所要的处理。后文将讨论能用来处理目标的各种方法。这由方框200指出。最后,一旦请求器完成所要的目标处理或访问,请求器116就调用Close_Objectx(关闭目标x)方法,它也将在后文详述,而运作该方法以关闭由请求器116访问的目标。图8-24是流程图,画出能由请求器调用的各种例示的方法,以完成对存储在面向目标的存储装置(诸如装置110)上的目标所要的功能和所要的处理。图8是流程图,具体画出Open_Create_Object(打开创建目标)方法。当请求器116调用此方法时,如方框208指出的,控制部件150创建一个新的目标ID并且将这个目标ID输入与特定的分区(目标将在其中创建)相关联的分区目标列表。这由方框210指出。然后通过分派与目标相关联的块数等等,以及通过修改目标属性以指出目标创建时间和设置在表1中列出并且与目标相关联的其他属性,控制部件150创建一个新的目标。这由方框212指出。接下来,控制部件150返回请求状态以及刚创建的目标的新的ID。这由方框214指出。除了只是创建一个目标之外,请求器116还能够规定许多可选项。例如,在一个较佳实施例中,请求器116能够规定目标是否由口令保护、目标是否加密、某些质量服务门限(例如,目标是否备份)、加锁特性(例如,目标是否要由目标锁以及任何其他的锁(诸如分区锁和装置锁)锁定)、存取控制版本、镜象或其他备份支撑(它将使得所有的更新要在另一个目标上生成镜象,或用规定的其他方法备份),以指出将以规定的最小规模为单位分派空间以及设置冲突(collision)特性(诸如在UNIX型系统中的写入)。请求器116为调用此方法而向控制部件150提供的特殊的信息包括系统中的允许信息(这些系统为保安而需要此信息)、要在其中创建的装置的分区、以及上面提代的任何可选项。在一个例示的实施例中,作为响应,控制部件150返回在装置上可用的容量、请求的状态、以及新的目标的ID。还应该注意,能够调用这个方法的一个特例,它包括与一个目标相关联的所有数据。在此情形中,能够调用这样一种方法,它能创建目标、写入目标和关闭目标。图9是流程图,示出Open_Update_Objectx(打开更新目标x)方法。当请求器116调用此方法时,如由方框220指出的,这允许请求器116读出和写入规定的目标。它还提供目标的长度的扩展。当调用此方法时,控制部件150在规定的目标中设置一属性,以指出正在使用该目标。请求器116提供允许信息、包含该目标的分区ID、要被访问的目标的识别符、要采取的行动的类型(诸如更新或写入)以及上面提到的任何可选项。作为响应,控制部件150返回请求状态和规定目标的长度,以及请求器116可用的剩余容量。图10是描绘Write_Objectx(写目标x)方法的流程图。当请求器116调用此方法时,如方框242指出的,这使得控制部件150在规定的位置处在指定的目标中写入至规定数据的块。写入方法也能调用其他方法。例如,如果对于要访问的装置110-112要求一致校验支持,则写入可自动地调用“异或”方法(它对要写入的数据进行“异或”操作),而一致校验数据要被写至一个或多个预先规定的一致校验装置。为了调用此方法,请求器110提供允许信息、目标识别符、分区ID、在目标内要写入的块的起始位置、要写入至目标的块数、可选项信息、以及要写入的数据。一旦调用此方法,控制部件150就用提供的规定数据修改规定的目标。这由方框244指出。然后控制部件150修改规定的目标中的必要属性(诸如目标长度、与目标相关联的时间戳记、等等)。这由方框246指出。然后如果有需要,控制部件150修改其他目标的必要属性(诸如分区目标列表)。这由方框248指出。然后控制部件150返回请求状态至规定的请求器。这由方框250指出。图11是描绘Open_Read_Only_Objectx(打开只读目标x)方法的流程图。当调用此方法时,控制部件150允许请求器116为了只读的目的而访问规定目标。于是,当调用此方法时,如方框230指出的,请求器提供允许信息、分区ID、目标ID、和可选项信息。然后控制部件150在规定目标中设置指出该目标正在使用的属性。这由方框232指出。然后控制部件150在目标中设置指出目标不能被请求器写入的属性。这由方框234指出。然后控制部件150返回请求状态和规定目标的长度。这由方框236指出。图12是描绘Read_Objectx(读出目标x)方法的流程图。当请求器116想要装置110返回来自规定目标的数据时,由请求器116调用此方法。请求器提供允许信息、目标ID、分区ID、要读取的块的起始位置、要读取的块数、以及任何其他所要的可选项信息。作为响应,控制部件150返回请求状态、正在返回的数据长度、以及响应于此方法正在返回的实际数据。这由方框256和258指出。图13是描绘Close_Ojectx(关闭目标x)方法的流程图。如方框264所指出的,当请求器116调用此方法时,请求器提供允许信息、目标ID、以及任何所要的可选项信息。作为响应,控制部件150修改在规定目标中的数据,如方框266指出的那样。此外,如果作为写至目标的结果的目标的任何改变不曾写至存储媒体,则在此时刻写入。控制部件150还更新目标x的属性,如方框268所指出的那样。例如,如果目标是一个新创建的目标,则其属性用创建时间和其他所需的属性信息来更新。此外,修改属性以指出在目标中的数据被修改的最后时间,数据长度(如果它被改变)和属性由控制部件150设置,它指出给定的请求器不再使用该目标。可选地,控制部件150也能更新与目标相关联的剩下的高速缓存信息,并且反映在目标属性中。这由方框270指出。例如,作出请求的规定的请求器116构造来通知存储装置110,对于关闭的目标,数据仍然存储在高速缓存中,或者不再存储在高速缓存中,存储装置110的操作系统能够对那些应用保持高速缓存信息,在这些应用中,目标将以迅速的顺序关闭和再次打开。然而,与此同时,存储装置110能够始终跟踪在接连冲突(Coherencycollision)的事件中需要告知系统100中的哪个部件,是否在同时应由另一个请求的请求访问此目标。然后控制部件150返回请求状态,如方框272指出的那样。图14是描绘Remove_Objectx(移去目标x)方法的流程图。如方框278所指出的,当调用此方法时,控制部件150采取必要的步骤从存储媒体中删除目标。这由方框280指出。然后控制部件150修改与分区(从该分区删除对象)相关联的分区对象列表,以反映出该指定的目标ID可供使用。这由方框282指出。然后控制部件150返回请求状态,如方框284所指出的那样。为了调用此方法,请求器116提供允许信息、分区ID、目标ID、以及任何所要的可选项信息。然后控制部件150返回请求状态,如方框284指出的那样。图15是描绘Create_Partitionx(创建部分x)方法的流程图,该方法能被请求器调用,如方框290所指出的那样,以在存储装置110上创建分区。应该注意,虽然Create_Partitinox方法把驱动器划分为一个或多个区域,但在存储媒体上的所有空间不必计及。此外,划分区域也能在磁盘上跨越不同的区域。在一个实施例中,用此方法以铺砌(tiling)结构创建分区,这些分区代表在装置的存储空间的真实划分。通过服务等级(诸如数据阵列),使用这种结构来划分空间。这些分区不能调整大小,但能移去和重新创建。按照本发明的另一方面,这些分区用作逻辑分区,以逻辑地组织目标而不是按照服务等级来管理空间。在此第二实施例中,可以动态地调整这些分区的大小。为了调用此方法,请求器提供允许信息、任何所要的可选项、分区ID、以及起始的空间分配(它识别要分配给被识别的规定分区的空间)。作为响应,控制部件150对于规定的分区分配在存储媒体上的空间,如方框292所指出的那样。然后控制部件150建立分区控制目标和分区目标列表,如方框294和296所指出的那样。如上所述,部分目标列表不能移去,并且用作引导分区的目标的起点。然后控制部件150返回请求状态和分区映射(它描述已经作出的划分方式)。这由方框298指出。图16是描述Remove_Partitionx(移去分区x)方法的流程图,为了调用此方法,请求器116提供允许信息、可选项信息、以及识别要被移去的分区的分区ID。这由方框304指出。作为响应,控制部件150对先前与分区相关联的空间重新分配,如方框306指出的那样。然后控制部件150移去在分区目标列表(它与要删除的分区相关联)中的所有目标,删除分区目标列表并删除分区控制目标。这由方框308、310和312指出。然后控制部件150返回请求状态和示出对分区作出的改变的分区映射。这由方框314指出。按照本发明的一个方面,把数据管理方针通知每个存储装置110-112,从而存储装置能够相互独立地动作,以执行管理方针。这提供了明显的优点,即,它不仅导致较少的人为干预而且导致更可预测的和适时的管理控制。例如,在存储装置110-112上的数据可能希望每周作备份。常规的系统一般在周末的空闲时间作此备份,从而在工作日期期间系统的可用性不受妨碍。然而,在系统容量增加的同时,可用性的窗口已逐渐收缩。于是打算找出一段足够长的时间来中断系统以备份可能是兆兆字节的数据已经变得非常困难。于是,按照本发明的一个方面,通过根据分配给目标的属性而对其采取行动,一当一个目标达到对其备份的正确状态,面向目标的存储装置110-112就能通知备份功能。还有,备份所有的文件可以分散在一段较长的时间内(在此期间内其他的仍在更新)进行,而不影响数据的完整性。可以由面向目标的存储装置110-112调用动作的其他的属性例子包括加密、压缩、改版本(versioning)和一致校验冗余度。在这些例子的每个例子中,存储装置110-112最好只需要告知关于规定目标或目标组的方针。于是,装置本身能够完成功能或通知指定的代理者提供服务。例如,在存储装置110-112上本身能进行压缩和加密。因此,所需通知装置的唯一事情是需对一个目标进行压缩和加密。对于由代理者进行的管理功能,不仅必须把管理功能的方针通知存储装置,还要把对进行这项功能的代理者的标识通知存储装置,从而在进行此项功能时,存储装置能够访问该代理者。按照本发明的一个方面,在目标之间建立相关联性,从而能够识别具有相同属性或具有依从关系的目标。例如,假设一个数据库包括6个文件或目标,或者是在所有的文件或目标都关闭或者是指定为其他所有的文件或目标都依赖于它的一个目标关闭之前,不能备份任何一个文件或目标。为了管理目标之间的此类关系,可能需要文件服务器114。此外,本发明还建立装置之间的依从关系,如在成阵列的一致校验组的情形中那样。通过可以建立一些组,其中,一个装置或目标确信的其余成员具有相同的基本性质,则组的管理效能更高和更有用。图17-24是一些流程图,它们说明了通过调用由存储装置上的目标揭示的方法而能够完成的管理功能。调用这些方法使得控制部件150和/或有关的控制部件采取步骤,以进行与被调用的方法相关联的管理功能。图17是说明Export_Objectx(输出目标x)方法的流程图。如方框320指出的,通过提供允许信息、可选项信息、目标ID、对象装置ID和对象分区ID,请求器116调用此方法。输出方法使得存储装置110-112能够根据在与一给定目标相关联的属性中表述的规则采取行动。例如,能够使用该方法来启动至其他装置的目标备份或支持改版本。当调用Export_Objectx方法时,如方框322指出的,控制部件150从存储媒体得到规定的目标。然后控制部件150在由请求器116规定的对象装置处调用Open_Create(打开创建)方法。这由方框324指出。然后控制部件150在对象装置处调用写入方法提供规定目标的数据和属性。这由方框326指出。然后控制部件150在对象装置处调用Close(关闭)方法,在已写入至对象装置后关闭在对象装置上的目标。这由方框328指出。最后,控制部件返回请求状态连同目标的新的目标ID(它已写入至对象装置)至请求器。这由方框330指出。由控制部件150实现的接口128也支持允许请求器得到用于审查的目标属性和设置目标属性的方法。图18和19是分别说明相应的Get_Objectx_Attributes(得到目标x属性)方法和Set_Objectx_Attributes(设置目标x属性)方法的流程图。如方框336指出的那样,一当调用图18中描述的方法,就使得控制部件150从规定的目标得到属性。在一个例示的实施例中,请求器提供允许信息、目标ID(或目标ID的列表)、以及可选项信息。然后控制部件150得到与目标ID(或目标ID列表)相关联的属性,并且将那些属性连同请求状态返回至请求器。这由方框338指出。如方框344指出的那样,通过请求器能够调用在图19中描绘的Set_Objectx_Attributes方法,以提供允许信息、目标ID、和可选项信息至控制部件150。然后控制部件150用由请求器提供的信息修改规定目标的属性,并且返回请求状态连同规定目标的属性(已修改),这由方框346和348指出。按照本发明的另一方面,目标能够被加锁使得一旦目标被拥有锁(它已放置在目标上)的服务器解锁,才能对目标访问,在一个较佳实施例中,能够将目标锁定在目标层次、分区层次或装置层次上。加锁机构提供了解决服务器间的访问方案。在一个较佳实施例中,使用这些锁以调度进发的更新以及在维护功能期间禁止访问。图20、21和22是说明加锁方法的流程图,它们可视为Get_Attribute和Set_Attribute方法的例子。然而,对于那些方法的这些特例给出了额外的细节,从而在请求器群之间共享数据时可使用它们。图20是描绘Read_Lock_Attributes(读出锁属性)方法的流程图。如方框354指出的那样,通过提供来自请求器116的允许信息、目标ID、分区ID或装置ID、锁参数、以及任何所要的可选项信息至控制部件150,能够调用此方法。响应时,控制部件150确定规定的目标是否具有设置的锁。控制部件150然后返回拥有锁的请求者的请求状态。这由方框356指出。图21是描绘Set_Lock_Attribute(设置锁属性)方法的流程图。如方框362指出的那样,通过提供允许信息、目标、分区或装置识别符信息、锁信息和可选项信息,请求器能够调用此方法。当调用此方法时,控制部件150检查与经识别的目标相关联的锁。这由方框364指出。然后控制器部件试图用请求器的标识来进行加锁或解锁操作。这由方框366指出。如果请求操作的请求器是锁的拥有者,则将完成操作,如果不是,则将不完成操作。在任何情形下,控制部件150返回请求状态连同拥有锁的服务器的ID。这由方框368指出。图22是描绘Reset_lock_Attribute(复位锁属性)方法的流程图。在拥有锁的服务器不再行使职责的事件中若打算对锁复位,就使用该功能。如方框374所示,通过提供允许信息、目标、分区或装置识别符信息、锁参数、以及任何所要的可选项信息,能够调用此方法。在响应时,如方框376指出的那样,控制部件150对规定目标、分区或装置加锁,并且返回请求状态连同拥有锁的服务器的标识。这由方框378指出。图23和24是描绘Get_Device_Association(得到装置相关联性)方法和Set_Device_Association(设置装置相关联性)方法的流程图。这些方法确定或询问装置110-112之间的关系。这样的关系的一种例示的实施包括把存储装置110-112之一识别为第一组装置的主装置,而其余的是该组的从属成员。该组的第一或主装置担负着把组属性的改变传递给其它成员的任务。如果该组的第一或主装置没有提供属性设置,则其他成员可拒绝这些属性设置。存储装置110-112为了实现这些功能,它们具有进行自检的能力。这允许装置检查自己,以确定它们是否包括在一个较大的装置组中的成员关系中。在图23中,描绘了Get_Device_Associations方法。如方框384指出的,通过提供允许信息和可选项信息,能够调用此方法。在响应时,控制部件150返回请求状态以及请求的相关联性(装置是其一员),这由方框386指出。图24是描绘Set_Device_Assocations方法的流程图。如方框392指出的那样,通过提供允许信息、可选项信息以及确定相关联性的成员和属性的列表,能够调用此方法。在响应时,控制部件150修改包含在存储媒体中的装置相关联性目标156,如方框394指出的那样。修改装置相关联性目标,以包括由请求器提供的属性,并且包括时间戳记,以指出目标属性何时进行过最后一次修改,等等。如方框396指出的那样,控制部件150返回请求状态。上述允许信息例示性地允许文件服务器114选通访问存储装置,其做法是控制某个请求器116-120,文件服务器114把从存储装置110-112得到响应所需的凭据(credential)给了该请求器。文件服务器114还命令存储装置110-112,它们必须只尊重I/O请求(它们依附于安装安全方针)。由Set_Object_Attributes方法把构成允许保安能力的基础的密钥传送至存储装置110-112。如果对于存储装置110-112设置合适的安全等级。就可使该存储装置对于安全依从性检查每个I/O命令。然而,如上所述,某些应用不需使用保安性。此外,如果一个特殊的服务器群具有位于另一个物理设备中的一些装置,就可能希望对于与位于远处的装置通信,(但不是对于与本地通信)定义较高的保安等级。这允许对于位于远处的请求器或服务器使用保安性,但避免性能损失(这种性能损失将与对于本地请求器或服务器使用这种保安性相伴随)。此外,每个存储装置110-112最好包括可读取的单调递增的时钟,它将用于时间戳记安全消息和目标。在一个例示的实施例中,在系统范围的基础上使得用于各种装置的时钟同步。在另一个例示的实施例中,文件服务器114适应于从存储装置到存储装置间的差异和不同的值。于是,可以看出,本发明提供了面向目标的存储装置(诸如磁盘驱动器),它具有胜过常规的存储装置的显著优点。面向目标的存储装置显著地改进了群集体系结构。例如,通过以面向目标的方式存储数据,能由存储装置本身来管理数据。目标向存储装置提供有关其驻留数据的足够资料,从而能够担当它们管理其自身空间的职责。此外,当装置具有关于哪些构成了逻辑实体的信息时,就能更智能地控制数据共享。例如,如果两个系统共享存储在面向块的装置上的数据,则必须控制对于进发访问的元数据活动。相反,在面向目标的装置中,大部分元数据活动对于访问它的系统来说,是不透明的。于是,系统只需关心对用户数据的存取冲突。此外,由装置自己进行空间管理消除了任何竞争或混乱,而当两个系统试图同时管理同一存储装置上的空间时可能会出这种情况。此外,通过目标的抽象使异种机计算容易得多,面向目标的存储装置提供了这样的能力,从而至少具有操作系统能解释的组织。此外,通过使用面向目标的存储装置,有多个原因使得群集系统中的性能提高。例如,元数据不需离开装置本身,这就免除了一定数目的I/O操作。此外,装置知道在任何时刻哪些目标是打开或关闭的,并且能够使用这个信息以更有效地高速缓存数据。因为装置知道正在被读取的目标的布局,因此预取也能有效得多。存储装置能够更有效地确定顺序访问的方式。装置中的高速缓存器也能一次对于多个访问它的系统保存元数据。此外,装置能参与服务质量的判定,诸如在哪里放置数据更合适。如果装置有分派存储的职责,则一般它只能做这件事。相反,几乎没有一个操作系统能在磁盘驱动器上用区域来分派数据。于是,向磁盘驱动器本身提供这种能力就提高了其性能。也能在安排为驱动器阵列的磁盘驱动器中实现本发明。由于存储在磁盘驱动器阵列上的信息时常比磁盘驱动器本身更有价值,因此时常把驱动器阵列称为廉价磁盘的冗余阵列(RAID)。已知数种类型的RAID系统或RAID层次。例如,第一层RAID的特征是提供镜象磁盘,如上所述。在第五层RAID中,要存储至阵列的数据以及一致校验或冗余数据在组中的所有的磁盘驱动器中散布。第五层RAID对所有的磁盘(包括校验磁盘)分发数据和校验信息。其他RAID层次(例如,层次2-4)在名为“具有阵列支持控制器和接口的磁盘阵列”的No.5,617,425美国专利中有详细描述。图25-29描绘了按照本发明的一个方面进行的写入操作,其中,数据作为目标存储在阵列中的磁盘驱动器上。在图25描绘的实施例中,示出文件服务器114、请求器(或主计算机)116和互连122连至磁盘驱动器阵列,它包括对象驱动器402和一致校验驱动器404,它们构成存储装置(诸如存储装置110-112)。对象驱动器402保存有一个要对其写入的目标,或者它的一部分,而一致校验驱动器404保存有与存储在对象驱动器402上的对象目标相关联的一致校验信息。在图25中,驱动器阵列作为RAID5阵列实现,其中,跨过组中所有的驱动器分布数据和一致校验。因此,驱动器402是对象驱动器而驱动器404是一致校验驱动器,只对于此写入操作。换言之,对象驱动器402也保存有一致校验信息而一致校验驱动器404也保存有数据。然而,对于下述的单个写入操作,驱动器402是对象驱动器而驱动器404是相应的一致校验驱动器。也应当注意,除了RAID层次5之外,本发明也能用其他的RAID层次来实现。在这些RAID系统中,本发明对于熟悉本领域的人而言将是显而易见的。在图25中,对象驱动器402和一致校验驱动器404通过纤通道(FiberChannel)接口或者其他合适的接口(诸如其他的串行接口)互相连接。图26和27分别描绘对象驱动器402和一致校验驱动器404。每个驱动器包括控制部件150以及一个或多个磁盘132。每个磁盘还包括读/写电路406(诸如上面描述的数据磁头)和一个“异或”(XOR)电路。对象驱动器402包括磁盘空间410,它存储要被写入的对象目标。一致校验驱动器404包括磁盘空间412,它存储相应的一致校验目标。下面对于图28和29更详细地讨论驱动器402和404的操作。常规的磁盘阵列实现的小型计算机系统接口(SCSI)XOR(“异或”)命令使得磁盘驱动器执行防止驱动器失效而实行的一致校验保持所需的位处理。这些命令要求主计算机(或者请求器)具有对磁盘的扇区存取,从而对于写至一个磁盘驱动器的任何扇区,在包含一致校验信息的另一个磁盘驱动器上的相应的扇区能被合适地更新。然而,上述面向目标的磁盘器在主计算机和磁盘驱动器上的实际存储扇区之间引入了一个抽象层(abstractionlayer)。具体地说,磁盘驱动器把磁盘空间作为目标管理,从而主计算机(或请求器)不访问基本的扇区寻址方案。磁盘驱动器自己负责空间管理,使得请求器或主计算机不可能把写在一个磁盘驱动器上的数据一部分与在另一个磁盘上的位置相关。于是,请求器不知道在一个磁盘驱动器上的已经写入的块的地址,并且它不能计算相应的一致校验地址。如上所述,在面向目标的磁盘驱动器上使用常规的XOR(“异或”)功能如果不是不可能的话,那也是极为困难的。因此,本发明提供了一种称之为Define_Parity_Group(定义一致校验组)的方法,在构成一致校验组的一组磁盘驱动器的每个驱动器处调用该方法。此方法完成两件事情。第一,它提供足够的信息,使得能够引用标准的Write_Objecct(写入目标)方法来完成作为在常规的驱动器阵列中基于扇区的XOR命令的相同的功能。它也使得要在组中的每个驱动器中创建的目标保存该特定驱动器对一致校验数据的共享。一致校验对象ID是公知的ID(对于每个驱动器知道),从而要更新一致校验信息的任何驱动器知道正确的目标识别符(它们对该识别符提出其请求)。对于图28详地描述Define_Parity_Group方法。首先,请求器(或主计算机)在一致校验组的每个驱动器中引用该方法。这由方框420指出。为了调用该方法,请求器提供许多事项如下1.构成一致校验组的驱动器的排序的列表。这可以包括(例示地)每个驱动器的编号和地址。2.用于计算一致校验的算法。在一种简单的例示性的实施中,对要写入的数据的块地址进行模算术运算。此算术运算得到一致校验驱动器地址(根据排序列表,从上述项目1得出)和在一致校验驱动器上的一致校验目标中的有关的块地址(它是包含所要的一致校验信息的一致校验目标的有关部分)。3.例示地以块为单位的在一致校验条(stripe)中的数据量。如果一致校验数据要在遍及每个驱动器的空间上散布,由此信息是分配的原子(atomic)单元。4.一致校验目标识别符。调用Write_Object(写入目标)方法以更新一致校验目标的驱动器将一致校验目标识别符发送给一致校验驱动器上的这个目标ID,此一致校验驱动器可如上述项目2提出的那样确定。还应该注意,也能实现多层一致校验(诸如两层一致校验)。于是,每个驱动器可以具有多至两个的一致校验目标。在一个例示的实施中,如果在具有两层一致校验的磁盘阵列中使用驱动器,则分派两个公知的目标ID,并由每个驱动器保留。存在第二个一致校验目标指出正在使用两层一致校验。5.一致校验目标分派方针。这指出是每个驱动器分派一致校验目标作为磁盘空间的单个连续的范围还是随同用户数据目标散布一致校验目标。于是,虽然一致校验目标和数据目标在图26和27中作为连续的磁盘空间示出,但这只是说明性的。应该注意,如果一致校验目标随同数据散布,则它仍能是预先分配的。响应于调用Define_Parity_Group方法,在一致校验组中的每个磁盘驱动器中的控制部件150计算一致校验数据所需的空间的百分数。这由方框422指出。根据在一致校验组列表中的磁盘驱动器数据确定一致校验目标所需的空间大小。例如,如果在列表中有9个磁盘驱动器,则每个驱动器必须为一致校验信息分配其1/9的空间。这个空间大小用公知的一致校验目标ID来识别,一致校验目标ID由请求器或主计算机在调用所述方法后提供。这由方框424指出。在一致校验组列表中的每个驱动器保存确定一致校验组的信息,从而磁盘驱动器每次通电或复位时,能够证实未曾连累一致校验组。于是,把信息存储在非易失性存储器中,如方框426指出的那样。由于已经创建了磁盘驱动器的一致校验组,并且由于已经在每个磁盘驱动器上分配空间以保存一个或多个一致校验目标,因此能够更新存储在一个或多个驱动器上的数据目标中的数据。图29是方框图,描绘按照本发明的一个方面的数据目标的更新,以及相应的一致校验目标的更新。为了更新数据,请求要更新数据的请求器116在一致校验组中的一个磁盘驱动器上调用上述Write_Object方法。在图25-27描绘的实施例中,请求器116在对象驱动器402上调用Write_Object方法。这由图26中的箭头428和图29中的方框430指出。为了调用此方法,请求器116例示性地提供一个识别要更新的目标的目标识别符、分块ID、要在目标内写入的块的起始位置、要在目标内写入的块数、可选项信息、以及要写入的数据。对象驱动器402知道,运行Write_Object方法必须包括更新与正在更新的目标相关联的一致校验信息。对象驱动器402知道这一点。因为它已经存储了在非易失性存储器执行Define_Panty_Group方法期间提供和产生的信息。为了更新一致校验信息,对象驱动器402完成多个步骤。首先,它从对象目标中的规定的位置读取老数据,并且将它连同要写至该位置的新数据提供给“异或”电路408。这由图29中的方框432和图26中的箭头434、436和438指出。接下来,对象驱动器402把老数据与新数据作“异或”运算,以得出中间一致校验信息。这由图29中的方框440指出。对象驱动器402在图26中的输出端442处提供中间一致校验信息。接下来,目标驱动器402把新数据写至对象目标410中的对象位置,于是更新了对象目标。这由图29中的方框444指出。然后,对象驱动器402自已在一致校验驱动器404上调用另一个Write_Object方法,以识别相应于刚更新的对象目标410的一致校验目标。这由图29中的方框446和图27中的箭头448指出。对象驱动器402能够用多种方法计算一致校验目标的对象位置。例如,对象驱动器402能够根据正在写入的块对象目标的相对扇区地址计算位置。相对地址被一致校验组中的驱动器数所除,以提供一致校验驱动器404上的一致校验目标中的相对地址。由在Define_Parity_Group方法中规定的算法确定一致校验驱动器地址。对象驱动器402于是构造Write_Object方法并且在一致校验驱动器404上调用它,以使用此相对地址识别一致校验目标412和在该目标中的适当位置。用举例的方式,为了计算要更新的驱动器404上的一致校验目标中的相对块,对象驱动由402能够使用下式B=INT(S/D-1)式1这里B是一致校验目标中的相对块;S是正在对象驱动器402处写入的相对的扇区地址;以及D是一致校验组中的驱动器数目。为了计算一致校验驱动器地址,对象驱动器402可以使用下式P=Mod(S/D-1)式2这里P是进入一致校验驱动器的一致校验组中的驱动器列表的位移(用于计算P的列表必须把对象驱动器402的地址除外)响应于此Write_Object方法,一致校验驱动器404理解命令为写至其一致校验目标,并且进行一致校验操作。这些操作包括读取老的一致校验数据,如图29中的方框450和图27中的箭头所指出的那样。然后一致校验驱动器404把老的一致校验信息与来自对象驱动器402的中间一致校验数据作“异或”运算。这由图29中的方框454和图27中的箭头456和458指出。“异或”运算的结果是更新写至磁盘132的一致校验目标的一致校验信息。这由图29中的方框460和图27中的箭头462和464指出。这样完全了一致校验目标的更新。图30是一个数据目标500(诸如示于图6中的那些)的更详细的图。按照本发明的一个方面,数据目标500包括许多部分,其中包括包含属性的部分502以及多个数据部分504、506和508,每个数据部分分别带有相关联的纠错码部分510、512和514。虽然示出纠错码部分510、512和514与相应的数据部分相邻,但在磁盘上不必用这种方式记录,如此表示只是为了方便。于是,按照一个较佳实施例,使用目标500的每个数据部分(以及事实上可能还有属性部分),用已知方式来产生纠错码(ECC)信息。当读回相应的用户数据,能够使用此信息来确定用户数据是否包含任何差错,并且(取决于所用代码)定位并纠正这些差错。在一个较佳实施例中,使用ReedSolomon码产生ECC信息。然而,能够使用任何合适的代码来产生ECC信息。在现有技术的磁盘驱动器中,如果一个扇区不可读取,并且该扇区由操作系统为了特殊目的而使用,则这基本上能使得整个磁盘不可读。例如,如果主引导记录、分区引导记录、FAT表、或者根目录变得不可读,则这能够造成丢失基本上整个磁盘内容。常规的操作系统面对丢失这些关键的文件系统管理数据没有能力来恢复磁盘面上的可读数据。因此,按照本发明的一个方面,在磁盘驱动器上的面向目标的数据组织使得磁盘驱动器负责保持基本文件系统结构(这在以前是操作系统的事)。按照本发明的一个方面,基本文件系统数据的冗余拷贝连同每个数据块(或数据部分)存储在其相关联的ECC部分。因为ECC部分已存储在磁盘上,把文件系统信息嵌入数据目标的ECC部分丝毫不会影响性能或用户容量。图31是描绘了在磁盘上记录信息之前文件系统信息如何与ECC信息组合或嵌入ECC信息之中的方框图。图31和图32还描绘了按照本发明的一个方面然后如何使用文件系统信息来重建文件系统数据。图31示出了编码器516、ECC发生器518、“异或”电路520、磁盘132和读/写电路406、ECC发生器522、译码器524和“异或”电路518。应该注意,编码器516、ECC发生器518、“异或”电路520、译码器524、ECC发生器522和“异或”电路526都能在磁盘驱动器上的控制部件156中实现,或者能单独实现。首先把用户数据从主计算机、请求器或文件服务器提供给编码器516。编码器516按照预定的编码算法编码(一般地实施算法用以降低差错率)。然后把经编码的用户数据提供ECC发生器518。ECC发生器根据经编码的数据用已知的方式产生ECC信息。产生的ECC信息将取决于所用的纠错编码方案的特殊类型。又将ECC信息提供给“异或”电路520。在输入端521处把文件系统数据也提供给“异或”电路520。在图31描绘的实施例中,文件系统数据是位置信息,它识别要把用户数据写在磁盘132上的位置。例如,在上述的面向目标的系统中,位置信息包括目标识别符,它识别用户数据所属的目标。位置信息还包括相对位置信息,它识别在被识别的目标内的相关联的数据部分的相对位置。于是“异或”电路520的输出提供其中嵌有(或种有)定位信息的ECC信息。对于包含由编码器516提供的经编码的用户数据的数据部分,把这个信息提供给读/写电路406并且作为相关联的ECC部分写至磁盘132。当从磁盘132读回信息(为了完成正常的读出操作)时,控制部件150通过提供所希望的位置信息至“异或”电路并且把该信息与ECC信息(它包含嵌入的位置信息)作“异或”运算而执行Read_Objeot功能。“异或”电路的输出端得到与正在读取的用户数据相关联的ECC信息。把这个信息提供给ECC发生器,它判定是否在经编码的用户数据中出现任何差错。如果没有,则把经编码的用户数据提供给译码器,在该处,把无差错的信息呈现给请求器或用户。如果出现差错,则控制部件150可能打算识别和纠正差错,这取决于所用的特殊的差错编码方案。另一种做法,控制部件150可以只提供差错标志,该标志指出数据包含有一个或多个无法纠正的差错。然而,如果系统信息(在给出的例子中是位置信息)已经丢失,则控制部件150以不同的方式运作。控制部件150使得在磁盘132上的数据被读取。这由图32中的方框528指出。把经编码的用户数据提供给译码器524和ECC发生器522。应该注意,ECC发生器522和ECC发生器518可以是采用合适的多路复用电路的同一个发生器。然而,为了清楚起见,在图31中把它们画成分开的部件。ECC发生器522根据经编码的用户数据产生ECC信息,如图32中的方框530指出的那样。把这个信息提供给“异或”电路526。ECC信息(它包含嵌入的位置信息)也从磁盘132读出,并且提供给“异或”电路526。这由方框532指出。与ECC发生器522那样,“异或”电路526与“异或”电路520可以是采用合适的多路复用电路的同一个电路。然而,为了清楚起见,把这两个电路分别示出。通过把由ECC发生器522提供的ECC信息和包含嵌入的位置信息的ECC信息作“异或”运算,在至“异或”电路526的两个输入中的ECC信息将互相抵消,导致只是位置信息的输出。这由方框534指出。能够把这个信息与由译码器524输出的用户数据连用,以重建已经丢失的文件系统信息。这由方框536和538指出。例如,使用从磁盘检索得的位置信息,以及与用户数据相关联的信息亦从磁盘读出,现在能够重建目标目录。按照本发明的另一方面,通过使用伪随机数(或伪噪声)发生器,能够使ECC发生器518产生的ECC信息随机化。图33是描绘这一实施例的方框图。图33所示的许多项目与图31所示的相似,而标号也相似。示于图33的方框图的运作基本上与图31所示的方框图的运作相同。然而,不是在输入端521处提供位置信息至“异或”电路,而是用位置信息作为种子由伪噪声(PN)发生器产生一个随机数。于是,在输入端542处把位置信息提供给PN发生器540。根据种子值,PN发生器产生一个提供给“异或”电路521的输出,把该输出与由ECC发生器518提供的ECC信息(它与相关联的经编码的用户数据记录在磁盘132上)作“异或”运算。为了重建文件系统信息(例如,位置信息),从磁盘132读取经编码的用户数据,并且把它提供给ECC发生器522,该ECC发生器产生ECC信息并且把它提供给“异或”电路526。包含嵌入伪随机值的ECC信息也从磁盘132读出,并且提供给“异或”电路526。“异或”电路526的输出端得到随机值,它已以位置信息为种子。将此值提供给逆PN发生器544,它把由PN发生器540提供的随机化过程倒过来,并在春输出端546提供位置信息种子值。如图31所示的实施例那样,能够用此信息连同由译码器524提供的经译码的用户数据,来重建先前丢失的文件系统结构信息。这里描述的“异或”门520和526例示地是字节宽的“异或”电路,用于对数据字节内的各个位作“异或”运算。于是,“异或”电路实在是8个分开的“异或”门,以提供8位字节的“异或”功能。此外,虽然这里描述的本发明涉及“异或”门,但对于作为纠错和检错码基础的域任何合适的Galois域处理(或相加)、或其他合适的处理应视为在本发明的范围内,并能被熟悉本领域的人实施。还有,在一个较佳实施例中,在1998年2月10授予French等人的第5,717,535号美国专利更详细地描述了PN发生器540。该专利把发生器描述为具有33寄存器单元、带有连至逻辑块的输入端和输出端。寄存器单元是一位宽,并且如数据字节那样在相同的时钟上计时,发生器足以保存高至4字节(32位)长的一个目标识别符和相对位置信息,但能容易地扩展,以容纳更大的位置信息或其他的文件系统信息(大于4字节)。例示地,该发生器还包含一个额外的寄存器单元,使用它从而具有零值的位置信息将不在PN发生器540的输出端产生全零。没有理由必须把这个额外的单元包括在PN发生器540中,如果使用它完全是为了用ECC信息来种植文件系统信息。然而,如果为了其他理由(即,容错)用发生器540来使数据随机化,则应该包括额外的单元,从而全零输入将提供非零输出。例示地用时钟对数据计时,其速率为每8个数据位一次(即每个字节一次)。在例示的实施例中,发生器540包括多个下面的式3和式4运作的触发器,这里B代表至触发器的输入,而A代表从触发器的输出。BI=AI+8;式3对于I=0至24;而BI=AmXORAm+13;式4对于I=25至32,M=(I+8)模33。应该注意,发生器540例示地等效于一个基于本原多项式X33+X13+1的二进制反馈移位寄存器,并且每时钟节拍移位8次。驱动输入至寄存器单元的逻辑块代表这些8次位移的结果。根据这个类似,很显然在发生器540输出端处提供的字节的序列每233-1个字节重复一次。于是,可以看出,本发明提供了胜过现有系统的显著的优点。本发明允许读出用户数据,即使它在丢失关键的文件系统信息(诸如文件系统结构数据)的磁盘面上。本发明把文件系统信息(诸如文件系统结构信息)嵌在与目标的数据部分对应的ECC信息中。于是,只通过读取在磁盘上的数据和逆转嵌入过程,就能够读出文件系统信息,于是能够重建文件系统信息。图34-36描绘了按照本发明的另一方面的另一种写入操作,其中,驱动器阵列作为混合RAID构造来实现。如前面提到的,存储在磁盘驱动器阵列中的数据时常比磁盘驱动器本身更有价值。因此,除了主数据之外,提供了一个廉价磁盘冗余阵列(RAID)来存储冗余或一致校验数据,以在主数据变得有毛病或不可存取时,能够重建它。已知数种类型的RAID系统或RAID层次。第一层RAID(RAID层次1)以提供镜象磁盘驱动器为特征。在第一层RAID中,阵列中所有的驱动器都加倍。于是,如果一个驱动器失效,信息也不会丢失,因为确切的信息被镜象存储在另一个磁盘驱动器上。对于实现磁盘驱动器阵列而言,这是一种很昂贵的选择方案,因为硬件要加倍。第二层RAID包括用于纠错的Hamming码。在第二层RAID中,跨越阵列的驱动器对于数据作位交织(bit-interleave),并且添加校验驱动器,以检测和纠正单个差错。这样做有缺点,即,如果只读取少量数据,但仍须读取来自组中的每个位交织驱动器的整个扇区。同样,写单个单元仍然包括在组中的所有驱动器上的读一修改一写(read-modify-write)循环。第三层RAID以每组驱动器有单个校验驱动器为特征。在第三层RAID中,取消了在第二层RAID中用于存储纠错码信息的额外的校验驱动器。相反,由于数据正在存至磁盘驱动器,把ECC信息添加至数据。还有,相应于存储在阵列中的数据,用单个磁盘驱动器来存储冗余数据。当从阵列读取信息时,用ECC信息来确定是否出现差错以及哪个驱动器包含有差错。于是,通过计算其余好的驱动器的一致校验性并且加以比较,以及对起初的全组数据计算并且存储冗余或一致校验磁盘驱动器上的一致校验作逐位比较,即可在出故障的驱动器上重建信息。第四层RAID以安排得对独立的读和写提供为特征。在第二层和第三层RAID的实施中,存储在阵列中的信息要跨越组中所有的驱动器而散布。因此,对于组中一个驱动器的任何读和写的操作需要对组中所有的驱动器读和写。第四层RAID通过提供在任何给定时刻对每个驱动器组做一个以上的I/O操作的能力而改进了小传递的性能。不再跨越几个驱动器散布每个数据扇区。相反,把存储在阵列中的每个数据扇区作为在单个驱动器上的单独的单元保存。存储在阵列中的信息在数据磁盘中是在扇区的水平上而不是在位的水平上交织。在第五层RAID中,要存储至阵列的数据以及一致校验或冗余数据都经组中的所有驱动器散布。虽然第四层RAID允许在任何给定的时刻在每组中进行多于一个的读操作,它仍限于每组一个写操作,因为每个写操作需要访问校验驱动器。第五层RAID把每个扇区的数据和校验信息跨越所有的驱动器(包括校验驱动器)散布。因此,第五层RAID能够支持每组的多次单独的写操作。因为对于每个顺序位置的检验信息是在组中的不同的驱动器上,因此写操作能并行进行,因为无需在给定时刻顺序访问任何一个驱动器。虽然上面的讨论提供了不同层次的RAID系统之间的某些主要区别的概述,但对于这些区别的更详细的描述以及说明性的例子在Patterson、Gibson和Katz的题为“一种用于廉价磁盘的冗余阵列的情形”论文中提供。由于在RAID3和RAID4与5型系统之间的特性区别,不同的系统特别适合于不同的需要。RAID3系统已经典型地适合于需要呈现高数据传递速率的阵列系统并且显示在其中具有良好的性能。另一方面,RAID4和5系统典型地在高聚集输入/输出(I/O)应用中的磁盘阵列中显示出良好的性能。在事务应用或具有许多个UNIX用户的应用中时常找到这些实现。虽然RAID层次5对于事务应用是最常用的,但它不如RAID1系统可靠。特别,RAID5系统使用普遍,因为它对磁盘空间的使用最有效,因而在硬盘方面需要较少的投资。然而,如果丢失的主数据的数量超过根据在RAID5系统中的冗余数据来恢复数据的能力,则不能重建主数据。因此,RAID5系统易受完全的数据丢失的影响。相反,RAID1系统不易受完全的数据丢失的影响,因为在另一个驱动器上作了主数据的完全备份(即,数据被镜象存储)。于是,如果丢失了任何或所有的主数据,可以使用镜象数据来完全重建主数据。然而,由于RAID1系统需要完全加倍磁盘驱动器,因此它可能成本过高。本发明的混合数据重建系统既提供了RAID5系统的成本上的优点,又提供了RAID1系统的性能上的优点。通过把RAID1系统应用于被确定为对用户是重要的或关键的数据,而把其他的RAID技术之一(例如RAID5)应用于其他的非关键数据。虽然下面的描述说明了本发明的实施例为一种混合的RAID1/RAID5构造,但熟悉本领域的人将理解,通过组合任何两个冗余方案(诸如RAID1构造与RAID2、RAID3或RAID4构造)可以得到类似的好处。为了简单起见,并且只是作为说明,下面的描述集中在混合的RAID1/RAID5技术上。由于对于用户来说最重要和关键的数据往往是存取最频繁的数据,因此一种识别关键数据的有效技术是识别高频度数据。高频度数据是指比对于在磁盘驱动器上的其他数据访问次数明显多的数据。熟悉本领域的人将理解,本发明的混合RAID技术既应用于块数据系统,又可应用于面向目标的系统。最重要和关键的数据也可由用户指定,而与数据被存取的频度无关。例如,用户可以指定某个文件名、某种文件类型、某个目录、或者它们的组合作为关键数据。通过将关键数据与块地址相关(当用在面向块的数据中时)或者与目标类型或目标属性相关(当用在面向目标的数据中时),可以对此数据作出标志。如果把关键数据作为该数据被存取的频度的函数来识别,则磁盘驱动器控制器148、或磁盘驱动器阵列控制器602或计算机系统的其余合适的部分可以用来自动地记录数据或数据目标被存取的次数。这样,最好将每个数据块或数据目标被存取的次数记录入非易失性存储器。使用这个直方图(histographical)数据,如果数据块或数据目标例如正在被存取超一个阈值频度(即,超过存取次数的阈值),就用RAID1技术(即,将它们作镜象存储)。所有正在存取的低于阈值频度的其他数据用RAID2、3、4或5技术存储。因此,由于关键数据完全被镜象存储在另一个磁盘驱动器上,因此它不容易完全丢失。相反,非关键数据用空间更节约的RAID技术(例示地,用RAID5技术)备份。这适用于或者由用户指派的标志来识别关键数据,或者由磁盘驱动器控制器148或阵列控制器602来检测高频度使用而识别。图34描绘按照本发明的一个方面的实现混合数据存储和重建的磁盘驱动器阵列600的方框图。磁盘驱动器阵列600包括连至磁盘驱动器604、606、608、610和612的阵列的阵列控制器602。每个驱动器说明性地包括一个驱动器控制器148(在图34中未示出)。阵列控制器602还连至互连122,如图1和25所示。在描绘的特定的实施中,每个磁盘驱动器604、606、608、610和612包括关键数据部分614、非关键数据部分616、镜象存储位置618和一致校验位置620。分配给镜象存储位置的空间618最好正比于关键数据614。类似地,在每个磁盘上为一致校验位置提供的空间620最好正比于相应于由非关键数据616占有空间的一致校验数据。然而,熟悉本领域的人将理解,根据用户对于特殊应用所需的性能和经济之间的平衡,可以修改分配给镜象存储的位置618和一致校验的位置620。然而,说明性地,关键数据614占据了磁盘空间的相对较小的数量(例如,9GB驱动器中的20MB),因而相应的镜象存储位置618成比例地占有磁盘空间的较小数量。因此,由于在每个磁盘上用于镜象存储的位置618的磁盘空间的总量相对较小,因此在磁盘空间和性能之间的折衷不是实质性的。图34描绘了混合的RAID1/RAID5驱动器阵列600,其中,主数据、镜象数据和一致校验数据在组中跨越所有的驱动器604、606、608、610和612分布。因此,驱动器604为在驱动器606中的关键数据保存镜象数据。驱动器604还包含驱动器606中的非关键数据的一致校验数据。如所描绘的,在驱动器606/608、608/610、610/612、612/604之间也存在类似的关系。通过合适的接口(诸如纤通道接口或其他串行接口),每个驱动器604、606、608、610和612互相连接。各个驱动器604-612的构造和操作基本上类似于在图26和27中描绘的驱动器。特别,磁盘驱动器与RAID层次5的体系结构相似,而与RAID层次1的体系结构不同。具体而言,在每个驱动器604-612中的每个磁盘除了一致校验位置620外包括镜象存储位置618,而在图26和27中描绘的驱动器没有镜象存储位置。然而,除了这些描述的之外,结构和操作基本上是相同的。阵列控制器602包括命令部件624,它对每个驱动器604-612发出指令,以将新数据作为镜象数据或一致校验数据写入。命令部件624按照从关键数据检测器部件622接收到的输出而对驱动器604-612发出指令。关键数据检测器部件622对输入的新数据扫描,以发现由用户预定的或由高频度数据登录626分配的标志。如果由关键数据检测器622检测得一个标志(例如,块地址或目标属性),则阵列命令部件624使新数据被写至其目的地并被镜象存储至位置618。如果未检测到标志,则阵列命令部件624使新数据写至其目的地,并使相关联的一致校验信息写至一致校验位置620。可以使用高频度数据登录626,以登录特定的数据块或数据目标被存取的次数。如果特定的数据块或数据目标已被存取的次数超过阈值次数(它可由用户规定),则高频度数据登录624对于由关键数据检测器622的检测指定该数据块或数据目标为关键数据。如果使用面向目标的数据,并且目标属性之一已经包括存取频度,则可省略高频度数据登录626。此外,如果作为除存取频度之外的某个量的函数指派关键数据,则可省略数据登录626。图35和36描绘了图34所示的磁盘阵列600的写入操作630和660。具体而言,图35描绘对于面向块的数据的写入操作,而图36描绘对于面向目标的数据的写入操作。特别参看图35,写入操作630在方框634处开始,但用户可以预先指定一个标志,它附加于数据或对于数据预先考虑,并且它把数据识别为关键数据,如在方框632中那样。这样一个标志可以是(但不限于)与数据相关联的块地址。如果用户对于关键数据预先指定标志,则可跳过在方框633中描述的登录步骤。如果没有预先指定标志,则写入操作630可以用在方框633中描述的登录步骤开始。假设没有预先指定标志,控制器602的命令部件624读取和登录在登录626中的新数据的块地址,如方框633所示。块地址被存取的次数(即,频度)在登录626中被跟踪和记录。如果存取次数(频度)超过阈值,则标志该块地址为关键数据。在接收到新数据后,控制器600检查登录626并且判定作为新数据的目的地的块地址是否已被标记为关键性的,如在方框636中反映出的那样。如果如判定框638所指出的那样标志被检测,则把新数据作为关键数据处理,并且写入至其目的地,和写至镜象存储位置618,如方框640所反映的那样。如果判定框638指出未检测到标志,则部件624更新频度值,如方框639指出的那样,并且实施RAID5例行程序,如方框642-650指出的那样。熟悉本领域的人将理解,可以使用其他合适的RAID或别的冗余性例行程序,包括(但不限于)RAID2、3和4例行程序。采用RAID5例行程序,在对象位置处读取老数据,如方框642指出的那样。在一致校验位置处还读取老的一致校验数据,如方框644指出的那样。在对象位置处,把老数据与新数据作“异或”运算,得出新的一致校验数据,如方框648指出的那样。然后把新的一致校验数据写至相关联的一致校验位置620,如方框650指出的那样。根据判定框638来启动RAID1例行程序或RAID5例行程序,把新数据也写至对象位置,如方框652指出的那样。在把新数据写至对象位置后,写入操作就完成了,如方框654指出的那样。参看图36,它描绘了对于使用面向目标的数据的写入操作。写入操作660在方框662处开始。根据目标类型,可以预先指定块的关键性。例如,可能希望在任何时刻把目录信息(诸如POL166)或任何确定存储装置结构或在其上存储的数据的任何其他目标(诸如DCO154、DAO158或PCO164)、或它们的任何组合加以镜象存储。此外,由用户或其他实体,可在逐个目标的基础上使用OID、文件名、或某些其他属性来预先指定某些目标。于是,命令部件624接收和检索目标,以判定是否预先指定关键性。这由方框664和666指出。说明性地把这种预先指定存储在控制器602的存储器中。如在判定框668中指出的那样,如果检测到关键性,则把新数据如方框670指出的那样写至镜象存储位置618和如方框682指出的那样写至其目的地。如果未检测到预先指定的关键性,如在判定框668中指出的那样,则部件624根据它被存取的频度判定正在被存取的目标是否关键性的。通过检查高频度数据登录626(说明性地它包括OID和指出存取频度的相关联的频度值),部件624做这件事。这由方框669示出。如果根据频度,目标是关键性的(其相关联的频度值超过预定的阈值或自适应地调节的阈值),则部件624把数据作镜象存储,如方框670指出的那样。如果根据频度,目标不是关键性的,则部件624把OID登录在登录626中(如果它是一个新的目标),并且更新相关联的频度值。这由方框671指出。然后把数据按照RAID2、3、4或5实施或其他冗余性方案加以存储。采用RAID5实施,在对象位置处读取老数据,如方框672指出的那样。然后在一致校验位置处读取老的一致校验数据,如方框674指出的那样。在对象位置处把老数据与新数据作“异或”运算,导致新的一致校验数据,如方框678指出的那样。把新的一致校验数据写至一致校验位置,如方框680指出和在图34描绘的那样。不管在判定框668中是否检测出关键性,都把新数据写至对象位置,如方框682指出的那样。在把新数据写至对象位置之后,完成了写入操作660,如方框684指出的那样。还应该注意,在图35和36中提出的步骤能够在与任何一个或数个驱动器604-612相关联的一个驱动器控制器604-612上执行,然后把数据传送至要在合适的驱动器上写的合适的驱动器控制器。在此时,驱动器控制器设置有部件622-626。处理基本上与图35和36示出的那些相同。应该注意,根据驱动器使用,能够把频度值预先指定为一个原始数目或者一个变数。例如,能够把阈值设置为总的驱动器存取的一个百分数,并且能够随每个存取(即,随每个读写操作)而自适应地更新。此外,能够使用多个阈值,例如,对于每个目标类型或者目标类型组有一个阈值。也能够使用其它自适应技术。如果自适应地设置阈值,则在每次存取时必须对每个块或目标更新频度值。此外,使用冗余性方案来存储关键数据且同时用直接编码方案来存储其余的数据能够得到本发明的好处。直接编码方案是指,经编码的数据只是存储在一个磁盘驱动器上,而不增添冗余性数据。因此,作为单个例子根据任何其他的冗余性方案,能够镜象存储或存储关键数据,而非关键数据只是以编码形式加以存储。在这种情形下,并且再参看图34,非关键数据616没有相应的存储在一致校验位置620中的一致校验数据。于是,在图34中作为一致校验位置620所花费的空间可以用来存储额外的关键数据、非关键数据或相应于关键数据的冗余数据。类似地,能够使用两种或多种冗余性方案以及直接编码方案来实现本发明。在该情形下,能够按照高度冗余的冗余性方案来存储高度关键性的信息,按照较少冗余的冗余性方案来存储中等关键性的数据,而按照直接编码方案来存储非关键数据。还应该注意,术语“阵列”是指磁盘驱动器的一个集合,这些磁盘驱动器存放在地理上互相远离的位置中,诸如在不同的房间、不同的建筑物或由很大的距离分隔开的位置中。如从上面可见,除了在图34中描述的混合阵列系统构造600之外,在图35和36中描述的混合存取操作630和660提供了RAID5系统的成本方面的好处和RAID1系统的可靠性方面的好处。本发明的一个实施例是磁盘驱动器600,它包括多个磁盘驱动器604-612和至少一个控制器602(该控制器在操作上耦合至多个磁盘驱动器604-612),构造来接收数据和按照第一冗余性方案在磁盘驱动器604-612上存储数据的第一部分,并按照第二冗余性方案在磁盘驱动器上存储数据的第二部分。第一冗余性方案最好比第二冗余性方案提供更大的冗余性自由度。按照第一冗余性方案,数据的第一部分包括冗余性数据,它与数据的第一部分不同,而控制器602构造来存储数据的第一部分和在磁盘驱动器604-612上的冗余性数据。控制器602构造来在多个磁盘驱动器的第一驱动器或第一组驱动器上存储数据的第二部分,并且把数据的第一部分镜象存储在多个磁盘驱动器604-612的第二驱动器或或第二组驱动器上。数据的第一部分可以包括诸如元数据这样的数据,它要比数据的第一部分更频繁地被存取。控制器602可以构造来存储作为结构安排中的目标的数据的第一部分和第二部分,而数据的第一部分可以包括结构目标,它包括指出结构安排的信息。在此上下文中,控制器602可以构造来以分区的形式存储目标,而结构目标可以包括装置控制目标、装置相关性目标、分区控制目标或分区目标列表。数据的第一和第二部分可以作为目标存储,每个目标包括属性,其中,数据的第二部分包括属性。第一冗余性方案可以是RAID层2、3、4或5,而第二冗余性方案可以是RAID层1。控制器602可以构造来确定数据被存取的频度,并且根据其被存取的频度把数据分为第一和第二部分。在此上下文中,控制器602可以构造来存储作为对象的第一和第二数据部分(因目标具有相关联的文件名)并且可构造来跟踪根据文件名存取数据的频度。另外,控制器602可以构造来存储作为目标的第一和第二数据部分,每个目标具有相关联的目标类型,并且可构造来根据目标类型,在第一和第二数据部分之间划分数据。根据用户输入,可以在第一和第二数据部件之间划分数据。每个磁盘驱动器604-612可以包括一个驱动器控制器148,其中,控制器602包括一个或多个驱动器控制器148。主机控制器可以耦合至驱动器控制器148,并且控制器602可以是主机控制器。在本发明的另一实施例中,磁盘驱动器阵列600包括磁盘驱动器604-612的一个阵列和阵列控制器装置602,用于有选择地在磁盘驱动器604-612之间镜象存储数据。在本发明的还有一个实施例中,在磁盘上、在磁盘驱动器中的一种存储数据的方法包括按照第一冗余性方案存储数据的第一部分;以及按照不同于第一冗余方案的第二冗余方案存储数据的第二部分。此方法可以包括根据用户输入,根据例如数据被存取的频度或者根据数据的内容,判定数据是在第一部分或第二部分。应该明白,即使在上面的描述中已经提出了本发明的各个实施例的许多特征和优点,还给出了本发明的各个实施例的结构细节和功能,这个揭示还是说明性的,因此可在细节方面作改变,尤其是在本发明的原理的整个范围之内,对各个部分的结构和安排作改变,由所附的权利要求书用术语的广泛的一般意义表述本发明的原理的范围。例如,不偏离本发明的范围和精神,根据特殊的连接方法,冗余性方案或检错或纠错方案可以改变特殊的元件,与此同时保持基本上相同的功能。权利要求1.一种磁盘驱动器阵列,其特征在于,包括多个磁盘驱动器;在操作上耦合至多个磁盘驱动器的至少一个控制器,构造控制器以接收数据和按照第一冗余性方案在磁盘驱动器上存储数据的第一部分,并且按照第二冗余性方案在磁盘驱动器上存储数据的第二部分。2.如权利要求1所述的磁盘驱动器阵列,其特征在于,第一冗余性方案比第二冗余性方案提供更大的冗余度。3.如权利要求2所述的磁盘驱动器阵列,其特征在于,数据的第一部分包括冗余性数据,它不同于数据的第一部分,并且构造控制器以按照第一冗余性方案在磁盘驱动器上存储数据的第一部分和冗余性数据。4.如权利要求3所述的磁盘驱动器阵列,其特征在于,构造控制器以在多个磁盘驱动器的第一组磁盘驱动器上存储数据的第二部分,并且在多个磁盘驱动器的第二组磁盘驱动器上镜象存储数据的第一部分。5.如权利要求4所述的磁盘驱动器阵列,其特征在于,构造控制器以在多个磁盘驱动器的第一磁盘驱动器上存储数据的第二部分,并且在多个磁盘驱动器的第二磁盘驱动器上镜象存储数据的第一部分。6.如权利要求2所述的磁盘驱动器阵列,其特征在于,数据的第一部分包括存取频度比数据的第二部分的存取频度更高的数据。7.如权利要求2所述的磁盘驱动器阵列,其特征在于,构造控制器以在一种结构安排中把数据的第一和第二部分作为目标存储,并且数据的第一部分包括结构目标,它包含指出结构安排的信息。8.如权利要求7所述的磁盘驱动器阵列,其特征在于,构造控制器以存储分区中的目标,并且结构目标包括装置控制目标、装置相关联性目标、分区控制目标和分区目标列表之一。9.如权利要求2所述的磁盘驱动器阵列,其特征在于,把数据的第一和第二部分作为目标存储,每个目标包括属性,并且数据的第二部分包括属性。10.一种在磁盘驱动器中的磁盘上存储数据的方法,其特征在于,包括下述步骤(a)按照第一冗余性方案存储数据的第一部分;以及(b)按照与第一冗余性方案不同的第二冗余性方案存储数据的第二部分。11.一种磁盘驱动器阵列,其特征在于,包括多个磁盘驱动器;在操作上耦合至多个磁盘驱动器的至少一个控制器,构造控制器以接收数据和按照第一冗余性方案在磁盘驱动器上存储数据的第一部分,并且按照直接编码方案在磁盘驱动器上存储数据的第二部分。全文摘要一种用于存储装置的混合数据重建系统(600)和方法(630/660)。按照两种或多种冗余性方案(618/620)之一,有选择地存储数据(614/616),从而按照具有较高冗余度的方案(618)存储关键数据(614)。文档编号G06F3/06GK1281560SQ98811922公开日2001年1月24日申请日期1998年10月7日优先权日1997年10月8日发明者D·B·安德森申请人:西加特技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1