在面向对象的数据存储装置上的对象重建的制作方法

文档序号:6415805阅读:136来源:国知局
专利名称:在面向对象的数据存储装置上的对象重建的制作方法
技术领域
本发明涉及数据存储装置。具体地说,本发明涉及数据存储装置,诸如,盘片驱动器,磁带驱动器或光驱动器,其中组织和访问数据作为对象。
背景技术
在计算工业中已知两种传统计算机模型。第一种是主机计算模型,第二种是群集计算模型。
对于在主机计算模型中的终端用户的传统进展是购买初始系统,而且当需要附加处理能力时,用较大系统代替初始系统。在这个循环中的各点处,发生创伤性不连续(traumatic discontinuity)。例如,如果用户过分地扩大初始系统的体系结构,那么用户可能需要从一个操作系统转换到另一个操作系统,或者当购买第二种升级主机系统时,甚至从一个厂商的所有体系结构转到另一个厂商的所有体系结构。这些变化使得机构在购买升级产品时花费大量的费用和雇员时间。因此,在大多数情况下,避免这样的转换。
此外,主机模型使得计算机设备的余留的价值很低。于是,系统替换通常导致当用升级系统替换初始系统时,原先投入资本基本上完全损失。此外,较大升级系统趋于比较小系统销售量较小。于是,每个新系统更新一般具有比前一种系统更高的计算成本。
在群集计算模型中,用一群更小的基于标准的服务器来替换大型计算机。这样与主机模型相比能具有许多优越性。由于群集器可能仅作为单个系统开始,所以进入群集模型的起步较低。此外,一般较小系统的销售量较大,从而使得计算成本很低。此外,这些系统是基于标准的,他们不依赖专有的结构。这使得可从多个来源中获得这样的设备,它允许用户对每次后续的购买选择最佳的方案。
群集计算模式本身还呈现其他优点。通过只添加满足现有和即将要求所需的附加资源量,能够更加精确地控制升级成本。此外,用户可以在大量的厂商之间进行选择,而不必考虑移植或转换到新体系结构。类似地,拥有正确的体系结构,可能不再需要转换到另一个操作系统了。
然而,群集计算模式确实有缺点和问题。例如,群集计算模式在提供群集系统以允许群集器承担单个主机可完成的工作量的方法来共享数据的能力方面有困难。例如,当前很难实现哪样群集模式,其中要求在群集器中的每个服务器处理对相同数据的事务。一些这样应用的例子包括航班预订系统或金融机构的事完全务报表(financial institution’s complete inventory oftransaction)。
群集计算模型的第二个缺点简单地涉及缺乏管理存在于主机环境中的存储和数据的广泛经验,这样的经验已发展成简单但在基于标准的群集环境中尚不具备的管理软件中。
传统盘片驱动器还包括关于丢失操作系统信息的缺点。例如,传统的盘片驱动器包括数以百万计的数据扇区。由于任何不同原因,一个或多个扇区可能变成不可读或被破坏(corrupted)。如果变成不可读的扇区是操作系统用于特定目的的扇区,那么在盘片驱动器中的整个盘片空间成为不可用的。即使盘片驱动器的所有其余部分能读也无济于事。例如,在个人计算机环境中,主引导记录、分区引导记录(partition boot record)、文件属性表(FAT)或根目录可能变成不可读或被破坏的。这可导致丢失几乎所有盘片驱动器的内容。没有传统的操作系统面对丢失这样关键的系统管理数据而具有恢复所有可读数据能力。这意味着用户承受巨大损失,十分不幸的是,由于丢失的数据是与操作系统有关,而与存储在盘片驱动器上的不能读取的实际数据的关系不大或没有关系。
到此为止,在这种情况下恢复数据的任何操作方法一般都很麻烦。这样的工作一般需要从它的操作环境中物理地拆下盘片驱动器,而且把它发送到参与恢复这样数据的业务的公司或业务提供者。这样的业务没有任何成功的保证,而且不能保护个人隐私不受侵犯,这将导致处于这种目的放弃盘片驱动器。
本发明涉及这些和其他问题,而且提供优于现有技术的优点。
发明概述本发明目的在于一种数据存储装置,它包括将存储在其上的数据作为对象。对象具有多个部分,包括包含数据的数据部分和包含与对象相关的对象定位(location)信息的对象定位部分。


