CN1267379A - 面向对象的数据存储设备的冗余实现 - Google Patents
面向对象的数据存储设备的冗余实现 Download PDFInfo
- Publication number
- CN1267379A CN1267379A CN98808073A CN98808073A CN1267379A CN 1267379 A CN1267379 A CN 1267379A CN 98808073 A CN98808073 A CN 98808073A CN 98808073 A CN98808073 A CN 98808073A CN 1267379 A CN1267379 A CN 1267379A
- Authority
- CN
- China
- Prior art keywords
- data
- redundant
- memory device
- requestor
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1461—Backup scheduling policy
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1059—Parity-single bit-RAID5, i.e. RAID 5 implementations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1066—Parity-small-writes, i.e. improved small or partial write techniques in RAID systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种数据存储系统(100)包括具有存储在其上的并配置成多个对象(124—126)的数据的存储媒体(132),每个对象具有表示所述对象(124—126)特征的属性。所述对象(124—126)包含存储冗余信息的冗余对象(412)。一个控制部件(150)可操作地耦合至存储媒体(132)并配置成以向所述对象(124—126)提供界面(128)。该界面(128)展示可被调用以访问对象(124—126)的方法(Φ-N)。
Description
技术领域
本发明涉及数据存储设备。具体而言,本发明涉及其中数据作为对象加以组织和存取的诸如磁盘驱动器、磁带驱动器或光盘驱动器之类的数据存储设备。
背景技术
在计算机产业界,熟知两类常规的计算机模型。一种是主机计算模型,另一种是簇(群集)计算模型。
在主机计算模型中,最终用户的通常过程是,先购买一初始系统,而在需要追加处理能力时,再换一个更大的系统。在这周期的不同点会产生损伤性的不连续。例如,如果用户成长到不满意初始系统的体系结构,则用户可能需从一种操作系统转换至另一种操作系统,或甚至当购买第二套升级的主机系统时,要从一个供应商专有的体系结构转换到另一个供应商的专有体系结构。为实施升级,这种改变在费用与雇员时间两方面均需巨大代价。所以在很多情况下,要避免这种转换。
此外,主机模型遗留的计算机设备的剩余价值较差。这样,当初始系统由升级的系统更换时,系统更换经常使以前投资基本上完全丧失。何况,更大的升级系统与较小系统相比,销售量较小。因此,升级系统的价格常比以前系统要高。
在簇计算模型中,用一簇较小的、标准服务器来代替主机。这可提供比主机更多优点。因为簇可作为一个单一系统启动,因而进入簇模型的阈值较低。进而,这种较小系统常常大量销售,使计算机成本较低。而且,这种系统的标准是不依赖于专有体系结构。这为现有设备提供了多种来源的可能性,从而允许用户续后购买时选择到最佳产品。
簇计算模型还具有以下优点。通过仅增加满足目前及近期需求的附加资源,可更精确地控制升级成本。进而,用户可从广泛的供应商中进行选择而不必担心转移或转换至一个升的体系结构。类似地,有一个正确的体系结构,可能决不需转换至另一操作系统。
簇计算模型也有其不利的问题。例如,簇计算模型难于提供在承担与单个主机完成同等工作量前提下而具有共享数据能力的簇系统。例如,通常非常难于实现簇中每个服务器都处理相同数据事务的簇机型。
一些这种应用的例子包括航空公司订票系统或金融机构的完整交易清单。
簇机型的第二个缺点仅涉及在管理主机环境中现存数据缺少广泛经验。这种经验已引伸至在标准的簇环境中还没可用的管理软件。
本发明致力于解决这些和其它问题,并对已有技术提供另一些优点。
发明内容
数据存储系统包括存储媒体,其上存储配置成多个对象的数据,每个对象具有表示该对象特征的属性。这些对象中还包括一个存储冗余信息的冗余对象。控制部件可操作地耦合至该存储媒体并配置成为所述对象提供一个界面。所述界面展示存取对象的调用方法。
附图概述
图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是根据本发明一个方面的奇偶磁盘驱动器的框图。
图28是根据本发明一个方面,创建奇偶群的流程图。
图29是根据本发明一个方面,更新奇偶信息的写操作流程图。
较佳实施例的详细说明
图1是根据本发明一个方面的数据存储系统100的框图。系统100包括面向对象的数据存储设备110和112,文件服务器114,请求者116、118和112,及互连122。系统100表示一种附加于网络的存储配置,它由来自许多不同供应商的设备和软件构件,对用户来说如同单个大计算机系统。
面向对象的存储设备110-112是执行系统100的数据存储功能的存储部件。存储设备110-112最好包括磁盘驱动器、独立冗余盘阵列(RAID)子系统、磁带驱动器、磁带库、光盘驱动器、连接光盘(juke boxes)或其它可共享的存储设备。存储设备110和112还向请求者116、118和120提供输入/输出通道以便存取设备110和112。
请求者116、118和120是类似服务器或客户器之类的部件,它们能共享设备110和112中的存储信息。请求者116-120最好配置成直接存取存储设备110和112中的信息。
文件服务器114执行管理和安全功能,诸如请求验证和资源位置等。在较小系统中,最好不使用专用文件服务器。而用116-120中的一请求者承担文件服务器114本该执行的监督系统100操作的职责。此外,在不需要或不希望文件服务器114提供的安全和功能时,或更需请求者116-120群与存储设备110和112直接交谈时,可从系统100中去掉文件服务器114。
在一个较佳实施例中,互连122是物理上的基础结构,通过它,带有存储系统100的网络中的所有部件能相互通信。
操作上,当系统100启动时,所有设备最好相互或相对于一个共同参照点(例如文件服务器114或互连122)标识自身。例如,在基于光纤通道的系统100中,面向对象的存储设备110和112及请求者116-120登记在系统组织结构(fabric)。在这样实施后,任何希望确定操作配置的系统110的任何部件可使用结构服务来识别所有其它部件。从文件服务器114,请求者116-120得知请求者116-120可以存取的存储设备110和112的存在。同样,存储设备110和112得知确定系统100中的其它设备的位置信息及用于调用备份之类管理服务所必须的地址。类似地,在一个较佳实施例中,文件服务器114从结构服务得知存储设备110和112的存在。
取决于特定系统100的安全实践,请求者116-120或其中任一个可能被拒绝存取系统100的某些部件。从对每个请求者都适用的一组存储设备110和112,请求者可识别文件、数据库和它可用的空闲空间。
同时,系统100中的各部件最好能识别与文件服务器114关联的任一特写考虑。例如,一旦任一存储设备将层次服务(level service)属性通知文件服务器,则系统100中的所有其它部件即可从文件服务器114得知这些属性。例如,特定请求者116-120可能希望及时通知它附加存储设备的介入,并启动之。当例如只要请求者在向文件服务器114登录时声明,即可提供这种属性。这样,每当有新存储设备加入系统100时,文件服务器114自动告知该特定请求者116-120。通常,文件服务器114还可向请求者传送其它重要特性,例如存储设备是否RAID5、镜象等。
根据本发明的一个方面,存储在存储设备110和112中的信息是以图2中清楚说明的系统加以存储。存储设备110和112中的每一个最好是面向对象的设备,在它的操作模式中,数据是作为对象124-126,而不是作为一定序列的扇区来组织和存取的。面向对象的设备110和112用一个对象文件系统来管理对象124-126,该系统包括对特定设备上的每个分区,有一个单层对象表。这也可看作为平直文件系统。存储在每个设备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,或为存取存储设备110上的一个对象,它可能需要文件服务器114的请求许可和位置信息。文件服务器114控制对存储设备110的存取扩展成系统100特定执行的安全要求功能。
在图3-1说明的框图中,假定系统100是安全的。即不要求保护在请求者116和存储设备110间进行命令信息和数据的传送。在这种实施中,仍有一带管理功能的文件服务器114,但不需它监督请求者与存储设备110的交互作用。
在这种实施中,请求者116可直接对存储设备110存取和创建对象。这样,请求者116可以打开、读、写和关闭对象,就象它们原本就附加于请求者116一样。该操作后文将详细叙述。但为清楚起见,这里先作一概述。为了读存储设备110中的对象,请求者116最好先读揭示存储设备110的逻辑卷或分区的一个或多个对象并弄懂如何开始检索其上存储的对象。请求者116然后打开并读一个对象,它可能是根目录。从该对象,且基于根目录的内容一直向前寻找其它对象。请求者116重复上述过程直到找到所要的数据。数据由对象标识符(对象ID)参照,并在对象内有偏移。
在示于图3-2的第二个实施例中,要求安全性。所以文件服务器114插入请求者116和存储设备110间的I/O链至期望保护级所必需的程度。在一个较佳实施例中,请求者116必须首先执行一系列I/O操作得到文件服务器114的请求许可。文件服务器114(它可能为了附加安全而向请求者116隐瞒存储位置信息)然后通过返回足够信息以允许请求者116直接与存储设备110通信而认可来自请求者116的请求。由于当存储设备110在文件服务器114上登录时,它最好被告知安全参数,因而存储设备110最好不允许I/O请求,除非它被适当地构成并包括含来自文件服务器114的有效许可的编码数据。
然后,过程以与图3-1所叙述过的相似方式进行。但是,与每个命令关联的有效负载可能很不相同。例如,在要求完全的情况下(如图3-2所示),在请求者116和存储设备110间传送的命令和数据均可能加密。此外,最好将许可信息追加至请求者116向存储设备110提供的命令参数。
由于在一个较佳实施例中,存储设备110和112可包括硬盘驱动器,因而简单讨论硬盘驱动器是必要的。图4是可用作存储设备110的硬盘驱动器的透视图。在磁盘驱动器110中,多个盘片132围绕机壳136中的电机部件134的轴套叠,每个盘片132有许多同心圆的记录磁道,如138所示。每个磁道138再分成多个分区(参照图6细述)。通过指定某个磁道138内的分区,数据可存储在磁盘132上或从中检索到。致动臂构件140最好可旋转地安装在机壳136的一个角上,致动臂构件140带有多个头万向架构件142,每个构件带有具有读/写头即传感器(未图示)的滑块,用于从磁盘132读出信息或把信息写入磁盘132。
音圈电机144精确地前后旋转致动臂构件140,使滑块142上的传感器在磁盘132的表面沿箭头146所指的弧形移动。图4还以框图形式表示磁盘驱动控制器148,用于以熟知的方式控制磁盘驱动器110的某些操作。但是,根据本发明,磁盘驱动器控制器148也用于对磁盘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)上的部分存储空间。该存储空间包括许多对象,诸如设备控制对象154、设备关联对象156、以及标为分区0(还用158表示),分区1(还用160表示),分区N(还用162表示)的多个分区。每个分区还包括多个对象,例如分区控制对象164、分区对象表166和多个数据对象168(用数据对象0-数据对象N来表示)。
与每个对象关联的一组属性。根据本发明的一个方面,提供存取控制属性。用Set Attribute方法进行设置(后文将详述)并提供一种手段,借助于它可存取被控制的特定对象。通过改变存取控制属性的版本号,可拒绝或给出某些请求者116-120对该特定对象的存取。
分簇对象(The clustering object)是一种属性,它表示在存储系统中特定对象是否应希望位于另一对象附近。再生属性(the cloning attribute)表示特定对象是否通过复制存储系统中另一对象而创建。一组大小属性(sizeattributes)确定特定对象的大小特征。例如,这组大小属性包括:表示可写入对象的最大偏移信息,分配给对象的块数,对象中存储数据的块数及对象中每块的字节数。
一组时间属性表示:对象何时创建,对象中数据最后一次被修改的时间,对象中最后一次被修改属性的时间。对象最好还包括一组属性,它确定文件系统中任何数据最后一次被修改的时间和任何属性最后一次被修改的时间。为了表示其它参数、特征或任何给定对象的特点,也可提供其它属性。
每一个对象还与一个对象标识符相关联,它由特定的存储设备110-112选定。并作为对创建对象命令的响应返回给请求者116-120。该标识符最好是不带符号的,定长整数。在一个较佳实施例中,标识符的长度缺省为由特定存储设备110-112规定的大小,即可设置成一设备属性。进而,在一个较佳实施例中,为熟知对象、特定应用和希望实行的其它特殊功能保留预定的标识符子集(Ids)。
图6说明,存储媒体典型地包括许多熟知的对象,它们总是有特定的对象ID。在某些情况下,这些熟知的对象存在于每个设备或每个分区中。
例如,一个熟知对象是设备控制对象154,它最好包含由每个设备110-112所维护的属性,并且与设备本身或设备中的所有对象都有关。由Set Attribute方法维护的属性将在后面的应用中详述。在一个较佳实施例中,每个设备110-112都有一个设备控制对象154。
表1说明一组较佳设备控制对象(DCO)属性
| 类型 | 名称 | 字节 | 语义 |
| 安全性 | 时钟 | 8 | 单调计数器 |
| 主密钥 | 8 | 主密钥控制设备密钥 | |
| 设备密钥 | 8 | 设备密钥控制分区密钥 | |
| 保护级 | 1 | 确定保护任选 | |
| 分区 | 分区计数 | 1 | 设备分区数 |
| 设备属性 | 对象属性 | 8 | 确定与设备上所有对象关联的特性 |
在一个较佳实施例中,DCO属性包括时钟(简单地是一个单调计数器),包含加密密钥或控制设备上所有其它密钥的其它主密钥的主密钥,和控制分区密钥且可用于锁定分区的设备密钥。属性还包括能识别预定保护级且与安全政策关联的保护级密钥,确定设备上分区数的分区计数器和确定被存取特定设备上所有对象关联特性的对象属性。
为了胜任管理跨接于多个存储设备110-112的对象,每个存储设备1 10-112最好有一个能确定各设备间相关性的设备关联对象156。例如,什么地方存储设备110和112是一对镜象设备或是一个阵列组的成员,并联对象156会识别这种关系。表2说明关联对象156的较佳属性。
表2
| 名称 | 字节 | 语义 |
| 关联标识符 | 2 | 该组唯一ID |
| 关联类型 | 2 | 关联种类 |
| 成员表 | n | |
| 关联标识符 | 2 | |
| 关联类型 | 2 | |
| 成员表 | n |
这些属性中最好包括一关联标识符,它是每个给定组的唯一标识符。属性中最好还包括确定设备间关联种类(例如镜象对、RAID5等)的关联类型。属性中最好进一步包括一张成员表,它简单标明上述确定关联的成员是设备110-122。
存储设备110-112上每个分区158,160和162最好包括含单个分区特性的分区控制对象164。对象164最好不仅描述分区,也描述任何与该分区中所有对象相关的对象属性。每个设备110-112最好对设备上定义的每个分区包含一个分区控制对象164,虽然图6说明存储在每个分区中的分区控制对象,但并不一定是这种情况。分区控制对象可以存储在平面文件系统中,而不是存储在上述分区中。
表3表示许多常包含在分区控制对象168中的属性。
| 类型 | 名称 | 字节 | 语义 |
| 主密钥 | 8 | 加密密钥 | |
| 当前工作密钥 | 8 | ||
| 以前工作密钥 | 8 | ||
| 分区属性 | 对象属性 | 8 | 定义与分区中所有 |
| 对象关联的特性 |
这类属性中最好包含一个能定义整个分区加密密钥且可用于设置当前工作密钥的主密钥。属性中最好还包括用于加密和解密命令和数据信息的当前工作密钥和以前工作密钥。分区控制对象164最好还包括与指定分区中所有对象关联的对象属性。
图6还说明,每个分区最好包含分区对象表166,它是在存储媒体上创建分区时,由控制部件150建立的对象。分区对象表166最好对每个分区具有相同的标识符,指定在存储媒体上导航对象文件系统的出发点。表4说明与每个分区对象表关联的属性表。
表4
| 字段 | 字节 | |
| 对象ID | 8 | 打开、读、写、关闭该对象用的ID |
| 用户数据 | N | 用POL属性进行设置,用GETATTRIBUTE得到数据值 |
如表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表示。然后根据从装置控制对象154返回的属性,请求者116选择某个给定的分区。这由框176表示。
请求者116一旦选定分区,请求者116立即调用Get_DAO_Attributes方法,如框173所示。它使控制部件150从存储在存储媒体110上的设备关联对象156获取属性。然后,控制部件150向请求者116返回设备关联属性,如框175所示。根据设备关联属性和控制属性,请求者116选定要询问的分区。如框176所示。
接着,请求者116调用Get_PCO_Attributes方法,它使控制部件158找到与请求者116要询问的指定分区关联的分区控制对象164中的属性。控制部件150获得并返回分区控制对象属性。如框178和180所示。如果选定分区中的对象不是请求者感兴趣的对象,则如框182和176所示,请求者可选择另外分区。
但是,假定请求者116已经找到感兴趣的分区,则请求者对选定的分区调用Get_POL_Attributes,如框184所示。该方法使控制部件150从选定分区相关联的分区对象表166获得属性。然后把这些属性提供给请求者116,如框186所示。
接着,请求者116调用Open_Read_Only_POL方法。如框188所示。如下文将详细讨论的,控制部件150获得存储在与选定分区关联的分区对象表166中的数据,但因为接供的数据是只读的,不能被修改或扩充,所以控制部件不能修改该对象的属性。如框190所示。
请求者然后调用Read_POL方法,它使控制部件150得到选定分区的对象表,提供给请求者116回顾。如框194所示。在选定的分区中选择好所要对象后,请求者116调用Close_POL方法,它使控制部件150关闭分区对象表。如框196所示。
找到所要对象或所有对象的ID后,请求者接着调用Open_×××Objectx方法。其中×××表明请求者根据所要的特定数据操作而调用的规定打开方法。Objectx表明请求者从分区对象表中选定要操作或存取对象的ID。符号×××例如可表示Open_Update操作或或Open_Read_Only操作。这些在下文还要讨论且这些步骤如框198所示。
接着,请求者对控制部件150返回的对象执行希望的操作。下文将详细讨论可用于操作对象的各种方法。如框200所示。
最后,请求者一旦对所要对象完成所期望的操作或存取,请求者116立即调用下文将详述的Close_Objectx方法,该操作将关闭请求者116存取过的对象。
图8-24是说明为对存储在面向对象的存储设备(如设备110)中的对象,实现所要的功能和所要的操作,请求者所能调用的各种示范方法的流程图。
图8是具体说明Open_Create_Object方法的流程图。当请求者116调用该方法,如框208所示,控制部件150创建一新的对象ID并将它输入与被创建对象所在分区关联的分区对象表中。如框210所示。然后控制部件150通过分配与对象相关联的块数等,并修改对象属性以表明对象创建时间和设置表1中所列的、与对象关联的其它属性,从而创建新的对象。如框212所示。接着,控制部件150返回请求状态,连同刚创建的新对象的ID。如框214所示。
除简单创建一个对象外,请求者116可指定许多任选项。例如,在一个较佳实施例中,请求者116可指定:对象是否受口令保护、对象是否加密、一定的质量服务阈值(例如,对象是否备份)、锁定特性(例如,对象是否用一个对象锁或其它锁如分区锁或设备锁来锁定)、存取控制版本、镜象或其它备份支持(它会使所有更新被镜象成另一对象或以另一指定方式备份),以表明将在以指定最小大小为单位来分配空间并设置冲突特性(例如写入一UNIX系统)。
为了调用该方法,请求者116向控制部件150提供的特定信息包括系统安全所需的许可信息,要创建对象的设备分区及上述任何选项。作为响应,在一个示范实施例中,控制部件150返回:设备上可用的容量、请求状态及新对象的ID。
应注意,可调用该方法的特定例子包括与对象关联的所有数据。在这种情况下,可调用一个方法来创建对象、写入对象及关闭对象。
图9是说明Open_Update_Objectx方法的流程图。如框220所示,请求者116调用此方法时,允许请求者116读和写特定对象。还可扩展该对象的长度。当调用此方法时,控制部件150对指定对象中设置一个属性以表明该对象正在使用中。请求者116提供许可信息、含对象的分区ID、要存取对象的标识符、要进行的操作类型(如更新或写)及上述任何选项。作为响应,控制部件150返回请求状态和指定对象的长度及请求者116还可用的剩余容量。
图10是说明Write_Object方法的流程图。当请求者如框242所示调用此方法时,控制部件150在指定对象中的一定位置上写一定块数。
写方法也能引起调用其它方法。例如,若被存取设备110-112支持奇偶校验,则写操作会自动调用异或方法,它对被写数据执行异或操作,然后,奇偶数据被写入一个或多个预定的奇偶校验设备中。
为了调用此方法,请求者116提供许可信息、对象标识符、分区ID、对象中被写的起始块位置、对象中能写的块数、任选信息和要写的数据。一旦调用此方法,控制部件150用提供的具体数据修改指定的对象。如框244所示。然后,控制部件150修改指定对象的必要属性,如对象长度、与该对象关联的时间记号等。如框246所示。然后,控制部件150在需要的地方修改其它对象的必要属性,诸如分区对象表中涉及的地方。如框248所示。然后,控制部件150向相应请求者返回请求状态。如框250所示。
图11是说明Open_Only_Objct x方法的流程图。调用此方法时,控制部件150允许请求者116仅为读目的存取指定对象。这样,当调用此对象时,如框230所示,请求者提供许可信息、分区ID、对象ID和任选信息。然后,控制部件150对指定对象设置一个属性表明对象正在使用中。如框232所示。接着,控制部件150在此对象设置只读属性。表明请求者不能写此对象。如框234所示。最后,控制部件150返回请求状态和指定对象的长度。如框236所示。
图12是说明Read_Objectx方法的流程图。当请求者116希望设备110从特定对象返回数据时,调用此方法。请求者提供许可信息、对象ID、分区ID、要读块的起始位置、要读的块数和其它所要的任选信息。作为响应,控制部件150返回请求状态、要返回的数据长度及响应于此方法而返回的实际数据。如框258所示。
图13是说明Close_Object x方法流程图。当请求者116如框264所示调用该方法时,请求者提供许可信息、对象ID和任何所要的任选信息。作为响应,控制部件150如框266所示,修正指定对象中的数据。此外,作为写对象的结果而引起对象会有些改变。如果,以前对存储媒体没写成,则这时还可写。控制部件150如框268所示,更新对象X的属性。例如,若对象是新创建的对象,则其属性用创建时间及其它要求的属性信息加以更新。此外,被修改的属性表明对象中数据被最后一次修改的时间,若数据长度被改变,则控制部件150设置一属性,表明请求者不再使用该对象。作为任选,控制部件150还能更新与对象关联并反映在对象属性中的驻留高速缓存信息。如框270所示。例如,若特定请求者116将请求配置成要通知存储设备110,关闭对象的数据仍要高速缓存或不再高速缓存,以便存储设备110的操作系统为对象快速连续关闭和再次开启的应用,保留高速缓存信息。但同时,存储设备110能为系统100中哪些因另一请求者在平均时间内存取同一对象而造成相干冲突事件中必须通知到的部件保留磁道。最后,控制部件150返回请求状态,如框270所示。
图14是说明Remove_Object x方法的流程图。当调用该方法时,如框278所示,控制部件150采取必要步骤从存储媒体删除该对象。如框280所示。然后,控制部件150修改与被删除对象所在分区关联的分区对象表,以及映指定对象ID又可被用了。如框282所示。最后,控制部件150返回请求状态,如框284所示。为了调用此方法,请求者116要提供许可信息、分区ID、对象ID和任何所要的任选信息。最后,控制部件150返回请求状态,如框284所示。
图15是说明Create_Partition方法的流程图,该方法可由请求者调用,如框290所示。以便在存储设备110上创建一分区。应注意,当Greate_Partitionx方法把驱动器分成一个或多个区域时,不必计及存储媒体上的所有空间。此外分区也可跨越磁盘上不同区域。
在一个实施例中,用该方法创建平铺排列的分区,它代表设备上存储空间的真实划分。用这种排列按服务级划分空间,如数据阵列。这种分区不能改变大小但可删除和重建。
根据本发明的另一方面,把分区用作逻辑分区,便于逻辑上组织对象,而不是按服务级来管理空间。在第二个实施例中,分区可动态地改变大小。
为了调用该方法,请求者提供许可信息、任何所要的任选、分区ID和为识别被分配给具体标定部分的空间而制定的初始空间分配。作为响应,控制部件150将存储媒体上的空间分配或指定分区,如框292所示。然后,控制部件150建立分区控制对象和分区对象表,如框294和296所示。如上所述,不能删除分区对象表。它可用作导航分区中对象的起始点。最后,控制部件150返回请求状态和说明已进行划分的分区图。如框298所示。
图16是说明Remove_Partition 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方法的流程图。如框130所示,请求者116通过提供许可信息、任选信息、对象ID、目标设备ID和目标分区ID,而调用该方法。该输出方法使存储设备110-112根据表示给定对象关联的属性的规则动作。例如,它可用于启动备份或支持给其它设备的对象定版本。
当调用Export_Objectx方法时,控制部件150从存储媒体获得指定对象,如框322所示。然后,控制部件150对请求者116指定的目标设备调用Open_Create方法。如框234所示。然后,控制部件150对提供指定对象的数据和属性的目标设备调用写方法。如框326所示。最后,控制部件150对目标设备调用Close方法,以便在完成对目标设备写以后,关闭目标设备上的对象。如框328所示。最后,控制部件150向请求者返回请求状态连同已被写入目标设备的对象的新对象ID。如框330所示。
由控制部件150实施的界面128也支持允许请求者为先回顾获得对象属性并设置对象属性的方法。图18和19是分别说明相应Get_Objectx_Attributes及Get_Objectx_Attributes方法的流程图。
一旦调用图18所示方法,如框336所示,使控制部件150获得指定对象的属性。在一个说明性实施例中,请求者提供许可信息、对象ID或对象ID表、和任选信息。然后,控制部件150获得与该对象ID或对象ID表关联的属性并连同请求状态一起向请求者返回这些属性。如框338所示。
图19说明Get_Objectx_Attributes方法。如框344所示,可通过请求者向控制部件150提供许可信息、对象ID和任选信息来加以调用。然后,控制部件150用请求者提供的信息修改指定对象的属性,并返回请求状态及被修改的指定对象的属性。如框346和346所示。
根据本发明的另一方面,可以锁定对象,使它们只能在对对象加锁的服务器解锁后才能被存取。在一个说明性实施例中,对象可按对象级、分区级或设备级加锁。加锁机构为内部服务器提供存取方案。在一个较佳实施例中,用这种锁调度并行更新及在维护期间禁止存取。图20、21和22是说明可作为Get_Attribute和Set_Attribute方法例子的加锁方法的流程图。但是,对这些方法的具体例子还提供附加细节,使之可用于在请求者的簇之间共享数据。
图20是说明Read_Lock_Attributes方法的流程图。通过请求者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返回请求状态及该设备成为组员所请求的关系。如框386所示。图24是说明Set_Device_Associations方法的流程图。通过提供许可信息、任选信息、成员表及定义关联的属性来调用此方法,如框392所示。作为响应,控制部件150修改存储媒体上所含的设备关联对象156,如框394所示。被修改的设备关联对象包含请求者提供的属性及表示对象最后被修改的时间记号等。控制部件150返回请求状态,如框396所示。
上述的许可信息允许文件服务器114用门来控制对存储器的存取。请求者116-120给文件服务器必要的凭证,以得到存储设备110-112的响应。文件服务器114还命令存储设备110-112他们必须是坚持遵守设备安全政策的I/O请求者。通过Set_Object_Attributes方法以图例说明将从属于许可安全能力的密钥传达给存储设备110-112。如果对存储设备110-112设置一定的安全级,则存储设备可配置成为安全性而检查每个I/O命令。但是,如上所述,某些应用不需采用安全性。进而,若一个特定的服务器簇具有一些位于另一设施上的设备,可以设想,与远处设备的通信定义较高的安全级,而对本地通信则不必如此。这允许对远处请求者或服务器采用安全性,但避免因对本地请求者或服务器采用同样安全性而引起的性能损失。
进而,每个存储设备110-112最好包含可读单调递增时钟,用于给安全信息和对象打时间记号。在一个说明性实施例中,各设备的时钟与全系统时基同步。在另一个说明性实施例中,文件服务器114提供逐个存储设备之间的偏差和值。
由此可见,本发明提供诸如磁盘驱动器之类的面向对象的存储设备,它比常规存储设备有显著优点。面向对象的存储设备显著改进了簇体系结构。例如,通过以面向对象的方式存储数据,该数据可由存储设备自身管理。对象向存储设备为驻留数据提供充分知识,足以承担管理其自身空间的职责。而且,当设备具有关于逻辑实体的构成信息时,可更智能地控制数据共享。例如,如果两个系统共享存储在面向块的设备中的数据,则必须控制所有元数据的并行存取活动。与此相反,在面向对象的设备中,许多元数据活动对访问它的系统是不透明的。这样,系统仅需关心对用户数据的存取冲突。此外,设备本身完成空间管理,就可避免因两个系统试图在同一时间管理同一存储设备空间而产生的争论和混乱。
此外,抽象成对象更容易进行多机种计算。面向对象的存储设备提供一种至少操作系统可中断的组织的能力。
进而,使用面向对象的存储设备有许多理由增强簇系统的性能。例如,元数据决不需脱离设备本身,从而消除了一定数量的I/O操作。
此外,设备在任何时刻都知道哪些对象是打开的或关闭的,利用该信息可更有效高速缓存数据。因为设备知道正读取对象的格式,因而预取更有效。存储设备可更有效地确定顺序存取模式。设备中的高速缓存可一次为多个正存取它的系统保存元数据。此外,设备可参与服务决议的质量,诸如什么地方存放数据更合适。仅在设备有责任分配存储器时要这样做。与此相反,几乎没有一个操作系统能按磁盘驱动器的存储区域分配数据。所以,设备自身具备该能力也就是增强了设备性能。
本发明还可在排列成阵列的盘驱动器上实施。因为存储在盘驱动器阵列上的信息通常比盘驱动器本身更有价值,所以,常称驱动器阵列为廉价磁盘冗余阵列(Redundant Arrays of Inexpensive Discs)(RAID)。几种类型的RAID系统或几级RAID是已知的。例如,第一级RAID,如上所述,其特点是提供镜象盘。到第五级RAID,阵列中存储的数据和奇偶校验或冗余数据布及一组内的所有盘驱动器。第五级RAID把数据和检验信息交叉分布到包括检验盘在内的所有盘。其余级(例如2-4级)的RAID在题为“具有阵列支持控制器和接口的盘阵列”,专利号为5617425的美国专利中有详细讨论。
图25-29说明根据本发明一个方面执行的写操作,其中,存储数据作为阵列盘驱动器的对象。在图25所示的实施例中,文件服务器114、请求者(或主机)116和互连125连至由目标驱动器402和奇偶校验驱动器404构成的存储设备(如110-112)的盘驱动器阵列。目标驱动器402保持住一个对象或要写的一部分,而奇偶校验驱动器404保持住目标驱动器402上所存目标对象关联的奇偶校验信息。
在图25中,实施的驱动器阵列作成RAID5阵列,其中数据和奇偶校验交叉分布在该组的所有驱动器中。从而,仅对当前写操作,驱动器402是目标驱动器,且驱动器404是奇偶校验驱动器。换言之,目标驱动器402也可以保持奇偶校验信息,而奇偶校验驱动器404也可以保持数据。但是,对下述的单个写操作,驱动器402是目标驱动器,而驱动器404是对应的奇偶校验驱动器。应注意的是,本发明也可用其它级RAID而不是五级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是众所周知的,每个驱动器都知道,从而任何试图更新奇偶校验信息的驱动器,都知道正确的对象标识符,可用它找到所要的请求。
图28详细叙述Define_Parity_Group方法。首先,请求者或主机对奇偶校验组中的每个驱动器调用该方法。如框420所示。为了调用该方法,请求者要提供如下信息:
1.一张有序的,组成奇偶校验组的驱动器表。在简单的说明性实施例中,还包括每个驱动器的序号和地址。
2.用于计算奇偶校验的算法。在简单说明性实施例中,对被写数据的块地址执行模数运算。该运算既得出奇偶校验驱动器地址(根据上述有序表第1项),还给出奇偶校验驱动器上奇偶校验对象中的相对块地址(含所需奇偶校验信息的奇偶校验对象的相对部分)。
3.奇偶条的数据量,实例中以块为单位。如果奇偶校验数据分散在每个驱动器的空间,则数据量按基本分配单位。
4.奇偶校验对象的标识符。调用Write_Object方法更新奇偶校验对象的驱动器,把奇偶校验对象标识符发向该奇偶校验驱动器的该对象ID,定作上述两项的开始。还应注意到,最好实施多级奇偶校验(例如两级奇偶校验)。这样,每个驱动器可具有多至两个奇偶校验对象。在一个说明性实施中,在驱动器用于具有两级奇偶校验的盘阵列时,每个驱动器分配和保留二个熟知的对象ID。第二个奇偶校验对象的存在表示正采用两级奇偶校验。
5.奇偶校验对象分配政策。它表示每个驱动器是否把奇偶校验对象分配成盘空间的单个邻接区域或是否要用用户数据对象来点缀奇偶校验对象。当奇偶校验对象和数据对象如图26和27所示作为邻接盘空间,这仅是为了例示。应注意,若用数据来点缀奇偶校验对象时,它仍可预分配。
作为调用Define_Parity_Group方法的响应,奇偶校验组内每个盘驱动器中的控制部件150计算奇偶校验数据所需空间的百分比。如框422所示。奇偶校验对象所需的空间是取决于奇偶校验组表中的盘驱动器数目。例如,若表中有9个盘驱动器,则每个驱动器必须将其九分之一空间分配给奇偶校验信息。用请求者或主机按调用的方法提供的,熟知的奇偶校验对象ID来识别空间量。如框424所示。
奇偶组或组表中的每个驱动器保存定义奇偶校验组的信息,这样,盘驱动器每次被驱动或复位时,就能验证该奇偶校验组是否受到损害。为此,该信息应存储在非易失性存储器中,如框426所示。
因为已创建有奇偶校验的盘驱动器,并在每个盘驱动器上分配一定空间来保持一个或多个奇偶校验对象,所以,以数据对象存储在一个或多个驱动器上的数据就能被更新。图29是说明根据本发明的一个方面,更新数据对象并更新对应奇偶校验对象的框图。
为了更新数据,请求更新数据的请求者116对该奇偶校验组内的一个盘驱动器调用上述Write_Object方法。在图25-27所示的实施例中,请求者116调用Write_Object方法。如图26中对目标驱动器402的箭头428所示。在实施例中,为了调用此方法,请求者116提供标识被更新对象的对象标识符、分区ID、对象中被写的起始块位置、对象中被写的块数、任选信息和要写的数据。目标驱动器402知道服务于Write_Object方法,必须包含与被更新对象关联的更新的奇偶校验信息。目标驱动器402知道这个信息。因为它把执行Define_Parity_Group方法期间提供和产生的信息已存在非易失性存储器中。
为了更新奇偶校验信息,目标驱动器402执行一系列步骤。首先,它从目标对象中的指定位置读出老数据,并把它连同在该位置上要写的新数据提供给XOR电路408。如图29的框432和图26的箭头434、436和438所示。
其次,目标驱动器402用老数据异或(XOR)新数据获得中间奇偶校验信息。如图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方法并对奇偶校验驱动器进行调用,来识别奇偶校验对象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,取中间奇偶校验数据对老的奇偶校验信息进行XOR操作。如图29框454和图27箭头456和458所示。异或操作结果是更新了奇偶校验信息并把它写入盘132的奇偶校验对象。如图29的框460和图27的箭头462和464所示。从而完成奇偶校验对象的更新。
这样,本发明相对通常使用的基于扇区的奇偶校验方案具有多个优点。例如,不再用盘上的用户数据来点缀奇偶校验信息。从而可能相连存储用户文件(或对象),性能更好。此外,对象可备份或输出为真实用户数据文件。由于没有点缀的奇偶校验数据,因而它们自然有意义且有用。
同样,当下载一个数据库到奇偶校验组时,应用程序可在数据库一下载立即从请求者存取它,而不必等计算奇偶校验。作为后台处理,可构成奇偶校验信息而不必中断数据存取。这有利于更快地使用数据。常规系统不可能在装入所有数据包括奇偶校验数据结构之前,存取数据。奇偶校验数据点缀整个用户数据,用户数据不能独立装载,而只能与奇偶校验计算连接。
进而,由于奇偶校验组中的每个盘驱动器知道该奇偶校验组中的其它成员,盘驱动器可验证奇偶校验更新对准的驱动器是否正确。若驱动器被替换或其地址更改,则可以检测出来并放弃操作,从而避免奇偶校验数据讹误。
调用奇偶校验保护时不需用特定的XOR命令。发出Define_Parity_Group命令,驱动器得知简单的Write_Object命令扩展到包括奇偶校验保护。这可由驱动器透明地进行。
此外,请求者无需向驱动器发出附加I/O命令即可支持两级奇偶校验。对一个驱动器调用两个Define_Parity_Group方法,它启动了双重故障保护。驱动器知道它必须更新两个奇偶校验对象,每个奇偶校验组中一个。驱动器也可检查以确信两个奇偶校验组仅共用一个驱动器(否则这种配置也许是无效的)。
本发明包括一数据存储系统,它包括第一存储媒体132,构成多个对象124-126的数据存储在上面。每个对象具有表示该对象特征的属性。这些对象包括存储冗余信息的冗余对象412。第一控制部件150可操作地耦合至存储媒体132,并配置成为对象124-126提供界面128。界面128展示存取对象124-126的调用方法(方法O-方法N)。
在一个较佳实施例中,方法O-N包括Define_Redundancy方法,调用该方法时,控制部件150对冗余对象412分配存储空间。在另一个实施例中,调用该Define_Redundancy方法时,控制部件150存储控制部件150所属冗余组的信息。
根据另一个实施例,当调用Define_Redundancy方法时,控制部件计算要分配给冗余对象412的存储空间大小。
根据另一个实施例,调用Write_Object方法使控制部件150用新数据更新指定的数据对象并根据新数据更新对应冗余对象412。
根据另一个实施例,存储系统包括多个存储设备402和404,第一个存储设备402包括第一存储媒体132和第一控制部件150,而第二个存储设备404包括第二存储媒体132和第二控制部件150。在这个实施例中,指定的数据对象至少部分对象和对应冗余对象存储在第一个存储媒体上并有部分对象和对应冗余对象存储在第二存储媒体上。在一个说明性实施例中,第一控制部件150对第二存储设备调用Write_Object方法来更新冗余对象。
本发明也可实施为一种维护数据存储系统中冗余的方法,该数据存储系统具有多个存储设备,每个存储设备都包括存储媒体132和控制部件150。该方法包括在所述存储媒体132上存储数据,而把被存数据配置成多个对象124-126,且每个对象含有表示所述对象特征的属性。所述对象包括存储冗余信息的冗余对象412。所述方法进一步提供展示存取对象调用方法(方法O-方法N)的界面128。
在一个说明性实施例中,在步骤420所述方法包括在对多个存储设备组调用Define_Parity方法,以配置所述组完成期望的冗余方案。在一个说明性实施例中,所述方法包括响应调用步骤,对所述组的每个存储设备创建一个冗余对象412。在步骤422,所述方法进一步包括计算分配给所述冗余对象412的部分存储空间。
应该理解,虽然上文已叙述了本发明各个实施例的特点和优点并详述其结构和功能,但这种揭示仅是例示性的,在本发明的原理内,可作出许多变换,尤其是对于结构和配置方面,以使本发明包括所附权利要求中的术语的广义含义所表示的整个范围。例如,不脱离本发明的范围和精神,特定元件可取决于使用的特定界面方法和冗余方案改变,而实质上仍保持相同的功能。
Claims (13)
1.一种数据存储系统,其特征在于,它包括:
第一存储媒体,其上存有配置成多个对象的数据,每个对象具有表示所述对象特征的属性,所述对象包括存储冗余信息的冗余对象;和
第一控制部件,可操作地耦合至所述第一存储媒体并配置成为所述对象提供界面,所述界面展示存取所述对象的调用方法。
2.一种在数据存储系统中维护冗余的方法,所述存储系统包括多个存储设备,每个存储设备包括存储媒体和可操作地耦合至所述存储媒体的控制部件,其特征在于,该方法包括下述步骤:
在所述存储媒体上存储数据,所述数据配置成多个对象,每个对象包括表示所述对象特征的属性,所述对象包括存储冗余信息的冗余对象;和
向所述对象提供展示存取所述对象的调用方法的界面。
3.如权利要求2所述的方法,其特征在于,该方法还包括下述步骤:对多个存储设备组调用定义冗余方法把所述组配置成实现期望冗余。
4.如权利要求3所述的方法,其特征在于,该方法还包括下述步骤:响应所述调用步骤,在所述组的每个存储设备上创建冗余对象。
5.如权利要求4所述的方法,其特征在于,所述创建步骤包括:计算分配给所述冗余对象的部分存储空间。
6.如权利要求3所述的方法,其特征在于,该方法还包括下述步骤:对所述多个存储设备中的第一个设备调用写方法,使所述第一存储设备上的第一控制部件更新所述第一存储设备的第一存储媒体上的指定数据对象。
7.如权利要求6所述的方法,其特征在于,该方法还包括下述步骤:响应所述写方法,对所述多个存储设备中的第二个设备调用奇偶校验写方法,更新存储在所述第二存储设备上的第二存储媒体中,与所述指定数据对象关联的奇偶校验对象。
8.如权利要求7所述的方法,其特征在于,所述调用写方法的步骤进一步包括下述步骤:从所述指定数据对象读老数据;及向所述数据对象写新数据。
9.如权利要求7所述的方法,其特征在于,所述调用冗余写方法的步骤包括下述步骤:
对所述老数据和新数据执行异或操作以获得中间冗余数据;和
对提供中间冗余数据和冗余对象标识符(ID)的所述第2存储设备调用冗余写方法。
10.如权利要求9所述的方法,其特征在于,该方法响应于调用冗余写方法,还包括下述步骤:
从所述冗余对象读老冗余数据;
对所述老冗余数据与中间冗余数据作异或操作以获得新冗余数据;
向所述冗余对象写所述新冗余数据。
11.如权利要求9所述的方法,其特征在于,该方法还包括下述步骤:对包含所述冗余对象的存储设备组进行计算,所述冗余对象与所述指定数据对象关联,所述计算基于所述组的存储设备数和用新数据写的所述指定数据对象内的位置。
12.如权利要求11所述的方法,其特征在于,该方法还包括下述步骤:根据所述组内存储设备数及在用所述新数据写入的指定数据对象中的位置,计算被更新的所述冗余对象中的位置。
13.一种数据存储系统,其特征在于,它包括:
第一盘驱动器,它包含:存有配置成多个对象数据的的第一存储媒体,每个对象具有表示所述对象特征的属性,所述对象包括存储冗余信息的第一冗余对象;第二盘驱动器,它包括可操作地耦合至所述第一存储媒体并配置成向所述对象提供界面的第一控制部件,所述界面展示存取所述对象的调用方法;
第二盘驱动器,可操作地耦合至所述第一盘驱动器和具有存有配置成多个对象的数据的媒体,每个对象具有表示所述对象特征的属性,所述对象包括存有与所述第一冗余对象中的所述冗余信息对应数据的第一数据对象;和第二控制元件,可操作地耦合至第二存储媒体并配置成向所述对象提供界面,所述界面展示存取所述对象的调用方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US5589797P | 1997-08-15 | 1997-08-15 | |
| US60/055,897 | 1997-08-15 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN1267379A true CN1267379A (zh) | 2000-09-20 |
Family
ID=22000881
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN98808073A Pending CN1267379A (zh) | 1997-08-15 | 1998-08-14 | 面向对象的数据存储设备的冗余实现 |
Country Status (6)
| Country | Link |
|---|---|
| JP (1) | JP2001516080A (zh) |
| KR (1) | KR20010022942A (zh) |
| CN (1) | CN1267379A (zh) |
| DE (1) | DE19882609T1 (zh) |
| GB (1) | GB2341466B (zh) |
| WO (1) | WO1999009479A1 (zh) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101872319A (zh) * | 2004-11-05 | 2010-10-27 | 数据机器人技术公司 | 存储系统条件指示器及其使用方法 |
| CN101751390B (zh) * | 2008-12-08 | 2012-07-04 | 财团法人工业技术研究院 | 物件导向储存装置的磁盘配置方法 |
| CN111291026A (zh) * | 2018-12-07 | 2020-06-16 | 北京京东尚科信息技术有限公司 | 数据接入方法、系统、装置以及计算机可读介质 |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2343535B (en) * | 1997-08-28 | 2002-10-02 | Seagate Technology | Object reconstruction on object oriented data storage device |
| US6029168A (en) | 1998-01-23 | 2000-02-22 | Tricord Systems, Inc. | Decentralized file mapping in a striped network file system in a distributed computing environment |
| US6449731B1 (en) | 1999-03-03 | 2002-09-10 | Tricord Systems, Inc. | Self-healing computer system storage |
| US6725392B1 (en) | 1999-03-03 | 2004-04-20 | Adaptec, Inc. | Controller fault recovery system for a distributed file system |
| US6530036B1 (en) * | 1999-08-17 | 2003-03-04 | Tricord Systems, Inc. | Self-healing computer system storage |
| US6742137B1 (en) * | 1999-08-17 | 2004-05-25 | Adaptec, Inc. | Object oriented fault tolerance |
| US20030140273A1 (en) * | 2001-12-20 | 2003-07-24 | Ajay Kamalvanshi | Method and apparatus for fault tolerant persistency service on network device |
| US20060080354A1 (en) * | 2004-08-27 | 2006-04-13 | Nokia Corporation | System for selecting data from a data store based on utility of the data |
| US7533330B2 (en) * | 2005-06-27 | 2009-05-12 | Seagate Technology Llc | Redundancy for storage data structures |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07175700A (ja) * | 1993-12-20 | 1995-07-14 | Fujitsu Ltd | データベース管理方式 |
| US5594862A (en) * | 1994-07-20 | 1997-01-14 | Emc Corporation | XOR controller for a storage subsystem |
| JP2003517645A (ja) * | 1997-08-11 | 2003-05-27 | シーゲイト テクノロジー エルエルシー | データ記憶装置および記憶方法 |
-
1998
- 1998-08-14 DE DE19882609T patent/DE19882609T1/de not_active Ceased
- 1998-08-14 WO PCT/US1998/016956 patent/WO1999009479A1/en not_active Ceased
- 1998-08-14 GB GB9928817A patent/GB2341466B/en not_active Expired - Fee Related
- 1998-08-14 JP JP2000510076A patent/JP2001516080A/ja active Pending
- 1998-08-14 KR KR1020007001550A patent/KR20010022942A/ko not_active Ceased
- 1998-08-14 CN CN98808073A patent/CN1267379A/zh active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101872319A (zh) * | 2004-11-05 | 2010-10-27 | 数据机器人技术公司 | 存储系统条件指示器及其使用方法 |
| CN101751390B (zh) * | 2008-12-08 | 2012-07-04 | 财团法人工业技术研究院 | 物件导向储存装置的磁盘配置方法 |
| CN111291026A (zh) * | 2018-12-07 | 2020-06-16 | 北京京东尚科信息技术有限公司 | 数据接入方法、系统、装置以及计算机可读介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| GB2341466B (en) | 2002-10-02 |
| WO1999009479A1 (en) | 1999-02-25 |
| GB9928817D0 (en) | 2000-02-02 |
| KR20010022942A (ko) | 2001-03-26 |
| GB2341466A (en) | 2000-03-15 |
| JP2001516080A (ja) | 2001-09-25 |
| DE19882609T1 (de) | 2000-08-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN1158604C (zh) | 盘片驱动器以及将信息存储在驱动器盘片上的方法 | |
| CN1281560A (zh) | 混合数据存储和重建系统以及用于数据存储装置的方法 | |
| CN1153159C (zh) | 基于服务器的手持应用和数据库管理的方法和设备 | |
| US6298401B1 (en) | Object oriented storage device having a disc drive controller providing an interface exposing methods which are invoked to access objects stored in a storage media | |
| US7500053B1 (en) | Method and system for grouping storage system components | |
| CN1104684C (zh) | 复原计算机系统硬盘驱动器的方法和设备 | |
| US8607010B2 (en) | Information processing system and management device for managing relocation of data based on a change in the characteristics of the data over time | |
| US20060206507A1 (en) | Hierarchal data management | |
| CN101196896A (zh) | 文档提供系统和方法 | |
| CN1267379A (zh) | 面向对象的数据存储设备的冗余实现 | |
| CN1591359A (zh) | 用于控制计算机系统的引导操作的装置和方法 | |
| EP1984821A2 (en) | Restoring a file to its proper storage tier in an information lifecycle management environment | |
| CN1894672A (zh) | 用于对存储区中的选定数据执行操作的方法和设备 | |
| JP2005510794A (ja) | 選択的データ複製システムおよび方法 | |
| CN1770088A (zh) | 存储网络中的增量备份操作 | |
| JP2009505256A (ja) | 記憶域プールにおいてアクティブ・ファイルを含む集合体を維持するための方法、システム、およびプログラム(記憶域プールにおけるアクティブ・ファイルを含む集合体の維持) | |
| CN1266514A (zh) | 面向对象的数据存储装置 | |
| JP2006302259A (ja) | 外部ストレージ装置を管理するための方法 | |
| CN101034363A (zh) | 数据备份设备、数据备份方法以及存储数据备份程序的记录介质 | |
| CA2436533A1 (en) | Distributed management and administration of licensing of multi function offering applications | |
| US20070077022A1 (en) | Data transfer method, data transfer source apparatus, data transfer destination apparatus, storage medium for recording data transfer program and storage medium for recording transferred-data recording program | |
| CN100501737C (zh) | 用于内容受管制的数据的数据库方案及其创建方法和系统 | |
| JPS59157747A (ja) | ソフトウエアを保護する方法 | |
| HK1028120A (zh) | 面向对象的数据存储装置 | |
| US20030236974A1 (en) | Content receiving and distributing system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C53 | Correction of patent for invention or patent application | ||
| CB02 | Change of applicant information |
Applicant after: Seagate Technology, Inc. Applicant before: Sichater Tehc. Co., Ltd. |
|
| COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SEAGATE TECHNOLOGY, INC. TO: SEAGATE TECHNOLOGY LLC |
|
| C53 | Correction of patent for invention or patent application | ||
| CB02 | Change of applicant information |
Applicant after: Seagate Technology, Inc. Applicant before: Sichater Tehc. Co., Ltd. |
|
| COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SEAGATE TECHNOLOGY, INC. TO: SEAGATE TECHNOLOGY LLC |
|
| C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
| WD01 | Invention patent application deemed withdrawn after publication |