Movatterモバイル変換


[0]ホーム

URL:


US6704838B2 - Hybrid data storage and reconstruction system and method for a data storage device - Google Patents

Hybrid data storage and reconstruction system and method for a data storage device
Download PDF

Info

Publication number
US6704838B2
US6704838B2US09/167,875US16787598AUS6704838B2US 6704838 B2US6704838 B2US 6704838B2US 16787598 AUS16787598 AUS 16787598AUS 6704838 B2US6704838 B2US 6704838B2
Authority
US
United States
Prior art keywords
data
disc
block
parity
information
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.)
Expired - Lifetime
Application number
US09/167,875
Other versions
US20020059539A1 (en
Inventor
David B. Anderson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to US09/167,875priorityCriticalpatent/US6704838B2/en
Application filed by Seagate Technology LLCfiledCriticalSeagate Technology LLC
Assigned to SEAGATE TECHNOLOGY, INC.reassignmentSEAGATE TECHNOLOGY, INC.ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: ANDERSON, DAVID B.
Assigned to SEAGATE TECHNOLOGY LLCreassignmentSEAGATE TECHNOLOGY LLCASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: SEAGATE TECHNOLOGY, INC.
Publication of US20020059539A1publicationCriticalpatent/US20020059539A1/en
Assigned to JPMORGAN CHASE BANK, AS COLLATERAL AGENTreassignmentJPMORGAN CHASE BANK, AS COLLATERAL AGENTSECURITY AGREEMENTAssignors: SEAGATE TECHNOLOGY LLC
Publication of US6704838B2publicationCriticalpatent/US6704838B2/en
Application grantedgrantedCritical
Assigned to SEAGATE TECHNOLOGY LLCreassignmentSEAGATE TECHNOLOGY LLCRELEASE OF SECURITY INTERESTS IN PATENT RIGHTSAssignors: JPMORGAN CHASE BANK, N.A. (FORMERLY KNOWN AS THE CHASE MANHATTAN BANK AND JPMORGAN CHASE BANK), AS ADMINISTRATIVE AGENT
Assigned to WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE, JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT AND FIRST PRIORITY REPRESENTATIVEreassignmentWELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVESECURITY AGREEMENTAssignors: MAXTOR CORPORATION, SEAGATE TECHNOLOGY INTERNATIONAL, SEAGATE TECHNOLOGY LLC
Assigned to SEAGATE TECHNOLOGY HDD HOLDINGS, SEAGATE TECHNOLOGY INTERNATIONAL, MAXTOR CORPORATION, SEAGATE TECHNOLOGY LLCreassignmentSEAGATE TECHNOLOGY HDD HOLDINGSRELEASEAssignors: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Assigned to THE BANK OF NOVA SCOTIA, AS ADMINISTRATIVE AGENTreassignmentTHE BANK OF NOVA SCOTIA, AS ADMINISTRATIVE AGENTSECURITY AGREEMENTAssignors: SEAGATE TECHNOLOGY LLC
Assigned to EVAULT INC. (F/K/A I365 INC.), SEAGATE TECHNOLOGY LLC, SEAGATE TECHNOLOGY INTERNATIONAL, SEAGATE TECHNOLOGY US HOLDINGS, INC.reassignmentEVAULT INC. (F/K/A I365 INC.)TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTSAssignors: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE
Anticipated expirationlegal-statusCritical
Assigned to SEAGATE TECHNOLOGY HDD HOLDINGS, SEAGATE TECHNOLOGY LLC, SEAGATE TECHNOLOGY (US) HOLDINGS, INC., SEAGATE TECHNOLOGY PUBLIC LIMITED COMPANY, I365 INC., SEAGATE TECHNOLOGY, SEAGATE TECHNOLOGY INTERNATIONAL, SEAGATE HDD CAYMANreassignmentSEAGATE TECHNOLOGY HDD HOLDINGSRELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS).Assignors: THE BANK OF NOVA SCOTIA
Expired - Lifetimelegal-statusCriticalCurrent

Links

Images

Classifications

Definitions

Landscapes

Abstract

The present invention is drawn to a hybrid data reconstruction system and method for a data storage device. Data is selectively stored according to one of two or more redundancy schemes such that critical data is stored according to a scheme which has a higher degree of redundancy.

Description