图1是根据本发明的一个方面的网络连接存储系统(network attachedstorage system)的方框图。
图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是示出根据本发明的一个方面获得设备关联(device association)的流程图。
图24是示出根据本发明的一个方面设定设备关联的流程图。
图25是示出根据本发明的一个方面实施的盘片驱动器阵列的方框图。
图26是示出根据本发明的一个方面的目标盘片驱动器的方框图。
图27是示出根据本发明的一个方面的奇偶盘片驱动器的方框图。
图28是示出根据本发明的一个方面产生奇偶组的流程图。
图29是示出写入操作的流程图,其中根据本发明的一个方面更新奇偶信息。
图30示出根据本发明的一个方面的数据结构。
图31是根据本发明的一个方面利用插入定位信息的盘片驱动器的方框图。
图32是示出如图31所示系统的操作的流程图。
图33是示出根据本发明的另一个方面利用插入定位信息的数据存储设备的另一个实施例的方框图。
较佳实施例的详细描述图1是根据本发明的一个方面的数据存储系统100的方框图。系统100包括面向对象数据存储装置110和112、文件服务器114、请求者116、118和120和互连122。系统100示出可由来自多个不同厂商的设备和软件构成的网络连接存储结构,而且对于用户作为单个大计算机系统出现。
面向对象存储装置110-112是执行系统100的数据存储功能的存储部件。存储装置110-112最好包括盘片驱动器、独立盘片的冗余阵列(RAID)子系统、磁带驱动器、磁带库、光驱动器、自动选盘箱或可以共享的任何其他存储装置。存储装置110和112还设有连接访问装置110和112的请求者116、118和120的输入/输出(I/O)信道。
请求者116、118和120是部件,诸如服务器或客户,它们共享存储在装置110和112上的信息。请求者116-120最好直接访问在存储装置110和112上的信息。
文件服务器114执行管理和安全功能,诸如请求的授权和资源定位。在较小系统中,最好不使用专用文件服务器。取而代之的是,请求者116-120之一认为监视系统100的操作的功能和责任由文件服务器114执行。此外,在不需要或不希望由文件服务器114提供的安全性和功能性,或者在对性能的首要需求要求请求者群116-120直接与存储装置110和112对话的情况下,从系统100中去除文件服务器114。
在一个较佳实施例中,互连122是物理上的底层结构,通过它网络连接的存储系统100中的所有部件相互通信。
在操作过程中,当系统100上电时,所有设备最好自己相互识别或者识别公共参考点,诸如文件服务器114或互连122。例如,在基于光纤信道的系统100中,面向对象的存储装置110和112,和请求者116-120登录到系统的组织结构(fabric)。在希望确定操作结构的实施方法中,系统110的任何部件,可以运用组织结构业务来识别所有其他元件。请求者116-120从文件服务器114中获知请求者116-120可以访问的存储装置110和112的存在。类似地,存储装置110和112获知定位系统100中其他装置的定位信息,以及必须用来调用管理业务(诸如备份)的地址。类似地,在一个较佳实施例中,文件服务器114从组织结构业务中得知存储装置110和112的存在。
根据特定系统100的安全实践,可能拒绝请求者116-120或者他们中的任一个访问系统的一些部件。从每个请求者可获得的存储装置组110和112,请求者可以识别文件、数据库和可获得的自由空间。
同时,在系统100中的每个部件最好识别文件服务器114,任何特定考虑与其相关。例如,可只将任何存储装置级业务属性发送到文件服务器114一次,而且在系统100中的所有其他部件从文件服务器114知道那些属性。例如,特定请求者116-120可能希望被通知引入附加存储装置,随后启动它。例如,当请求者登录文件服务器114时,可以提供这样的属性。无论何时把新存储装置加到系统100中,文件服务器114都自动告知特定请求者116-120。典型地,文件服务器114可以把其他重要特征,诸如存储装置是否是RAID5、镜象,等等,存储装置,通知请求者。
根据本发明的一个方面,以如图2较佳示出的系统存储储存在存储装置110和112上的信息。每个存储装置110和112最好是面向对象的装置,它以作为对象124-126而不是作为扇区有序序列,组织并访问数据的模式进行操作。面向对象的装置110和112用对象文件系统管理对象124-126,其中对象文件系统示例地包括对于在分区装置上的每个分区的对象的单级表。这也称为平直文件(flat file)系统。存储在以面向对象装置模式操作的每个装置110和112中的存储媒体上的对象124-126最好是在装置110或112上的最小可见容量分配单元。在这样的存储装置上的一个对象包括与唯一标识符相关的有序扇区组。数据由标识符和偏置参照到对象。由存储装置110和112本身指定对象并将它放置在存储媒体上,同时操作系统管理它的文件和以这些对象结构中的元数据,而不是管理数据扇区,如在现有技术体系结构中所做的那样。
接口128访问对象124-126,其中对象具有可由请求者116-120调用的多种方法以访问和处理在对象124-126中的属性和数据。于是,如图2所示,请求者116-120发出请求130。在较佳实施例中,请求者116-120是计算机系统,或者在群集系统或网络系统中的单元,它递交在包含对象124-126的存储装置上运作的请求130。于是,请求者116-120可以是客户和服务器。在任一种情况下,由请求者116-120之一发出的请求130调用在接口128中的一种方法,而它反过来导致处理一个或多个对象124-126,如下面在说明书中详细所述的那样。
图3-1和3-2是可用来访问存储在存储装置110-112上的对象的两个不同结构的方框图。为了简便起见,图3-1和3-2只示出单个请求者116和单个面向对象存储装置110。当请求者116希望打开对象(诸如,对象124-126)时,请求者116能够直接访问存储装置110,或者可要求它请求文件服务器114的允许和定位信息,以便访问在存储装置110上的对象。文件服务器114控制对存储装置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/0链,达到理想保护级所需的程度。在一个较佳实施例中,请求者116必须首先请求文件服务器114允许它执行一组I/O操作。文件服务器114(它可能为了附加安全性不给来自请求者116存储定位信息)通过返回足够的信息授权来自请求者116的请求,允许请求者116直接与存储装置110通信。由于当存储装置110登录文件服务器114时,最好通知存储装置110安全性参数,存储装置110,在适当地构成并包括包含来自文件服务器114的有效许可的已编码数据以前最好不允许I/O请求。
于是,处理以与参照图3-1所述的相类似的方法来进行。然而,与某个命令相关的有效负载(payload)可能非常不同。例如,在要求安全性的情况下(参见图3-2),可以加密通过请求者116和存储装置110之间的命令和数据。此外,最好把许可信息加到从请求者116向存储装置110提供的命令参数中。
由于在一个较佳实施例中,存储装置110和112可以包括硬盘驱动器,所以顺次简要讨论盘片驱动器。图4是可作为存储装置110实施的硬盘驱动器的透视图。在盘片驱动器110中,围绕在外壳内的主轴马达组件134轴颈安装多个盘片132。每个盘片132具有多个同心圆记录磁道(以标号138概略示出)。每个磁道138细分成多个分区(参照图6,详细描述)。通过参照磁道138内的特定分区,可将数据存储在盘片132上,或检索来自盘片132的数据。最好,把读写臂组件140旋转地安装在外壳136的一角。读写臂组件140携带多个读写头万向(gimble)组件142,其中每个组件携带具有读/写读写头的滑动器或者用于读取盘片的信息并把信息写入盘片132的转换器(transducer)。
配上音频线圈马达144精确地前后旋转读写臂组件140,从而在滑动器142上的转换器沿着由箭读写头146示出的弧形移过盘片132的表面。图4还以方框图的形式示出用于通过已知的方法来控制盘片驱动器110的某些操作的盘片驱控制器。然而,根据本发明,盘片驱动器控制器148还用于实现到存储在盘片132上的对象124-126的接口128。
图5是当安装在如图1所示的系统100中时盘片驱动器110的部分的方框图。在图5中,盘片驱动器控制器148包括控制部件150,它实现接口128功能。把对象124-126存储在构成盘片132的存储媒体上。在请求者116-120上实施请求部件152,后者形成逻辑形式的请求来调用接口128中的方法。一旦调用一个方法,控制部件150执行某些任务以所需方法处理所识别的对象。控制部件150返回一个事件,它可包括与任何所识别对象相关的数据或属性。还根据由请求者116-120调用的特定方法返回该事件。
为了使面向对象装置110-112提供与由操作系统用面向模块装置提供的相同功能,在装置110-112上的存储空间必须可管理到类似程度。于是,在一个较佳实施例中,在存储的对象124-126之上设置在存储装置110-112上的组织层。在一个较佳实施例中,面向对象存储装置110-112提供把盘片空间分成一个或多个互斥区域,称为分区。参照图6,详细描述分区。在一个分区内,请求者116-120可以建立对象。在一个较佳实施例中,在一个分区中的结构是一个简单的平直组织结构。任何操作系统都可将它自己的结构映射在这个组织结构上。
图6示出在存储媒体上的存储空间的一部分,诸如盘片132之一。存储空间包括多个对象,诸如装置控制对象154、装置相关对象156和标记为分区0(还用标号158指定)、分区1(用标号160指定)和分区N(还用标号162指定)的多个分区。每个分区还包括一系列对象,诸如分区控制对象164、分区对象表166和多个数据对象168(带标号的数据对象0到数据对象N)。
与每个对象相关的是一组属性。根据本发明的一个方面,提供通过设定属性方法(Set Attribute method)(下面,在申请中详细讨论)设定的访问控制属性,而且提供控制访问特定对象的方法。通过改变访问控制属性的版本号,可以拒绝或给予某些请求者116-120,访问特定对象。
群集对象是一个属性,它指示是否希望特定对象理想地定位在存储系统中的另一个对象附近。克隆属性(cloning attribute)指示是否通过复制在存储系统的另一个对象来建立特定对象。一群尺寸属性定义特定对象的尺寸特征。例如,一群尺寸属性包括表示写入对象中的最大偏置的信息、为对象分配的块的数量、用于将数据存储在对象内的块的数量和在对象中每块的字节数。
一群时间属性表示何时建立对象、对象中的数据最后一次修改的时间和最后一次修改在对象中的属性的时间。该对象还最好包括一组属性,它定义最后一次修改在文件系统中的任何数据以及最后一次修改在文件系统中的任何属性的时间。还提供其他属性,以便表示任何给定对象的其他参数、特征或特性。
还将每个对象与一个对象标识符相联系,由特定存储装置110-112选择并响应于建立对象的命令返回给请求者116-120。标识符最好是具有特定长度的无符号整数。在一个较佳实施例中,标识符的长度默认为是由特定存储装置110-112指定的尺寸,或者可将它定为装置属性。此外,在一个较佳实施例中,保留预定标识符子集(Id)用于已知对象、特别用途和希望执行的其他特定功能。
图6示出存储媒体一般包括一系列已知对象,它总是具有特定对象ID。在某些情况,这样已知的对象存在于每个装置上或每个分区中。
例如,一个已知的对象是装置控制对象154,它最好包括由每个装置110-112保持的属性,而且还与装置本身相关或与在装置上的所有对象相关。通过Set_Attribute(组_属性)方法保持属性,下面在本申请中描述上述方法。在一个较佳实施例中,装置110-112中的每个装置都有一个装置控制对象154。
表1示出一组较佳的装置控制对象(DCO)属性。
表1

>在一个较佳实施例中,DCO属性包括作为简单的单调计数器的时钟、包括加密键的主键(key)或控制在装置上的所有其他键的其他主键和用于控制分区键以及可用来锁定分区的装置键。属性还包括识别预定保护级并具有相关安全性策略的保护级键、定义在装置上的一系列分区的分区计数和定义与正被访问的在特定装置上的所有对象相关的特性的对象属性。
为了充分管理跨越多个存储装置110-112的对象,每个存储装置110-112还最好包括一个与装置相关的对象156,它定义多个装置110-112之间的相关性。例如,在存储装置110-112是装置镜像对(mirrored pair),或者阵列组(arrayed set)的成员的情况下,装置相关对象156识别这种关系。表2示出装置相关对象156的较佳属性。
表2

>这样的属性最好包括相关标识符,它是对于每个给定相关装置组的唯一标识符。属性还最好包括相关类型,它定义在装置之间的属性种类(例如,镜像对、RAID5,等等)。属性还最好包括成员资格表,它简单地识别作为上述定义的相关性的成员的装置110-112。
在存储装置110-112上的每个分区158、160个162还最好包括分区控制对象164,它包含单个分区的属性。对象164最好不仅描述分区,还描述与在分区中的与所有对象相关的任何对象属性。每个装置110-112最好包括一个分区控制对象164用于在装置上定义的每个分区。虽然图6示出存储在每个分区内的分区控制对象,但是不必是这种情况。作为替代,可将分区控制对象存储在分区上的平直文件系统中。
表3表示最好包括在分区控制对象168中的多个属性。
表3

这样的属性最好包括主键,它定义对于整个分区的加密键,而且可用来设定当前工作键。属性还最好包括当前工作键,和前一个工作键,它们最好用于加密和解密命令和数据消息。分区控制对象164还最好包括与在指定的分区中的所有对象相关的对象属性。
图6还表示。每个分区最好包括分区对象表166,它是当在存储媒体上建立分区时,由控制部件150构成的对象。分区对象表166最好在每个分区中具有相同的标识符,而且构成引导在存储媒体上的对象文件系统的分离(departure)点。表4示出最好与每个分区对象表相关的属性表。
表4<