REFERENCE TO RELATED APPLICATION
The present application claims priority from U.S. provisional application Ser. No. 60/062,663 filed on Oct. 8, 1997.
FIELD OF THE INVENTION
The present invention relates to data storage devices. More specifically, the present invention relates to data reconstruction for a data storage device, such as a disc drive, tape drive, or optical drive.
BACKGROUND OF THE INVENTION
Two conventional computer models have become well known in the industry of computing. The first is a mainframe computing model and the second is a clustered computing model.
The traditional progression for an end user in the mainframe computing model is to purchase an initial system, and when additional processing capabilities are required, to replace the initial system with a bigger system. At various points in this cycle, traumatic discontinuities occur. For example, if the user outgrows the architecture of the initial system, the user may need to convert from one operating system to another, or even from one vendor's proprietary architecture to that of another vendor, when the second upgraded mainframe system is purchased. These changes entail enormous costs for the organization purchasing the upgrade, in both dollars and employee time. Therefore, such conversions are avoided, in many cases.
In addition, the mainframe model entails poor residual value of computer equipment. Thus, the system replacement often results in invested capital which is substantially completely lost when the initial system is replaced by an upgraded system. Further, larger upgraded systems tend to be sold in lower volumes than smaller systems. Thus, each new system upgrade typically has a higher cost of computing than the previous system.
In a clustered computing model, a mainframe computer is replaced with a cluster of smaller, standards-based servers. This can offer many advantages over the mainframe model. Since the cluster may start off as only a single system, the threshold to entering the cluster model is lower. Further, such smaller systems are typically sold in high volume, making the cost of computing less. Also, such systems are standards based in that they do not exhibit dependence on proprietary architectures. This provides for the availability of equipment from multiple sources which allows the user to choose the best alternative with each subsequent purchase.
Still other advantages present themselves with the clustered computing model. Upgrade costs can be controlled more precisely by adding only the amount of additional resources required to meet existing and immediate future needs. Further, the user can choose from a wide variety of vendors, without concern about migration or conversion to a new architecture. Similarly, with the right architecture, there may never be a need for conversion to another operating system.
Still, the clustered computing model does have disadvantages and problems. For example, the clustered computing model encounters difficulty in providing clustered systems with the ability to share data in a way that allows the cluster to take on the workload that a single mainframe could perform. For example, it is currently very difficult to implement clustered models where each of the servers in the cluster are required to process transactions on the same data. Examples of some such applications include an airlines reservations system or a financial institution's complete inventory of transactions.
The second disadvantage of the clustered computing model simply involves the lack of extensive experience in managing storage and data which exists in the mainframe environment. Such experience has evolved into management software that is simply not yet available in the standards based cluster environment.
Conventional disc drives also include disadvantages which are related to the loss of operating system information. For example, a conventional disc drive contains millions of sectors of data. For any number of different reasons, one or more of the sectors may become unreadable or corrupted. If the sector which becomes unreadable is one that is used for a special purpose by the operating system, the entire disc space in the disc drive may be rendered unusable, even if the entire rest of the disc drive can be read. For example, in a personal computer environment, the master boot record, partition boot record, file attribute table (FAT) or the root directory can be become unreadable or corrupt. This can cause the loss of essentially the entire contents of the disc drive. No conventional operating system has the ability to recover all the readable data in the face of losing such key file system management data. This represents a tremendous loss for a user, and is especially unfortunate since the data that is lost is operating system related, and has little or nothing to do with the actual data stored on the disc drive, which cannot be read.
To date, any service for recovering data in such instances is typically very cumbersome. Such services generally require physically removing the disc drive from its operating environment and sending it to a company or service provider engaged in the service of recovering such data. This service is provided with no guarantee of success, and with no protection against the consequent breach of privacy which attends the relinquishing of the disc drive for this purpose.
The present invention addresses these and other problems, and offers other advantages over the prior art.
SUMMARY OF THE INVENTION
The present invention is drawn to a hybrid data reconstruction system and method for a data storage device. Data is selectively stored according to one of two or more redundancy schemes such that critical data is stored according to a scheme which has a higher degree of redundancy.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a network attached storage system in accordance with one aspect of the present invention.
FIG. 2 illustrates an object model in accordance with one aspect of the present invention.
FIG. 3-1 is a block diagram of a first configuration in which an object on the storage device is accessed by a requester.
FIG. 3-2 is a block diagram of a second configuration in which an object on a storage device is accessed by a requester.
FIG. 4 is a perspective view of a disc drive in accordance with one aspect of the present invention.
FIG. 5 is a functional block diagram illustrating access of an object by a requester.
FIG. 6 illustrates a portion of a storage media partitioned in accordance with one aspect of the present invention.
FIGS. 7-1 and7-2 show a flow diagram illustrating access of an object by a requester in accordance with one aspect in accordance of the present invention.
FIG. 8 is a flow diagram illustrating creation of an object in accordance with one aspect of the present invention.
FIG. 9 is a flow diagram illustrating opening and updating of an object in accordance with one aspect of the present invention.
FIG. 10 is a flow diagram which illustrates writing to an object in accordance with one aspect of the present invention.
FIG. 11 is a flow diagram which illustrates opening an object for read only purposes in accordance with one aspect of the present invention.
FIG. 12 is a flow diagram which illustrates reading an object in accordance with one aspect of the present invention.
FIG. 13 is a flow diagram which illustrates closing an object in accordance with one aspect of the present invention.
FIG. 14 is a flow diagram which illustrates removing an object in accordance with one aspect of the present invention.
FIG. 15 is a flow diagram which illustrates creating a partition in accordance with one aspect of the present invention.
FIG. 16 is a flow diagram which illustrates removing a partition in accordance with one aspect of the present invention.
FIG. 17 is a flow diagram which illustrates exporting an object in accordance with one aspect of the present invention.
FIG. 18 is a flow diagram which illustrates obtaining object attributes in accordance with one aspect of the present invention.
FIG. 19 is a flow diagram which illustrates setting or modifying object attributes in accordance with one aspect of the present invention.
FIG. 20 is a flow diagram which illustrates reading lock attributes in accordance with one aspect of the present invention.
FIG. 21 is a flow diagram which illustrates setting lock attributes in accordance with one aspect of the present invention.
FIG. 22 is a flow diagram which illustrates resetting lock attributes of an object in accordance with one aspect of the present invention.
FIG. 23 is a flow diagram which illustrates obtaining device associations in accordance with one aspect of the present invention.
FIG. 24 is a flow diagram which illustrates setting device associations in accordance with one aspect of the present invention.
FIG. 25 is a block diagram illustrating a disc drive array implemented in accordance with one aspect of the present invention.
FIG. 26 is a block diagram illustrating a target disc drive in accordance with one aspect of the present invention.
FIG. 27 is a block diagram illustrating a parity disc drive in accordance with one aspect of the present invention.
FIG. 28 is a flow diagram illustrating the creation of a parity group in accordance with one aspect of the present invention.
FIG. 29 is a flow diagram illustrating a write operation in which parity information is updated in accordance with one aspect of the present invention.
FIG. 30 illustrates a data structure in accordance with one aspect of the present invention.
FIG. 31 is a block diagram of a disc drive utilizing embedded location information in accordance with one aspect of the present invention.
FIG. 32 is a flow diagram illustrating the operation of the system shown in FIG.31.
FIG. 33 is a block diagram illustrating another embodiment of a data storage device utilizing embedded location information in accordance with another aspect of the present invention.
FIG. 34 is a block diagram illustrating a disc drive array implementing a hybrid data reconstruction system in accordance with one aspect of the present invention.
FIGS. 35 and 36 are flow charts illustrating a write operation of a hybrid data reconstruction method for block oriented data and object oriented data, respectfully.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
FIG. 1 is a block diagram of adata storage system100 in accordance with one aspect of the present invention.System100 includes object orienteddata storage devices110 and112,file server114,requesters116,118 and120, andinterconnect122.System100 illustrates a network attached storage configuration which can be constructed of equipment and software from many different vendors, and which appear to users as a single large computer system.
Object oriented storage devices110-112 are the storage components which perform the data storage function ofSystem100. Storage devices110-112 preferably include disc drives, redundant arrays of inexpensive discs (RAID) subsystems, tape drives, tape libraries, optical drives, juke boxes or any other storage device which can be shared.Storage devices110 and112 are also provided with an input/output (I/O) channel attachment torequesters116,118 and120, which will accessdevices110 and112.
Requesters116,118 and120 are components, such as servers or clients, which share information stored ondevices110 and112. Requesters116-120 are also preferably configured to directly access the information onstorage devices110 and112.
File server114 performs management and security functions, such as request authentication and resource location. In smaller systems, a dedicated file server is preferably not used. Instead, one of requesters116-120 assumes the function and responsibility of overseeing the operation ofsystem100 carried out byfile server114. In addition, where security and functionality provided byfile server114 is not needed or desired, or where an overriding need for performance requires that the cluster of requesters116-120 talk directly withstorage devices110 and112,file server114 is eliminated fromsystem100.
Interconnect122, in one preferred embodiment, is the physical infrastructure over which all components in network attachedstorage system100 communicate with one another.
In operation, whenSystem100 is powered up, all devices preferably identify themselves either to each other or to a common point of reference, such asfile server114 orinterconnect122. For instance, in a Fiber Channel basedsystem100, object orientedstorage devices110 and112, and requesters116-120 log onto the fabric of the system. Any component ofsystem110, in such an implementation, which desires to determine the operating configuration can use fabric services to identify all other components. Fromfile server114, requesters116-120 learn of the existence ofstorage devices110 and112 with which requesters116-120 can have access. Similarly,storage devices110 and112 learn the location of information required to locate other devices insystem100 and the address which must be used to invoke a management service, such as backup. Similarly,file server114, in one preferred embodiment, learns of the existence ofstorage devices110 and112 from the fabric services.
Depending on the security practice of aparticular system100, requesters116-120, or any of them, may be denied access to some components ofsystem100. From the set ofstorage devices110 and112 available to each requester, that requester can then identify the files, data bases, and free space available to it.
At the same time, each component insystem100 preferably identifies to thefile server114 any special considerations associated with it. For example, any storage device level service attributes can be communicated once tofile server114, and all other components insystem100 then learn of those attributes fromfile server114. For instance, a particular requester116-120, may wish to be informed of the introduction of additional storage devices, subsequent to start up. Such an attribute may be provided, for example, when the requester logs ontofile server114.File server114 then automatically advises that particular requester116-120 whenever new storage devices are added tosystem100. File sever114 may then typically also pass to the requester other important characteristics such as whether the storage device is a RAID 5, mirrored, etc., storage device.
In accordance with one aspect of the present invention, the information stored onstorage devices110 and112 is stored with a system better illustrated in FIG.2. Each ofstorage devices110 and112 are preferably object oriented devices which operate in a mode in which data is organized and accessed as objects124-126 rather than as an ordered sequence of sectors. The object orienteddevices110 and112 manage objects124-126 with an object file system which illustratively includes a single level list of the objects for each partition on the particular device. This is also referred to as a flat file system. The objects124-126 which are stored on the storage medium in eachdevice110 and112 are preferably the smallest visible units of capacity allocation on adevice110 or112 which is operating in object oriented device mode. An object on such a storage device includes an ordered set of sectors associated with a unique identifier. Data is referenced by the identifier and an offset into the object. The object is allocated and placed on the storage media by thestorage device110 or112, itself, while the operating system manages its files and metadata in these object constructs, instead of managing sectors of data, as it does in prior architectures.
The objects124-126 are accessed by aninterface128 in which the objects expose a plurality of methods which can be invoked by a requester116-120 in order to access and manipulate attributes and data in objects124-126. Thus, as shown in FIG. 2, arequest130 is issued from a requester116-120. In a preferred embodiment, requesters116-120 are computer systems, or an element in a cluster or network of systems, which submitsrequest130 for action on a storage device which contains objects124-126. Thus, requesters116-120 may be both clients and servers. In any case, request130 which is issued by one of requesters116-120 invokes one of the methods ininterface128, which, in turn, causes the manipulation of one or more of objects124-126, as will be described in greater detail later in the application.
FIGS. 3-1 and3-2 are block diagrams of two different configurations which can be used to access objects stored on storage devices110-112. For the sake of simplicity, only asingle requester116 and a single object orientedstorage device110 is illustrated in FIGS. 3-1 and3-2. When requester116 wishes to open an object (such as object124-126) requester116 may be able to directly accessstorage device110, or it may be required to request permission fromfile server114 and the location information, in order to access an object onstorage device110. The extent to whichfile server114 controls access tostorage device110 is primarily a function of the security requirements of the particular implementation ofsystem100.
In the block diagram illustrated in FIG. 3-1,system100 is assumed to be secure. That is, there is no requirement to protect the transmission of command information and data betweenrequester116 andstorage device110. In such an implementation, there still may be afile server114 present for management functions, butfile server114 is not needed to oversee requester interaction withstorage device110.
In such an implementation,requester116 is in a position to access and create objects directly onstorage device110.Requester116 can thus open, read, write and close objects as if they were natively attached torequester116. Such operations are described in greater detail later in the application. A brief overview is provided at this point, however, simply for the sake of clarity. In order to read an object onstorage device110,requester116 may preferably first read from one or more objects which reveal the logical volumes or partitions onstorage device110, and how to begin searching for an object stored thereon.Requester116 then opens and reads an object, which may be a root directory. From this object, locating other objects is straight forward, and is based on the contents of the root directory.Requester116 repeats the process until the desired data is located. Data is referenced by an object identification (object ID) and a displacement within the object.
In a second implementation illustrated in FIG. 3-2, security is required. Therefore,file server114 is interposed into the I/O chain betweenrequester116 andstorage device110, to a degree necessary for the desired level of protection. In one preferred embodiment,requester116 must first request permission fromfile server114 to perform a set of I/O operations.File server114, (which may have withheld storage location information fromrequester116 for additional security) then accredits the request fromrequester116 by returning sufficient information to allow requester116 to communicate directly withstorage device110. Sincestorage device110 is preferably informed of the security parameters whenstorage device110 logs ontofile server114,storage device110 preferably does not allow an I/O request unless it is properly constructed and includes encoded data which includes valid permission fromfile server114.
Then, the process proceeds in a similar fashion to that described which respect to FIG. 3-1. However, the payload associated with each command may be quite different. For example, in the case where security is required (showing FIG. 3-2) both commands and data which pass betweenrequester116 andstorage device110 may be encrypted. In addition, permission information must preferably be added to the command parameters provided fromrequester116 tostorage device110.
Sincestorage devices110 and112 can, in one preferred embodiment, include hard disc drives, a brief discussion of a disc drive is in order. FIG. 4 is a perspective view of a hard disc drive, which can be implemented asstorage device110. Indisc drive110, a plurality ofdiscs132 are journaled about aspindle motor assembly134 within ahousing136. Eachdisc132 has a multiplicity of concentric circular recording tracks, indicated schematically at138. Eachtrack138 is subdivided into a plurality of partitions (described in greater detail with respect to FIG.6). Data can be stored on, or retrieved from,discs132 by referring to a specific partition within atrack138. Anactuator arm assembly140 is rotatably mounted preferably in one corner ofhousing136. Theactuator arm assembly140 carries a plurality ofhead gimbal assemblies142, which each carry a slider having a read/write head, or transducer (not shown) for reading information from and writing information ontodiscs132.
Avoice coil motor144 is adapted to precisely rotate theactuator arm assembly140 back and forth such that the transducers onsliders142 move across the surface ofdiscs132 along an arch generally indicated byarrow146. FIG. 4 also illustrates, in block diagram form, adisc drive controller148, which is used in controlling certain operations ofdisc drive110 in a known manner. However, in accordance with the present invention,disc drive controller148 is also used in implementinginterface128 to objects124-126 stored ondiscs132.
FIG. 5 is a block diagram of a portion ofdisc drive110 as it fits withinsystem100 shown in FIG.1. In FIG. 5,disc drive controller148 includes acontrol component150 which implementsinterface128. Objects124-126 are stored on the storage medium which constitutesdisc132.Request component152 is implemented on a requester116-120, and is formed to logically formulate requests which invoke methods ininterface128.Control component150, upon the invocation of a method, carries out certain tasks in order to manipulate identified objects in a desired way.Control component150 returns an event, which can include data or attributes associated with any identified object. The event is also returned based upon the particular method invoked by the requester116-120.
In order for object oriented devices110-112 to provide the same functionality delivered by an operating system with block oriented devices, storage space on devices110-112 must be manageable to a similar degree. Thus, in one preferred embodiment, an organizational layer on storage devices110-112 is provided above objects124-126 which are stored thereon. In one preferred embodiment, object oriented storage devices110-112 provide for allocating disc space into one or more mutually exclusive regions, referred to as partitions. Partitions are described in greater detail with respect to FIG.6. Within a partition, a requester116-120 can create objects. In one preferred embodiment, the structure within a partition is a simple, flat organization. Onto this organization, any operating system can map its own structures.
FIG. 6 illustrates a portion of storage space on a storage medium, such as one ofdiscs132. The storage space includes a number of objects, such as adevice control object154, adevice association object156, and a plurality of partitions labeled as partition 0 (also designated by numeral158), partition 1 (also designated by numeral160) and partition N (also designated by numeral162). Each partition also includes a number of objects such aspartition control object164,partition object list166, and a plurality of data objects168 (labeled data object 0-data object N).
Associated with each object is a set of attributes. In accordance with one aspect of the present invention, an access control attribute is provided which is set by a Set Attribute method (discussed in greater detail later in the application) and provides means by which access to a particular object is controlled. By changing the version number of the access control attribute, certain requesters116-120 can be denied or given, access to the particular object.
The clustering object is an attribute which indicates whether the particular object should desirably be located near another object in the storage system. The cloning attribute indicates whether the particular object was created by copying another object in the storage system. A group of size attributes define the size characteristics of the particular object. For instance, the group of size attributes includes information indicative of the largest offset written within the object, the number of blocks allocated for the object, the number of blocks used to store data within the object and the number of bytes per block within the object.
A group of time attributes indicates when the object was created, the last time data in the object was modified, and the last time an attribute was modified in the object. The object also may preferably include a set of attributes which define the last time that any data in the file system was modified and that any attribute in the file system was modified. Other attributes can also be provided, in order to indicate other parameters, characteristics or features of any given object.
Each object is also associated with an object identifier which is chosen by the particular storage device110-112 and returned to the requester116-120 in response to the command to create an object. The identifier is preferably an unsigned integer of a specified length. In one preferred embodiment, the length of the identifier defaults to a size specified by a particular storage device110-112, or it can be set as a device attribute. Further, in one preferred embodiment, a predefined subset of identifiers (Ids) is reserved for well known objects, special uses, and other special functions which may desirably be performed.
FIG. 6 illustrates that the storage medium typically includes a number of well known objects which always have a specific object ID. In some cases, such well known objects exist on every device or in every partition.
For example, one such well known object is thedevice control object154, which preferably contains attributes maintained by each device110-112, and which relate to the device itself or to all objects on the device. The attributes are maintained by the Set Attribute method which is described later in the application. In one preferred embodiment, there is one device control object154 per device110-112.
Table 1 illustrates one set of preferable device control object (DCO) attributes.
TABLE 1
Type NameBytesSemantics
Security Clock8monotonic counter
Master Key8master key,
controlling device
key
Device Key8device key,
controllingpartition
keys
Protection
1defines protection
Leveloptions
PartitionsPartition
1Number of partitions
Counton device
DeviceObject8defines properties
attrAttributesassociated with all
objects on device
In one preferred embodiment, the DCO attributes include a clock which is simply a monotonic counter, a master key which includes the encryption key, or other master key which controls all other keys on the device, and a device key which controls partition keys and which may be used to lock partitions. The attributes also include a protection level key which identifies a predetermined protection level and which has associated security policies, a partition count which defines a number of partitions on the device, and object attributes which define properties associated with all objects on the particular device being accessed.
In order to adequately manage objects spanning multiple storage devices110-112, each storage device110-112 also preferably includes adevice association object156 which defines associations between various devices110-112. For example, wherestorage devices110 and112 are a mirrored pair of devices, or members of an arrayed set, thedevice association object156 identifies this relationship. Table 2 illustrates preferable attributes of thedevice association object156.
TABLE 2
NameBytesSemantics
Association2Unique ID of this set
Identifier
Association2Kind of Association
Type
Membership Listn
Association2
Identifier
Association2
type
Membership Listn
Such attributes preferably include an association identifier, which is a unique identifier for each given set of associated devices. The attributes also preferably include an association type which defines the kind of association (eg, mirrored pair, RAID 5, etc.) between the devices. The attributes further preferably include a membership list which simply identifies the devices110-112 which are members of the above-defined association.
Eachpartition158,160 and162 on a storage device110-112 also preferably includes thepartition control object164 which contains the properties of a single partition.Object164 preferably describes not only the partition but also any object attributes that pertain to all objects in the partition. Each device110-112 preferably includes onepartition control object164 for each partition defined on the device. While FIG. 6 illustrates partition control objects stored within each partition, this need not be the case. The partition control objects can be stored in the flat file system above the partitions instead.
Table 3 indicates a number of attributes which are preferably included in the partition control objects168.
TABLE 3
Type NameBytesSemantics
Master Key8Encryption keys
Current8
Working Key
Previous8
Working Key
Part.Object8defines properties
attrAttributesassociated with all
objects in partition
Such attributes preferably include a master key which defines an encryption key for the entire partition, and which can be used to set a current working key. The attributes also preferably include a current working key and a previous working key which are preferably used for encryption and decryption of command and data messages.Partition control object164 also preferably includes object attributes which are associated with all objects in the designated partition.
FIG. 6 also illustrates that each partition preferably includes apartition object list166 which is an object that is built bycontrol component150 when a partition is created on the storage medium.Partition object list166 preferably has the same identifier in every partition, and constitutes the point of departure for navigating the object file system implemented on the storage medium. Table 4 illustrates a list of attributes preferably associated with each partition object list.
TABLE 4
Field Bytes
OBJECT ID 8ID used for any OPEN, READ,
WRITE, CLOSE on this OBJECT
User DataNPOL Attribute sets this, use GET
ATTRIBUTE to learn value
As illustrated in Table 4, the object preferably includes a list of object identifiers (or object IDs) for all objects resident in the partition, and the volume of user space allocated to each object. The object identifier is used by a requester in order to open, read, write and close an object. In addition, the user can preferably allocate user space for each object ID by setting the user data attribute in the partition object list. After thepartition object list166, each partition preferably includes a plurality of data objects168. Each of the data objects168 preferably includes one or more of the attributes set out in Table 1, and can include additional attributes, depending on the specific implementation of the data storage system.
The object oriented storage devices110-112 preferably support requests to provide data to, or store data for, a requester116-120. Moreover, storage devices110-112 preferably assume responsibility for other functions that would have been done at other components, most likely in the operating system, in prior art architectures. Space management, as well as the maintenance of the attributes associated with objects on devices110-112, is preferably performed by devices110-112 themselves. Such functions are preferably performed by invoking methods supported byinterface128 which is implemented bycontrol component150 in each of storage devices110-112. A number of the methods which can be invoked are discussed in greater detail later in the specification. However, in order to facilitate a better understanding of such methods, FIGS. 7-1 and7-2 provide a flow diagram which illustrates the navigation of the object oriented file system in accordance with one aspect of the present invention. It is believed that discission of FIGS. 7-1 and7-2, prior to a detailed discussion of each of the methods which is set out below, will facilitate understanding of the present invention.
FIGS. 7-1 and7-2, extending from blocks170-204, illustrate finding an object in a specified partition on one of storage devices110-112. First, therequestor116 obtains the device attributes indevice control object154. This is indicated byblock172. Invocation of the Get_DCO_Attributes method causescontrol component150 to return the attributes stored in thedevice control object154. This is indicated byblock174.Requestor116 then selects a given partition based upon the attributes returned from thedevice control object154. This is indicated byblock176.
Once the partition is selected byrequestor116, requestor116 then invokes the Get_DAO_Attributes method as indicated byblock173. This causescontrol component150 to obtain the attributes from thedevice association object156 stored onstorage medium110.Control component150 then returns the device association attributes to requester116 as indicated byblock175. Based on the device association attributes and the device control attributes,requestor116 selects a partition to interrogate. This is indicated byblock176.
Requestor116 then invokes the Get_PCO_Attributes method which causescontrol component158 to obtain the attributes found in thepartition control object164 which is associated with the specific partition to be interrogated byrequester116. This causescontrol component150 to obtain and return the partition control object attributes. This is indicated byblocks178 and180. If the objects in the selected partition are not the objects which are of interest to the requester, then the requester selects another partition as indicated inblocks182 and176.
However, assuming that therequester116 has found the partitions of interest, then the requester invokes the Get_POL_Attributes for the selected partition, as indicated inblock184. This method causescontrol component150 to obtain the attributes from thepartition object list166 associated with the selected partition. These attributes are then provided to requester116 as indicated inblock186.
Next, therequester116 invokes an Open_Read Only_POL method. This is indicated byblock188. As is discussed in greater detail below, thecontrol component150 obtains the data stored in thepartition object list166, associated with the selected partition, but modifies an attribute in that object to indicate that the data is being provided on a read only basis such that the data cannot be modified or extended. This is indicated byblock190.
The requester then invokes the Read_POL method which causescontrol component150 to tender the list of objects in the selected partition for review byrequester116. This is indicated byblock194. After choosing the desired objects in the selected partition, therequester116 invokes the close_POL method which causes thecontrol component150 to close the partition object list. This is indicated byblock196.
Having discovered the object ID for the desired object or objects, requester116 then invokes the Open_xxx_Objectx method. The xxx indicates a specific open method which is invoked by the requester, based upon the particular data manipulation desired by the requester. The Objectx indicates the object ID from the partition object list which identifies the object to be manipulated or accessed by the requester. The xxx designation, for example, can represent an Open_Update operation, or an Open_Read-Only operation. These are discussed below, and this step is indicated byblock198.
The requester then performs the desired manipulation of the object returned bycontrol component150. Various methods which can be used to manipulate the objects are discussed in greater detail below. This is indicated byblock200.
Finally, once the desired object manipulation or access is completed by the requester, therequester116 invokes the Close_Objectx method which is also described in greater detail below, and which operates to close the object which was accessed byrequester116.
FIGS. 8-24 are flow diagrams illustrating various exemplary methods which can be invoked by a requester in order to accomplish desired functions and desired manipulations of objects stored on an object oriented storage device, such asdevice110.
FIG. 8 is a flow diagram specifically illustrating an Open_Create_Object method. When arequester116 invokes this method, as indicated inblock208,control component150 creates a new object ID and enters the object ID in the partition object list associated with the specific partition in which the object is to be created. This is indicated byblock210.Control component150 then creates a new object by allocating the number of blocks, etc., associated with the object, and by modifying the object attributes to indicate the time of object creation and to set other attributes listed in Table 1 and associated with the object. This is indicated byblock212. Next,control component150 returns the status of the request along with the new ID of the object which has just been created. This is indicated byblock214.
In addition to simply creating an object, requester116 can specify a number of options. For example, in one preferred embodiment,requester116 can specify whether the object is password protected, whether the object is to be encrypted, certain quality service thresholds (eg, whether the object is to be backed up), lock characteristics (eg, whether the object is to be locked by an object lock as well as any other locks, such as partition and device locks), the access control version, mirror or other backup support (which will cause all updates to be mirrored onto another object, or backed up in another way which is specified), to indicate that space will be allocated in units of a specified minimum size, and to set collision characteristics (such as write in a UNIX-type system).
The particular information which requester116 provides to controlcomponent150 in order to invoke this method includes permission information in systems which require this for security, the partition of the device in which the object is to be created, and any of the options mentioned above. In response,control component150 returns, in one illustrative embodiment, the capacity available on the device, the status of the request, along with the ID of the new object.
It should also be noted that a special instance of this method can be invoked, which includes all data associated with an object. In that case, one method can be invoked which can create an object, write to the object, and close the object.
FIG. 9 is a flow diagram illustrating an Open_Update_Objectx method. When therequester116 invokes this method, as indicated byblock220, this allows requester116 to read and write the specified object. It also provides for extending the length of the object. When the method is invoked,control component150 sets an attribute in the specified object indicating that the object is in use.Requester116 provides permission information, the partition ID containing the object, the identifier of the object to be accessed, the type of action to be taken (such as update or write) and any of the options mentioned above. In response,control component150 returns the status of the request and the length of the specified object, along with remaining capacity available to therequester116.
FIG. 10 is a flow diagram illustrating a Write_Object method. Whenrequester116 invokes this method, as indicated byblock242, this causescontrol component150 to write to a specified number of blocks in the designated object at the location specified.
A write method can also cause other methods to be invoked. For example, if parity support is called for on the device110-112 to be accessed, a write can automatically invoke an Exclusive Or method which performs an Exclusive Or operation on the data to be written, and parity data to be written to one or more previously specified parity devices.
In order to invoke this method, therequester116 provides permission information, an object identifier, a partition ID, a starting location of blocks to be written within the object, a number of blocks to be written to the object, option information, and the data to be written. Once this method is invoked,control component150 modifies the specified object with the specific data provided. This is indicated byblock244.Control component150 then modifies necessary attributes in the specified object such as the length of the object, the time stamps associated with the object, etc. This is indicated byblock246.Control component150 then modifies necessary attributes of other objects, such as the partition object list, where needed. This is indicated byblock248.Control component150 then returns the status of the request to the specific requester. This is indicated byblock250.
FIG. 11 is a flow diagram illustrating an Open_Read_Only_Objectx method. When this method is invoked,control component150 allows the requester116 to have access to the specified object for read only purposes. Thus, when this object is invoked, as indicated byblock230, the requester provides permission information, a partition ID, an object ID, and option information.Control component150 then sets an attribute in the specified object indicating that the object is in use. This is indicated byblock232.Control component150 then sets a read only attribute in the object indicating that the object cannot be written by the requester. This is indicated atblock234. Thecontrol component150 then returns the status of the request and the length of the specified object. This is indicated byblock236.
FIG. 12 is a flow diagram illustrating a Read_Objectx method. This method is invoked by therequester116 when requester116desires device110 to return data from the specified object. The requester provides permission information, an object ID, a partition ID, a starting location of blocks to be read, a number of blocks to be read, and any other desired option information. In response,control component150 returns the status of the request, the length of data being returned, and the actual data being returned in response to the method. This is indicated byblocks256 and258.
FIG. 13 is a flow diagram illustrating a Close_Objectx method. When this method is invoked by arequester116, as indicated byblock264, the requester provides permission information, an object ID. and any desired option information. In response,control component150 modifies the data in the specified object as indicated byblock266. In addition, any changes to the object as a result of writing to the object, if not already written to the storage media, are written at this time.Control component150 also updates attributes of object x as indicated byblock268. For example, if the object is a newly created object, its attributes are updated with the time of creation, and other required attribute information. In addition, the attributes are modified to indicate the last time that the data in the object was modified, the length of the data, if it was changed, and an attribute is set bycontrol component150 which indicates that the object is no longer in use by a given requester.
Control component150 can also, optionally, update residual cache information associated with the object and reflected in an object attribute. This is indicated byblock270. For example, if thespecific requester116 making the request is configured to inform thestorage device110 that data is still being cached for the closed object, or is no longer being cached, the operating system ofstorage device110 can retain the cache information for those applications where objects will be closed and opened again in quick succession. At the same time, however, thestorage device110 can keep track of whichever components inSystem100 may need to be informed in the event of coherency collisions, should another requester request access to this object in the meantime.Control component150 then returns the status of the request as indicated byblock272.
FIG. 14 is a flow diagram illustrating the Remove_Objectx method. When this method is invoked, as indicated atblock278,control component150 takes the necessary steps to delete the object from the storage medium. This is indicated atblock280.Control component150 then modifies the partition object list associated with the partition from which the object was deleted, in order to reflect that the specified object ID is available. This is indicated byblock282.Control component150 then returns the status of the request, as indicated byblock284. In order to invoke this method,requester116 provides permission information, a partition ID, an object ID, and any desired option information.Control component150 then returns the status of the request as indicated byblock284.
FIG. 15 is a flow diagram illustrating the Create_Partitionx method which can be invoked by a requester, as indicated bybock290, in order to create a partition onstorage device110. It should be noted, that while the Create_Partitionx method partitions the drive into one or more regions, all space on the storage media need not be accounted for. In addition, partition regions can also span various zones on a disk.
In one embodiment, this method is used to create partitions in a tiling arrangement, with the partitions representing true divisions of the storage space on the device. This arrangement is used to divide the space by service levels such as data array. Such partitions cannot be resized, but can be removed and recreated.
In accordance with another aspect of the present invention, the partitions are used as a logical partitioning in order to organize objects logically rather than manage the space according to service is levels. In this second embodiment, the partitions can be resized dynamically.
In order to invoke the method, the requester provides permission information, any desired options, a partition ID, and an initial space allocation which identifies space to be allocated to the specific portion identified. In response,control component150 allocates space on the storage media for the specified partition, as indicated inblock292. Thecontrol component150 then establishes a partition control object and a petition object list, as indicated byblocks294 and296. As discussed above, the partition object list cannot be removed and serves as a starting point for navigating objects in the partition.Control component150 then returns the status of the request and a partition map illustrating the partitioning which has been conducted. This is indicated inblock298.
FIG. 16 is a flow diagram illustrating the Remove_partitionx method. In order to invoke this method,requester116 provides permission information, option information, and a partition ID identifying the partition to be removed. This is indicated inblock304. In response,control component150 de-allocates space previously associated with the partition as indicated inblock306.Control component150 then removes all objects in the partition object list associated with the partition to be deleted, deletes the partition object list and deletes the partition control object. This is indicated byblocks308,310 and312.Control component150 then returns the status of the request and the partition map showing changes made to the partitioning. This is indicated byblock314.
In accordance with one aspect of the present invention, data management policies are communicated to each storage device110-112, so that the storage devices can act independently of one other to execute the management policies. This provides significant advantages in that it results in not only less human intervention, but also more predictable and timely management control.
For example, data on the storage devices110-112 may desirably be backed up each week. Conventional systems are typically backed up during an idle period on weekends, such that the system availability is not interrupted during a business week. However, the window of availability has been gradually shrinking at the same time the system capacities have been increasing. Thus, the problem of attempting to find time to interrupt a system long enough to back up possibly terabytes, of data has become very difficult.
Thus, in accordance with one aspect of the present invention, by taking action on an object based on attributes assigned to it, an object oriented storage device110-112 can inform a backup function whenever an object has reached the correct state for its backup to be taken. Also, the backup of all files can be spread over a longer period—during which others are still being updated-without affecting data integrity.
Other examples of attributes which can invoke action by an object oriented storage device110-112 include encryption, compression, versioning and parity redundancy. In each of these examples, the storage device110-112 preferably need only be informed of the policy with respect to a specific object or set of objects. The device itself can then perform the function or inform an agent designated to provide the service.
For instance, compression and encryption can be performed on the storage device110-112 itself. Therefore, the only thing which need be communicated to the device, is the fact that compression or encryption is required for an object. For a management function which is performed by an agent, not only the management function policy must be communicated to the storage device, but also an identification of an agent to perform the function, such that the agent can be accessed by the storage device when it is time to perform the function.
In accordance with one aspect of the present invention, associations are established among objects so that those with the same attributes or with dependencies can be identified. For example, assume a database includes 6 files or objects, none of which can be backed up until either all have been closed or until one designated as the object on which all of the others are dependent has been closed. Afile server114 may be needed to manage this kind of relationship between objects. In addition, the present invention also establishes inter-device dependencies as in the case of an arrayed parity set. By making it possible to establish groups in which one device or object makes certain that the rest of the group has the same essential properties, management of the group is more efficient and effective.
FIGS. 17-24 are flow diagrams which illustrate management functions which can be performed by invoking methods exposed by the objects on the storage devices. Invoking the methods causescontrol component150, and/or related control components, to take steps in order to perform the management functions associated with the invoked methods.
FIG. 17 is a flow diagram illustrating the Export Objectx method.Requester116 invokes this method, as indicated byblock320, by providing permission information, option information, an object ID, a target device ID and a target partition ID. The export method enables a storage device110-112 to take action based on rules expressed in attributes associated with a given object. For example, it can be used to initiate a backup or support versioning of objects to other devices.
When the Export_Objectx method is invoked,control component150 obtains the specified object from the storage media as indicated byblock322.Control component150 then invokes an Open_Create method at a target device specified byrequester116. This is indicated byblock324.Control component150 then invokes a write method at a target device supplying data and attributes of the specified object. This is indicated byblock326.Control component150 then invokes a Close method at the target device closing the object on the target device after it has been written to the target device. This is indicated byblock328. Finally,control component150 returns the status of the request to the requester, along with the new object ID of the object which has been written to the target device. This is indicated byblock330.
Theinterface128 implemented bycontrol component150 also supports methods which allow a requester to obtain object attributes for review, and to set object attributes. FIGS. 18 and 19 are flow diagrams which illustrate the corresponding Get_Objectx_Attributes and Get_Objectx_Attributes methods respectively.
The method illustrated in FIG. 18 once invoked as indicated byblock336, causescontrol component150 to obtain attributes for a specified object In one illustrative embodiment, the requester provides permission information, an object ID, or a list of object IDs, and option information.Control component150 then obtains the attributes associated with the object ID, or the list of object IDs, and returns those attributes, along with a status of the request to the requester. This is indicated byblock338.
The Get_Objectx_Attributes method illustrated in FIG. 19 can be invoked as indicated inblock344, by a requester providing permission information, an object ID, and option information to controlcomponent150.Control component150 then modifies the attributes of the specified object with the information provided by the requester, and returns a status of the request, along with the attributes of the specified object, as modified. This is indicated byblocks346 and348.
In accordance with another aspect of the present invention, objects can be locked so that they can only be accessed once they are unlocked by a server that owns the lack that has been placed on the object. In one illustrative embodiment, objects can be locked at the object level, the partition level, or the device level. The lock mechanism provides for inter-server access resolution. Such locks, in one preferred embodiment are used for scheduling concurrent updates as well as prohibiting access during maintenance functions. FIGS. 20,21 and22 are flow diagrams illustrating lock methods which can be thought of as instances of the Get_Attribute and Set_Attribute methods. However, additional detail is provided for these specific instances of those methods, such that they can be used in the sharing of data among the cluster of requesters.
FIG. 20 is a flow diagram illustrating the Read_Lock_Attributes method. This method can be invoked, as illustrated byblock354, by providing permission information, object, partition or device ID, lock parameters, and any desired option information from a requester116 to controlcomponent150. In response,control component150 determines whether the specified object has a lock which is set.Control component150 then returns the status of the request of a requester owning the lock. This is indicated byblock356.
FIG. 21 is a flow diagram illustrating the Set_Lock_Attributes method. This method can be invoked by a requester, as indicated byblock362, by providing permission information, object, partition or device identifier information, lock parameters and option information. When this method is invoked,control component150 inspects a lock associated with the identified object. This is indicated byblock364. The control component then attempts to perform a lock or unlock operation with the requester's identification. This is indicated byblock366. If the requester requesting the operation is the owner of the lock, then the operation will be performed. If not, the operation will not be performed. In any case,control component150 returns a status of the request along with the ID of the server which owns the lock. This is indicated byblock368.
FIG. 22 is a flow diagram illustrating the Reset_Lock_Attribute method. This function is used in an attempt to reset a lock in an event that the server which owns the lock is no longer functioning. The method can be invoked, as illustrated byblock374, by providing permission information, object, partition or device identifier information, lock parameters, and any desired option information. In response,control component150 locks the specified object, partition or device, as indicated byblock376, and returns the status of the request along with the identification of the server which owns the lock. This is indicated byblock378.
FIGS. 23 and 24 are flow diagrams illustrating Get and Set_Device_Association methods. These methods define or interrogate relationships among devices110-112. One illustrative implementation of such relationships includes that one of the storage devices110-112 is identified as a master of a first set of devices, and others being dependent members of that set. The first or master of the set, is responsible for disseminating to the other members changes in set attributes. Other members reject attribute settings if they are not provided from the first or master of the set. In order for storage devices110-112 to perform these functions, they are provided with the ability to perform a self-inspection. This allows the devices to inspect themselves to determine whether they are included in a membership of a larger device group.
In FIG. 23, the Get_Device_Associations method is illustrated. This method can be invoked, as indicated byblock384, by providing permission information and option information. In response,control component150 returns the status of the request, and the requested associations for which the device is a member. This is indicated byblock386.
FIG. 24 is a flow diagram illustrating the Set_Device_Associations method. This method can be invoked, as indicated byblock392, by providing permission information, option information, and a list of members and attributes defining the associations. In response,control component150 modifies thedevice association object156 contained on the storage media, as indicated byblock394. The device association object is modified to include the attributes provided by the requester, and to include a time stamp showing when the object attributes were last modified, etc.Control component150 returns the status of the request, as indicated byblock396.
The permission information described above illustratively allows thefile server114 to gate access to storage by controlling which requesters116-120 thefile server114 gives the credentials needed to obtain a response from a storage device110-112.File server114 also dictates to the storage devices110-112 that they must only honor I/O requests which adhere to the installation security policy. The keys underlying the permissions security capability are illustratively communicated to the storage devices110-112 by the Set_Object_Attributes method. If an appropriate level of security is set for a storage device110-112, that storage device may be configured to check every I/O command for security compliance. However, as discussed above, some applications need not employ security. Further, if a particular server cluster has some devices located in another physical facility, it may be desirable to define a higher level of security for communication with the remotely located devices, but not for communication from local traffic. This allows the employment of security for remotely located requesters or servers, but avoids the performance loss which would accompany employing such security for local requesters or servers as well.
Further, each storage device110-112 preferably includes a readable monotonically incrementing clock to be used for time stamping secure messages and objects. In one illustrative embodiment, the clocks for the various devices are synchronized on a system-wide basis. In another illustrative embodiment,file server114 accommodates for discrepancies and values from storage device-to-storage device.
Thus, it can be seen that the present invention provides object oriented storage devices such as disk drives, which provide significant advantages over conventional storage devices. The object oriented storage devices significantly improve the cluster architecture. For example, by storing data in an object oriented fashion, the data can be managed by the storage device itself. Objects provide the storage device with sufficient knowledge of its resident data such that it can assume responsibility for managing its own space. Further, sharing of data can be controlled more intelligently when the device has information about what constitutes a logical entity. For example, if two systems were to share data stored on a block oriented device, all metadata activity would have to be controlled for concurrent access. By contrast, in an object oriented device, much of the metadata activity is opaque to the systems accessing it. Thus, the systems need only concern themselves with access conflicts to user data. Further, space management being performed by the device itself eliminates any contention or confusion which can arise from two systems trying to manage space on the same storage device at the same time.
In addition, heterogeneous computing is made much easier by an object abstraction. Object oriented storage devices provide the ability to at least have an organization which an operating system can interpret.
Further, the performance in a clustered system is enhanced by using object oriented storage devices for a number of reasons. For example, the metadata need never leave the device itself, eliminating a certain number of I/O operations.
In addition, the device knows which objects are open or closed at any one time, and is able to use this information to more effectively cache data. Pre-fetching can also be much more effective, since the device knows the layout of the object being read. The storage device can more effectively determine sequential access patterns. The cache in the device can also hold metadata once for multiple systems which are accessing it. Further, the device can participate in quality of service decisions, such as where to locate data more appropriately. The device can typically only do this if it has responsibility for allocating storage. By contrast, almost no operating systems can allocate data, by zone, on a disc drive. Thus, providing this capability on the drive itself enhances performance.
The present invention can also be implemented in disc drives arranged as an array of drives. Because the information stored on a disc drive array is often much more valuable than the disc drives themselves, drive arrays are often referred to as Redundant Arrays of Inexpensive Discs (RAID). Several types of RAID systems or RAID levels are known. For example, first level RAID is characterized by providing mirrored discs, as discussed above. In fifth level RAID, both the data to be stored to the array as well as the parity or redundant data, is spread over all disc drives in a group. The fifth level RAID distributes the data and check information across all the discs, including check discs. Other RAID levels (e.g., levels 2-4) are described in greater detail in U.S. Pat. No. 5,617,425 entitled DISC ARRAY HAVING ARRAY SUPPORTING CONTROLLERS AND INTERFACE.
FIGS. 25-29 illustrate a write operation performed in accordance with one aspect of the present invention, in which data is stored as objects on the disc drives in an array. In the embodiment illustrated in FIG. 25,file server114, requester (or host)116 andinterconnect122 are shown connected to a disc drive array which includestarget drive402 and parity drive404 configured as storage devices, such as storage devices110-112. Target drive402 holds an object, or a portion thereof, which is to be written to, while parity drive404 holds the parity information associated with the target object stored ontarget drive402.
In FIG. 25, the drive array is implemented as a RAID 5 array in which data and parity is distributed across all drives in the group. Therefore, drive402 is the target drive and drive404 is a parity drive, only for the present write operation. In other words, target drive402 also holds parity information and parity drive404 also holds data. However, for the single write operation discussed below, drive402 is the target drive and drive404 is the corresponding parity drive. It should also be noted that the present invention can be implemented using other RAID levels, other than RAID level 5. The present invention in such RAID systems will be apparent to those skilled in the art.
In FIG. 25,target drive402 and parity drive404 are connected to one another through Fibre Channel interfaces, or other suitable interfaces, such as other serial interfaces.
FIGS. 26 and 27 illustratetarget drive402 and parity drive404, respectively. Each drive includescontrol component150 and one ormore discs132. Each drive also includes read/write circuit406 (such as a data head described above) and an Exclusive Or (XOR)circuit408. Target drive402 includesdisc space410 which stores the target object to be written.Parity drive404 includesdisc space412 which stores a corresponding parity object. The operation ofdrives402 and404 is discussed in greater detail below with respect to FIGS. 28 and 29.
Conventional disc arrays implementing small computer system interfaces (SCSI) XOR commands enable disc drives to carry out the bit manipulations necessary to implement parity protection against drive failure. Such commands require the host (or requester) to have sector access to the disc so that for any sector written to one disc drive, the corresponding sector on another disc drive containing parity information can be updated appropriately. However, the object oriented disc drives discussed above introduce a layer of abstraction between the host and actual storage sectors on the disc drive. Specifically, the disc drives manage disc space as objects such that a host (or requester) does not have access to the underlying sector addressing scheme. The disc drive, itself, is responsible for space management making it impossible for a requester or host to correlate a portion of data written on one disc drive with a location on another. Thus, the requester does not know the address on a disc drive of a block that it has written, and it cannot calculate a corresponding parity address. This makes it very difficult, if not impossible, to use conventional XOR functions in an object oriented disc drive, as described above.
Therefore, the present invention provides a method referred to as Define_Parity_Group which is invoked at each of the disc drives in a set of disc drives which make up a parity group. The method accomplishes two things. First, it provides sufficient information to enable an invocation of a standard Write_Object method to perform the same function as a sector based XOR command in a conventional drive array. It also causes an object to be created on each drive in the set which holds that particular drive's share of parity data. The parity object ID is a well-known ID, known to each drive, so that any drive wanting to update parity information is aware of the correct object identifier to which it can address its request.
The Define_Parity_Group method is described in greater detail with respect to FIG.28. First, a requester, or host, invokes the method at each drive in a parity group. This is indicated byblock420. In order to invoke the method, the requestor provides a number of things as follows:
1. An ordered list of drives comprising the parity group. This can include, illustratively, serial numbers and addresses for each drive.
2. An algorithm used in calculating parity. In one simple illustrative implementation, modulus arithmetic is performed on the block address of data to be written. This arithmetic yields both the parity drive address (based on the ordered list from item number one above) and the relative block address in the parity object on the parity drive (which is the relative portion of the parity object containing the desired parity information).
3. The amount of data in a parity stripe, illustratively in units of blocks. If parity data is to be interspersed throughout the space on each drive, this information is the atomic unit of allocation.
4. The parity object identifier. A drive invoking a Write Object method to update a parity object issues it to this object ID on the parity drive determined as set out in item two above. It should also be noted that multiple level parity (such as two level parity) can be implemented as well. Thus, each drive may have up to two parity objects. In one illustrative implementation, two well-known object IDs are allocated and reserved by each drive, in case the drive is used in a disc array having two-level parity. The presence of a second parity object indicates that two-level parity is being utilized.
5. The parity object allocation policy. This indicates whether each drive is to allocate the parity object as a single contiguous extent of disc space or to intersperse the parity object with user data objects. Thus, while the parity object and data object are shown in FIGS. 26 and 27 as contiguous disc space, this is illustrative only. It should be noted that if the parity object is interspersed with data, it can still be pre-allocated.
In response to invocation of the Define_Parity_group method, thecontrol component150 in each of the disc drives in the parity group calculates a percentage of its space required for parity data. This is indicated byblock422. The amount of space required for the parity object is determined based on the number of disc drives in the parity group list. For example, if there are nine disc drives in the list, each drive must allocate one ninth of its space for parity information. This amount of space is identified with the well known parity object ID provided by the requestor or host upon invocation of the method. This is indicated byblock424.
Each drive in the parity set or group list retains the information defining the parity group so that every time the disc drive is powered up or reset, it can verify that the parity group has not been compromised. Thus, the information is stored in non-volatile memory, as indicated byblock426.
Having thus created a parity set of disc drives, and having allocated space on each disc drive to hold one or more parity objects, data stored in a data object on one or more drives can be updated. FIG. 29 is a block diagram illustrating the updating of a data object, and the corresponding updating of a parity object, in accordance with one aspect of the present invention.
In order to update data, therequester116 which is requesting data to be updated invokes the Write_Object method described above on one of the disc drives in the parity group. In the embodiment illustrated in FIGS. 25-27,requester116 invokes the Write_Object method ontarget drive402. This is indicated byarrow428 in FIG.26 and block430 in FIG.29. In order to invoke this method,requestor116 provides, illustratively, an object identifier identifying the object to be updated, a partition ID, a starting location of blocks to be written within the object, a number of blocks to be written within the object, option information, and the data to be written. Target drive402 knows that servicing the Write_Object method must include updating parity information associated with the object being updated. Target drive402 knows this because it has stored the information provided and generated during execution of the Define_Parity_Group method in non-volatile memory.
In order to update the parity information,target drive402 performs a number of steps. First, it reads old data from the specified location in the target object and provides it, along with the new data to be written to that location, toXOR circuitry408. This is indicated byblock432 in FIG.29 andarrows434,436, and438 in FIG.26.
Next, target drive402 XORs the old data with the new data to obtain intermediate parity information. This is indicated byblock440 in FIG.29. Target drive402 provides the intermediate parity information at anoutput442 in FIG.26. Next, target drive402 writes the new data to the target location within thetarget object410, thus updating the target object. This is indicated byblock444 in FIG.29.
Target drive402 then, itself, invokes another Write_Object method onparity drive404 identifying the parity object corresponding to thetarget object410 which was just updated. This is indicated byblock446 in FIG.29 andarrow448 in FIG.27. Target drive402 can calculate the target location for the parity object in a number of ways. For example, target drive402 can calculate the location from the relative sector address of the block target object being written. The relative address is divided by the number of drives in the parity group to provide the relative address in the parity object on theparity drive404. The parity drive address is determined by the algorithm specified in the Define_Parity_Group method. Target drive402 then constructs the Write_Object method and invokes it on the parity drive404 identifyingparity object412 and an appropriate location within that object using this relative address.
By way of example, in order to calculate the relative block in the parity object ondrive404 to be updated, target drive402 can use the following Equation:
B=INT(S/D−1)  Equation 1
where B is the relative block in the parity object;
S is the relative sector address being written attarget drive402; and
D is the number of drives in the parity group.
In order to calculate the parity drive address, target drive402 can use the following Equation:
P=Mod(S/D−1)  Equation 2
when P is the displacement into the list of drives in the parity group of the parity drive (the list used in calculating P must exclude the address of target drive402).
In response to this Write_Object method,parity drive404 recognizes the command as a write to its parity object and performs the parity operations. Such operations include reading the old parity data, as indicated byblock450 in FIG.29 andarrow452 in FIG.27.Parity drive404 then XORs the old parity information with the intermediate parity data fromtarget drive402. This is indicated byblock454 in FIG.29 and byarrows456 and458 in FIG.27. The result of the Exclusive OR operation is updated parity information which is written to the parity object ofdisc132. This is indicated byblock460 in FIG.29 and byarrows462 and464 in FIG.27. This completes the update of the parity object.
FIG. 30 is a more detailed illustration of one data object500 (such as those shown in FIG.6). In accordance with one aspect of the present invention, data object500 includes a number of portions, including a portion502 containing attributes, and a number of data portions504,506, and508, each with an associated error correction code portion510,512 and514, respectively. While the error correction code portions510,512 and514 are shown adjacent the corresponding data portions, they need not be recorded this way on the disc, but are shown this way for expedience. Thus, in accordance with one preferred embodiment, each of the data portions (and indeed possibly the attributes portion) of object500 is used to generate error correction code (ECC) information in a known manner. This information can be used, when reading back the corresponding user data, to determine whether the user data contains any errors, and (depending on the code used) to locate and correct those errors. In one preferred embodiment, the ECC information is generated using a Reed Solomon code. However, any suitable code can be used to generate the ECC information.
In prior disc drives, if a sector is rendered unreadable, and is used for a special purpose by the operating system, this can render substantially the entire disc unreadable. For example, if the master boot record, the partition boot record, the FAT table, or the root directory become unreadable, this can cause a loss of essentially the entire disc contents. Conventional operating systems do not have the ability to recover the readable data in the face of losing such key file system management data. Therefore, in accordance with one aspect of the present invention, the object oriented data organization on the disc drive makes the disc drive responsible for maintaining basic file system structures that were formerly the domain of the operating system. In accordance with one aspect of the present invention, a redundant copy of the essential file system data is stored with each data block, or data portion, in its associated ECC portion. Since the ECC portions will already be stored on the disc, embedding the file system information in the ECC portion of the data object does not impact performance or user capacity in any way.
FIG. 31 is a block diagram illustrating how file system information is combined with, or embedded in, ECC information prior to recording the information on the disc. FIGS. 31 and 32 also illustrate how the file system information is then used to reconstruct the file system data in accordance with one aspect of the present invention. FIG. 31 showsencoder516,ECC generator518, Exclusive ORcircuit520,disc132 and read/write circuitry406,ECC generator522,decoder524 andExclusive OR circuit526. It should be noted thatencoder516,ECC generator518, Exclusive ORcircuit520,decoder524,ECC generator522 andExclusive OR circuit526 can all be implemented withincontrol component150 on the disc drive, or can be implemented separately.
User data is first provided to encoder516 from a host, a requester or a file server.Encoder516 encodes the data according to a predetermined coding algorithm, typically implemented to decrease error rate. The encoded user data is then provided toECC generator518.ECC generator518 generates ECC information based on the encoded user data, in a known manner. The ECC information generated will depend on the particular type of error correction coding scheme used. The ECC information is, in turn, provided to Exclusive ORcircuit520. The file system data is also provided to Exclusive ORcircuit520 atinput521. In the embodiment illustrated in FIG. 31, the file system data is location information which identifies a location at which the user data is written ondisc132. For example, in the object oriented system described above, the location information includes the object identifier which identifies the object to which the user data belongs. The location information also includes relative position information which identifies the relative position of the associated data portion within the identified object. The output of Exclusive ORcircuit520 thus provides the ECC information with the located information embedded (or seeded) therein. This information is provided to read/write circuitry406 and is written todisc132, as the associated ECC portion for the data portion containing the encoded user data provided byencoder516.
When reading the information back from disc132 (in order to accomplish a normal read operation) thecontrol component150 executes the Read_Object function by providing the expected location information to an Exclusive OR circuit and Exclusive ORing that information with the ECC information (which contains the embedded location information). The output of the Exclusive OR circuit yields the ECC information associated with the user data being read. This information is provided to an ECC generator, which determines whether any errors have occurred in the encoded user data. If not, the encoded user data is provided to a decoder where the error free information is presented to the requestor or user. If errors have occurred,control component150 may attempt to identify and correct the errors, depending upon the particular error coding scheme used. Alternatively,control component150 may simply provide an error flag indicating that the data contains one or more uncorrectable errors.
However, where the system information (in the example illustrated-the location information) has been lost,control component150 operates in a different manner.Control component150 causes the data ondisc132 to be read. This is indicated byblock528 in FIG.32. The encoded user data is provided todecoder524 and toECC generator522. It should be noted thatECC generator522 andECC generator518 can be the same generator, with appropriate multiplexing circuitry. However, for the sake of clarity, they are illustrated in FIG. 1 as separate components.
ECC generator522 generates ECC information based upon the encoded user data as indicated byblock530 in FIG.32. This information is provided to Exclusive ORcircuit526. The ECC information (which contains the embedded location information) is also read fromdisc132 and provided to Exclusive ORcircuit526. This is indicated byblock532. As withECC generator522, Exclusive ORcircuit526 can the same as Exclusive ORcircuit520, with appropriate multiplexing circuity. However, for the sake of clarity, the two circuits are shown separately.
By Exclusive ORing the ECC information provided byECC generator522 with the ECC information containing the embedded location information, the ECC information in both inputs to Exclusive ORcircuit526 will cancel each other out, resulting in an output of simply the location information. This is indicated byblock534. This information can be used in conjunction with the user data output bydecoder524 to reconstruct the file system information which has been lost. This is indicated byblocks536 and538. For example, the object directory can now be reconstructed using the location information retrieved from the disc, and associated with the user data also read from the disc.
In accordance with another aspect of the present invention, the ECC information generated byECC generator518 can be randomized by utilizing a pseudorandom (or pseudonoise) generator. FIG. 33 is a block diagram illustrating such an embodiment. A number of the items shown in FIG. 33 are similar to those shown in FIG. 31, and are similarly numbered. The block diagram illustrated in FIG. 33 operates substantially the same as that shown in FIG.31. However, rather than providing simply the location information atinput521 to Exclusive ORcircuit520, the location information is used to seed a random number generated by pseudonoise (PN)generator540. Thus, the location information is provided at aninput542 toPN generator540. Based upon the seed value,PN generator540 generates an output provided toXOR circuit521, which is Exclusive ORed with the ECC information provided byECC generator518, which is recorded ondisc132 along with the associated encoded user data.
In order to reconstruct the file system information (e.g., the location information) the encoded user data is read fromdisc132 and provided toECC generator522 which generates ECC information and provides it to Exclusive ORcircuit526. The ECC information containing the embedded pseudorandom value is also read fromdisc132 and provided to Exclusive ORcircuit526. The output of Exclusive ORcircuit526 yields the random value which has been seeded with the location information. This is provided toinverse PN generator544 which reverses the randomization process provided byPN generator540, and provides, at itsoutput546, the location information seed value. As with the embodiment shown in FIG. 31, this information can be used along with the decoded user data provided bydecoder524, to reconstruct the file system structure information which was previously lost.
TheXOR gates520 and526 described herein are illustratively byte-wide XOR circuits for the individual bits within the data bytes XORed. Thus, the XOR circuit is really eight individual XOR gates to provide an eight-bit byte XOR function. Further, although the invention as described herein refers to XOR gates, any suitable Galois field manipulation (or addition), or other suitable manipulation, over the field that the error correction and detection codes are based is considered to be within the scope of the invention, and could be implemented by one skilled in the art.
Also, in one preferred embodiment,PN generator540 is described in greater detail in U.S. Pat. No. 5,717,535 to French et al., issued Feb. 10, 1998. That patent describes the generator as having 33 register cells, with inputs and outputs connected to a logic block. The register cells are one bit wide and are clocked on the same clock as the data bytes. The generator is sufficient to hold an object identifier and relative location information of up to four bytes (32 bits) long, but can easily be expanded to accommodate larger location information or other file system information, larger than four bytes. The generator also illustratively contains an extra register cell which is used so that location information having a value of zero will not produce all zeros at the output ofPN generator540. There is no reason that this extra cell must be included inPN generator540 if used solely for the purpose of seeding the file system information with ECC information. However, ifgenerator540 is used to randomize data for some other reason (i.e., error tolerance) the extra cell should be included so that an all zero input will provide a non-zero output. Data is clocked illustratively by a clock at a rate once every eight data bits (i.e., once every byte).
In the illustrative embodiment,generator540 comprises a plurality of flip flops which operate in accordance with Equations 3 and 4 below, where B represents the input to a flip flop and A represents the output from a flip flop.
BI=AI+8;  Equation 3
for I=0 to 24; and
BI=AmXOR AM+13;  Equation 4
for I=25−32, M=(I+8) Modulo 33.
It should be noted thatgenerator540 is illustratively equivalent to a binary feedback shift register based on the primitive polynomial X33+X13+1, and shifted eight times per clock. The logic block driving the inputs to the register cells represents the result of these eight shifts. From this analogy, it is clear that the sequence of bytes provided at the output ofgenerator540 illustrative repeats every 233−1-bytes.
Thus, it can be seen that the present invention provides significant advantages over prior systems. The present invention allows user data to be read even in the face of a loss of critical file system information, such as file system structure data. The present invention embeds the file system information (such as file system structure information) in the ECC information corresponding to data portions of an object. The file system information can then be read simply by reading the data on the disc and reversing the embedding process, and the file system information can thus be reconstructed.
FIGS. 34-36 illustrate an alternative write operation in accordance with another aspect of the present invention, in which the drive array is implemented as a hybrid RAID architecture. As mentioned previously, data stored in a disc drive array is often much more valuable than the disc drive itself. Accordingly, a redundant array of inexpensive discs (RAID) is provided to store redundant or parity data in addition to the primary data in order to reconstruct the primary data if it becomes corrupt or otherwise inaccessible. Several types of RAID systems or RAID levels are known.
First level RAID (RAID level 1) is characterized by providing mirrored disc drives. In first level RAID, all drives in the array are duplicated. Thus, should one disc drive fail, the information is not lost since that exact information is mirrored on another disc drive. This is a very expensive option for implementing a disc drive array because of the duplication of hardware.
Second level RAID includes a Hamming Code for error correction. In second level RAID, data is bit-interleaved across the drives of an array and check drives are added to detect and correct a single error. This has the disadvantage that if a read is directed to only a small amount of data, a full sector from each of the bit-interleaved drives in the group must still be read. Also, writing of a single unit still involves a read-modify-write cycle on all of the drives in the group.
Third level RAID is characterized by having a single check drive per group of drives. In third level RAID, the extra check drives used in second level RAID for storing error correction code information are eliminated. Rather, as the data is being stored to the disc array, ECC information is appended to the data. Also, a single disc drive is used to store redundant data corresponding to the data stored in the array. When reading information from the array, the ECC information is used to determine whether an error has occurred, and which drive contains the error. Then, the information on the failed drive is reconstructed by calculating the parity of the remaining good drives and comparing the parity of the remaining good drives and comparing bit-by-bit to the parity information that was calculated for the original full group of data and that was stored on the redundant or parity disc drive.
Fourth level RAID is characterized by being arranged so that it provides for independent reads and writes. In second and third level RAID implementations, information stored in the array is spread across all of the drives in the group. Thus, any read or write operation to one drive in the group requires reading or writing all drives in the group. Fourth level RAID improves performance of small transfers by providing the ability to do more than one I/O operation per group of drives at any given time. Each data sector is no longer spread across several drives. Rather, each data sector stored in the array is kept as an individual unit on a single drive. The information stored in the array is interleaved among data discs on a sector level rather than at the bit level.
In fifth level RAID, both the data to be stored to the array, as well as the parity or redundant data, is spread over all drives in a group. Thus, there is no single check drive. While fourth level RAID allowed more than one read to be performed per group at any given time, it was still limited to one write per group since each write requires accessing the check drive. Fifth level RAID distributes the data and check information per sector across all the drives, including the check drives. Therefore, fifth level RAID can support multiple individual write operations per group. Since the check information for each sequential location is on a different drive in the group, the write operations can be performed in parallel since there is no need to sequentially access any one drive at a given time.
While the above discussion has provided an overview of some of the main differences between the different level RAID systems, a more detailed description of those differences along with illustrative examples is provided in the article entitled “A CASE FOR REDUNDANT ARRAYS OF INEXPENSIVE DISCS (RAID)”, by Patterson, Gibson, and Katz.
Because of the characteristic differences between RAID 3 and RAID 4 and 5 type systems, the different systems are particularly well suited to different needs. The RAID 3 system has typically been suitable for, and demonstrated superior performance in, array systems which are required to exhibit a high data transfer rate. RAID 4 and 5 systems, on the other hand, typically demonstrate superior performance in disc arrays which are used in high aggregate input/output (I/O) applications. Such implementations are often found in business applications or with many UNIX users.
Although RAID level 5 is the most commonly used system for transactional applications, it is not as reliable as aRAID 1 system. In particular, the RAID 5 system is popular because it makes the most efficient use of disc space and therefore requires less investment in hardware. However, if the amount of primary data lost exceeds the ability to recover data based on the redundancy data in a RAID 5 system, the primary data cannot be reconstructed. As such, a RAID 5 system is susceptible to complete data loss.
By contrast, aRAID 1 system is less susceptible to complete data loss because a complete duplicate of the primary data is made on another drive (i.e., the data is mirrored). Thus, if any or all of the primary data is lost, the mirror data may be used to fully reconstruct the primary data. However, aRAID 1 system can be cost prohibitive because it requires a complete duplication of the disc drives.
The hybrid data reconstruction system of the present invention provides both the cost advantage of a RAID 5 system and the performance advantage of aRAID 1 system. The hybrid implementation is accomplished by applying aRAID 1 system to data that is determined to be important or critical to the user, and applying one of the other RAID techniques, for example RAID 5, to the other non-critical data. Although the following description illustrates this embodiment of the present invention as ahybrid RAID 1/RAID 5 architecture, those skilled in the art will recognize that similar advantages may be obtained by combining any two redundancy schemes such as theRAID 1 architecture with RAID 2, RAID 3, or RAID 4 architecture. For purposes of simplicity and illustration only, the following description focuses on thehybrid RAID 1/RAID 5 technique.
Because the most important and critical data to the user is often the most frequently accessed data, an efficient technique in identifying critical data is to identify high frequency data. High frequency data refers to data that is accessed significantly more than other data on the disc drive. Those skilled in the art will recognize that the hybrid RAID technique of the present invention has applicability to both block data systems and object oriented data systems.
The most important and critical data may also be designated by the user independent of how frequently the data is accessed. For example, the user may designate a certain file name, a certain file type, a certain directory, or a combination thereof as critical data. This data may be flagged by correlating the critical data to a block address as used in block oriented data, or to an object type or object attribute as used in object oriented data.
If the critical data is identified as a function of how frequently the data is accessed eitherdrive controller148, or discdrive array controller602, or other suitable part of the computer system, may be used to automatically log the number of times data blocks or data objects are accessed. In this manner, the number of times each data block or data object is accessed will be collected and logged into preferably non-volatile memory. Using this hystographical data, data blocks or data objects being accessed above, for example, a threshold frequency (i.e., above a threshold number of access times), are stored using aRAID 1 technique (i.e., they are mirrored). All other data being accessed below the threshold frequency is stored using a RAID 2, 3, 4 or 5 technique. Accordingly, the critical data is less susceptible to complete loss because it is fully mirrored on another disc drive. Conversely, the non-critical data is backed up using a more space efficient RAID technique, illustratively a RAID 5 technique. This applies whether the critical data is identified by virtue of flags assigned by the user or by high frequency usage detected by thedrive controller148 or anarray controller602.
FIG. 34 illustrates a block diagram of adisc drive array600 implementing hybrid data storage and reconstruction in accordance with one aspect of the present invention. Thedisc drive array600 includes anarray controller602 connected to an array ofdisc drives604,606,608,610 and612. Each drive illustratively includes a drive controller148 (not shown in FIG.34). Thearray controller602 is also connected to interconnect122 as illustrated in FIGS. 1 and 25. In the specific implementation illustrated, eachdisc drive604,606,608,610 and612 includes a critical data portion614, anon-critical data portion616, a mirroredlocation618 and aparity location620.
The space allocated for themirror location618 is preferably proportional to the critical data614. Similarly, the space provided for theparity location620 on each disc is preferably proportional to parity data which corresponds to the space occupied bynon-critical data616. However, those skilled in the art will recognize that the space allocated formirror location618 andparity location620 may be modified depending on the balance between performance and economy desired by the user for the particular application. Illustratively, however, the critical data614 occupies a relatively small amount of disc space (e.g., 20 MB of a 9 GB drive) and thecorresponding mirror location618 occupies a proportionally small amount of disc space. Accordingly, because the overall amount of disc space used for themirror location618 on each disc is relatively small, the compromise between disc space and performance is insubstantial.
FIG. 34 illustrates ahybrid RAID 1/RAID 5drive array600 in which primary data, mirror data and parity data is distributed across alldrives604,606,608,610 and612 in the group. Therefore, drive604 holds the mirror data for the critical data indrive606. Drive604 also contains parity data for the non-critical data indrive606. Similar relationships exist betweendrives606/608,608/610,610/612,612/604 as illustrated. Each of thedrives604,606,608,610 and612 are connected to one another through a suitable interface such as a Fibre Channel interface, or other serial interface.
The structure and operation of the individual disc drives604-612 are substantially similar to the drives illustrated in FIGS. 26 and 27. In particular, the disc drives are similar with regard to the RAID level 5 architecture but differ with regard to theRAID level 1 architecture. Specifically, each of the discs in each of the drives604-612 includes amirror location618 in addition to aparity location620 whereas the drives illustrated in FIGS. 26 and 27 do not have mirror locations. The structure and operation, however, is substantially the same except as described herein.
Thearray controller602 includes acommand component624 which instructs each of the drives604-612 to write the new data as either mirror data or parity data. Thecommand component624 instructs the drives604-612 in accordance with an output received from criticaldata detector component622. Criticaldata detector component622 scans the incoming new data for a flag as predefined by the user or as assigned by high frequency data log626. If a flag (e.g., block address or object attribute) is detected bycritical data detector622, thearray command component624 causes the new data to be written to its destination and to be mirrored atlocation618. If no flag is detected, thearray command component624 causes the new data to be written to its destination and causes the associated parity information to be written toparity location620.
The high frequency data log626 may be utilized in order to log the number of times a particular data block or data object is accessed. If a particular data block or data object has been accessed above a threshold number of times, as may be defined by the user, the high frequency data log626 designates that data block or data object as critical data for detection by thecritical data detector622. If object oriented data is utilized and one of the object attributes already includes access frequency, the high frequency data log626 may be omitted. In addition, if the critical data is designated as a function of something other than the access frequency, the data log626 may be omitted.
FIGS. 35 and 36 illustratewrite operations630 and660 of thedisc array600 illustrated in FIG.34. Specifically, FIG. 35 illustrateswrite operation630 for block oriented data and FIG. 36 illustrateswrite operation660 for object oriented data.
With specific reference to FIG. 35, thewrite operation630 begins at block634, but the user may predesignate a flag which is appended or prepended to the data and which identifies the data as critical data as inblock632. Such a flag may be, but is not limited to, a block address associated with data. If the user predesignates a flag for critical data, the log step illustrated inblock633 is skipped. If a flag is not predesignated, thewrite operation630 may begin with the log step illustrated inblock633.
Assuming the flag is not predesignated, thecommand component624 ofcontroller602 reads and logs the block address of the new data inlog626 as shown inblock633. The number of times the block address is accessed (i.e., frequency) is tracked and recorded inlog626. If the number of access times (frequency) exceeds a threshold value, that block address is flagged as critical data.
Upon receiving new data,controller600 examines log626 and determines whether the block address for which the new data is destined has been flagged as critical, as reflected inblock636. If a flag is detected as indicated bydecision block638, the new data is treated as critical data and written to its destination and to amirror location618 as reflected byblock640. If a flag is not detected as indicated bydecision block638,component624 updates the frequency value as indicated byblock639 and a RAID 5 routine is implemented as indicated by blocks642-650. Those skilled in the art will recognize that other suitable RAID or other redundancy routines may be utilized including, but not limited to, RAID 2, 3, and 4 routines.
With a RAID 5 routine, the old data at the target location is read as indicated byblock642. The old parity data at the parity location is also read as indicated byblock644. The old data at the target location is Exclusive ORed with the new data resulting in intermediate parity data as indicated byblock646. The intermediate parity data is then Exclusive ORed with the old parity data resulting in new parity data as indicated inblock648. The new parity data is then written to the associatedparity location620 as indicated byblock650. Whether theRAID 1 routine or the RAID 5 routine is initiated pursuant to thedecision block638, the new data is also written to the target location as indicated byblock652. Upon writing the new data to the target location, thewrite operation630 is complete as indicated byblock654.
Refer now to FIG. 36 which illustrates awrite operation660 for use with object oriented data. Thewrite operation660 is initiated atblock662. The criticality of a block can be predesignated based on object type. For example, it may be desirable to mirror directory information (such as POL166), or any other objects which define the structure of the storage device or the data stored thereon (such asDCO154,DAO158, or PCO164), or any combination thereof, at all times. Further, certain objects can be predesignated as critical by the user or other entity, on an object-by-object basis using the OID, file name, or some other attribute. Thus,command component624 receives and examines the object to determine whether criticality is predesignated. This is indicated byblocks664 and666. Such a predesignation is illustratively stored in memory incontroller602. If criticality is detected as indicated indecision block668, the new data is written to amirror location618 as indicated inblock670 and to its destination as indicated byblock682.
If predesignated criticality is not detected as indicated indecision block668,component624 then determines whether the object being accessed is critical based on the frequency with which it is accessed.Component624 does this by examining high frequency data log626 which illustratively includes an OID and an associated frequency value indicative of the access frequency. This is indicated byblock669. If the object is critical based on frequency (in that its associated frequency value exceeds a predefined or adaptively adjusted threshold),component624 mirrors the data as indicated byblock670.
If the object is not critical based on frequency,component624 logs the OID in log626 (if it is a new object) and updates the associated frequency value. This is indicated byblock671. The data is then stored according to a RAID 2, 3, 4, or 5 implementation or other redundancy scheme.
With a RAID 5 implementation, the old data at the target location is read as indicated byblock672. The old parity data at the parity location is then read as indicated byblock674. The old data at the target location is Exclusive ORed with the new data resulting in intermediate parity data as indicated inblock676. The intermediate parity data is Exclusive ORed with the old parity data resulting in new parity data as indicated inblock678. The new parity data is written to the parity location as indicated byblock680 and illustrated in FIG.34. Whether or not criticality is detected indecision block668, the new data is written to the target location as indicated byblock682. Having written the new data to the target location, thewrite operation660 is complete as indicated byblock684.
It should also be noted that the steps set out in FIGS. 35 and 36 can be carried out on adrive controller148 associated with any one or more drives604-612, illustratively the target drive, and the data is then communicated to the appropriate drive controllers to be written on the appropriate drives. In that case, the drive controllers are provided with components622-626. The processing is substantially identical to that shown in FIGS. 35 and 36.
It should also be noted that the frequency value can be predesignated as a raw number or as a variable based on drive use. For example, the threshold can be set as a percentage of total drive accesses and can be adaptively updated with each access (i.e., with each read or write operation). Further, multiple thresholds can be used, one for each object type or group of object types, for example. Other adaptive techniques can also be used. If the threshold is adaptively set, the frequency value for each block or object must be updated with each access.
In addition, advantages of the present invention can be obtained using a redundancy scheme to store critical data while simply using a direct encoding scheme to store the remaining data. By direct encoding scheme, it is meant that encoded data is simply stored on a disc drive and is not augmented with redundancy data. Therefore, the critical data can be mirrored or stored according to any other redundancy scheme, while the non-critical data is simply stored, in an encoded form, as a single instance. In such a case, and again referring to FIG. 34, thenon-critical data616 has no corresponding parity data stored inparity location620. Thus, the space consumed asparity location620 in FIG. 34 is available to store additional critical data, non-critical data, or redundant data corresponding to the critical data. Similarly, the present invention can be carried out using two or more redundancy schemes, as well as the direct encoding scheme. In that case, highly critical information can be stored according to a highly redundant redundancy scheme, moderately critical data can be stored according to a less redundant redundancy scheme, and non-critical data can be stored according to the direct encoding scheme.
It should also be noted that the term “array” is contemplated to mean a collection of disc drives stored, in locations which are geographically remote from one another, such as in different rooms, different buildings, or locations separated by a great distance.
As can be seen from the foregoing, thehybrid access operations630 and660 illustrated in FIGS. 35 and 36, in addition to thehybrid array architecture600 illustrated in FIG. 34, provide the cost advantage of a RAID 5 system and the reliability advantage of aRAID 1 system.
One embodiment of the present invention is adisc drive array600, comprising a plurality of disc drives604-612 and at least onecontroller602, operably coupled to the plurality of disc drives604-612, configured to receive data and store a first portion of the data on the disc drives604-612 according to a first redundancy scheme and to store a second portion of the data on the disc drives according to a second redundancy scheme. The first redundancy scheme preferably provides a greater degree of redundancy than the second redundancy scheme.
The first portion of data includes redundancy data which is different than the first portion of data and thecontroller602 is configured to store the first portion of data and the redundancy data on the disc drives604-612 according to the first redundancy scheme.
Thecontroller602 is configured to store the second portion of data on a first drive or set of drives of the plurality of disc drives and to mirror the first portion of data on a second drive or set of drives of the plurality of disc drives604-612.
The first portion of data may comprise data which is accessed more frequently than the first portion of data, such as metadata.
Thecontroller602 may be configured to store the first and second portions of data as objects in a structural arrangement and the first portion of data may comprise a structural object including information indicative of the structural arrangement.
In this context, thecontroller602 may be configured to store the objects in partitions and the structural object may comprise a device control object, a device association object, a partition control object, or a partition object list.
The first and second portions of the data may be stored as objects, each object including attributes, wherein the second portion of data comprises attributes.
The first redundancy scheme may be RAID level 2, 3, 4 or 5 and the second redundancy scheme may be RAID level one.
Thecontroller602 may be configured to determine how frequency data is accessed and divides the data into the first and second portions based on how frequently it is accessed.
In this context, thecontroller602 may be configured to store the first and second data portions as objects having associated file names and to track the frequency with which data is accessed based on the file names.
Alternatively, thecontroller602 may be configured to store the first and second data portions as objects, each object having an associated object type and configured to divide the data between the first and second data portions based on the object types.
The data may be divided between the first and second data portions based on a user input.
Each disc drive604-612 may include adrive controller148 wherein thecontroller602 includes one or more of thedrive controllers148.
A host controller may be coupled to thedrive controllers148 and thecontroller602 may be the host controller.
In another embodiment of the present invention adisc drive array600 includes an array of disc drives604-612; and array controller means602 for selectively mirroring data among the disc drives604-612.
In yet another embodiment of the present invention, a method of storing data on a disc, in a disc drive, includes storing a first portion of the data according to a first redundancy scheme; and storing a second portion of the data according to a second redundancy scheme, different from the first redundancy scheme.
The method may include determining whether the data is in the first or second portion based on a user input, based, for example on a frequency with which the data is accessed, or based on content of the data.
It is to be understood that even though numerous characteristics and advantages of various embodiments of the present invention have been set forth in the foregoing description, together with details of the structure and function of various embodiments of the invention, this disclosure is illustrative only, and changes may be made in detail, especially in matters of structure and arrangement of parts within the principles of the present invention to the full extent indicated by the broad general meaning of the terms in which the appended claims are expressed. For example, the particular elements may vary depending on the particular interface methods, redundancy scheme or error detection or correction scheme used while maintaining substantially the same functionality without departing from the scope and spirit of the present invention.

Claims (14)

What is claimed is:
1. A disc drive array, comprising:
a plurality of disc drives;
at least one controller, operably coupled to the plurality of disc drives, configured to receive data and store a first portion of the data on the disc drives according to a first redundancy scheme and to store a second portion of the data on the disc drives according to a second redundancy scheme, wherein the first redundancy scheme provides a greater degree of redundancy than the second redundancy scheme, the first and second portions of data being chosen according to a predetermined, selectable criteria, indicative of criticality, the selectable criteria being file identification information, wherein the controller is configured to store the objects associated with the first and second portions of the data in a structural arrangement and wherein the first portion of data comprises a structural object including information indicative of the structural arrangement.
2. The disc drive array ofclaim 1 wherein the first portion of data includes redundancy data which is different than the first portion of data; the controller being configured to store the first portion of data and the redundancy data on the disc drives according to the first redundancy scheme.
3. The disc drive array ofclaim 2 wherein the controller is configured to store the second portion of data on a first set of the plurality of disc drives an to mirror the first portion of data on a second set of the plurality of disc drives.
4. The disc drive array ofclaim 3 wherein the controller is configured to store the second portion of data on a first of the plurality of disc drives and to mirror the first portion of data on a second of the plurality of disc drives.
5. The disc drive array ofclaim 1 wherein the first portion of data comp ins data which is accessed more frequently than the second portion of data.
6. The disc drive array ofclaim 1 wherein the second portion of data comprises metadata.
7. The disc drive array ofclaim 1 wherein the controller is configured to tore the objects in partitions and wherein structural object comprises one of a device control object, a device association object, a partition control object and a partition object list.
8. The disc drive array ofclaim 1 wherein the second redundancy scheme comprises one of redundant array of inexpensive disc (RAID) levels two five and wherein the first redundancy scheme comprises a RAID level one.
9. The disc drive array ofclaim 1 wherein the controller is configured to (a) determine how frequently data is accessed, (b) modify the attributes of the objects based on how frequently they are accessed, and (c)divide the data into the first and second portions based on the attributes.
10. The disc drive array ofclaim 9 wherein each object has an associated object type and wherein the controller is configured to divide the data between the first and second data portions based on the object types.
11. The disc drive array ofclaim 1 wherein the data is divided between the first and second data portions based on a user input.
12. The disc drive array ofclaim 1 wherein each disc drive includes a drive controller and wherein the controller comprises one or more of the drive controllers.
13. The disc drive array ofclaim 12 and further comprising:
a host controller coupled to the drive controllers and wherein the controller comprises the host controller.
14. A method of storing data on a disc, in a disc drive, comprising steps of:
(a) storing a first portion of the data according to a first redundancy scheme; and
(b) storing a second portion of the data according to a second redundancy scheme, different from the first redundancy scheme, the data being stored as objects and being stored according to the first or second redundancy schemes based on criticality attributes of the objects the criticality attributes being a file identification information comprising a file directory.
US09/167,8751997-10-081998-10-07Hybrid data storage and reconstruction system and method for a data storage deviceExpired - LifetimeUS6704838B2 (en)