>如表4所示,对象最好包括对于常驻在分区中的所有对象的对象标识符(或对象ID)和分配给每个对象的用户空间体积表。请求者运用对象标识符来打开、读取、写入和关闭对象。此外,通过设定在分区对象表中的用户数据属性,用户最好每个对象ID分配用户空间。在分区对象表166之后,每个分区最好包括多个数据对象168。每个数据对象168最好包括在表1中设定的一个或多个属性,而且可以包括附加属性,这依赖于数据存储系统的特定实施方法。
面向对象存储装置110-112最好支持向请求者116-120提供数据或为其存储数据的请求。此外,存储装置110-112最好假设承担在其他部件中实现的其他功能的责任,在现有技术的体系结构中其他部件最有可能是操作系统。最好由装置110-112本身执行空间管理,以及与在装置110-112上的对象相关的属性的维护。最好通过调用由接口128支持的方法,执行这些功能,其中由在存储装置110-112中的每个装置中的控制部件150执行接口128。下面,在说明书中更详细地讨论可被调用的多种方法。然而,为了便于对这些方法的更好理解,图7-1和7-2示出根据本发明的一个方面的面向对象文件系统的引导流程图。可以相信,在下面详细描述每种方法之前,图7-1和7-2的讨论将有利于对本发明的理解。
从框170-204延伸的图7-1和7-2示出在存储装置110-112之一上的特定分区中寻找对象的过程。首先,请求者116在装置控制对象154中获得装置属性。由框172表示。调用Get_DCO_Attribute(获取_DCO_属性)方法导致控制部件150返回存储在装置控制对象154中的属性。由框174表示。于是,请求者116根据从装置控制对象154返回的属性选择给定分区。用框176表示。
一旦请求者116选择了分区,请求者116调用Get_DAO_Attribute方法,如框173所示。这导致控制部件150获得来自存储在存储媒体110上的装置相关对象156的属性。于是,控制部件150将装置相关属性返回到请求者116,如框175所示。根据装置相关属性和装置控制属性,请求者116选择要询问的分区。这由框176所示。
于是,请求者116调用Get_PCO_Attribute方法,它导致控制部件158获得在与由请求者116询问的特定分区相关的分区控制对象164中找到的属性。这导致控制部件150获得和返回分区控制对象属性。如框178和180所示。如果在所选分区中的对象不是请求者感兴趣的对象,则请求者选择另一个分区,如框182和176所示。
然而,假设请求者116已找到感兴趣的分区,那么请求者调用Get_POL_Attribute(获取_POL_属性)用于所选分区,如框184所示。这种方法导致控制部件150从与所选分区相关的分区对象表166中获得属性。向请求者116提供这些属性,如框186所示。
接着,请求者116调用Open_Read_Only_POL(打开_只读_POL)方法。由框188表示。如下面详细所述的那样,控制部件150获得存储在与所选分区相关的分区对象表166中的数据,但是修改在该对象中的属性来表示基于只读提供该数据,从而不能修改或延伸该数据。由框190示出。
于是,请求者调用Read_POL(读取_POL)方法,它导致控制部件150提供在所选分区中的对象表以供请求者116查看。这由框194所示。在所选分区中选出所需对象以后,请求者116调用close_POL(关闭_POL)方法,它导致控制部件150关闭分区对象表。这由框196所示。
发现对于所需对象或多个对象的对象ID以后,请求者116调用Open_xxx_Objectx(打开_xxx_对象)方法。根据请求者所需的特定数据处理,xxx表示由请求者调用的特定打开方法。Objectx表示来自分区对象表的对象ID,它识别请求者要处理或访问的对象。例如,xxx符号可表示Open_Update(打开_更新)操作,或者Open_Read_Only(打开_只读)操作。下面讨论这些,且用框198表示这个步骤。
于是,请求者执行由控制部件150返回的对象处理。下面,详细描述可用于处理对象的各种方法。框200示出这。
最后,一旦请求者完成对所需对象的处理或访问,请求者116调用下面详细描述的Close_Objectx(关闭_对象)方法,并操作来关闭由请求者116访问的对象。
图8-24示出各种示例性方法的流程图它们可由请求者调用来完成对存储在面向对象存储装置(诸如,装置110)上的对象的所需功能和所需的处理。
图8是具体示出Open_Create_Object(打开_产生_对象)方法的流程图。当请求者116调用该方法时(如框208所示),控制部件150建立新对象ID和将该对象ID送入与其中已建立对象的特定分区相关的特定对象表中。由框210示出。于是,控制部件150通过分配与对象相关的块数量,等等,并修改对象属性来表示对象建立时间并设定在表1中列出并与该对象相关的其他属性,来建立新对象。由框212表示。接着,控制部件150返回请求状态,以及刚建立的对象的新ID。这由框214示出。
除了简单地建立对象之外,请求者116可以指定一系列的选项。例如,在一个较佳实施例中,请求者116可以指定该对象是否受密码保护、该对象是否要加密、某些质量业务限制(例如,对象是否可备份)、锁定特征(例如,是否通过对象锁(lock)以及任何其他锁来锁定对象,诸如分区和装置锁)、访问控制版本、镜像或其他备份支持(它可导致把所有更新镜象映射到另一个对象或者通过特定的另一种方法备份),以指示将空间分配到指定最小尺寸单元中,和设定冲突特征(诸如写入UNIX-类系统)。
特定信息包括在系统中的为了安全性而要求的许可信息、其中建立对象的装置的分区和任何上述选项,其中请求者116向控制部件150提供该特定信息以便调用这种方法。作为响应,在一个示例实施例中,控制部件150返回在装置上可获得的容量,请求的状态以及新对象的ID。
应注意,可以调用这种方法的一个特定情况,它包括与对象相关的所有数据。在该情况,可以调用一种方法,它可建立对象、写入对象并关闭对象。
图9是示出Open_Update_Objectx(打开_更新_对象)方法的流程图。当请求者116调用这种方法时,允许请求者116读取并写入特定对象由框220示出。它还提供扩展对象的长度。当调用该方法时,控制部件150设定在特定对象中的属性,表示该对象正在使用中。请求者116提供许可信息、包含对象的分区ID、被访问对象的标识符、采取的行动类型(诸如,更新或写入)和上述任一种选项。作为响应,控制部件150返回请求的状态和特定对象的长度以及请求者116可获得的剩余容量。
图10是示出Write_Object(写入_对象)方法的流程图。当请求者116调用该方法时(如框242所示),这导致控制部件150写入在特定定位上的指定对象中的指定块数。
一种写入方法还可导致可调用的其他方法。例如,如果在要访问的装置110-112上调用奇偶支持,那么一个写入操作可以自动调用Exclusive Or(异或)方法,它对要写入的数据以及要写到一个或多个以前指定奇偶装置的奇偶数据执行Exclusive Or运算,为了调用该方法,请求者116提供许可信息、对象标识符、分区ID、要写入对象中的块的起始定位、要写到对象中的块的数量、选项信息和要写入的数据。一旦调用该方法,控制部件150通过所提供的特定数据修改指定对象,由框244示出。控制部件150修改在指定对象中的所需属性,诸如对象的长度,与对象相关的时间标记,等等。这由框246示出。于是,当需要时,控制部件150修改其他对象的所需属性,诸如分区对象表。这由框248示出。于是,控制部件150把请求状态返回到特定请求者。这由框250示出。
图11是示出Open_Read_Only_Objectx(打开_只读_对象)方法的流程图。当调用这种方法时,控制部件150允许请求者116为了只读的目的访问特定对象。于是,当调用该对象时(如框230所示),请求者提供许可信息、分区ID、对象ID和选项信息。控制部件150设定在特定对象中的属性,表示该对象正在使用中。这由框232所示。于是,控制部件150设定在该对象中的只读属性,它表示请求者不能写入该对象。这由框234所示。控制部件150返回请求状态和特定对象的长度。这由框236所示。
图12是示出Read_Objectx方法的流程图。当请求者116希望装置110返回来自特定对象的数据时,由请求者116调用该方法。请求者提供许可信息、对象ID、分区ID、要读取的块的起始定位、要读取的块数和任何其他所需选项信息。作为响应,控制部件150返回请求状态、要返回的数据长度和响应于该方法要返回的实际数据。由框256和258示出。
图13是示出Close_Objectx方法的流程图。当请求者116调用该方法时(由框264示出),请求者提供许可信息、对象ID和任何所需选项信息。作为响应,控制部件150修改在特定对象中的数据(由框266示出)。此外,作为写入对象的结果,如果还没有写入存储媒体,那么在此时任何变化将写入对象。控制部件150还更新对象x的属性(由框268示出)。例如,如果对象是新建立的对象,那么在建立的时候更新它的属性,以及其他所需属性信息。此外,修改属性来表示最后一次修改对象中的数据的时间,数据的长度(如果已改变的话),而且由控制部件150设定属性,它表示该对象不再由给定的请求者使用。
控制部件150还可以任意地更新与该对象相关并反映在对象属性中的剩余(residual)高速缓冲存储器信息(cahe information)。这由框270示出。例如,如果作出该请求的特定请求者116来通知存储装置110对于关闭对象数据仍在高速缓冲存储器,或者不再高速缓冲存储,那么在接二连三地关闭和打开对象的情况下,存储装置110的操作系统可以保持使用那些应用的高速缓冲存储器信息。然而,同时,如果另外的请求者同时请求访问该对象,存储装置110可以保留在发生相干冲突(coherency collision)时,系统100中哪些元件需要通知的轨迹。控制部件150返回请求状态(由框272表示)。
图14是示出Remove_Objectx(去除_对象)方法的流程图。当调用该方法时(如框278所示),控制部件150采取必要的步骤来从存储媒体中删除对象。这由框280示出。于是,控制部件150修改与从中删除对象的分区相关的分区对象表,以便反映该特定对象ID又可使用。这由框282示出。控制部件150返回请求状态,如框284所示。为了调用该方法,请求者116提供许可信息、分区ID、对象ID和任何所需选项信息。于是,控制部件150返回请求状态,如框284示出。
图15是示出可由请求者调用的Create_Partitionx(产生_分区)方法的流程图,这由框290示出,以便在存储装置110上的建立分区。应注意,虽然Create_Partitionx方法把驱动器分成一个或多个区域,但是不需要考虑在存储媒体上的所有空间。此外,分区区域还可以跨越在盘片上的多个存储区(zone)。
在一个实施例中,该方法用来以倾斜(tilting)的布局产生分区,同时分区表示在装置上的存储空间的真实划分。用这种布局来以业务级划分空间,诸如数据阵列。这样的分区不能重新确定大小,但是可以去除和重新建立。
根据本发明的另一个方面,该分区用作逻辑分区,以便逻辑组织对象,而不是根据业务级管理空间。在第二实施例中,分区可以动态地重新确定大小。
为了调用该方法,请求者提供许可信息、任何所需选项、分区ID和识别要分配给所识别的特定部分的空间的初始空间分配。作为响应,控制部件150对于特定分区,分配在存储媒体上的空间(如框292所示)。于是,控制部件150建立分区控制对象和请求(petition)对象表(如框294和296所示)。如上所述,分区对象表不能去除并作为起始点,用于引导在分区中的对象。于是,控制部件150返回请求状态和示出已进行分区的分区映象。这由框298示出。
图16是示出Remove_partionx方法的流程图。为了调用这种方法,请求者116提供许可信息、选项信息和识别要去除的分区的分区ID。这在框304中示出。作为响应,控制部件150原先与分区相关的空间分配,如框306所示。控制部件150去除在与要删除的分区相关的分区对象表中的所有对象、删除分区对象表并删除分区控制对象。这由框308、310和312示出。控制部件150返回请求状态和示出对分区所做的变化的分区映象。这由框314示出。
根据本发明的一个方面,把数据管理策略传送到每个存储装置110-112,从而存储装置可以相互独立地进行操作来执行管理策略。这提供了许多重要的优点,从而不仅导致更少的人工干预,而且还导致更加可预测和及时的管理控制。
例如,可希望每星期备份在存储装置110-112上的数据。一般,在周末的空闲期间备份传统系统,从而在工作日(business week)期间系统的可用性不会被中断。然而,在系统容量增加的同时,可用性的窗口已逐渐收缩。于是,试图找可以中断系统的足够长的时间以便尽可能备份兆兆字节的数据,但这个问题十分困难。
于是,根据本发明的一个方面,通过根据分配给它的属性对对象采取行动,面向对象的存储装置110-112可以通知备份功能何时该对象处于可以对它备份的正确状态。此外,可以在较长期间,展开对所有文件的备份,在备份时,还更新其他数据,而不影响数据完整性。
可以调用由面向对象存储装置110-112执行的动作的属性的其他例子包括加密、压缩、翻译(versioning)和奇偶冗余。在这些例子的每个中,最好相对于特定对象和对象组,只需通知存储装置110-112策略。装置本身可以执行该功能或者通知指定提供服务的服务工具(agent)。
例如,可以在存储装置110-112本身执行压缩和加密。因此,需要送到装置的唯一的东西是对于该对象要求压缩或加密的这一事实。对于由服务工具执行的管理功能,不仅必须将管理功能策略传送到存储装置,而且还应识别执行该功能的服务工具,从而当执行该功能的时间到来时,可由存储装置访问该服务工具。
根据本发明的一个方面,可以在对象之间建立相关性,从而识别具有相同属性或具有相关性的那些对象。例如,假设数据库包括6个文件或对象,其中没有一个是可备份的,直至关闭所有对象,或者已关闭被指定作为所有其他对象可以依赖的一个对象。需要文件服务器114来管理对象之间的这种关系。此外,本发明还建立装置间的依赖性,如在排列的奇偶组的情况一样。通过可以建立这样的群,其中一个装置或对象确定,群中的其他装置或对象具有相同的主要性质,对这样群的管理更加有效率和效果。
图17-24是示出通过调用在存储装置上的对象展示的方法可以执行的管理功能的流程图。调用该方法导致控制部件150、和/或相关管理部件,采取行动来执行与所调用的方法相关的管理功能。
图17是示出Export_Objectx(出口_对象)方法的流程图。请求者116通过提供许可信息、选项信息、对象ID、目标装置ID和目标分区ID,调用该方法,这由框320示出。这种出口(export)方法使得存储装置110-112能够根据在与给定的对象相关的属性中所表达的规则采取行动。例如,可用它来启动备份或支持到其他装置的翻译。
当调用Export_Objectx(出口_对象)方法时,控制部件150获得来自存储媒体的特定对象,这由框322示出。控制部件150在由请求者116特定的目标装置处,调用Open_Create(打开_产生)方法。这由框324示出。控制部件150在提供特定对象的数据和属性的目标装置处,调用写入方法。这由框326示出。控制部件150在已将对象写入目标装置之后,在关闭目标装置上的对象的目标装置处调用关闭方法。这由框328示出。最后,控制部件150将请求状态以及已写入目标装置的对象的新对象ID返回到请求者,这由框330示出。
由控制部件150执行的接口128也支持这样的方法,它们允许请求者获得对象属性来检查,并设定对象属性。图18和19是分别示出相应Get_Objectx_Attributes(获得_对象_属性)和Get_Objectx_Attributes(获得_对象_属性)方法。
如框336所示,一旦调用的如图18所示的方法使得控制部件150获得对于特定对象的属性。在一个示例实施例中,请求者提供许可信息、对象ID或对象ID表和选项信息。控制部件150获得与对象ID或对象ID表相关的属性并把那些属性以及请求状态返回到请求者。这由框338示出。
可由向控制部件150提供许可信息、对象ID和选项信息的请求者调用如图19所示的Get_Objectx_Attributes方法,如框344所示。控制部件150使用由请求者提供的信息修改特定对象的属性,并返回请求状态以及特定对象的已修改的属性。这由框346和348示出。
根据本发明的另一个方面,可锁定对象,从而一旦由拥有设置在对象上的锁(1ock)的服务器解锁(unlock)它们,才能访问它们。在一个示例实施例中,可在对象级、分区级或装置级,加锁。锁机构提供服务器之间的访问方法。在一个较佳实施例中,这样的锁用来调度同时更新并阻止在维护功能期间访问。图20、21和22是示出作为Get_Attribute(获得_属性)和Set_Attribute(设定_属性)方法的例子的锁定方法的流程图。然而,对于那些方法的这些特定情况提供附加细节,从而在请求者群之间共享数据时可以运用它们。
图20是示出Read_Lock_Attribute(读取_锁定_属性)方法的流程图。通过从请求者116向控制部件150提供许可信息、对象、分区或装置ID、锁定参数和任何所需选项信息,可以调用该方法,如框354所示。作为响应,控制部件150确定特定对象是否具有设定的锁。控制部件150返回拥有该锁的请求者的请求的状态。这由框356所示。
图21是示出Set_Lock_Attributes(设定_锁_属性)方法的流程图。请求者通过提供许可信息、对象、分区或装置标识符信息、锁参数和选项信息,可调用该方法,如框362所示。当调用该方法时,控制部件150检查与识别对象相关的锁。这由框364所示。于是,控制部件试图通过请求者的识别执行锁定或解锁操作。这由框366示出。如果请求操作的请求者是锁的拥有者,那么可以执行该操作。如果不是,那么不执行该操作。在任何情况下,控制部件150返回请求状态以及拥有锁的服务器的ID。这由框368示出。
图22是示出Reset_Lock_Attribute(复位_锁定_属性)方法的流程图。该功能用于试图在拥有锁的服务器不再起作用的情况下,复位锁。如框374所示,可以通过提供许可信息、对象、分区或装置标识符信息、锁参数和任何所需选项信息调用该方法。作为响应,控制部件150锁定特定对象、分区或装置,这由框376所示,并返回请求状态以及拥有锁的服务器的识别。这由框378所示。
图23和24是示出Get和Set_Device_Association(获取和设定_装置_属性)方法的流程图。这些方法定义或询问在装置110-112之间的关系。这种关系的一个示例实施方法包括识别存储装置110-112之一作为第一组装置中的主装置,而其他装置是依赖于该组的成员。该组中的第一或主装置负责将组属性的变化传播到其他成员。如果组中的第一或主装置不提供属性设定的话,那么其他成员拒绝属性设定。为了使存储装置110-112执行这些功能,它们提供有执行自检的能力。这允许装置检查本身来确定它们是否是大装置群的成员。
在图23中示出Get_Device_Associations(获得_装置_联合)方法。通过提供许可信息和选项信息,可以调用该方法,如框384所示。作为响应,控制部件150返回请求状态,以及使该装置成为成员的请求联合(requestedassociation)。这由框386示出。图24是示出Set_Device_Associations(设定_装置_联合)方法的流程图。如框392示出,通过提供许可信息、选项信息和定义联合的成员和属性表可以调用这种方法。作为响应,控制部件150修改包含在存储媒体上的装置联合对象156,如框394示出。修改装置联合对象来包括由请求者提供的属性,并包含示出何时最后修改对象属性等等的时间标记。控制部件150返回请求状态,如框396示出。
上述许可信息示例地示出,通过控制服务器114将从存储装置110-112获得响应的凭证给予哪个请求者116-120来允许文件服务器114选通到存储器的访问。文件服务器114还命令存储装置110-112它们必须遵守坚持安装安全性策略的I/O请求。通过Set_Object_Attributes方法把作为允许安全性能力的基础(underlying)的关键(key)示例性地传送到存储装置110-112。如果对存储装置110-112设定适当安全级,以致可以配置存储装置来检查每个I/O命令以符合安全性。然而,如上所述,一些应用不需要采用安全性。此外,如果特定服务器群具有一些装置位于另一个物理设备中,那么理想的是对于与位于远方的装置进行的通信定义较高安全性,但是对于本地通信则不然。这允许采取安全性用于位于远方请求者或服务器,但是避免采用这样的安全性用于本地请求者或服务器所带来的性能损失。
此外,每个存储110-112最好包括用于时间标记安全消息和对象的可读单调递增时钟。在一个示例实施例中,在系统范围的基础上使用于多个装置的时钟同步。在另一个示例实施例中,文件服务器114适应于存储装置之间的差异和值。
于是,可见,本发明提供面向对象存储装置,诸如存储驱动器,它提供优于传统存储装置的显著优点。面向对象存储装置大大改善了群集体系结构。例如,通过以面向对象的形式存储数据,可由存储装置本身管理数据。对象为存储装置提供它的常驻数据的充分知识,以致于它好象负责管理它自己的空间。此外,当装置具有关于什么构成逻辑实体的信息时,可以更加智能地控制数据的共享。例如,如果两个系统要共享存储在面向块的装置上的数据,那么为了同时访问必须控制所有元数据活动。相反,在面向对象装置中,许多元数据活动对于访问它的系统是不透明的。于是,系统本身只需考虑本身对用户数据的访问冲突。此外,由装置本身执行的空间管理消除两个系统试图同时管理相同存储装置上的空间而引起的任何竞争或混乱。
此外,通过对象提取可使不同种类的计算更加简单。面向对象的存储装置提供至少具有操作系统可以解释的组织的能力。
此外,出于多种原因通过运用面向对象存储装置增强在群集系统中的性能。例如,元数据不再需要离开装置本身,消除了某些I/O操作。
此外,装置知道在任何一次打开或关闭哪些对象,而且能够运用这样的信息来更加有效地高速缓冲存储数据。预取还可更加有效,因为装置知道所读取的对象的格式。存储装置可以更加有效地确定顺序访问模式。在装置中的高速缓冲存储器还可以保持元数据一次,用于访问它的多个系统。此外,装置可以参与业务决定的质量,诸如将数据更适当地放置在哪里。如果该装置负责分配存储器,它可以只作此事。相反,几乎没有操作系统可以在盘片驱动器上接存储区分配数据。于是,在驱动器上提供这种能力本身增强了性能。
在以驱动器阵列排列的盘片驱动器中能够实施本发明。因为在盘片驱动器阵列上存储的信息通常比盘片驱动器本身更有价值,通常把驱动器阵列称为廉价盘片冗余阵列(RAID)。已知几种RAID系统或RAID级。例如,第一级RAID其特征是提供镜象盘片。如上所述,在第五级RAID中,存储在阵列上的数据以及奇偶性或冗余数据散布在组中的所有盘片驱动器上。第五级RAID分配数据和检查在所有盘片上的信息,包括检查盘片。在美国专利第5,617,425号(发明名称为“具有阵列支持控制器和接口的盘片阵列”)中详细描述其他RAID级(例如,级2-4)。
图25-29示出根据本发明的一个方面执行的写入操作,其中把数据作为对象存储在阵列中的盘片驱动器上。如图25所示的实施例中,文件服务器114、请求者(或者主机)116和互连122连到盘片驱动器阵列,它包括构成作为存储装置(诸如,存储装置110-112)的目标驱动器402和奇偶驱动器404。目标驱动器402保持要写入的对象,或者它的一部分,同时奇偶驱动器404保持与存储在目标驱动器402上的目标对象相关的奇偶信息。
在图25中,驱动器阵列以RAID5阵列实现,其中数据和奇偶分布在群中的所有驱动器。因此,仅对当前的写入操作驱动器402是目标驱动器,驱动器404是奇偶驱动器。换言之,目标驱动器402也保存奇偶信息,奇偶驱动器404也保存数据。但是,对下面讨论的单个写入操作,驱动器402是目标驱动器,驱动器404是相应的奇偶驱动器。还应注意,本发明能应用于除RAID5以外的其他RAID级。在这样RAID系统中,本发明对熟悉本专业的人是十分清楚的。
在图25中,目标驱动器402和奇偶驱动器404通过光纤信道接口,或其他适当接口(诸如,其他串行接口),相互连接。
图26和27分别示出目标驱动器402和404。每个驱动器包括控制部件150和一个或多个盘片132。每个驱动器还包括读/写电路406(诸如,上述数据读写头)和异或(XOR)电路408。目标驱动器402包括盘片空间410,它存储要写入的目标对象。奇偶驱动器404包括盘片空间412,它存储相应奇偶对象。下面,参照图28和29,详细描述驱动器402和404的操作。
传统的实施小计算机系统接口(SCSI)的盘片阵列的XOR命令使得盘片驱动器能够执行实施抗驱动器故障的奇偶保护所需的位运算。那样的命令要求主机(请求者)按扇区访问盘片,从而对于写入一个盘片驱动器的任何扇区,可以适当地更新在另一个盘片驱动器上包含奇偶信息的相应扇区。然而,上述面向对象盘片驱动器在盘片驱动器上的主机和实际存储扇区之间引入提取层。特别是,盘片驱动器管理盘片空间作为对象,从而主机(或请求者)不访问底层的基础扇区寻址线路。盘片驱动器本身负责空间管理,从而请求者或主机不能够将一个盘片驱动器写入数据的一部分与另一个盘片驱动器上的位置相互关联。于是,请求者不知道在它写入的块的盘片驱动器上的地址,而且它不计算相应的奇偶地址。在面向对象的盘片驱动器中运用传统XOR功能,如果可能的话也是很困难的,如上所述。
因此,本发明提供称为Define_Parity_Group(定义_奇偶_群)的方法,在构成奇偶群的盘片驱动器组中的每个盘片驱动器处调用该方法。该方法完成两件事。第一,它提供充分信息从而能够调用标准Write_Object(写入_对象)方法来执行与在传统驱动器阵列中的基于扇区的XOR命令相同的功能。它还使得在保持特定驱动器共享奇偶数据的该组中的每个驱动器上建立一个对象。奇偶对象ID是每个驱动器已知的ID,从而想要更新奇偶信息的任何驱动器都知道正确的对象标识符,它可向该标识符提出它的请求。
参照图28,详细描述Define_Parity_Group(定义_奇偶_群)方法。首先,请求者或主机在奇偶群中的每个驱动器处调用该方法。这由框420示出。为了调用该方法,请求者提供下列多项1.包含奇偶群的驱动器有序表。这可包括每个驱动器的序号和地址。
2.在计算奇偶性中用到的算法。在一个简单的示例实施方法中,在要写入的数据的块地址上执行模运算。这种运算产生奇偶驱动器地址(根据从上面第一项的有序表)和在奇偶驱动器上的奇偶对象中的相关块地址(它是包含所需奇偶信息的奇偶对象的相关部分)。
3.在奇偶道中的数据量,示例以块为单位。如果把奇偶数据散布在每个驱动器上的空间中,那么该信息是分配的最小(atomic)单位。
4.奇偶对象标识符。调用Write_Object(写入_对象)方法来更新奇偶对象的驱动器将它(奇偶对象标识符)发送到在上面项2开始确定的奇偶驱动器上该对象的ID。应注意,可以实施多级奇偶性(诸如,两级奇偶性)。于是,每个驱动器可以具有多至两个奇偶对象。在一个示例实施方法中,在具有两级奇偶性的盘片阵列中使用驱动器的情况下,由每个驱动器分配和保留两个已知对象ID。存在第二奇偶对象标识说明利用两级奇偶性。
5.奇偶性对象分配策略。这表示无论每个驱动器分配奇偶性对象作为盘片空间的单个相连的区域或者将奇偶对象与用户数据对象分开布置。于是,虽然图26和27示出奇偶对象和数据对象作为相连盘片空间,但是这只是示例而已。应注意,如果奇偶对象与数据分开,那么仍然可以预先分配它。
响应于调用Define_Parity_group方法,在奇偶群中的每个盘片驱动器中的控制部件150计算奇偶数据所需的它的空间的百分比。这由框422示出。根据在奇偶群表中的盘片驱动器的数量,确定奇偶对象所需的空间量。例如,如果在表中存在9个盘片驱动器,那么每个驱动器必须分配它的空间的九分之一用于奇偶信息。一旦调用这种方法,就由请求者或主机提供的已知的奇偶对象ID识别该空间量。这由框424示出。
在奇偶组或群表中的每个驱动器保持确定奇偶群的信息,从而每次给盘片驱动器上电或复位时,它都验证有无不协调的奇偶群。随后,把该信息存储在非易失性存储器,如框426所示。
假设如此产生盘片驱动器的奇偶组,而且在每个盘片驱动器上分配空间来保持一个或多个奇偶对象,则存储在一个或多个驱动器上的数据对象中的数据就可以更新。图29是示出根据本发明的一个方面,更新对象和相应更新奇偶对象的方框图。
为了更新数据,要求更新数据的请求者116对在奇偶群中的一个盘片驱动器调用上述Write_Object(写入_对象)方法。在如图25-27所示的实施例中,请求者116对目标驱动器402调用Write_Object方法。这由图26中的箭读写头和图29中的框430示出。为了调用该方法,请求者116说明性地提供对象标识符,来识别要更新的对象、分区ID、在对象中要写入的块的起始定位、在对象中要写入的块数、选项信息和要写入的数据。目标驱动器402知道服务Write_Object方法必须包括更新与要更新的对象相关的奇偶信息。目标驱动器402知道这,因为它已把在执行Define_Parity_Group方法期间提供和产生的信息存储在非易失存储器中。
为了更新奇偶信息,目标驱动器402执行大量步骤。首先,它从目标对象中的特定位置读取旧数据并向XOR电路408提供此数据以及要写入该位置的新数据。这由图29中的块432和图26中的箭读写头434、436和438示出。
接着,目标驱动器402将旧数据与新数据异或来获得中间奇偶信息。这由图29中的框440示出。目标驱动器402在图26中的输出端处提供中间奇偶信息。接着,目标驱动器402把新数据写入目标驱动器410中的目标位置,随后更新目标对象。这由图29中的框444示出。
于是,目标驱动器402本身对奇偶驱动器404调用另一种Write_Object方法,识别与刚更新的目标对象410相对应的奇偶对象。这由图29中的框446和图27中的箭读写头448示出。目标驱动器402可以多种方法来计算对于奇偶对象的目标定位。例如,目标驱动器402可以根据要写入的块目标对象的相关扇区地址计算定位。相关地址被除以在奇偶群中的驱动器数来提供在奇偶驱动器404上的奇偶对象中的相关地址。由在Define Parity_Group方法规定的算法确定奇偶驱动器地址。目标驱动器402构成Write_Object方法并调用它在奇偶驱动器上使用此相对位置识别奇偶对象412和在该对象内的适当位置。
通过举例,为了计算在要更新的驱动器404上的奇偶对象中的相关块,目标驱动器402可以运用下列等式等式1B=INT(S/D1)其中,B是在奇偶对象中的相关块;S是写入目标驱动器402的相关扇区地址;和D是在奇偶群中的驱动器数量。
为了计算奇偶驱动器地址,目标驱动器402可以运用下列等式等式2P=MOD(S/D-1)P是在奇偶驱动器的奇偶群中的驱动器表中的偏移量(用于计算P的表必须排除目标驱动器402的地址)。
响应于该Write_Object方法,奇偶驱动器404识别此命令作为写入它的奇偶对象并执行奇偶操作。那样的操作包括读取旧奇偶数据,如图29中的框450和图27中的箭读写头452所示。于是,奇偶驱动器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)信息。当读回相应用户数据时,可以运用该信息来确定数据是否包含任何错误,并且(依赖于所用的代码)定位和纠正那些错误。在一个较佳实施例中,运用Reed Solomon码产生ECC信息。然而,可用任何适当的码来产生ECC信息。
在现有技术盘片驱动器中,如果一个扇区变得不可读,而且由操作系统用于特殊目的,那么这实际上可使得整个盘片不可读。例如,如果主引导记录、分区引导记录、FAT表或根目录变成不可读,那么这可导致实际上整个盘片内容丢失。传统操作系统,面临丢失这样关键文件系统管理数据没有能力恢复可读的数据。因此,根据本发明的一个方面,在盘片驱动器上的面向对象数据组织使盘片驱动器负责维护基本文件系统结构,这以前是操作系统领域。根据本发明的一个方面,用每个数据块或数据部分,将主要文件系统数据的冗余复本与每个数据块或数据部分一起存储在它的相关ECC部分。由于已将ECC部分存储在盘片上,所以把文件系统信息插入数据对象的ECC部分中不会以任何方式来影响性能或用户能力。
图31是示出如何在将信息记录在盘片上之前将系统信息与ECC信息结合或将其插入ECC信息的方框图。图31和32还示出如何根据本发明的一个方面,用文件系统信息来重新构成文件系统数据。图31示出编码器516、ECC发生器518、异或电路520、盘片132和读/写电路406、ECC发生器522、解码器524和异或电路526。应注意,编码器516、ECC发生器518、异或电路520、解码器524、ECC发生器522和异或电路526可都在盘片驱动器上的控制部件150实施,或者可分开实施。
首先从主机、请求者或文件服务器向编码器516提供用户数据。编码器516根据一般用来减小错误率的预定编码算法编码数据。于是,向ECC发生器518提供编码用户数据。ECC发生器518通过已知的方法,根据编码用户数据,产生ECC信息。所产生的ECC信息依赖于所用到的特定种类的纠错编码方案。反过来,向异或电路520提供ECC信息。还在输入端521,向异或电路520提供文件系统数据。在如图31所示的实施例中,文件系统数据是定位信息,它识别将用户数据写入盘片132的位置。例如,在上述面向对象系统中,定位信息包括对象标识符,它识别用户数据所属的对象。定位信息还包括相对位置信息,它识别在被识别对象中的相关数据部分的相对位置。异或电路520的输出还提供带有插入其中的定位信息的ECC信息。该信息被送到读/写电路406并写入盘片132,而对于数据部分的相关ECC部分包含由编码器516提供的编码用户数据。
当读取来自盘片132的信息(以便完成正常读操作),控制部件150通过向异或电路提供预期定位信息并用ECC信息(它包含定位信息)异或该信息,执行Read_Object(读取_对象)功能。异或电路的输出提供与读取的用户数据相关的ECC信息。向ECC发生器提供该信息,ECC发生器确定在编码用户数据中是否已发生任何错误。如果不是,那么向解码器提供经编码的用户数据,在那里向请求者或用户呈现无错误信息。如果已发生错误,那么依赖于所用的特定错误编码方案,控制部件150尝试识别和纠正误差。不然,控制部件150简单地提供错误标记表示数据包含一个或多个不可纠正的错误。
然而,在已丢失系统信息(在所示例子中-定位信息)的地方,控制部件150以不同方法进行操作。控制部件150导致读取在盘片132上的数据。这由图32中的框528示出。向解码器524和ECC发生器522提供编码用户数据。应注意,ECC发生器522和ECC发生器518可以是相同的发生器,它具有适当的多路复用电路。然而,为了说明清楚,图31中表示为分别的部件。
ECC发生器522根据编码用户数据,产生ECC信息(这由图32中的框530示出)。该信息提供给异或电路526。还从盘片132读取ECC信息(它包含插入的定位信息),并提供给异或电路526。这由框532示出。如同ECC发生器522一样,异或电路526可以与异或电路520相同,同时具有适当的多路复用电路。然而,为了说明清楚,两个电路分开表示。
通过将由ECC发生器522提供的ECC信息,与包含插入定位信息的ECC信息,进行异或操作在到异或电路526的两个输入中的ECC信息将相互抵消,导致简单的定位信息输出。这由框534示出。结合由解码器524输出的数据,运用该信息来重新构成已丢失的文件系统。这由框536和538示出。例如,现在运用来自盘片经检索的定位信息,可以重新构成对象目录,而且与从盘片读取的用户数据相关。
根据本发明的另一个方面,通过利用伪随机(或伪噪声)发生器,可以随机化由ECC发生器518产生的ECC信息。图33是示出这样的实施例的方框图。如图33中所示的多项与如图31所示的相类似,而且标号类似。图33所示的方框图基本上与如图31所示相同地进行操作。然而,宁可用定位信息来作为原始值由随机噪声(PN)发生器540产生的随机数,也不简单地在输入端521处向异或电路520提供定位信息。于是,在输入端542处,向PN发生器540提供定位信息。根据原始值,PN发生器540产生向XOR电路521提供的输出,它与由ECC发生器518提供的ECC信息异或、并与相关编码用户数据一起记录在盘片132上。
为了重建文件系统信息(例如,定位信息),从盘片132读取编码用户数据并提供给产生ECC信息的ECC发生器522,并提供给异或电路526。还从盘片132读取包含插入伪随机值的ECC信息,提供给异或电路526。异或电路526的输出产生已用由定位信息产生的随机值。此值提供给反(inverse)PN发生器544,它完成PN生成器540的反随机处理过程,在它的输出端546处提供定位信息原始值。如图31所示的实施例一样,该信息可与由解码器524提供的解码用户数据一起使用,来重新构成前面丢失的文件系统结构信息。
这里所述的XOR门520和526是字节-宽XOR电路,用于在数据字节中对各单个比特异或。因此,XOR电路实际上是八个单个XOR门,来提供八个位的XOR功能。此外,虽然这里所述的本发明谈及XOR门,但是对于基于纠错和检测码的字段,任何适当的Galois字段操作(或添加),或其他适当操作,都落在本发明的范围内,而且可由熟悉本技术领域的人员来实施。
此外,在一个较佳实施例中,在美国专利号5,717,535(授予French等人,1998年2月10日颁布)中详细描述PN发生器540。该专利描述具有33个寄存器单元的发生器,它们具有连到逻辑块的输入和输出端。该寄存器单元是一比特宽并以与数据字节相同的时钟同步。发生器足以保持对象标识符和多至4个字节(32位)长的相关定位信息,但是易于扩展来适用多于4个字节的更大的定位信息或其他文件系统信息。发生器还示例地包含使用的额外的寄存器单元,从而具有值零的定位信息在PN发生器540的输出端不产生全零。如果单单为了通过ECC信息产生文件系统信息的目的来使用的话,那么没有理由必须将这个附加单元包含在PN发生器540中。然而,如果出于一些其他原因(即,容错)用发生器540来随机化数据,应包含附加单元,从而全零输入将提供非零输出。由时钟以每8个数据比特一次的速率(即,每个字节一次)示例地同步数据。
在示例实施例中,发生器540包括根据下列等式3和4操作的多个触发器,其中B表示到触发器的输入,而A表示来自触发器的输出。
等式3BI=AI+8;对于I=0至24;和等式4BI=AmXOR AM+13;对于I=25-32,M=(I+8)模33。
应注意,发生器540示例等价于基于原多项式X33+X13+1的二进制反馈移位寄存器,且每时钟周期移位8次。驱动到寄存器单元的输入的逻辑块表示这些8个移位的结果。依此类推,显而易见,在发生器540的输出端处提供的字节序列示例地每233-1个字节重复一次。
因此,可见本发明提供优于现有系统的显著优点。即使在面临丢失关键文件系统信息。(诸如文件系统结构数据)时。本发明允许读取用户数据,本发明将文件系统信息(诸如文件系统结构信息)插入与对象的数据部分相对应的ECC信息。通过读取在盘片上的数据和反插入处理过程,可以简单地读取文件系统信息,由此可以重新构成文件系统信息。
根据本发明的一个方面,本发明包括在盘片驱动器中的盘片132上的数据结构,该数据结构包括具有多个部分的对象500,其中上述多个部分包括数据部分504和包含与对象500相关的对象定位信息的对象定位部分510。在一个示例实施例中,对象定位部分510包括由对象定位信息产生的纠错码(ECC)信息。对象定位信息示例包括对象识别信息。
在一个实施例中,数据部分包括多个数据段504、506和508,其中ECC部分包括与每个数据段相关的ECC字段510、512和514。每个ECC字段包括根据在相关数据段中的数据产生的ECC信息。ECC字段还包括识别数据段所属的对象500的对象识别信息和表示在由对象识别信息识别的对象500中的数据段的相关位置的相关位置信息。
还在具有其上存储有数据的盘片132的盘片驱动器中实施本发明。示例存储数据作为对象124-126,它们包括数据部分504、506和508以及相关纠错部分510、512和514。纠错部分包括对象定位信息,它表示在盘片驱动器上存储对象500的位置。盘片驱动器包括相对于盘片132安装的数据读写头142来访问在盘片132上的数据。将控制部件150在操作上与读写头142耦合,并通过已揭示的调用来访问对象124-126的功能或方法(方法0-方法N),提供给到对象124-126的接口128。
在一个示例实施例中,构成控制部件150来保持在盘片驱动器上的文件系统结构信息(诸如,DCO154、DAO156、PCO164和POL166)对象,以及存储在纠错部分中的对象定位信息。文件系统结构信息可包括表示对象124-126中每个对象的身份(identity)的对象目录,和将对象部分中的每个部分定位在盘片驱动器上的位置。对象定位信息示例性的包括表示相关数据部分所属的对象的对象标识符,和表示在由对象标识符标识的对象内的相关数据部分的相关位置的数据部分定位。
根据本发明的一个方面,控制部件150被构成能根据存储在对象500中的ECC部分510、512和514中的对象定位信息重新构成丢失的文件系统结构信息。
根据本发明的一个方面,用一种方法来将信息存储在盘片驱动器上的盘片132上。该方法包括将信息在盘片132上作为多个对象124-126存储,其中每个对象具有多个数据部分504-508和相关定位部分510-514。数据定位部分包括表示相关数据部分的位置的定位信息。该方法包括将除了定位部分之外的文件系统结构信息也保持在盘片驱动器上,其中文件系统结构信息表示对象124-126的身份,和在盘片驱动器上对象124-126的定位。
根据本发明的另一个方面,该方法还包括根据存储在定位部分510-514中的定位信息重新构成丢失文件系统结构信息。此外,存储步骤示例地包括将纠错码信息存储在定位部分510-514并用定位信息产生ECC信息。
重新构成步骤示例地包括读取产生的ECC信息、从ECC信息中派生对象标识符和相关定位标识符,而且根据对象标识符和派生出的相关定位标识符重新构成文件系统。
根据本发明的另一个方面,文件系统结构信息包括对象目录,它包含多个结象的对象标识符和对于多个对象的一组相关定位标识符,其中读取步骤、派生步骤和重新构成步骤是对多个对象执行的。
应理解,即使在前面的描述中提出本发明的多个实施例的多个特征和优点,以及本发明的多个实施例的结构和功能细节,该揭示只为了说明,而且可以进行细节上的变化,特别是在本发明的原理范围内的部分结构和布局到由所附权利要求书所表达的各项的广义所述的全部范围。例如,可根据所用的特定接口方法、冗余方案或检错或纠正方案改变特定单元,而实际上保持相同的功能性,而不偏离本发明的构思和原理。
权利要求
1.一种在盘片驱动器中的盘片上的数据结构,所述数据结构包括具有多个部分的对象,其特征在于,所述部分包括包含数据的数据部分;和对象定位部分,它包含与所述对象相关的对象定位信息。
2.如权利要求1所述的数据结构,其特征在于,所述对象定位部分包括包含用所述对象定位信息产生的ECC信息的纠错码(ECC)部分。
3.如权利要求2所述的数据结构,其特征在于,所述对象定位信息包括对象识别信息,而且所述数据部分包括多个数据段,所述ECC部分包括与每个数据段相关的ECC字段,每个ECC字段包括根据在所述相关数据部分中的所述数据产生的所述ECC信息,所述ECC字段还包括识别所述数据部分所属的对象的所述对象识别信息,和表示在由所述对象识别信息识别的所述对象中的所述数据段的相关位置的相关位置信息。
4.一种盘片驱动器,其特征在于,包括盘片,具有存储在其上的数据,所述数据作为包含数据部分和相关纠错部分的对象存储,所述纠错部分包括表示在所述盘片驱动器上存储所述对象的定位的对象定位信息;读写头,相对于所述盘片安装来访问在所述盘片上的数据;和控制部件,与所述读写头在操作耦合,所述控制部件通过所揭示的功能向所述对象提供接口,其中调用所述功能来访问所述对象。
5.如权利要求4所述的盘片驱动器,其特征在于,所述控制部件被配置成能保持在所述盘片驱动器上的文件系统结构信息以及存储在纠错部分中的所述对象定位信息。
6.如权利要求5所述的盘片驱动器,其特征在于,所述对象定位信息包括对象标识符,它表示所述相关数据部分所属的对象;和数据部分定位,它表示在由所述对象标识符识别的所述对象内的所述相关数据部分的相关位置。
7.如权利要求6所述的盘片驱动器,其特征在于,所述控制部件被配置成能通过读取包含存储在其中的所述对象定位信息的所述纠错部分,并根据所获得的所述定位信息重新构成所述丢失文件系统结构信息,来重新构成丢失的文件系统结构信息。
8.一种将信息存储在盘片驱动器中的盘片上的方法,其特征在于,所述方法包括下列步骤(a)把信息以多个对象存储在所述盘片上,每个对象具有多个数据部分和一个相关定位部分,每个数据部分包括表示信息的数据,而每个相关定位部分包括表示所述相关数据部分的定位的定位信息;和(b)除了所述定位部分之外还将文件系统结构信息保持在所述盘片驱动器上,所述文件系统结构信息表示在所述盘片驱动器上的所述对象的身份和所述对象的定位。
9.如权利要求8所述的方法,其特征在于,还包括下列一个步骤(c)根据存储在所述定位部分中的所述定位信息重新构成丢失的文件系统结构信息。
10.如权利要求9所述的方法,其特征在于,所述产生步骤包括用对象标识符和相关定位标识符产生所述ECC信息的步骤,所述对象标识符包括表示包含与所述信息部分相关的所述数据部分的对象身份的信息,和包括表示在由所述对象标识符识别的所述对象内所述数据部分的相对位置的信息的所述相关定位标识符,其中所述重新构成部分(c)包括下列步骤(c)(1)读取所述产生的ECC信息;(c)(2)根据所述ECC信息派生所述对象标识符和相对定位标识符;和(c)(3)根据派生出的所述对象标识符和相关定位标识符,重新构成所述文件系统结构信息。
全文摘要
本发明涉及数据存储装置(110—112),它包括存储在其上作为对象(124—126)的数据。对象(500)具有多个部分,它们包括包含数据的数据部分(504)和包含与所述对象(500)相关的对象定位信息的对象定位部分(510)。可简单地实施本发明作为在盘片驱动器中的数据结构,或者作为在盘片驱动器或其他数据存储装置上的存储信息的方法。
文档编号G06F3/06GK1278356SQ98808583
公开日2000年12月27日 申请日期1998年8月27日 优先权日1997年8月28日
发明者D·B·安德森 申请人:西加特技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1