Priority Applications (1)

Application NumberPriority DateFiling DateTitle
US09/167,875US6704838B2 (en)1997-10-081998-10-07Hybrid data storage and reconstruction system and method for a data storage device

Applications Claiming Priority (2)

Application NumberPriority DateFiling DateTitle
US6266397P1997-10-081997-10-08
US09/167,875US6704838B2 (en)1997-10-081998-10-07Hybrid data storage and reconstruction system and method for a data storage device

Publications (2)

Publication NumberPublication Date
US20020059539A1 US20020059539A1 (en)2002-05-16
US6704838B2true US6704838B2 (en)2004-03-09

Family

ID=22044016

Family Applications (1)

Application NumberTitlePriority DateFiling Date
US09/167,875Expired - LifetimeUS6704838B2 (en)1997-10-081998-10-07Hybrid data storage and reconstruction system and method for a data storage device

Country Status (7)

CountryLink
US (1)US6704838B2 (en)
JP (1)JP2001519563A (en)
KR (1)KR100564664B1 (en)
CN (1)CN1281560A (en)
DE (1)DE19882723T1 (en)
GB (1)GB2345366B (en)
WO (1)WO1999018507A1 (en)

Cited By (40)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20010047400A1 (en)*2000-03-032001-11-29Coates Joshua L.Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US20040054956A1 (en)*2002-09-132004-03-18James ByrdAccelerated galois data integrity crosscheck system and method
US20040059869A1 (en)*2002-09-202004-03-25Tim OrsleyAccelerated RAID with rewind capability
US20040078465A1 (en)*2002-10-172004-04-22Coates Joshua L.Methods and apparatus for load balancing storage nodes in a distributed stroage area network system
US20040080558A1 (en)*2002-10-282004-04-29Blumenau Steven M.Method and apparatus for monitoring the storage of data in a computer system
US20050038954A1 (en)*2003-06-042005-02-17Quantum CorporationStorage drive having universal format across media types
US6952737B1 (en)*2000-03-032005-10-04Intel CorporationMethod and apparatus for accessing remote storage in a distributed storage cluster architecture
US7043609B2 (en)*2003-02-032006-05-09Sun Microsystems, Inc.Method and apparatus for protecting a state associated with a memory structure
US20060106878A1 (en)*2004-11-172006-05-18Hidehisa ShitomiSystem and method for creating an object-level snapshot in a storage system
US7080221B1 (en)2003-04-232006-07-18Emc CorporationMethod and apparatus for managing migration of data in a clustered computer system environment
US7093088B1 (en)2003-04-232006-08-15Emc CorporationMethod and apparatus for undoing a data migration in a computer system
US20060236068A1 (en)*2005-04-142006-10-19International Business Machines CorporationMethod and apparatus for storage provisioning automation in a data center
US20060294416A1 (en)*2005-06-222006-12-28Accusys, Inc.XOR circuit, raid device capable of recovering a plurality of failures and method thereof
US7188296B1 (en)2003-10-302007-03-06Sun Microsystems, Inc.ECC for component failures using Galois fields
US7203731B1 (en)2000-03-032007-04-10Intel CorporationDynamic replication of files in a network storage system
US20070089023A1 (en)*2005-09-302007-04-19Sigmatel, Inc.System and method for system resource access
US20070106866A1 (en)*2005-11-042007-05-10Sun Microsystems, Inc.Method and system for metadata-based resilvering
US20070185942A1 (en)*1993-06-032007-08-09Network Appliance, Inc.Allocating files in a file system integrated with a RAID disk sub-system
US7263590B1 (en)2003-04-232007-08-28Emc CorporationMethod and apparatus for migrating data in a computer system
US7266555B1 (en)2000-03-032007-09-04Intel CorporationMethods and apparatus for accessing remote storage through use of a local device
US7266556B1 (en)2000-12-292007-09-04Intel CorporationFailover architecture for a distributed storage system
US20070208788A1 (en)*2006-03-012007-09-06Quantum CorporationData storage system including unique block pool manager and applications in tiered storage
US20070233936A1 (en)*2006-03-312007-10-04Intel CorporationMethod, apparatus and system for reverting FAT cluster number to file ID and offset of non-FAT flash file system
US7281168B1 (en)2000-03-032007-10-09Intel CorporationFailover architecture for local devices that access remote storage
US7376764B1 (en)2002-12-102008-05-20Emc CorporationMethod and apparatus for migrating data in a computer system
US20080155383A1 (en)*2006-12-202008-06-26International Business Machines CorporationApparatus and method to generate, store, and read, a plurality of error correction coded data sets
US7415591B1 (en)2003-04-232008-08-19Emc CorporationMethod and apparatus for migrating data and automatically provisioning a target for the migration
US7428540B1 (en)2000-03-032008-09-23Intel CorporationNetwork storage system
US20090196417A1 (en)*2008-02-012009-08-06Seagate Technology LlcSecure disposal of storage data
US20090198932A1 (en)*2008-02-012009-08-06Seagate Technology LlcSecure direct platter access
US20100031057A1 (en)*2008-02-012010-02-04Seagate Technology LlcTraffic analysis resistant storage encryption using implicit and explicit data
US7707151B1 (en)2002-08-022010-04-27Emc CorporationMethod and apparatus for migrating data
US7734867B1 (en)*2002-05-172010-06-08Hewlett-Packard Development Company, L.P.Data storage using disk drives in accordance with a schedule of operations
US7805583B1 (en)2003-04-232010-09-28Emc CorporationMethod and apparatus for migrating data in a clustered computer system environment
US8135763B1 (en)*2005-09-302012-03-13Emc CorporationApparatus and method for maintaining a file system index
US8255774B2 (en)2009-02-172012-08-28Seagate TechnologyData storage system with non-volatile memory for error correction
US9213611B2 (en)2013-07-242015-12-15Western Digital Technologies, Inc.Automatic raid mirroring when adding a second boot drive
US20180217906A1 (en)*2014-10-032018-08-02Agency For Science, Technology And ResearchMethod For Optimizing Reconstruction Of Data For A Hybrid Object Storage Device
US10097636B1 (en)2015-06-152018-10-09Western Digital Technologies, Inc.Data storage device docking station
US10849245B2 (en)2002-10-222020-11-24Atd Ventures, LlcSystems and methods for providing a robust computer processing unit

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US8332478B2 (en)*1998-10-012012-12-11Digimarc CorporationContext sensitive connected content
US6742137B1 (en)*1999-08-172004-05-25Adaptec, Inc.Object oriented fault tolerance
US6516425B1 (en)*1999-10-292003-02-04Hewlett-Packard Co.Raid rebuild using most vulnerable data redundancy scheme first
US6826711B2 (en)*2000-02-182004-11-30Avamar Technologies, Inc.System and method for data protection with multidimensional parity
US7509420B2 (en)*2000-02-182009-03-24Emc CorporationSystem and method for intelligent, globally distributed network storage
US7117293B1 (en)*2000-05-122006-10-03Apple Computer, Inc.Method and apparatus for archiving and unarchiving objects
CN1383563A (en)*2000-06-092002-12-04皇家菲利浦电子有限公司Method of implicit partitioning storage space available on storage medium
JP2004506980A (en)*2000-08-112004-03-043ウェア、 インコーポレイテッド Architecture for providing block-level storage access over a computer network
US6725393B1 (en)*2000-11-062004-04-20Hewlett-Packard Development Company, L.P.System, machine, and method for maintenance of mirrored datasets through surrogate writes during storage-area network transients
JP4114318B2 (en)*2000-12-262008-07-09ソニー株式会社 Data recording method, data recording apparatus and recording medium
US6748502B2 (en)*2001-01-122004-06-08Hitachi, Ltd.Virtual volume storage
US7418620B1 (en)*2001-02-162008-08-26Swsoft Holdings, Ltd.Fault tolerant distributed storage method and controller using (N,K) algorithms
US7461139B2 (en)*2001-08-172008-12-02Micron Technology, Inc.Network computer providing mass storage, broadband access, and other enhanced functionality
US7350206B2 (en)*2001-11-052008-03-25Hewlett-Packard Development Company, L.P.Method to reduce provisioning time in shared storage systems by preemptive copying of images
US7134139B2 (en)*2002-02-122006-11-07International Business Machines CorporationSystem and method for authenticating block level cache access on network
US7007047B2 (en)*2002-03-292006-02-28Panasas, Inc.Internally consistent file system image in distributed object-based data storage
JP3966459B2 (en)*2002-05-232007-08-29株式会社日立製作所 Storage device management method, system, and program
US7024586B2 (en)*2002-06-242006-04-04Network Appliance, Inc.Using file system information in raid data reconstruction and migration
US7346906B2 (en)*2002-07-092008-03-18International Business Machines CorporationWorkload management in a computing environment
US20040024954A1 (en)*2002-07-302004-02-05Rust Robert A.Time stamp management system for disk arrays
AU2003278779A1 (en)2002-09-102004-04-30Exagrid Systems, Inc.Primary and remote data backup with nodal failover
BR0315613A (en)*2002-10-222005-08-23Jason A Sullivan Systems and methods for providing a dynamically modular processing unit
AU2003285949A1 (en)2002-10-222004-05-13Isys TechnologiesNon-peripherals processing control module having improved heat dissipating properties
JP4322031B2 (en)2003-03-272009-08-26株式会社日立製作所 Storage device
WO2004099988A1 (en)*2003-05-052004-11-18Trustees Of Boston UniversityData storage distribution and retrieval
JP4266725B2 (en)2003-06-272009-05-20株式会社日立製作所 Storage system
US7325157B2 (en)*2003-11-032008-01-29Samsung Electronics Co., LtdMagnetic memory devices having selective error encoding capability based on fault probabilities
US7234074B2 (en)*2003-12-172007-06-19International Business Machines CorporationMultiple disk data storage system for reducing power consumption
JP2005215850A (en)2004-01-282005-08-11Hitachi Ltd Storage device, storage device control method, and storage system
US20050166022A1 (en)*2004-01-282005-07-28Hitachi, Ltd.Method and apparatus for copying and backup in storage systems
US7334156B2 (en)*2004-02-132008-02-19Tandberg Data Corp.Method and apparatus for RAID conversion
US20050231849A1 (en)*2004-04-152005-10-20Viresh RustagiGraphical user interface for hard disk drive management in a data storage system
US7681007B2 (en)*2004-04-152010-03-16Broadcom CorporationAutomatic expansion of hard disk drive capacity in a storage device
US20050235063A1 (en)*2004-04-152005-10-20Wilson Christopher SAutomatic discovery of a networked device
US7395402B2 (en)*2004-04-152008-07-01Broadcom CorporationMethod and system of data storage capacity allocation and management using one or more data storage drives
US20050235283A1 (en)*2004-04-152005-10-20Wilson Christopher SAutomatic setup of parameters in networked devices
US7304905B2 (en)2004-05-242007-12-04Intel CorporationThrottling memory in response to an internal temperature of a memory device
US7203871B2 (en)2004-06-032007-04-10Cisco Technology, Inc.Arrangement in a network node for secure storage and retrieval of encoded data distributed among multiple network nodes
US7523285B2 (en)*2004-08-202009-04-21Intel CorporationThermal memory control
KR100678893B1 (en)*2004-09-162007-02-07삼성전자주식회사 Method and apparatus for retrieving rights object from portable storage device using object identifier
US7330955B2 (en)*2004-10-182008-02-12Seagate Technology LlcRecovery record for updating a system configuration
US7386758B2 (en)*2005-01-132008-06-10Hitachi, Ltd.Method and apparatus for reconstructing data in object-based storage arrays
US7966353B2 (en)*2005-01-312011-06-21Broadcom CorporationMethod and system for flexibly providing shared access to non-data pool file systems
US8065350B2 (en)*2005-01-312011-11-22Broadcom CorporationMethod and system for flexibly providing shared access to data pools
JP2006244123A (en)*2005-03-032006-09-14Fujitsu Ltd Data storage system and data storage control device
US10127130B2 (en)2005-03-182018-11-13Salesforce.ComIdentifying contributors that explain differences between a data set and a subset of the data set
US7940929B1 (en)*2005-11-232011-05-10Beyondcore, Inc.Method for processing documents containing restricted information
US10176338B2 (en)2005-11-232019-01-08Salesforce.ComSecure distributed storage of documents containing restricted information, via the use of keysets
US20060248252A1 (en)*2005-04-272006-11-02Kharwa Bhupesh DAutomatic detection of data storage functionality within a docking station
US7577809B2 (en)*2005-11-022009-08-18Promethean Storage LlcContent control systems and methods
US20070106713A1 (en)*2005-11-082007-05-10Network Blackbox, Inc.Hazard protected file backup system
US7571368B1 (en)2006-01-262009-08-04Promethean Storage LlcDigital content protection systems and methods
US7584335B2 (en)*2006-11-022009-09-01International Business Machines CorporationMethods and arrangements for hybrid data storage
US8239706B1 (en)*2007-01-032012-08-07Board Of Governors For Higher Education, State Of Rhode Island And Providence PlantationsData retrieval system and method that provides retrieval of data to any point in time
US8560760B2 (en)2007-01-312013-10-15Microsoft CorporationExtending flash drive lifespan
US7657572B2 (en)2007-03-062010-02-02Microsoft CorporationSelectively utilizing a plurality of disparate solid state storage locations
US8370715B2 (en)*2007-04-122013-02-05International Business Machines CorporationError checking addressable blocks in storage
US7958303B2 (en)*2007-04-272011-06-07Gary Stephen ShusterFlexible data storage system
US8019728B2 (en)*2008-04-172011-09-13Nec Laboratories America, Inc.Dynamically quantifying and improving the reliability of distributed data storage systems
US8250299B2 (en)*2009-05-202012-08-21International Business Machines CorporationMulti-host concurrent writing to magnetic tape
CN101923553A (en)*2009-06-112010-12-22鸿富锦精密工业(深圳)有限公司 How to install FAT file system
US8122284B2 (en)*2009-06-182012-02-21Taylor Tracy MN+1 failover and resynchronization of data storage appliances
CN102483684B (en)*2009-12-242015-05-20株式会社日立制作所 Storage systems that provide virtual volumes
WO2011077490A1 (en)*2009-12-242011-06-30株式会社日立製作所Storage system for providing virtual volume
US9367561B1 (en)*2010-06-302016-06-14Emc CorporationPrioritized backup segmenting
US9235585B1 (en)2010-06-302016-01-12Emc CorporationDynamic prioritized recovery
US9697086B2 (en)2010-06-302017-07-04EMC IP Holding Company LLCData access during data recovery
US8433685B2 (en)*2010-08-182013-04-30Hewlett-Packard Development Company, L.P.Method and system for parity-page distribution among nodes of a multi-node data-storage system
US8793250B1 (en)*2010-12-172014-07-29Amazon Technologies, Inc.Flexible partitioning of data
US9235588B1 (en)*2010-12-292016-01-12Symantec CorporationSystems and methods for protecting deduplicated data
CN102207831B (en)*2011-07-042013-08-07华为数字技术(成都)有限公司Data reading-writing method and device of magnetic disk array
US8909891B2 (en)*2011-07-212014-12-09International Business Machines CorporationVirtual logical volume for overflow storage of special data sets
WO2013057764A1 (en)*2011-10-192013-04-25Hitachi, Ltd.Storage system
US8713405B2 (en)*2011-11-222014-04-29Simplivity CorporationMethod and apparatus for allocating erasure coded data to disk storage
US10802687B2 (en)2011-12-042020-10-13Salesforce.Com, Inc.Displaying differences between different data sets of a process
US10796232B2 (en)2011-12-042020-10-06Salesforce.Com, Inc.Explaining differences between predicted outcomes and actual outcomes of a process
KR20130064521A (en)*2011-12-082013-06-18삼성전자주식회사Data storage device and data management method thereof
EP2672387B1 (en)2012-06-042018-08-01Amplidata NVA distributed object storage system
US20140089729A1 (en)*2012-09-242014-03-27Hitachi, Ltd.Storage system and storage control method
CN102968358A (en)*2012-11-132013-03-13浪潮电子信息产业股份有限公司Quick recovery method of soft RAID1 deployment system
CN102999399B (en)2012-11-132016-08-03浙江宇视科技有限公司The method and apparatus that a kind of JBOD array is automatically renewed
WO2014138448A1 (en)*2013-03-062014-09-12Sullivan Jason ASystems and methods for providing dynamic hybrid storage
CN104317730B (en)*2014-10-272018-02-06浪潮(北京)电子信息产业有限公司One kind is based on secondary allocation management disk extending space method and system
US9645897B2 (en)*2015-03-112017-05-09International Business Machines CorporationUsing duplicated data to enhance data security in RAID environments
US9760730B2 (en)*2015-08-282017-09-12Dell Products L.P.System and method to redirect and unlock software secure disk devices in a high latency environment
US10097534B2 (en)*2015-08-282018-10-09Dell Products L.P.System and method to redirect hardware secure USB storage devices in high latency VDI environments
CN107436826B (en)*2017-08-152018-12-18金钱猫科技股份有限公司 A cold data processing method and terminal
CN109725823B (en)*2017-10-272021-11-16伊姆西Ip控股有限责任公司Method and apparatus for managing a hybrid storage disk array

Citations (47)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US3769453A (en)1972-08-171973-10-30IbmFinite memory adaptive predictor
US3987419A (en)*1974-12-051976-10-19Goodyear Aerospace CorporationHigh speed information processing system
US4090251A (en)1977-06-091978-05-16Texas Instruments IncorporatedBubble memory redundancy storage
US4159412A (en)1977-02-111979-06-26Texas Instruments IncorporatedMagnetic bubble memory chip synchronization and redundancy
US4161778A (en)1977-07-191979-07-17Honeywell Information Systems, Inc.Synchronization control system for firmware access of high data rate transfer bus
US4221933A (en)1978-12-211980-09-09Cornell Ronald GData storage and retrieval structure for a message storage system
US4389715A (en)1980-10-061983-06-21Inmos CorporationRedundancy scheme for a dynamic RAM
US4425615A (en)1980-11-141984-01-10Sperry CorporationHierarchical memory system having cache/disk subsystem with command queues for plural disks
US4454595A (en)1981-12-231984-06-12Pitney Bowes Inc.Buffer for use with a fixed disk controller
US4458334A (en)1977-05-161984-07-03Texas Instruments IncorporatedRedundancy map storage for bubble memories
US4523275A (en)1980-11-141985-06-11Sperry CorporationCache/disk subsystem with floating entry
EP0156724A1 (en)1984-03-161985-10-02Bull S.A.Recording method for a disc memory, an a disc memory system
US4591973A (en)1983-06-061986-05-27Sperry CorporationInput/output system and method for digital computers
US4593354A (en)1983-02-181986-06-03Tokyo Shibaura Denki Kabushiki KaishaDisk cache system
EP0249091A2 (en)1986-06-121987-12-16International Business Machines CorporationParity spreading to enhance storage access
US4722085A (en)1986-02-031988-01-26Unisys Corp.High capacity disk storage system having unusually high fault tolerance level and bandpass
WO1988009968A1 (en)1987-06-021988-12-15Cab-Tek, Inc.Fault-tolerant, error-correcting storage system
US4792917A (en)1985-12-281988-12-20Hitachi, Ltd.Control apparatus for simultaneous data transfer
US4800483A (en)1982-12-011989-01-24Hitachi, Ltd.Method and system for concurrent data transfer disk cache system
US4870643A (en)1987-11-061989-09-26Micropolis CorporationParallel drive array storage system
US4942579A (en)1987-06-021990-07-17Cab-Tek, Inc.High-speed, high-capacity, fault-tolerant error-correcting storage system
US5148432A (en)1988-11-141992-09-15Array Technology CorporationArrayed disk drive system and method
USRE34100E (en)1987-01-121992-10-13Seagate Technology, Inc.Data error correction system
US5191584A (en)1991-02-201993-03-02Micropolis CorporationMass storage array with efficient parity calculation
US5210860A (en)1990-07-201993-05-11Compaq Computer CorporationIntelligent disk array controller
US5212799A (en)1991-07-311993-05-18Ncr CorporationMethod and apparatus for storing a data block in multiple memory banks within a computer
US5218689A (en)1988-08-161993-06-08Cray Research, Inc.Single disk emulation interface for an array of asynchronously operating disk drives
US5220569A (en)1990-07-091993-06-15Seagate Technology, Inc.Disk array with error type indication and selection of error correction method
US5289418A (en)1992-02-141994-02-22Extended Systems, Inc.Memory apparatus with built-in parity generation
US5331646A (en)1992-05-081994-07-19Compaq Computer CorporationError correcting code technique for improving reliablility of a disk array
US5392244A (en)*1993-08-191995-02-21Hewlett-Packard CompanyMemory systems with data storage redundancy management
US5448709A (en)1992-10-131995-09-05Compaq Computer CorporationDisk array controller having command descriptor blocks utilized by bus master and bus slave for respectively performing data transfer operations
US5557767A (en)1993-03-311996-09-17Kabushiki Kaisha ToshibaDisk control system using identification codes for retrieving related data for storage in a read ahead cache
US5586248A (en)1992-06-051996-12-17Compaq Computer CorporationDisk drive controller with a posted write cache memory
US5586291A (en)1994-12-231996-12-17Emc CorporationDisk controller with volatile and non-volatile cache memories
US5590298A (en)1990-01-301996-12-31Fujitsu LimitedMethod of restoring and updating records in a disk cache system during disk drive idle time using start and end addresses
US5600817A (en)1992-06-161997-02-04International Business Machines CorporationAsynchronous read-ahead disk caching using multiple disk I/O processes adn dynamically variable prefetch length
US5603002A (en)1992-08-071997-02-11Kabushiki Kaisha ToshibaHard disk drive having buffer memory employing directory based cache controller with data replacement scheme
US5603062A (en)1992-11-111997-02-11Hitachi, Ltd.System for controlling data flow between plurality of host interfaces and drive interfaces using controller for select unoccupied interfaces after preparation of read/write operation is complete
US5606684A (en)1989-09-221997-02-25Hitachi, Ltd.On-line dumping system and disk sub-system
US5615352A (en)*1994-10-051997-03-25Hewlett-Packard CompanyMethods for adding storage disks to a hierarchic disk array while maintaining data availability
US5617425A (en)1993-05-261997-04-01Seagate Technology, Inc.Disc array having array supporting controllers and interface
US5664187A (en)*1994-10-261997-09-02Hewlett-Packard CompanyMethod and system for selecting data for migration in a hierarchic data storage system using frequency distribution tables
US5682499A (en)*1995-06-061997-10-28International Business Machines CorporationDirectory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
US5862312A (en)*1995-10-241999-01-19Seachange Technology, Inc.Loosely coupled mass storage computer cluster
US5890204A (en)*1996-06-031999-03-30Emc CorporationUser controlled storage configuration using graphical user interface
US6098128A (en)*1995-09-182000-08-01Cyberstorage Systems CorporationUniversal storage management system

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JP3136258B2 (en)*1995-09-272001-02-19三菱電機株式会社 Disk update log recording method

Patent Citations (50)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US3769453A (en)1972-08-171973-10-30IbmFinite memory adaptive predictor
US3987419A (en)*1974-12-051976-10-19Goodyear Aerospace CorporationHigh speed information processing system
US4159412A (en)1977-02-111979-06-26Texas Instruments IncorporatedMagnetic bubble memory chip synchronization and redundancy
US4458334A (en)1977-05-161984-07-03Texas Instruments IncorporatedRedundancy map storage for bubble memories
US4090251A (en)1977-06-091978-05-16Texas Instruments IncorporatedBubble memory redundancy storage
US4161778A (en)1977-07-191979-07-17Honeywell Information Systems, Inc.Synchronization control system for firmware access of high data rate transfer bus
US4221933A (en)1978-12-211980-09-09Cornell Ronald GData storage and retrieval structure for a message storage system
US4389715A (en)1980-10-061983-06-21Inmos CorporationRedundancy scheme for a dynamic RAM
US4425615A (en)1980-11-141984-01-10Sperry CorporationHierarchical memory system having cache/disk subsystem with command queues for plural disks
US4523275A (en)1980-11-141985-06-11Sperry CorporationCache/disk subsystem with floating entry
US4454595A (en)1981-12-231984-06-12Pitney Bowes Inc.Buffer for use with a fixed disk controller
US4800483A (en)1982-12-011989-01-24Hitachi, Ltd.Method and system for concurrent data transfer disk cache system
US4593354A (en)1983-02-181986-06-03Tokyo Shibaura Denki Kabushiki KaishaDisk cache system
US4591973A (en)1983-06-061986-05-27Sperry CorporationInput/output system and method for digital computers
EP0156724A1 (en)1984-03-161985-10-02Bull S.A.Recording method for a disc memory, an a disc memory system
US4792917A (en)1985-12-281988-12-20Hitachi, Ltd.Control apparatus for simultaneous data transfer
US4722085A (en)1986-02-031988-01-26Unisys Corp.High capacity disk storage system having unusually high fault tolerance level and bandpass
EP0278134A1 (en)1986-02-031988-08-17Unisys CorporationHigh capacity disk storage system having unusually high fault tolerance level and bandpass
EP0249091A2 (en)1986-06-121987-12-16International Business Machines CorporationParity spreading to enhance storage access
US4761785A (en)1986-06-121988-08-02International Business Machines CorporationParity spreading to enhance storage access
US4761785B1 (en)1986-06-121996-03-12IbmParity spreading to enhance storage access
USRE34100E (en)1987-01-121992-10-13Seagate Technology, Inc.Data error correction system
WO1988009968A1 (en)1987-06-021988-12-15Cab-Tek, Inc.Fault-tolerant, error-correcting storage system
US4942579A (en)1987-06-021990-07-17Cab-Tek, Inc.High-speed, high-capacity, fault-tolerant error-correcting storage system
US4870643A (en)1987-11-061989-09-26Micropolis CorporationParallel drive array storage system
US5218689A (en)1988-08-161993-06-08Cray Research, Inc.Single disk emulation interface for an array of asynchronously operating disk drives
US5148432A (en)1988-11-141992-09-15Array Technology CorporationArrayed disk drive system and method
US5606684A (en)1989-09-221997-02-25Hitachi, Ltd.On-line dumping system and disk sub-system
US5590298A (en)1990-01-301996-12-31Fujitsu LimitedMethod of restoring and updating records in a disk cache system during disk drive idle time using start and end addresses
US5220569A (en)1990-07-091993-06-15Seagate Technology, Inc.Disk array with error type indication and selection of error correction method
US5210860A (en)1990-07-201993-05-11Compaq Computer CorporationIntelligent disk array controller
US5191584A (en)1991-02-201993-03-02Micropolis CorporationMass storage array with efficient parity calculation
US5212799A (en)1991-07-311993-05-18Ncr CorporationMethod and apparatus for storing a data block in multiple memory banks within a computer
US5289418A (en)1992-02-141994-02-22Extended Systems, Inc.Memory apparatus with built-in parity generation
US5331646A (en)1992-05-081994-07-19Compaq Computer CorporationError correcting code technique for improving reliablility of a disk array
US5586248A (en)1992-06-051996-12-17Compaq Computer CorporationDisk drive controller with a posted write cache memory
US5600817A (en)1992-06-161997-02-04International Business Machines CorporationAsynchronous read-ahead disk caching using multiple disk I/O processes adn dynamically variable prefetch length
US5603002A (en)1992-08-071997-02-11Kabushiki Kaisha ToshibaHard disk drive having buffer memory employing directory based cache controller with data replacement scheme
US5448709A (en)1992-10-131995-09-05Compaq Computer CorporationDisk array controller having command descriptor blocks utilized by bus master and bus slave for respectively performing data transfer operations
US5603062A (en)1992-11-111997-02-11Hitachi, Ltd.System for controlling data flow between plurality of host interfaces and drive interfaces using controller for select unoccupied interfaces after preparation of read/write operation is complete
US5557767A (en)1993-03-311996-09-17Kabushiki Kaisha ToshibaDisk control system using identification codes for retrieving related data for storage in a read ahead cache
US5617425A (en)1993-05-261997-04-01Seagate Technology, Inc.Disc array having array supporting controllers and interface
US5392244A (en)*1993-08-191995-02-21Hewlett-Packard CompanyMemory systems with data storage redundancy management
US5615352A (en)*1994-10-051997-03-25Hewlett-Packard CompanyMethods for adding storage disks to a hierarchic disk array while maintaining data availability
US5664187A (en)*1994-10-261997-09-02Hewlett-Packard CompanyMethod and system for selecting data for migration in a hierarchic data storage system using frequency distribution tables
US5586291A (en)1994-12-231996-12-17Emc CorporationDisk controller with volatile and non-volatile cache memories
US5682499A (en)*1995-06-061997-10-28International Business Machines CorporationDirectory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
US6098128A (en)*1995-09-182000-08-01Cyberstorage Systems CorporationUniversal storage management system
US5862312A (en)*1995-10-241999-01-19Seachange Technology, Inc.Loosely coupled mass storage computer cluster
US5890204A (en)*1996-06-031999-03-30Emc CorporationUser controlled storage configuration using graphical user interface

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"A Case for Redundant Arrays of Inexpensive Disks (RAID)", by David A. Patterson, Garth Gibson, and Randy H. Katz, Dec. 1987, Report No. UCB/CSD 87/391, Computer Science Division (EECS), University of California, Berkeley, California 94720.
"Cache Design Boosts SMK Disk Drive Performance", by Bill Winterstein, Computer Design, Mar. 15, 1986, pp. 87-92.
"Redundant Disk Arrays Enhance Data Safety to Support Network Servers", by Donald C. Peterson, Ciprico Inc., Computer Technology Review, Winter 1990, pp. 44-47.

Cited By (72)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US8359334B2 (en)1993-06-032013-01-22Network Appliance, Inc.Allocating files in a file system integrated with a RAID disk sub-system
US20110022570A1 (en)*1993-06-032011-01-27David HitzAllocating files in a file system integrated with a raid disk sub-system
US20070185942A1 (en)*1993-06-032007-08-09Network Appliance, Inc.Allocating files in a file system integrated with a RAID disk sub-system
US7818498B2 (en)1993-06-032010-10-19Network Appliance, Inc.Allocating files in a file system integrated with a RAID disk sub-system
US20050246393A1 (en)*2000-03-032005-11-03Intel CorporationDistributed storage cluster architecture
US7428540B1 (en)2000-03-032008-09-23Intel CorporationNetwork storage system
US7590747B2 (en)2000-03-032009-09-15Intel CorporationDistributed storage cluster architecture
US6952737B1 (en)*2000-03-032005-10-04Intel CorporationMethod and apparatus for accessing remote storage in a distributed storage cluster architecture
US20010047400A1 (en)*2000-03-032001-11-29Coates Joshua L.Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US7281168B1 (en)2000-03-032007-10-09Intel CorporationFailover architecture for local devices that access remote storage
US7506034B2 (en)2000-03-032009-03-17Intel CorporationMethods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US7266555B1 (en)2000-03-032007-09-04Intel CorporationMethods and apparatus for accessing remote storage through use of a local device
US7203731B1 (en)2000-03-032007-04-10Intel CorporationDynamic replication of files in a network storage system
US7266556B1 (en)2000-12-292007-09-04Intel CorporationFailover architecture for a distributed storage system
US7734867B1 (en)*2002-05-172010-06-08Hewlett-Packard Development Company, L.P.Data storage using disk drives in accordance with a schedule of operations
US7707151B1 (en)2002-08-022010-04-27Emc CorporationMethod and apparatus for migrating data
US7114116B2 (en)2002-09-132006-09-26Sun Microsystems, Inc.Accelerated Galois data integrity crosscheck system and method
US20040054956A1 (en)*2002-09-132004-03-18James ByrdAccelerated galois data integrity crosscheck system and method
US20060206665A1 (en)*2002-09-202006-09-14Quantum CorporationAccelerated RAID with rewind capability
US7076606B2 (en)*2002-09-202006-07-11Quantum CorporationAccelerated RAID with rewind capability
US20040059869A1 (en)*2002-09-202004-03-25Tim OrsleyAccelerated RAID with rewind capability
US7774466B2 (en)2002-10-172010-08-10Intel CorporationMethods and apparatus for load balancing storage nodes in a distributed storage area network system
US7509645B2 (en)2002-10-172009-03-24Intel CorporationMethods and apparatus for load balancing storage nodes in a distributed network attached storage system
US20040078465A1 (en)*2002-10-172004-04-22Coates Joshua L.Methods and apparatus for load balancing storage nodes in a distributed stroage area network system
US20040078466A1 (en)*2002-10-172004-04-22Coates Joshua L.Methods and apparatus for load balancing storage nodes in a distributed network attached storage system
US20040088297A1 (en)*2002-10-172004-05-06Coates Joshua L.Distributed network attached storage system
US7774325B2 (en)2002-10-172010-08-10Intel CorporationDistributed network attached storage system
US11751350B2 (en)2002-10-222023-09-05Atd Ventures, LlcSystems and methods for providing a robust computer processing unit
US10849245B2 (en)2002-10-222020-11-24Atd Ventures, LlcSystems and methods for providing a robust computer processing unit
US7546482B2 (en)2002-10-282009-06-09Emc CorporationMethod and apparatus for monitoring the storage of data in a computer system
US20040080558A1 (en)*2002-10-282004-04-29Blumenau Steven M.Method and apparatus for monitoring the storage of data in a computer system
US7376764B1 (en)2002-12-102008-05-20Emc CorporationMethod and apparatus for migrating data in a computer system
US7043609B2 (en)*2003-02-032006-05-09Sun Microsystems, Inc.Method and apparatus for protecting a state associated with a memory structure
US7805583B1 (en)2003-04-232010-09-28Emc CorporationMethod and apparatus for migrating data in a clustered computer system environment
US7415591B1 (en)2003-04-232008-08-19Emc CorporationMethod and apparatus for migrating data and automatically provisioning a target for the migration
US7080221B1 (en)2003-04-232006-07-18Emc CorporationMethod and apparatus for managing migration of data in a clustered computer system environment
US7093088B1 (en)2003-04-232006-08-15Emc CorporationMethod and apparatus for undoing a data migration in a computer system
US7263590B1 (en)2003-04-232007-08-28Emc CorporationMethod and apparatus for migrating data in a computer system
US20050038954A1 (en)*2003-06-042005-02-17Quantum CorporationStorage drive having universal format across media types
US7188296B1 (en)2003-10-302007-03-06Sun Microsystems, Inc.ECC for component failures using Galois fields
US20070255768A1 (en)*2004-11-172007-11-01Hitachi, Ltd.System and method for creating an object-level snapshot in a storage system
US20060106878A1 (en)*2004-11-172006-05-18Hidehisa ShitomiSystem and method for creating an object-level snapshot in a storage system
US7664787B2 (en)2004-11-172010-02-16Hitachi, Ltd.System and method for creating an object-level snapshot in a storage system
US7228320B2 (en)*2004-11-172007-06-05Hitachi, Ltd.System and method for creating an object-level snapshot in a storage system
US20060236068A1 (en)*2005-04-142006-10-19International Business Machines CorporationMethod and apparatus for storage provisioning automation in a data center
US7389401B2 (en)2005-04-142008-06-17International Business Machines CorporationMethod and apparatus for storage provisioning automation in a data center
US7343468B2 (en)2005-04-142008-03-11International Business Machines CorporationMethod and apparatus for storage provisioning automation in a data center
US20080077640A1 (en)*2005-04-142008-03-27Li Michael LMethod and apparatus for storage provisioning automation in a data center
US7685499B2 (en)2005-06-222010-03-23Accusys, Inc.XOR circuit, RAID device capable of recovering a plurality of failures and method thereof
US20060294416A1 (en)*2005-06-222006-12-28Accusys, Inc.XOR circuit, raid device capable of recovering a plurality of failures and method thereof
US8086939B2 (en)2005-06-222011-12-27Accusys, Inc.XOR circuit, RAID device capable of recovering a plurality of failures and method thereof
US20100162088A1 (en)*2005-06-222010-06-24Accusys, Inc.Xor circuit, raid device capable of recovering a plurality of failures and method thereof
US20070089023A1 (en)*2005-09-302007-04-19Sigmatel, Inc.System and method for system resource access
US8135763B1 (en)*2005-09-302012-03-13Emc CorporationApparatus and method for maintaining a file system index
US8938594B2 (en)*2005-11-042015-01-20Oracle America, Inc.Method and system for metadata-based resilvering
US20070106866A1 (en)*2005-11-042007-05-10Sun Microsystems, Inc.Method and system for metadata-based resilvering
US7831793B2 (en)2006-03-012010-11-09Quantum CorporationData storage system including unique block pool manager and applications in tiered storage
US20070208788A1 (en)*2006-03-012007-09-06Quantum CorporationData storage system including unique block pool manager and applications in tiered storage
US20080301195A1 (en)*2006-03-312008-12-04He ChuMethod, apparatus and system for reverting fat cluster number to file id and offset of non-fat flash file system
US8255612B2 (en)2006-03-312012-08-28Intel CorporationMethod, apparatus and system for reverting FAT cluster number to file ID and offset of non-FAT flash file system
US20070233936A1 (en)*2006-03-312007-10-04Intel CorporationMethod, apparatus and system for reverting FAT cluster number to file ID and offset of non-FAT flash file system
US7426606B2 (en)*2006-03-312008-09-16Intel CorporationMethod, apparatus and system for reverting FAT cluster number to file ID and offset of non-FAT flash file system
US20080155383A1 (en)*2006-12-202008-06-26International Business Machines CorporationApparatus and method to generate, store, and read, a plurality of error correction coded data sets
US8667379B2 (en)2006-12-202014-03-04International Business Machines CorporationApparatus and method to generate, store, and read, a plurality of error correction coded data sets
US8103844B2 (en)2008-02-012012-01-24Donald Rozinak BeaverSecure direct platter access
US20090198932A1 (en)*2008-02-012009-08-06Seagate Technology LlcSecure direct platter access
US20100031057A1 (en)*2008-02-012010-02-04Seagate Technology LlcTraffic analysis resistant storage encryption using implicit and explicit data
US20090196417A1 (en)*2008-02-012009-08-06Seagate Technology LlcSecure disposal of storage data
US8255774B2 (en)2009-02-172012-08-28Seagate TechnologyData storage system with non-volatile memory for error correction
US9213611B2 (en)2013-07-242015-12-15Western Digital Technologies, Inc.Automatic raid mirroring when adding a second boot drive
US20180217906A1 (en)*2014-10-032018-08-02Agency For Science, Technology And ResearchMethod For Optimizing Reconstruction Of Data For A Hybrid Object Storage Device
US10097636B1 (en)2015-06-152018-10-09Western Digital Technologies, Inc.Data storage device docking station

Also Published As

Publication numberPublication date
GB0008661D0 (en)2000-05-31
KR20010015722A (en)2001-02-26
GB2345366B (en)2003-02-19
WO1999018507A1 (en)1999-04-15
GB2345366A (en)2000-07-05
JP2001519563A (en)2001-10-23
KR100564664B1 (en)2006-03-29
US20020059539A1 (en)2002-05-16
CN1281560A (en)2001-01-24
DE19882723T1 (en)2000-09-21

Similar Documents

PublicationPublication DateTitle
US6704838B2 (en)Hybrid data storage and reconstruction system and method for a data storage device
US6321358B1 (en)Object reconstruction on object oriented data storage device
US8285878B2 (en)Block based access to a dispersed data storage network
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
US9830278B1 (en)Tracking replica data using key management
US6985995B2 (en)Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data
US7533330B2 (en)Redundancy for storage data structures
JPH03505643A (en) File systems for multiple storage classes
JP2009533759A (en) System for reconstructing distributed data
US7882420B2 (en)Method and system for data replication
US7308543B2 (en)Method and system for shredding data within a data storage subsystem
US20030177130A1 (en)Method, system, program, and data structures for maintaining metadata in a storage system
US8495010B2 (en)Method and system for adaptive metadata replication
US7814338B2 (en)System and method for virtual tape management with creation and management options
US20070106864A1 (en)Multiple replication levels with pooled devices
KR100602393B1 (en) Object-oriented data storage
WO1999009479A1 (en)Redundancy implementation on object oriented data storage device
US12309258B2 (en)Encryption in a distributed storage system utilizing cluster-wide encryption keys
Nagle et al.The ANSI T10 object-based storage standard and current implementations
US20070106851A1 (en)Method and system supporting per-file and per-block replication
US7409512B1 (en)Method and apparatus for maintaining information that indicates valid regions of a working volume and using that information to delay volume initialization
US7743225B2 (en)Ditto blocks
US20070106866A1 (en)Method and system for metadata-based resilvering

Legal Events

DateCodeTitleDescription
ASAssignment

Owner name:SEAGATE TECHNOLOGY, INC., CALIFORNIA

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ANDERSON, DAVID B.;REEL/FRAME:009631/0440

Effective date:19981130

ASAssignment

Owner name:SEAGATE TECHNOLOGY LLC, CALIFORNIA

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SEAGATE TECHNOLOGY, INC.;REEL/FRAME:010986/0487

Effective date:20000628

ASAssignment

Owner name:JPMORGAN CHASE BANK, AS COLLATERAL AGENT, NEW YORK

Free format text:SECURITY AGREEMENT;ASSIGNOR:SEAGATE TECHNOLOGY LLC;REEL/FRAME:013177/0001

Effective date:20020513

Owner name:JPMORGAN CHASE BANK, AS COLLATERAL AGENT,NEW YORK

Free format text:SECURITY AGREEMENT;ASSIGNOR:SEAGATE TECHNOLOGY LLC;REEL/FRAME:013177/0001

Effective date:20020513

FEPPFee payment procedure

Free format text:PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCFInformation on status: patent grant

Free format text:PATENTED CASE

CCCertificate of correction
ASAssignment

Owner name:SEAGATE TECHNOLOGY LLC, CALIFORNIA

Free format text:RELEASE OF SECURITY INTERESTS IN PATENT RIGHTS;ASSIGNOR:JPMORGAN CHASE BANK, N.A. (FORMERLY KNOWN AS THE CHASE MANHATTAN BANK AND JPMORGAN CHASE BANK), AS ADMINISTRATIVE AGENT;REEL/FRAME:016958/0607

Effective date:20051130

FPAYFee payment

Year of fee payment:4

REMIMaintenance fee reminder mailed
ASAssignment

Owner name:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE, CALIFORNIA

Free format text:SECURITY AGREEMENT;ASSIGNORS:MAXTOR CORPORATION;SEAGATE TECHNOLOGY LLC;SEAGATE TECHNOLOGY INTERNATIONAL;REEL/FRAME:022757/0017

Effective date:20090507

Owner name:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT AND FIRST PRIORITY REPRESENTATIVE, NEW YORK

Free format text:SECURITY AGREEMENT;ASSIGNORS:MAXTOR CORPORATION;SEAGATE TECHNOLOGY LLC;SEAGATE TECHNOLOGY INTERNATIONAL;REEL/FRAME:022757/0017

Effective date:20090507

Owner name:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT

Free format text:SECURITY AGREEMENT;ASSIGNORS:MAXTOR CORPORATION;SEAGATE TECHNOLOGY LLC;SEAGATE TECHNOLOGY INTERNATIONAL;REEL/FRAME:022757/0017

Effective date:20090507

Owner name:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATE

Free format text:SECURITY AGREEMENT;ASSIGNORS:MAXTOR CORPORATION;SEAGATE TECHNOLOGY LLC;SEAGATE TECHNOLOGY INTERNATIONAL;REEL/FRAME:022757/0017

Effective date:20090507

ASAssignment

Owner name:SEAGATE TECHNOLOGY INTERNATIONAL, CALIFORNIA

Free format text:RELEASE;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:025662/0001

Effective date:20110114

Owner name:SEAGATE TECHNOLOGY LLC, CALIFORNIA

Free format text:RELEASE;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:025662/0001

Effective date:20110114

Owner name:MAXTOR CORPORATION, CALIFORNIA

Free format text:RELEASE;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:025662/0001

Effective date:20110114

Owner name:SEAGATE TECHNOLOGY HDD HOLDINGS, CALIFORNIA

Free format text:RELEASE;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:025662/0001

Effective date:20110114

ASAssignment

Owner name:THE BANK OF NOVA SCOTIA, AS ADMINISTRATIVE AGENT, CANADA

Free format text:SECURITY AGREEMENT;ASSIGNOR:SEAGATE TECHNOLOGY LLC;REEL/FRAME:026010/0350

Effective date:20110118

Owner name:THE BANK OF NOVA SCOTIA, AS ADMINISTRATIVE AGENT,

Free format text:SECURITY AGREEMENT;ASSIGNOR:SEAGATE TECHNOLOGY LLC;REEL/FRAME:026010/0350

Effective date:20110118

FPAYFee payment

Year of fee payment:8

ASAssignment

Owner name:EVAULT INC. (F/K/A I365 INC.), CALIFORNIA

Free format text:TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE;REEL/FRAME:030833/0001

Effective date:20130312

Owner name:SEAGATE TECHNOLOGY INTERNATIONAL, CAYMAN ISLANDS

Free format text:TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE;REEL/FRAME:030833/0001

Effective date:20130312

Owner name:SEAGATE TECHNOLOGY US HOLDINGS, INC., CALIFORNIA

Free format text:TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE;REEL/FRAME:030833/0001

Effective date:20130312

Owner name:SEAGATE TECHNOLOGY LLC, CALIFORNIA

Free format text:TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE;REEL/FRAME:030833/0001

Effective date:20130312

FPAYFee payment

Year of fee payment:12

ASAssignment

Owner name:SEAGATE TECHNOLOGY PUBLIC LIMITED COMPANY, CALIFORNIA

Free format text:RELEASE BY SECURED PARTY;ASSIGNOR:THE BANK OF NOVA SCOTIA;REEL/FRAME:072193/0001

Effective date:20250303

Owner name:SEAGATE TECHNOLOGY, CALIFORNIA

Free format text:RELEASE BY SECURED PARTY;ASSIGNOR:THE BANK OF NOVA SCOTIA;REEL/FRAME:072193/0001

Effective date:20250303

Owner name:SEAGATE TECHNOLOGY HDD HOLDINGS, CALIFORNIA

Free format text:RELEASE BY SECURED PARTY;ASSIGNOR:THE BANK OF NOVA SCOTIA;REEL/FRAME:072193/0001

Effective date:20250303

Owner name:I365 INC., CALIFORNIA

Free format text:RELEASE BY SECURED PARTY;ASSIGNOR:THE BANK OF NOVA SCOTIA;REEL/FRAME:072193/0001

Effective date:20250303

Owner name:SEAGATE TECHNOLOGY LLC, CALIFORNIA

Free format text:RELEASE BY SECURED PARTY;ASSIGNOR:THE BANK OF NOVA SCOTIA;REEL/FRAME:072193/0001

Effective date:20250303

Owner name:SEAGATE TECHNOLOGY INTERNATIONAL, CAYMAN ISLANDS

Free format text:RELEASE BY SECURED PARTY;ASSIGNOR:THE BANK OF NOVA SCOTIA;REEL/FRAME:072193/0001

Effective date:20250303

Owner name:SEAGATE HDD CAYMAN, CAYMAN ISLANDS

Free format text:RELEASE BY SECURED PARTY;ASSIGNOR:THE BANK OF NOVA SCOTIA;REEL/FRAME:072193/0001

Effective date:20250303

Owner name:SEAGATE TECHNOLOGY (US) HOLDINGS, INC., CALIFORNIA

Free format text:RELEASE BY SECURED PARTY;ASSIGNOR:THE BANK OF NOVA SCOTIA;REEL/FRAME:072193/0001

Effective date:20250303


[8]ページ先頭

©2009-2025 Movatter.jp