DE3750790T2 - Parity distribution for improved memory access. - Google Patents
Parity distribution for improved memory access.Info
- Publication number
- DE3750790T2 DE3750790T2 DE3750790T DE3750790T DE3750790T2 DE 3750790 T2 DE3750790 T2 DE 3750790T2 DE 3750790 T DE3750790 T DE 3750790T DE 3750790 T DE3750790 T DE 3750790T DE 3750790 T2 DE3750790 T2 DE 3750790T2
- Authority
- DE
- Germany
- Prior art keywords
- parity
- data
- record
- blocks
- storage devices
- 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
Links
- 230000008859 change Effects 0.000 claims description 24
- 230000007246 mechanism Effects 0.000 claims description 20
- 238000011084 recovery Methods 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 6
- 238000000034 method Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1833—Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/104—Metadata, i.e. metadata associated with RAID systems with parity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
Die gegenwärtige Erfindung bezieht sich auf die Aufrechterhaltung von Paritätsinformationen in einer Vielzahl von Datenblöcken und im besonderen auf die Speicherung von derartigen Paritätsinformationen.The present invention relates to the maintenance of parity information in a plurality of data blocks and, in particular, to the storage of such parity information.
Das US-Patent Nr. 4 092 732 beschreibt einen Checksummengenerator für die Generierung eines Checksummensegments aus Segmenten eines Systemdatensatzes, wenn die Systemdatensatzsegmente zwischen einem Speichersubsystem und einer zentralen Verarbeitungseinheit übertragen werden. Das Checksummensegment besteht im wesentlichen aus einer Reihe Paritätsbits, die aus Bits mit der gleichen Lage der Systemdatensatzsegmente generiert wurden. Mit anderen Worten stellt jedes Bit so wie das erste Bit des Checksummensegmentes die Parität der Gruppe der ersten Bits der Datensatzsegmente dar. Wenn ein Speichersegment, das ein Datensatzsegment enthält, ausfällt, wird das Datensatzsegment aus dem Checksummensegment und den verbliebenen Systemsegmenten wiederhergestellt. Eine Speichereinheit wird dafür ausgewählt, daß sie alle Checksummensegmente für eine Vielzahl von Datensatzspeichereinheiten enthält.U.S. Patent No. 4,092,732 describes a checksum generator for generating a checksum segment from segments of a system record as the system record segments are transferred between a storage subsystem and a central processing unit. The checksum segment essentially consists of a series of parity bits generated from bits in the same location of the system record segments. In other words, each bit, such as the first bit of the checksum segment, represents the parity of the group of first bits of the record segments. If a storage segment containing a record segment fails, the record segment is reconstructed from the checksum segment and the remaining system segments. A storage unit is selected to contain all of the checksum segments for a plurality of record storage units.
Im obigen Patent wird das Checksummensegment immer erzeugt, indem alle Datensatzsegmente, die es umfaßt, gelesen werden. Wenn ein Datensatzsegment geändert wird, werden alle eingeschlossenen Datensatzsegmente gelesen und das Checksummensegment erzeugt. Ein IBM Technical Disclosure Bulletin, Vol. 24, No. 2, July 1981, Seite 986-987, Efficient Mass Storage Parity Recovery Mechanism, zeigt die Verbesserung der Generierung des Checksummensegments oder Paritätssegments durch Kopieren eines Datensatzsegments bevor er geändert wird. Die Kopie des Datensatzsegments wird anschließend mit dem geänderten Datensatzsegment exklusiv-oder-verknüpft, um eine Änderungsmaske zu erzeugen. Das Paritätssegment wird dann gelesen und mit der Änderungsmaske exklusiv-oder-verknüpft, um das neue Paritätssegment zu generieren, das dann auf die Speichereinheit zurückgeschrieben wird.In the above patent, the checksum segment is always generated by reading all the record segments it encompasses. When a record segment is modified, all the enclosed record segments are read and the checksum segment is generated. An IBM Technical Disclosure Bulletin, Vol. 24, No. 2, July 1981, pages 986-987, Efficient Mass Storage Parity Recovery Mechanism, shows the improvement of generating the checksum segment or parity segment by copying a record segment before it is modified. The copy of the record segment is then exclusive-ORed with the modified record segment to generate a change mask. The The parity segment is then read and exclusive-ored with the change mask to generate the new parity segment, which is then written back to the storage device.
Während eine Anzahl Lesevorgänge von nicht geänderten Datensatzsegmente nach dem Stand der Technik verhindert wird, wird eine einzelne Speichereinheit genutzt, um die Datensatzparitätssegmente für mehrere Datensatzsegmente auf mehreren Speichergeräten zu speichern. Zu einem Lese- und einen Schreibvorgang auf einer einzelnen Speichereinheit kommt es jedesmal, wenn ein Datensatz auf irgendeiner Speichereinheit geändert wird, der von dem Paritätsdatensatz auf der einzelnen Speichereinheit abgedeckt wird. Somit wird die einzelne Speichereinheit zu einem Engpaß für Speicheroperationen, da die Anzahl von Änderungen an Datensätzen, die je Zeiteinheit durchgeführt werden können, eine Funktion der Zugriffsrate auf die einzelne Speichereinheit ist, im Gegensatz zu der höheren Zugriffsrate, die durch Parallelbetrieb von mehreren Speichereinheiten erreicht wird.While a number of reads of unchanged record segments are prevented in the prior art, a single storage device is used to store the record parity segments for multiple record segments on multiple storage devices. A read and a write to a single storage device occurs each time a record is changed on any storage device covered by the parity record on the single storage device. Thus, the single storage device becomes a bottleneck for storage operations since the number of changes to records that can be made per unit of time is a function of the access rate to the single storage device, as opposed to the higher access rate achieved by operating multiple storage devices in parallel.
Die Wiederherstellung von verlorenen Datensätzen hängt von der Synchronisation des Paritätsdatensatzes mit jedem der Datensätze ab, die dieser abdeckt. Ohne spezielle Hardware, wie nichtflüchtigem Speicher, und/oder zusätzlichen Schreiboperationen auf Speichereinheiten, ist es schwer zu garantieren, daß sowohl die reinen Datensätze als auch die Paritätsdatensätze auf einen konsistenten Stand gebracht werden, wenn das System regelwidrig beendet wird. Da zwei I/O-Operationen benötigt werden, um die Daten und deren zugehörige Paritätsinformationen zu aktualisieren, ist es schwierig zu bestimmen, welche I/O-Operation auf die Systembeendigung folgend abgeschlossen wurde.Recovery of lost records depends on synchronizing the parity record with each of the records it covers. Without special hardware, such as non-volatile memory, and/or additional writes to storage devices, it is difficult to guarantee that both the bare records and the parity records will be brought to a consistent state if the system abnormally terminates. Since two I/O operations are required to update the data and its associated parity information, it is difficult to determine which I/O operation completed following system termination.
Darauf bezugnehmend ist es ein Gegenstand der gegenwärtigen Erfindung, einen Datenschutzmechanismus für ein Computersystem zu liefern, das mehrere Speichergeräte, euf die unabhängig zugegriffen werden kann, und eine Methode zum Schutz der in den Speichergeräten gespeicherten Daten besitzt.In view of this, it is an object of the present invention to provide a data protection mechanism for a computer system having multiple independently accessible storage devices and a method for protecting data stored in the storage devices.
Ein Speichermanagementmechanismus verteilt Paritätsinformationen innerhalb eines Satzes Speichereinheiten im wesentlichen gleichmäßig. N Speichereinheiten in einem Satz sind in einer Vielzahl gleich großer Adreßbereiche, die sich als Blöcke betrachten lassen, eingeteilt. Jede Speichereinheit enthält die gleiche Anzahl von Blöcken. Die Blöcke von jeder Speichereinheit in einem Satz, die den gleichen einheitlichen Adreßbereich besitzen, kann man als Streifen betrachten. Jeder Streifen hat auf einem Speichergerät N-1 Datenblöcke und einen Paritätsblock, der die Parität für den Rest des Streifens enthält. Weitere Streifen besitzen je einen Paritätsblock, wobei die Paritätsblöcke auf unterschiedliche Speichereinheiten verteilt sind. Die Aktivitäten zur Aktualisierung der Parität, die mit jeder Veränderung der Daten in einem Satz verbunden sind, werden deshalb über unterschiedliche Speichereinheiten verteilt. Eine einzelne Einheit ist somit nicht mit allen Aktivitäten zur Aktualisierung der Parität belastet.A memory management mechanism distributes parity information within a set of storage units essentially evenly. N storage units in a set are divided into a multiple equally sized address ranges, which can be considered blocks. Each storage unit contains the same number of blocks. The blocks of each storage unit in a set, which have the same uniform address range, can be considered as stripes. Each stripe on a storage device has N-1 data blocks and a parity block that contains the parity for the rest of the stripe. Additional stripes each have a parity block, with the parity blocks distributed among different storage units. The parity update activities associated with each change to the data in a set are therefore distributed among different storage units. A single unit is thus not burdened with all the parity update activities.
In der bevorzugten Ausführungsform hat jede Speichereinheit, die Teil eines Satzes ist, die gleiche Größe. Dies erlaubt eine vereinfachte Definition der Streifen. Da jede Speichereinheit die gleiche Größe besitzt, hat keine Speichereinheit Gebiete, die übrig bleiben und getrennt behandelt werden müssen.In the preferred embodiment, each storage unit that is part of a set is the same size. This allows for a simplified definition of the stripes. Since each storage unit is the same size, no storage unit has areas that are left over and must be treated separately.
Die Anzahl der Speichereinheiten in einem Satz ist bevorzugterweise größer zwei. Mit gerade zwei Einheiten ist der Schutz ähnlich einer Spiegelung, welche die Aufrechterhaltung von genau zwei Kopien der Daten mit sich bringt. Mit mehr als zwei Einheiten sinkt der prozentuale Anteil des Speichers, der dem Schutz gewidmet ist. Mit drei Einheiten beträgt der prozentuale Anteil an Speicher, der benötigt wird, um den geforderten Schutz zu erzielen, etwa 33 Prozent. Mit acht Einheiten werdeu etwas mehr als 12,5 Prozent der Speicherkapazität für den Schutz benötigt.The number of storage units in a set is preferably greater than two. With just two units, protection is similar to mirroring, which involves maintaining exactly two copies of the data. With more than two units, the percentage of storage dedicated to protection decreases. With three units, the percentage of storage required to achieve the required protection is about 33 percent. With eight units, just over 12.5 percent of the storage capacity is required for protection.
In einer weiteren bevorzugten Ausführungsform betrachtet man N-1 Datensätze (520 Bytes) und einen Paritätsdatensatz in einem Satz mit dem gleichein Adreßbereich als Scheibe. Jeder Datensatz in der Scheibe besitzt einen Versionsindikator, der die Version des Datensatzes kennzeichnet. Ein Kopf in jedem Paritätsdatensatz besteht aus einer Vielzahl Versionsindikatoren, wobei jeder einzelne mit jedem Datensatz auf der Scheibe korrespondiert. Jedesmal, wenn ein Datensatz aktualisiert wird, wird dessen Versionsindikator ebenso wie der Versionsindikator des mit diesem Datensatz korrespondierenden Paritätsdatensatzes erhöht. Wenn die Aktualisierung des Datensatzes und der Parität vollständig sind, sind die Versionsindikatoren gleich. Während der Wiederherstellung eines verlorenen Datensatzes werden die Versionsnummern überprüft, um die Synchronisation der Datensätze mit der Parität sicherzustellen. Ein Erzwingen einer Wiederherstellung ohne gültige Synchronisation würde unvorhersehbare Daten erzeugen.In a further preferred embodiment, N-1 data records (520 bytes) and a parity record in a set with the same address range are considered as a disk. Each record in of the disk has a version indicator that identifies the version of the record. A header in each parity record consists of a plurality of version indicators, each corresponding to every record on the disk. Each time a record is updated, its version indicator is incremented, as is the version indicator of the parity record corresponding to that record. When the update of the record and parity is complete, the version indicators are equal. During recovery of a lost record, the version numbers are checked to ensure synchronization of the records with the parity. Forcing a recovery without valid synchronization would produce unpredictable data.
Da jeder Datensatz eine von jedem anderen Datensatz unabhängige Versionsnummer besitzt, wird keine Synchronisation für die Aktualisierung zu unterschiedlichen Datensät zen benötigt, die durch den gleichen Paritätsdatensatz abgedeckt sind. Ebenfalls vermieden wird die Notwendigkeit, den Paritätsdatensatz vom Speicher zu lesen, bevor die Leseoperation für den Datensatz geplant und eine Anforderung auf Aktualisierung der Parität in die Warteschlange eingereiht wird.Since each record has a version number independent of every other record, no synchronization is needed for updates to different records covered by the same parity record. It also avoids the need to read the parity record from memory before scheduling the read operation for the record and queuing a parity update request.
In einer weiteren bevorzugten Ausführungsform wird ein ungeschützter Streifen für Datensätze geliefert, die nicht von Paritätsgruppen abgedeckt werden müssen. Die ungeschützten Streifen müssen nicht die gleiche Größe haben nie die geschützten Streifen und dürfen Gebiete veränderlicher Größe auf den Speichereinheiten einschließen, wenn die Speichereinheiten nicht in ihrer Größe identisch sind. Derartige Streifen bieten eine bequeme Methode zur Einteilung der Speichereinheiten in Gebiete mit geschütztem und ungeschütztem Speicher, da für jedes Speichergerät der cleiche Adreßbereich dem Schutz unterworfen ist. Vorteile in der Leistung ergeben sich, wenn es nicht notwendig ist, alle auf den Einheiten gespeicherte Datensätze zu schützen, da keine Aktualisierung der Parität benötigt wird, nachdem ein Datensatz in einem ungeschützten Streifen geändert wurde.In another preferred embodiment, an unprotected stripe is provided for records that do not need to be covered by parity groups. The unprotected stripes need not be the same size as the protected stripes and may include variable size regions on the storage devices if the storage devices are not identical in size. Such stripes provide a convenient method of dividing the storage devices into regions of protected and unprotected storage, since the same address range is subject to protection for each storage device. Performance benefits arise when it is not necessary to protect all records stored on the devices, since no parity update is required after a record in an unprotected stripe is changed.
Fig. 1 ist ein Blockdiagramm eines Systems, das die Verteilung der Paritätsdatenblöcke zum Schutz entsprechend der gegenwärtigen Erfindung enthält.Fig. 1 is a block diagram of a system incorporating the distribution of parity data blocks for protection in accordance with the present invention.
Fig. 2 ist ein Blockdiagramm der Verteilung der Paritätsblöcke von Fig. 1 auf eine Vielzahl von Speichergeräten;Fig. 2 is a block diagram of the distribution of the parity blocks of Fig. 1 among a plurality of storage devices;
Fig. 3 ist ein Blockdiagramm, das logische Tabellen darstellt, die genutzt werden, um Paritätsgruppen und Datensätze miteinander zu korrelieren;Fig. 3 is a block diagram illustrating logical tables used to correlate parity groups and records;
Fig. 4 ist ein Blockdiagramm von Datensätzen in einem Streifen des Speichers, der Versionsindikatoren für die Synchronisation benutzt;Fig. 4 is a block diagram of records in a stripe of memory using version indicators for synchronization;
Fig. 5 ist ein Flußdiagramm der Initialisierung der Speichergeräte für den Schutz der Paritätsblöcke undFig. 5 is a flow chart of the initialization of the storage devices for the protection of the parity blocks and
Fig. 6 ist ein Flußdiagramm der Schritte, die die Aktualisierung der Datensätze und ihrer korrespondierenden Paritätsdatensätze mit sich bringt.Fig. 6 is a flowchart of the steps involved in updating the records and their corresponding parity records.
Ein Computersystem, in dem die Paritätsblockverteilung implementiert ist, wurde allgemein in Fig. 1 mit 10 gekennzeichnet. Das System 10 umfaßt eine Datenverarbeitungseinheit 12, die mit einem Steuerspeicher 14 verbunden ist, wobei dieser einen schnellen Zugriff auf Mikrobefehle ermöglicht. Der Prozessor 12 kommuniziert über einen Kanaladapter 16 und über einen Hochgeschwindigkeitskanal 18 mit einer Mehrzahl von I/O-Einheiten. Der Prozessor 12 und die I/O-Einheiten haben Zugriff auf ein Hauptspeicherfeld 20. Der Zugriff auf den Hauptspeicher 20 wird durch einen Übersetzer für virtuelle Adressen 22 ermöglicht. Adreßübersetzungstabellen im Hauptspeicher 20 und ein vorgreifender Übersetzungspuffer ermöglichen das Abhilden von virtuellen auf reale Hauptspeicheradressen.A computer system implementing parity block distribution has been generally indicated at 10 in Figure 1. The system 10 includes a data processing unit 12 coupled to a control store 14 which provides fast access to microinstructions. The processor 12 communicates with a plurality of I/O units via a channel adapter 16 and a high speed channel 18. The processor 12 and the I/O units have access to a main memory array 20. Access to the main memory 20 is provided by a virtual address translator 22. Address translation tables in the main memory 20 and a look-ahead translation buffer provide for mapping from virtual to real main memory addresses.
Jedes I/O-Gerät, wie etwa die Plattenlaufwerke 30, 32, 34, 36 und 38, ist über eine Steuereinrichtung, wie etwa einer Steuereinrichtung für Plattenspeicher 40 für die obigen Plattenlaufwerkspeichergeräte, verbunden. I/O-Steuereinrichtungen 42 steuern die Bandlaufwerke 44 und 46. Des weiteren steuern die I/O- Steuereinrichtungen 48, 50 und 52 I/O-Geräte wie etwa Drucker, Arbeitsstationen, Tastaturen, Anzeigeeinrichtungen und die Kommunikation. Es gibt gewöhnlich mehrere Steuereinrichtungen für Plattenlaufwerke, wobei jede mehrere Plattenlaufwerkspeichergeräte steuert.Each I/O device, such as disk drives 30, 32, 34, 36 and 38 is connected through a controller such as a disk drive controller 40 for the above disk drive storage devices. I/O controllers 42 control the tape drives 44 and 46. In addition, the I/O controllers 48, 50 and 52 control I/O devices such as printers, workstations, keyboards, displays and communications. There are usually multiple disk drive controllers, each controlling multiple disk drive storage devices.
Die Daten im System 10 werden in Form von Datensät zen, bestehend aus 512 Byte großen Datenseiten und 8 Byte großen Nachrichtenköpfen, behandelt. In der bevorzugten Ausführungsform, einem IBM System/38, werden die Datensätze über den Kanal 18 vom Plattenspeicher in den Hauptspeicher 20 hinein und aus ihm heraus bewegt. Eine Hauptspeichersteuereinheit 60 steuert den Zugriff und den Seitenaustausch des Hauptspeichers 20. Eine gestrichelte Linie 62 zwischen dem Kanal 18 und der Hauptspeichersteuereinheit 60 zeigt den direkten Speicherzugriff auf den Hauptspeicher 20 durch die mit dem Kanal verbundenen I/O-Geräte an. Weitere Details der allgemeinen Betriebsweise des Systems 10 kann man in dem Buch IBM System/38 Technical Developments, International Business Machines Corporation, 1978, finden.The data in system 10 is handled in the form of records consisting of 512 byte data pages and 8 byte message headers. In the preferred embodiment, an IBM System/38, the records are moved from disk storage into and out of main memory 20 via channel 18. A main memory controller 60 controls access and page swapping of main memory 20. A dashed line 62 between channel 18 and main memory controller 60 indicates direct memory access to main memory 20 by the I/O devices connected to the channel. Further details of the general operation of system 10 can be found in the book IBM System/38 Technical Developments, International Business Machines Corporation, 1978.
Der Schutz von Daten auf den Plattenspeichergeräten 30 bis 38 wird durch Exklusiv-Oder-Verknüpfung der Datensätze auf jedem Gerät und Speichern der durch die Exklusiv-Oder-Verknüpfung erhaltenen Paritätsdatensätze auf einem der Speichergeräte bereitgestellt. In Fig. 2 ist jedes der Speichergeräte 30 bis 38 in Datenblöcke und Paritätsblöcke eingeteilt. Die Blocke stellen den physikalischen Raum auf den Speichergeräten dar. Da das System 10 eine Ausdehnung (ein fortlaufendes Stück zuweisbaren Plattenraumes) von bis zu 16 Megabyte Daten liefert, hat jeder Block bevorzugterweise eine Größe von 16 Megabyte.Protection of data on disk storage devices 30-38 is provided by exclusive-ORing the records on each device and storing the parity records obtained by the exclusive-ORing on one of the storage devices. In Figure 2, each of the storage devices 30-38 is divided into data blocks and parity blocks. The blocks represent the physical space on the storage devices. Since system 10 provides an extent (a continuous piece of allocable disk space) of up to 16 megabytes of data, each block is preferably 16 megabytes in size.
Die Blöcke 70, 73, 74, 76 und 78, jeder auf einem Speichergerät mit bevorzugterweise oem gleichen physikal in Adreßbereich, werden als Streifen betrachtet. In Fig. 2 werden 9 Streifen dargestellt. Jeder geschützte Streifen hat einen zugehörigen Paritätsblock, der das Ergebnis aus der Exklusiv-Oder-Verknüpfung des anderen Blockes in dem Streifen enthält. In dem ersten Streifen enthält Block 70 die Parität für die verbleibenden Blöcke 72, 74, 76 und 78. Ein Block 80 auf dem Speichergerät 32 enthält die Parität der verbliebenen Blöcke auf dem zweiten Streifen. Block 82 auf dem Speichergerät 34 enthält die Parität für den dritten Streifen. Die Blöcke 84 und 86 enthalten die Parität für den vierten beziehungsweise fünften Streifen. Die Paritätsblöcke, einschließlich der Blöcke 88, 90 und 92 für die Streifen 6, 7 und 8, sind über die Speichergeräte verteilt. Der 9. Streifen ist ein ungeschützter Bereich, der keinen zugehörigen Paritätsblock besitzt. Dieser wird zur Speicherung von Daten benutzt, die keinen besonderen Schutz vor Verlust benötigen.Blocks 70, 73, 74, 76 and 78, each on a storage device with preferably the same physical address range, are considered stripes. In Fig. 2, 9 stripes are shown. Each protected stripe has an associated parity block which contains the result of exclusive-oring the other block in the stripe. In the first stripe, block 70 contains the parity for the remaining blocks 72, 74, 76, and 78. A block 80 on storage device 32 contains the parity of the remaining blocks on the second stripe. Block 82 on storage device 34 contains the parity for the third stripe. Blocks 84 and 86 contain the parity for the fourth and fifth stripes, respectively. The parity blocks, including blocks 88, 90, and 92 for stripes 6, 7, and 8, are distributed throughout the storage devices. The 9th stripe is an unprotected area which has no associated parity block. This is used to store data which does not require special protection against loss.
Die Verteilung der Paritätsinformation stellt sicher, daß auf ein bestimmtes Speichergerät nicht viel öfter zugegriffen wird als auf die anderen Speichergeräte während des Schreibens der Paritätsdatensätze, die den Aktualisierungen der Datensätze auf den verschiedenen Streifen folgen. Eine Änderung der in einem Block gespeicherten Datensätze wird zu einer Änderung führen, die ebenfalls an dem Paritätsblock für den Streifen durchgeführt werden muß, der die geänderten Datensätze enthält. Da die Paritätsblöcke für die Streifen auf mehr als ein Speichergerät verteilt sind, wird sich die Paritätsaktualisierung nicht auf ein Gerät konzentrieren. Somit verteilt sich die I/O-Aktivität gleichmäßig über alle Speichergeräte.The distribution of parity information ensures that a particular storage device is not accessed much more often than the other storage devices during the writing of the parity records that follow the updates of the records on the various stripes. A change in the records stored in one block will result in a change that must also be made to the parity block for the stripe that contains the changed records. Since the parity blocks for the stripes are distributed across more than one storage device, the parity update will not be concentrated on one device. Thus, the I/O activity is evenly distributed across all storage devices.
In Fig. 3 enthält eine Einheitentabelle 310 Informationen für jede Speichereinheit, die an dem Paritätsschutz teilnimmt. Eine physikalische Adresse, die eine Einheitennummer und einen Sektor oder eine Seitennummer umfaßt, wird genutzt, um die Lage der benötigten Daten festzustellen. Die Einheitentabelle wird dann benutzt, um die mit 314, 316 und 318 gekennzeichneten Paritätssteuerungsblöcke identifizieren. Die Einheiten 1 - 8 gehören dem ersten Paritätssatz an, der dem Steuerungsblock 314 zugeordnet ist. Die Einheiten 9 - 13 gehören dem zweiten Paritätssatz an, der dem Steuerungsblock 316 zugeordnet ist, und die Einheiten N- 2 bis N gehören dem I. Paritätssatz an, der dem Steuerungsblock 318 zugeordnet ist.In Fig. 3, a unit table 310 contains information for each storage unit participating in parity protection. A physical address comprising a unit number and a sector or page number is used to determine the location of the required data. The unit table is then used to identify the parity control blocks labeled 314, 316 and 318. Units 1-8 belong to the first parity set associated with control block 314. Units 9 - 13 belong to the second parity set associated with control block 316, and units N- 2 to N belong to the first parity set associated with control block 318.
Jeder Eintrag in die Einheitentabelle zeigt auf einen Steuerungsblock, der mit dem Satz Speichergeräte verbunden ist, dem der Eintrag angehört. Die Steuerungsblöcke kennzeichnen, welche Einheit des Satzes den Paritätsblock für jeden Streifen enthält. Im Steuerungsblock 314 hat der Streifen, der die ersten 16 Megabyte Speicher umfaßt, seine Paritätsinformation in den ersten 16 Megabyte der Einheit Nummer 1 gespeichert. Die zweiten 16 Megabyte des Streifens, der die Einheiten 1 - 8 umfaßt, sind in den zweiten 16 Megabyte der Einheit Nummer 2 enthalten. Die Verschiebung des Paritätsblockes setzt sich umlaufend der Reihe nach mit den Einheiten 3 - 8 fort, wobei diese die Parität für die jeweils nächsten 6 Streifen besitzen. Der neunte Streifen des ersten Paritätssatzes hat seine Parität in dem neunten Block aus 16 Megabytes auf der Einheit Nummer 1 gespeichert. Der letzte Streifen, der auf Einheit J, eine der acht Einheiten im Satz, verschoben wurde, muß nicht die vollen 16 Megabyte enthalten, wobei dies davon abhängt, ob der adressierbare Speicher der Einheiten durch 16 Megabyte teilbar ist.Each entry in the unit table points to a control block associated with the set of storage devices to which the entry belongs. The control blocks identify which unit of the set contains the parity block for each stripe. In control block 314, the stripe containing the first 16 megabytes of storage has its parity information stored in the first 16 megabytes of unit number 1. The second 16 megabytes of the stripe containing units 1-8 are contained in the second 16 megabytes of unit number 2. The shifting of the parity block continues in a circular sequence with units 3-8 having the parity for the next 6 stripes. The ninth stripe of the first parity set has its parity stored in the ninth block of 16 megabytes on unit number 1. The last stripe moved to unit J, one of the eight units in the set, may not contain the full 16 megabytes, depending on whether the addressable memory of the units is divisible by 16 megabytes.
Der Nachrichtenkopf in jedem der Paritätssteuerungsblöcke beschreibt, welche Einheiten in dem Satz enthalten sind, und kennzeichnet einen Adreßbereich, der allen Einheiten gemeinsam ist, wobei dieser nicht durch eine Paritätsgruppe geschützt ist. Dadurch, daß man für jede Einheit einen gemeinsamen Bereich hat, der nicht geschützt ist, vereinfacht sich das Schema für den Paritätsschutz. Da die gleichen physikalischen Adressen auf jedem Speichergerät exklusiv-oder-verknüpft wurden, um die Paritätsinformation zu ermitteln, werden keine speziellen Tabellen benötigt, um die Informationen mit der Parität auf andere Weise als die in Pig. 3 gezeigte in Übereinstimmung zu bringen. Der gemeinsame ungeschützte Adreßbereich erfordert keine besondere Berücksichtigung, da die Identifizierung des Bereiches in dem Steuerungsblock erfolgt und für jede Einheit gleich ist.The header in each of the parity control blocks describes which units are included in the set and identifies an address range common to all units that is not protected by a parity group. Having a common range for each unit that is not protected simplifies the parity protection scheme. Since the same physical addresses on each storage device have been exclusive-or'd to determine the parity information, no special tables are needed to match the information with parity in a manner other than that shown in Fig. 3. The common unprotected address range does not require special consideration since the identification of the range is in the control block and is the same for each unit.
Der Paritätssteuerungsblock 316 korrespondiert mit dem Satz aus den Speichereinheiten 9 - 13 in Fig. 3. Diese fünf Einheiten kann man sich als die Speichereinheiten 30 - 38 in Fig. 2 vorstellen. Die Verschiebung der Paritätsgruppen auf die Speichereinheiten erfolgt umlaufend der Reihe nach. Alle aufeinanderfolgenden 16 Negabyte Speicher haben ihre Paritätsgruppen in aufeinanderfolgenden Speichergeräten gespeichert, wobei mit dem Gerät 30 oder der Einheit Nummer 9 in Pig. 3 begonnen wird. Die Einheit Nummer 9 enthält ebenfalls die Paritätsgruppe für den Bereich von 80 - 96 Megabyte in dem Streifen für die Speichereinheiten 9 - 13 (30 - 38). Der letzte Streifen in dem Satz hat seine Parität auf der K-ten Einheit gespeichert, wobei K die Einheit ist, bei der die Verschiebung der Paritätsblöcke endet, da es keine weiteren geschützten Streifen gibt.Parity control block 316 corresponds to the set of storage units 9-13 in Fig. 3. These five units can be thought of as storage units 30-38 in Fig. 2. The shifting of parity groups to the storage units occurs in a circular order. All consecutive 16-negabyte storage has its parity groups stored in consecutive storage devices, starting with device 30 or unit number 9 in Fig. 3. Unit number 9 also contains the parity group for the 80-96 megabyte range in the stripe for storage units 9-13 (30-38). The last stripe in the set has its parity stored on the Kth unit, where K is the unit at which the shifting of parity blocks ends, since there are no more protected stripes.
Der Steuerungsblock 318 korrespondiert mit dem Satz Speichereinheiten N-2 bis N in dem 1-ten Satz Speichereinheiten. Die letzte Einheit verschiebt einen Paritätsblock mit der Bezeichnung L und ist eine von drei Einheiten in dem Satz in Abhängigkeit von der Anzahl der Streifen in dem Satz. Der I-te Satz enthält die minimale Anzahl von Speichereinheiten, drei, die man für die Implementierung des Paritätsschutzes in Betracht ziehen sollte. Die Benutzung von zwei Einheiten wäre möglich, würde jedoch einer Spiegelung mit dem zusätzlichen Schritt einer Exklusiv-Oder-Verknüpfung entsprechen. Acht Einheiten in einem Satz wurden für die bevorzugte Ausführungsform infolge einer svstembedingten Notwendigkeit, die weiter unten diskutiert wird, als Maximum ausgewählt. Es können ohne den Verlust des Schutzes mehr als acht Einheiten eingesetzt werden.The control block 318 corresponds to the set of storage units N-2 through N in the 1st set of storage units. The last unit shifts a parity block labeled L and is one of three units in the set depending on the number of stripes in the set. The Ith set contains the minimum number of storage units, three, that should be considered for implementing parity protection. Using two units would be possible, but would amount to mirroring with the additional step of exclusive-oring. Eight units in a set was chosen as the maximum for the preferred embodiment due to a system requirement discussed below. More than eight units can be used without loss of protection.
Mit einer sehr großen Anzahl Einheiten in einem Satz würde die Rekonstruktion von verlorenen Daten bei Ausfall einer einzelnen Einheit eine längere Zeit beanspruchen, da jede Einheit gelesen werden müßte. Außerdem besteht eine höhere Wahrscheinlichkeit, daß mehr als eine Einheit auf einmal verloren gehen könnte. Wenn dies vorkommt, ist es nicht möglich, die Daten von irgendeiner der verlorenen Einheiten unter Nutzung der oben diskutierten einfachen Parität wieder herzustellen. Die Erfindung kann man als so umfassend angelegt betrachten, daß sie einen komplexeren Datenschutzcode einschließt, der ähnlich der Parität gespeichert werden kann und eine mehrfache Bitkorrektur für den Fall erlaubt, daß mehr als ein Speichergerät ausfällt. Ein Satz kann ebenfalls, wie im IBM TDB, 1981, Vol. 24, Nr. 2 Seiten 986 bis 987 beschrieben, mehrdimensional angeordnet werden, um die Wiederherstellung von Daten aus wenigstens zwei ausgefallenen Einheiten zu erlauben. Weitere Ausführungsformen verteilen die Paritätsinformationen basierend auf der Häufigkeit der Aktualisierung der Daten, damit sich die I/O-Aktivität gleichmäßig verteilt, anstatt die Parität selbst gleichmäßig zu verteilen.With a very large number of units in a set, if a single unit fails, reconstructing lost data would take a longer time because each unit would have to be read. There is also a higher probability that more than one unit could be lost at once. If When this occurs, it is not possible to recover the data from any of the lost units using the simple parity discussed above. The invention may be considered broad enough to include a more complex data protection code that may be stored similarly to parity and allows multiple bit correction in the event that more than one storage device fails. A set may also be arranged multi-dimensionally as described in IBM TDB, 1981, Vol. 24, No. 2 pages 986-987 to allow recovery of data from at least two failed units. Other embodiments distribute the parity information based on the frequency of data updates to evenly distribute I/O activity, rather than evenly distributing the parity itself.
Jeder Datensatz enthält eine Versionsnummer. Da es zu Aktualisierungen von mehreren Datensät zen, die von einem Paritätsdatensatz abgedeckt werden, kommen kann, enthält jeder Datensatz in einem Paritätsblock ebenfalls für jeden Datensatz in der Scheibe, die dieser umfaßt, eine korrespondierende Versionsanzeige. Eine Scheibe ist ein Satz aus Datensätzen und deren korrespondierendem Paritätsdatensatz. Die Versionsanzeigen werden nicht von dem Paritätsschutzschema abgedeckt. In Fig. 4 sind vier Datensätze, 410, 412, 414 und 416 dargestellt, wobei jeder einen Kopf mit einer Datensatzversionsnummer, gekennzeichnet mit 418, 420, 422 beziehungsweise 424, besitzt. Ein Paritätsdatensatz 426 enthält einen Kopf mit vier Versionsnummern, 438, 430, 432 und 434, die mit den Versionsnummern der Datensätze korrespondieren. Die Versionsnummern oder -anzeigen können jede beliebige Länge besitzen, die zu der Anzahl Bits paßt, die in den Datensatzköpfen verfügbar sind. Eine Länge von einem Bit wurde als Folge davon gewählt, daß keine weiteren Bits verfügbar waren. Jedesmal, wenn ein Datensatz sich ändert, wird dessen Versionsnummer erhöht. Die korrespondierenden Versionsnummern in dem Paritätsdatensatz werden ebenfalls erhört, so daß sie den gleichen Wert besitzen.Each record contains a version number. Since updates may occur to multiple records covered by a parity record, each record in a parity block also contains a corresponding version indicator for each record in the slice it covers. A slice is a set of records and their corresponding parity record. The version indicators are not covered by the parity protection scheme. Four records, 410, 412, 414 and 416, are shown in Fig. 4, each having a header with a record version number, designated 418, 420, 422 and 424, respectively. A parity record 426 contains a header with four version numbers, 438, 430, 432 and 434, corresponding to the version numbers of the records. The version numbers or indicators can be of any length that fits the number of bits available in the record headers. A length of one bit was chosen as a result of no more bits being available. Each time a record changes, its version number is incremented. The corresponding version numbers in the parity record are also incremented so that they have the same value.
Die Versionsnummern werden für die Überprüfung der Synchronisation der Paritätsdatensätze mit jedem Datensatz in der Scheibe für den Fall verlorener Daten genutzt. Wenn es zu Änderungen an einigen Datensät zen kommt, können die Datensätze auf den Plattenspeicher geschrieben werden, bevor oder nachdem die Paritätsdatensätze mit den Änderungsmasken aktualisiert wurden. Die Anderungsmasken werden für ihre Aufnahme in die Paritätsdatensätze in die Warteschlange aufgenommen. Das Verbinden einer Versionsnummer mit jedem Paritäts- und Datensatz führt zu der Notwendigkeit, daß die Aktualisierungen der Paritätsdatensätze für einen gegebenen Datensatz auf den Plattenspeicher in der gleichen Reihenfolge durchgeführt werden müssen, wie die Aktualisierungen der Datensätze. Anderenfalls würden die Versionsnummern nicht stimmen. Eine FIFO-Warteschlange hält die Anderungsmasken so, daß sie in die Paritätsdatensätze auf dem Massenspeicher in der Reihenfolge aufgenommen werden, in der die Änderungsmasken generiert wurden.The version numbers are used to check that the parity records are synchronized with each record on disk in case of lost data. If changes occur to some records, the records can be written to disk before or after the parity records are updated with the change masks. The change masks are queued for inclusion in the parity records. Associating a version number with each parity and data record results in the need for the parity record updates for a given record to disk to be made in the same order as the record updates. Otherwise the version numbers would be incorrect. A FIFO queue keeps the change masks in place to be included in the parity records on disk in the order in which the change masks were generated.
Spezielle Berücksichtigung wird den Versionsnummern infolge der begrenzten Verfügbarkeit von Bits in den Köpfen gewidmet. Für jeden Datensatz ist die Versionsnummer auf der ersten Bitposition des 6. Bytes der jeweiligen Datensätze gespeichert. Die zugehörigen Versionsnummern in dem Paritätsdatensatz sind in den ersten 4 Bitpositionen des 6. Bytes und den ersten 3 Bitpositionen des 8. Bytes des Kopfes enthalten. Auf die Bitpositionen für die Versionsnummern des Paritätsdatensatzkopfes wird Bezug genommen werden als Bits 1 - 7, entsprechend der oben beschriebenen Reihenfolge. Die Einheiten in einem Satz sind entsprechend ihrer Reihenfolge in dem Paritätssteuerungsblock von 1 - n numeriert. Die Versionsnummern sind in aufsteigender Reihenfolge, basierend auf der Einheitennummer, in den Köpfen der Paritätsdatensätze gespeichert, wobei die Paritätseinheit weggelassen wird. Wenn die dritte Einheit die Paritätseinheit ist, sind die Versionsnummern, die mit den ersten zwei Einheiten korrespondieren, auf den Bitpositionen 1 und 2 gespeichert. Die Versionsnummer, die mit der vierten Einheit korrespondiert, ist auf Bitposition 3 gespeichert. Die Versionsnummer der n-ten Einheit befindet sich in der Position n-1 im Kopf des Paritätsdatensatzes. Das Speichern der Versionsnummern auf diese Weise erlaubt dem größtmöglichen Satz, die Speichergrenzen vorzugeben. Mit zusätzlichem Speicher kann die Größe des Satzes als eine Funktion von anderen Aspekten des Systems optimiert werden. Die Positionierung der Versionsnummern in dem Paritätskopf kann ebenfalls eine einfache Beziehung zwischen Einheitennummer und Bitposition besitzen.Special consideration is given to version numbers due to the limited availability of bits in the headers. For each record, the version number is stored in the first bit position of the 6th byte of the respective record. The corresponding version numbers in the parity record are contained in the first 4 bit positions of the 6th byte and the first 3 bit positions of the 8th byte of the header. The bit positions for the version numbers of the parity record header will be referred to as bits 1 - 7, according to the order described above. The units in a record are numbered 1 - n according to their order in the parity control block. The version numbers are stored in ascending order based on the unit number in the headers of the parity records, omitting the parity unit. If the third unit is the parity unit, the version numbers corresponding to the first two units are stored in bit positions 1 and 2. The version number corresponding to the fourth unit is stored in bit position 3. The version number of the nth unit is located at position n-1 in the header of the parity record. Storing the version numbers in this way allows the largest possible set to dictate the memory boundaries. With additional memory, the size of the set can be optimized as a function of other aspects of the system. The positioning of the version numbers in the parity header can also have a simple relationship between unit number and bit position.
Da jeder Datensatz eine Versionsnummer besitzt, die unabhängig von jedem anderen Datensatz ist, wird keine Durchnummerierung für die Aktualisierung unterschiedlicher Datensätze benötigt, die von dem gleichen Paritätsdatensatz abgedeckt werden. Die Übertragung der Datensätze in den und aus dem Hauptspeicher kann auf anderen, die Verarbeitungsgeschwindigkeit verbessernden Betrachtungen des Systemdurchsatzes basieren. Die getrennten Versionsnummern schalten ebenfalls die Notwendigkeit aus, die Paritätsdatensätze vom Massenspeicher zu lesen, bevor eine Schreiboperation für einen Datensatz geplant und eine Anforderung auf Aktualisierung der Parität in die Warteschlange eingereiht wird.Since each record has a version number that is independent of any other record, no sequencing is needed for updating different records covered by the same parity record. The transfer of records to and from main memory can be based on other system throughput considerations that improve processing speed. The separate version numbers also eliminate the need to read the parity records from storage before scheduling a write to a record and queuing a parity update request.
Um die durch eine Versionsnummer beanspruchte Speichermenge zu begrenzen, ist es erlaubt, vom größten auf den kleinsten Wert ohne Fehler umzuschalten. Dies ermöglicht es, daß die Versionsnummer neu genutzt werden kann. Wenn eine Ein-Bit-Versionsnummer benutzt wird, schaltet diese von 1 auf 0. Somit gibt es zwei Werte, die sie annehmen kann. Eine Versionsnummer mit einer großeren Anzahl Bits erlaubt mehr Werte. Da die Aktualisierungen der Datensätze und der Paritätsdatensätze asynchron erfolgen, wird eine Aktualisierung auf einen Datensatz gestoppt, wenn die aktualisierte Versionsnummer mit einei bestehenden Versionsnummer verwechselt werden könnte. Derartige Verwechslungen kann es geben, wenn die gleiche Versionsnummer wie die Versionsnummer, die mit der Aktualisierung verbunden ist, in dem Datensatz oder Paritätsdatensatz auf dem Massenspeicher existiert. Der Zeitrahmen, der berücksichtigt worden muß, wird zu dem Zeitpunkt beendet, zu dem eine neue Anforderung auf Aktulalisierung der Parität in die FIFO-Warteschlange eingereiht wird. Sowohl der Datensatz als auch der Paritätsdatensatz müssen aktualisiert worden sein, bevor eine Anforderung auf Aktualisierung abgeschlossen werden kann.To limit the amount of memory used by a version number, it is allowed to switch from the largest to the smallest value without error. This allows the version number to be reused. When a one-bit version number is used, it switches from 1 to 0. Thus, there are two values it can take. A version number with a larger number of bits allows more values. Since the updates of the records and parity records are asynchronous, an update to a record is stopped if the updated version number could be confused with an existing version number. Such confusion can occur if the same version number as the version number associated with the update exists in the record or parity record on the mass storage. The time frame that must be taken into account ends at the time when a new request to update the parity is placed in the FIFO queue. Both the record and the parity record must have been updated before an update request can be completed.
Die Versionsnummern, die auf der Platte bestehen können, bevor eine neue Anforderung auf Aktualisierung abgeschlossen wird, enthalten alle Werte für frühere Anforderungen auf Aktualisierung, die sich in der Warteschlange befinden, und zusätzlich den Wert, der dem ersten (ältesten) Anforderungselement in der Warteschlange vorangeht. Wenn eine Aktualisierungsanforderung nicht aus der Warteschlange entfernt wird, bevor sie abgeschlossen wird, ist es für eine neue Aktualisierung nur notwendig zu warten, bis es keine weiteren Anforderungen Warteschlange für den gleichen Datensatz gibt, und die erhöhte Versionsnummer für den neuen Datensatz mit der Versionsnummer, die dem ersten sich noch in der Warteschlange befindenden Anforderungselement vorangeht, übereinstimmt.The version numbers that may exist on disk before a new update request completes include all values for previous update requests that are in the queue, plus the value preceding the first (oldest) request item in the queue. If an update request is not removed from the queue before it completes, a new update only needs to wait until there are no more requests queued for the same record and the incremented version number for the new record matches the version number preceding the first request item still in the queue.
Der Leistungsbedarf für das Suchen in der Warteschlange, bevor eine Aktualisierung geplant werden kann, ist nicht beträchtlich, solange die Anzahl der Aktualisierungsanfragen in der Schlange klein bleibt. Eine ziemlich schnelle Zugriffszeit, des Speichers der für die Warteschlange genutzt wird, verringert ebenfalls den Leistungsbedarf. Der Hauptspeicher stellt für die Warteschlange einen ausreichenden Speicherbereich bereit. Das Kleinhalten der Anzahl der Aktualisierungsanforderungen in der Warteschlange ist ebenfalls wichtig, um sicherzustellen, daß keine Anforderungen eine übermäßige Wartezeit hat.The performance requirement for searching the queue before an update can be scheduled is not significant as long as the number of update requests in the queue remains small. A fairly fast access time to the memory used for the queue also reduces the performance requirement. Main memory provides sufficient storage space for the queue. Keeping the number of update requests in the queue small is also important to ensure that no request has an excessive wait time.
Wenn, wie in der bevorzugten Ausführungsform, die Versionsnummern als Ein-Bit-Elags implementiert sind, ist es nur notwendig, die Warteschlange nach irgendeiner früheren Aktualisierungsanforderung in dem gleichen Datensatz zu durchsuchen, um zu bestimmen, ob die neue Aktualisierung warten muß. Es gibt keine Notwendigkeit, die Werte der Versionsnummern zu überprüfen, da eine neue Anforderung immer abwarten muß, ob es für den gleichen Datensatz eine unvollständige Anforderung in der Warteschlange gibt.If, as in the preferred embodiment, the version numbers are implemented as one-bit elags, it is only necessary to search the queue for any previous update request in the same record to determine whether the new update must wait. There is no need to check the values of the version numbers, since a new request must always wait to see if there is a new update for the same record there is an incomplete request in the queue.
In der bevorzugten Ausführungsform beinhalten die Datensatzköpfe sieben ungenutzte Bits, die für die Impiementierung der gegenwärtigen Erfindung verfügbar sind. Dies setzt eine Grenze für die Anzahl der Einheiten, die an einem Satz teilhaben können. Nur sieben Versionsnummern können in einen Paritätsdatensatz aufgenommen werden, so daß nur bis zu acht Gesamteinheiten an einem Satz zum Paritätsschutz teilhaben können. Wie vorher betrachtet, können viel mehr oder auch nur drei Einheiten wirksam aus der gegenwärtigen Erfindung einen Nutzen ziehen.In the preferred embodiment, the record headers include seven unused bits available for implementation of the present invention. This sets a limit on the number of units that can participate in a set. Only seven version numbers can be included in a parity record, so only up to eight total units can participate in a set for parity protection. As previously considered, many more or as few as three units can effectively benefit from the present invention.
Die Konfigurierung des Systems für den Paritätsschutz von Daten wird durch den Nutzer bei 510 in dem Flußdiagramm von Fig. 5 eingeleitet. Ein Vorbereitungsauftrag an den Prozessor 12 erzeugt die Paritätssteuerungsblöcke 314 - 318 in Block 512 des Flußdiagramms. Die Aufgabe nutzt Informationen in einer Konfigurationseinheitentabelle 312, die die mit dem System verbundenen Speichereinheiten kennzeichnet. Ein Speichergerät, wie etwa das IBM 3370, kann mehr als eine unabhängige Einheit besitzen, wie etwa einen Arm, auf den unabhängig zugegriffen werden kann, jedoch wird nur eine Einheit aus dem Speichergerät für einen bestimmten Satz ausgewählt. Ein weiteres Kriterium für die Auswahl der Einheiten bringt den Einsatz von so vielen Plattensteuereinheiten in einem Satz wie möglich mit sich. Dieses Kriterium wird eingesetzt, damit ein Ausfallzustand nicht zwei Einheiten in einem Satz beeinflußt. Der Vorbereitungsauftrag maximiert ebenfalls die nutzbare Kapazität durch Maximierung der Anzahl der Einheiten in einem Satz.Configuring the system for parity protection of data is initiated by the user at 510 in the flow chart of Figure 5. A prepare job to processor 12 generates parity control blocks 314-318 in block 512 of the flow chart. The job uses information in a configuration unit table 312 that identifies the storage units connected to the system. A storage device such as the IBM 3370 may have more than one independent unit, such as an arm, that can be accessed independently, but only one unit from the storage device is selected for a particular set. Another criteria for selecting units involves using as many disk control units in a set as possible. This criterion is used so that a failure condition does not affect two units in a set. The preparation order also maximizes usable capacity by maximizing the number of units in a set.
Nachdem die Steuerungsblöcke erzeugt wurden, werden die Streifenfelder in den Steuerungsblöcken bei 514 erzeugt. Die Streifenfelder kennzeichnen, wie vorher festgestellt wurde, die Paritätsblöcke der Reihe nach umlaufend in jedem Satz. Die Streifenfoldor wordou gebildet, um anzuzeigen, welche Einheiten die Paritätsblöcke für aufeinanderfolgende, aus 16-Megabyte-Blöcken jeder Einheit bestehende Streifen beinhalten. Der Nutzer kann ebenfalls eine Größe für benötigten ungeschützten Speicher festlegen. Eine Festlegung des Adreßbereiches des ungeschützten Speichers wird in den Kopf des Steuerungsblockes eingegeben. Der Vorbereitungsauftrag wird aus dem ungeschützten Streifen keinen Block als Paritätsblock festlegen, so daß der gesamte ungeschützte Block für Datensätze verfügbar sein wird.After the control blocks are created, the stripe fields are created in the control blocks at 514. The stripe fields, as previously stated, identify the parity blocks in sequence in each set. The stripe fields are formed to indicate which units the parity blocks are for consecutive 16-megabyte blocks. each unit. The user can also specify a size of unprotected memory required. A specification of the address range of the unprotected memory is entered in the header of the control block. The preparation job will not designate any block from the unprotected stripe as a parity block, so the entire unprotected block will be available for data records.
Als nächstes schreibt der Vorbereitungsauftrag die Steuerungsblöcke bei 516 auf mehr als eine Mitgliedseinheit von jedem Satz, mit dem die Steuerungsblöcke korrespondieren. Die Steuerungsblöcke werden während der Wiederherstellung benutzt, um die Mitglieder eines Satzes zu kennzeichnen. Sie müssen somit ohne Wiederherstellung der Parität verfügbar sein. Sie wurden auf mehr als eine Mitgliedseinheit von jedem Satz für den Fall geschrieben, daß eine der Mitgliedseinheiten ausfällt, die diese Steuerungsblöcke enthält. In dem Fall, daß das Schutzschema gegen den Ausfall von mehr als einer Einheit schützt, werden die Steuerungsblöcke auf wenigstens eine Einheit mehr geschrieben, als die Anzahl der Einheiten ist, die wiederhergestellt werden können. In der bevorzugten Ausführungsform werden sie zu jedem Mitglied des Satzes geschrieben, so daß die Einheiten nicht durchsucht werden müssen, um zu bestimmen, welche Einheit den Steuerungsblock enthält. Jetzt, wo die Sätze gekennzeichnet und die Steuerungsblöcke erzeugt wurden, macht Block 518 des Vorbereitungsauftrags die Paritätsblöcke einschließlich der Versionsnummern gültig. In der bevorzugten Ausführungsform wird dies durch Nullsetzen aller Daten auf allen Einheiten erreicht. Da gerade Parität für den Paritätsschutz benutzt wird, ist das Ergebnis eine gültige Parität für die Gesamtheit der Daten. Die Versionsnummern sind zum Start ebenfalls auf null gesetzt.Next, the prepare job writes the control blocks at 516 to more than one member unit of each set to which the control blocks correspond. The control blocks are used during recovery to identify the members of a set. They must thus be available without parity recovery. They have been written to more than one member unit of each set in the event that one of the member units containing these control blocks fails. In the event that the protection scheme protects against the failure of more than one unit, the control blocks are written to at least one more unit than the number of units that can be recovered. In the preferred embodiment, they are written to every member of the set so that the units do not have to be searched to determine which unit contains the control block. Now that the sets have been marked and the control blocks have been created, block 518 of the prepare job makes the parity blocks valid, including the version numbers. In the preferred embodiment, this is accomplished by zeroing all data on all units. Since even parity is used for parity protection, the result is valid parity for all of the data. The version numbers are also zeroed to start with.
Das System wird dann bei 520 auf Standardweise durch Auslösen des Ladens eines ersten Programmes initialisiert.The system is then initialized at 520 in the standard manner by triggering the loading of a first program.
Es ist ebenfalls möglich, ein Mitglied zu einem Satz hinzuzufügen, das nitht die maximale Anzahl von Einheiten besitzt. Das neue Mitglied wird dann vorzugsweise auf Null gesetzt und der Einheitentabelle hinzugefügt. Die Paritätsblöcke des Satzes werden dann neu verteilt, um die neue Einheit einzubeziehen. Der Steuerungsblock für den Satz wird anschließend überarbeitet, und die Einheiten, die die zu der neuen Einheit übertragenen Paritätsblöcke enthielten, haben ihre Adreßbereiche, die die Paritätsblöcke enthielten, auf Null gesetzt, wodurch die Paritätsgruppe für diesen Streifen gültig gemacht wurde.It is also possible to add a member to a set that does not have the maximum number of units. The new member is then preferably zeroed and added to the unit table. The parity blocks of the set are then redistributed to include the new unit. The control block for the set is then revised and the units that contained the parity blocks transferred to the new unit have their address ranges containing the parity blocks zeroed, making the parity group valid for that stripe.
In der bevorzugten Ausführungsform wird der Steuerungsblock zeitweilig überarbeitet, um eine Änderung in dem Satz anzuzeigen, zu der es kommt, wenn eine neue Einheit hinzugefügt wird. Die zeitweilige Änderung wird in dem Fall durchgeführt, wenn es während der Umverteilung des Paritätsblockes zu einem Fehler kommt. Die Paritätsblöcke eines bestehenden Satzes werden dann neu verteilt, um die neue Einheit einzubeziehen. Die Einheiten, die Paritätsblöcke enthielten, die zu der neuen Einheit übertragen wurden, haben ihre Adreßbereiche, die die Paritätsblöcke enthielten, auf Null gesetzt. Wenn die Umverteilung vollständig ist, werden die Änderungen an dem Kontrollblock dauerhaft festgelegt.In the preferred embodiment, the control block is temporarily revised to reflect a change in the set that occurs when a new unit is added. The temporary change is made in the event that an error occurs during the redistribution of the parity block. The parity blocks of an existing set are then redistributed to include the new unit. The units that contained parity blocks transferred to the new unit have their address ranges containing the parity blocks zeroed. When the redistribution is complete, the changes to the control block are made permanent.
Es ist ebenfalls möglich, eine neue Einheit ohne die Übertragung von Paritätsblöcken hinzuzufügen. Das Nichtübertragen der Paritätsblöcke würde es verhindern, daß die Erhöhung der Zugriffsrate des Satzes, die durch das Hinzufügen einer neuen Einheit möglich wurde, genutzt werden kann. Die neue Einheit würde jedoch durch die bestehenden Paritätsblöcke geschützt sein.It is also possible to add a new unit without transferring parity blocks. Failure to transfer parity blocks would prevent the increase in the set's access rate made possible by adding a new unit from being exploited. The new unit would, however, be protected by the existing parity blocks.
In Fig. 6 werden das Ändern eines Datensatzes und dessen zugehörigen Paritätsdatensatzes gezeigt. Eine derartige Änderung kann durch eine Person, die Daten in einer Datenbank ändert oder durch einen Maschinenprozeß, oer eine Änderung aus einer Anzahl von Gründen anfordert, aufgerufen werden. Bei 610 liest ein Nutzerauftrag, der auf dem Prozossor 12 läuft, den zu ändernden Datensatz. Der Nutzerauftrag erstellt zunächst eine zusätzliche Kopie des Datensatzes bei 612 und führt führt die Änderungen an dem Datensatz auf die herkömmliche Weise durch.In Fig. 6, the modification of a record and its associated parity record is shown. Such a modification may be invoked by a person changing data in a database or by a machine process requesting a modification for a number of reasons. At 610, a user job running on the processor 12 reads the record to be modified. The user job first makes an additional copy of the record at 612 and makes the modifications. the data set in the conventional way.
Der Nutzerauftrag erzeugt dann eine Änderungsmaske bei 614 durch Exklusiv-Oder-Verknüpfung des geänderten Datensatzes mit der zusätzlichen Kopie des Datensatzes. Das erste Bit der geänderten Daten wurde mit dem ersten Bit der zusätzlichen Kopie exklusivoder-verknüpft, um das erste Bit der Änderungsmaske zu bilden. Jedes folgende Bit der geänderten Daten wird auf die gleiche Weise mit den zugehörigen Bits der zusätzlichen Kopie exklusivoder-verknüpft, um weitere Bits der Änderungsmaske zu bilden. Eine bereits bestehende Maschinenanweisung führt die Exklusiv-Oder-Verknüpfung der Köpfe des geänderten Datensatzes und des kopierten Datensatzes aus. Zwei weitere Maschinenanweisungen führen die Exklusiv-Oder-Verknüpfung der Seiten in 256-Byte- Blöcken aus. Die Positionen im Kopf, die mit den Versionsnummern der Paritätsdatensätze korrespondieren, werden dann in der Änderungsmaske auf Null gesetzt, so daß sie nicht die Versionsnummern des Paritätsdatensatzes beeinflussen.The user job then creates a change mask at 614 by exclusive-oring the changed record with the additional copy of the record. The first bit of the changed data has been exclusive-ored with the first bit of the additional copy to form the first bit of the change mask. Each subsequent bit of the changed data is exclusive-ored in the same way with the corresponding bits of the additional copy to form additional bits of the change mask. An existing machine instruction performs exclusive-oring of the headers of the changed record and the copied record. Two additional machine instructions perform exclusive-oring of the pages in 256-byte blocks. The positions in the header that correspond to the version numbers of the parity records are then set to zero in the change mask so that they do not affect the version numbers of the parity record.
Die Versionsnummern in dem Datensatzkopf werden dann durch den Nutzerauftrag im Block 616 erhöht. Ein Nutzerauftrag 617 bestimmt dann durch Suchen der Einheitentabelle 312, welche Einheit den passenden Paritätsdatensatz enthält. Dieses Durchsuchen basiert auf der Einheitennummer aus der physikalischen Adresse der neuen Daten. Die Einheitentabelle zeigt an, welcher der Steuerungsblöcke 314 - 318 einzusetzen ist, um die Einheit festzustellen, die den Paritätsdatensatz für den jeweiligen Datensatz enthält. Wiederum wird die Adresse des neuen Datensatzes genutzt, um den interessierenden Streifen zu kennzeichnen. Wenn einmal die Einheit, die den Paritätsdatensatz für den Streifen enthält, gekennzeichnet ist, reiht Auftrag 617 eine Aktualisierungsanforderung, die die Datensatzadresse sind die Änderungsmaske enthält, in eine Warteschlange 624 for die jeweilige Einheit ein. Die Aktualisierungsanforderung kennzeichnet ebenfalls den Datensatz, der noch nicht geschrieben wurde. Bevor die Aufgabe 617 die Aktualisierungsanfordernng in die Warteschlange 624 einreiht, durchsucht er die Warteschlange 624, um sicherzustellen, daß es nicht zu Verwechslungen mit Versionsnummern kommt, so wie es vorher beschrieben wurde. Wenn eine Verwechslung möglich ist, wartet der Nutzerauftrag, bis es zu keiner Verwechslung vor der Verarbeitung mehr kommen kann.The version numbers in the record header are then incremented by the user job in block 616. A user job 617 then determines which unit contains the appropriate parity record by searching the unit table 312. This search is based on the unit number from the physical address of the new data. The unit table indicates which of the control blocks 314-318 to use to determine the unit containing the parity record for the particular record. Again, the address of the new record is used to identify the stripe of interest. Once the unit containing the parity record for the stripe is identified, job 617 queues an update request containing the record address and the change mask in a queue 624 for the particular unit. The update request also identifies the record that has not yet been written. Before task 617 places the update request in queue 624, it searches queue 624 to ensure that there is no confusion with version numbers, as previously described. If confusion is possible, the user job waits until there is no longer any chance of confusion before processing.
Von der Adresse des Paritätsdatensatzes weiß man, daß diese gleich der Adresse der neuen Daten ist, es sei denn, sie befindet sich auf einer anderen Einheit. Eine Schreibanforderung für die neuen Daten wurde bei 618 in eine Warteschlange 620 eingereiht. Wenn ein Datensatz auf einen Speicher 622 geschrieben wird, wird ein Hinweis auf diese Tatsache bei 625 zu der Aktualisierungsanforderung in der Warteschlange 624 gesandt. Dann wird im Ablauf zurückgesprungen, um auf die nächste Änderung des Datensatzes zu warten.The address of the parity record is known to be equal to the address of the new data unless it is on a different device. A write request for the new data has been queued 620 at 618. When a record is written to memory 622, an indication of this fact is sent to the update request in queue 624 at 625. Then, the flow loops back to wait for the next change to the record.
Eine Aufgabe zur Aktualisierung der Parität beginnt bei 627, indem die nächste Paritätsaktualisierungsanfrage aus der Schlange 624 genommen wird. Wenn einmal der Paritätsdatensatz, der durch die Aktualisierungsanfrage gekennzeichnet wurde, bei 626 gelesen wurde, wird die Änderungsmaske bei 628 mit dem Paritätsdatensatz exklusiv-oder-verknüpft. Die Versionsnummern werden durch die Exklusiv-Oder-Verknüpfung nicht geändert, da die Änderungsmaske in den zu den Versionsnummern gehörigen Bitpositionen Nullen enthält. Die Eklusiv-Oder-Verknüpfung wird durchgeführt, indem der gleiche Maschinenbefehl für die Exklusiv-Oder-Verknüpfung wie beim Block 614 des Nutzerauftrages genutzt wird. Die Versionsnummer des Paritätsdatensatzes, die zu dem Datensatz gehört, wird dann in 630 erhöht und eine Schreibanforderung für den Paritätsdatensatz bei 632 erteilt. Der Auftrag zur Paritätsaktualisierung erhält dann bei 627 die nächste Anforderung zur Paritätsaktualisierung.A parity update task begins at 627 by taking the next parity update request from the queue 624. Once the parity record identified by the update request has been read at 626, the change mask is exclusive-ored with the parity record at 628. The version numbers are not changed by the exclusive-oring because the change mask contains zeros in the bit positions corresponding to the version numbers. The exclusive-oring is performed using the same machine instruction for the exclusive-oring as in block 614 of the user task. The parity record version number associated with the record is then incremented at 630 and a write request for the parity record is issued at 632. The parity update job then receives the next parity update request at 627.
Eine Warteschlange 634 speichert die Schreibanforderungen der Paritätsdatensätze für die Speichereinheiten. In diesem Fall wird eine Speichereinheit 636 für die jeweilige Schreibanforderung gekennzeichnet. Die Speichereinheit 636 unterscheidet sich von der Einheit 622, da die Daten und die Paritätsdatensätze nicht auf die gleiche Einheit geschrieben werden. Wenn das Schreiben des Paritätsdatensatzes abgeschlossen wurde, wird die Aktualisierungsanforderung in der Warteschlange 624 bei 637 benachrichtigt. Wenn sowohl das Datenschreiben als auch das Paritätsschreiben abgeschlossen wurden, wird der Eintrag aus der Warteschlange 624 entfernt, was wiederum anzeigt, daß es nicht länger die Möglichkeit einer Verwechslung mit den Versionsnummern gibt.A queue 634 stores the write requests of the parity records for the storage units. In this case, a storage unit 636 is marked for the respective write request. The storage unit 636 differs from the unit 622 because the data and the parity records not be written to the same device. When the parity record write has been completed, the update request in queue 624 is notified at 637. When both the data write and the parity write have been completed, the entry is removed from queue 624, again indicating that there is no longer any possibility of confusion with the version numbers.
Die Wiederherstellung wird durchgeführt, wenn entweder ein einzelner Datensatzlesefehler während des Normalbetriebs des Systems auftritt, oder wenn die gesamte Einheit ausfällt.Recovery is performed when either a single record read error occurs during normal system operation or when the entire unit fails.
Wenn eine Einheit ausfällt, werden die verlorenen Daten auf der Einheit aus den verbliebenen Einheiten des Satzes auf die Weise wiederhergestellt, wie es in den Steuerungsblöcken, die auf mehr als einem Mitglied im Satz gespeichert sind, angezeigt wird. Die ausgefallene Einheit wird ersetzt oder repariert. Die Daten für die neue Einheit werden dann aus den verbliebenen Mitgliedern des Satzes Datensatz für Datensatz wiederhergestellt. Ein Paritätsdatensatz wird einfach durch Lesen der Datensätze in dem Satz und Regenerierung der Parität wiederhergestellt. Die Versionsnummern in den Paritätsdatensätzen werden gleich den zugehörigen Versionsnummern in den Datensätzen gesetzt.If a unit fails, the lost data on the unit is reconstructed from the remaining units of the set in the manner indicated in the control blocks stored on more than one member of the set. The failed unit is replaced or repaired. The data for the new unit is then reconstructed from the remaining members of the set, record by record. A parity record is reconstructed simply by reading the records in the set and regenerating the parity. The version numbers in the parity records are set equal to the corresponding version numbers in the records.
Wenn ein Datensatz regeneriert wird, wird zuerst eine Überprüfung an jedem der Datensätze durchgeführt, um zu bestimmen, ob ihre Versionsnummern zu den Versionsnummern in dem Paritätsdatensatz für diesen Streifen passen. Wenn irgendeine der Versionsnummern in diesem Streifen nicht paßt, wird eine Kennung über verlorene Daten in Kopf des verlorenen Datensatzes geschrieben. Wenn die Versionsnummern passen, werden die Datensätze in dem Streifen einzeln nacheinander mit dem neuen Datensatz exklusiv-oder-verknüpft. Die jeweilige Versionsnummer wird dann aus dem Paritätsdatensatz in den neuen Datensatzkopf kopiert.When a record is regenerated, a check is first performed on each of the records to determine if their version numbers match the version numbers in the parity record for that stripe. If any of the version numbers in that stripe do not match, a lost data flag is written to the header of the lost record. If the version numbers match, the records in the stripe are exclusive-ored one by one with the new record. The respective version number is then copied from the parity record to the new record header.
Wenn ein Fehler entweder in dem Datensatz oder in dem Paritätsdatensatz festgestellt wird, werden die Bestandteile des fehlerhaften Datensatzes mit dem gleichen Mechanismus, wie er oben für die Wiederherstellung einer ganzen Einheit beschrieben wurde, rekonstruiert. In diesem Fall ist es notwendig, während die Wiederherstellung im Gange ist, alle Aktivitäten zur Änderung auf die Scheibe zu beschränken, die den fehlerhaften Datensatz enthält.If an error occurs in either the record or the parity record is detected, the components of the corrupted record are reconstructed using the same mechanism as described above for the reconstruction of a whole unit. In this case, while the reconstruction is in progress, it is necessary to restrict all modification activities to the disk containing the corrupted record.
Im Anschluß an die Wiederherstellung wird der normale Betrieb des Systems fortgesetzt, wobei die einzigen verlorenen Daten diejenigen sind, für die eine Aktualisierung der Daten oder Parität durchgeführt wurde und eine Einheit ausfiel, bevor der zugehörige Paritätsdatensatz oder Datensatz geschrieben werden konnte. Somit wurde die große Mehrheit der Daten in der ausgefallenen Einheit ohne überflüssigen Mehraufwand oder Spiegelung wiederhergestellt. Durch die Verteilung der Paritätsinformation über die Mitglieder des Satzes wird im Gegensatz zum Einbinden eines Gerätes mit den Paritätsinformationen der Parallelbetrieb von Speichergeräten genutzt, um maximale Zugriffsraten zu erhalten.Following recovery, normal operation of the system continues, with the only data lost being that for which a data or parity update was performed and a unit failed before the associated parity record or data set could be written. Thus, the vast majority of the data in the failed unit was recovered without unnecessary overhead or mirroring. By distributing the parity information across the members of the set, as opposed to mounting a device with the parity information, parallel operation of storage devices is exploited to obtain maximum access rates.
Obwohl die Erfindung unter Bezug auf eine oder mehrere bevorzugte Ausführungsformen und unter Bezug auf ein bestimmtes System beschrieben wurde, wird der Fachmann feststellen, daß die Erfindung viele Formen und Gestalten annehmen kann. Die Datensatzgrößen sind im keiner Weise auf die hier diskutierten Werte begrenzt, und auch die Speichereinheiten sind nicht auf Plattenlaufwerke beachränkt. Die Tatsache, daß nur identische Geräte in einem Satz genutzt werden, ist nur eine Frage der Auswahl im Hinblick auf eine Vereinfachung beim Entwurf. Viele Kombinationen aus Speichereinheiten in Sätzen und die Verteilung der Datenschutz- oder Paritätsblöcke werden vom Rahmen der Erfindung, so wie sie oben beschrieben und beansprucht wird, umfaßt.Although the invention has been described with reference to one or more preferred embodiments and with reference to a particular system, those skilled in the art will recognize that the invention can take many forms and shapes. The data set sizes are in no way limited to those discussed here, nor are the storage devices limited to disk drives. The fact that only identical devices are used in a set is merely a matter of choice for simplicity in design. Many combinations of storage devices in sets and the distribution of the data protection or parity blocks are within the scope of the invention as described and claimed above.
Claims (18)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06873249 US4761785B1 (en) | 1986-06-12 | 1986-06-12 | Parity spreading to enhance storage access |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3750790D1 DE3750790D1 (en) | 1995-01-12 |
DE3750790T2 true DE3750790T2 (en) | 1995-05-24 |
Family
ID=25361257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3750790T Expired - Lifetime DE3750790T2 (en) | 1986-06-12 | 1987-05-26 | Parity distribution for improved memory access. |
Country Status (5)
Country | Link |
---|---|
US (1) | US4761785B1 (en) |
EP (1) | EP0249091B1 (en) |
JP (1) | JPS62293355A (en) |
CA (1) | CA1270333A (en) |
DE (1) | DE3750790T2 (en) |
Families Citing this family (314)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4949326A (en) * | 1986-12-10 | 1990-08-14 | Matsushita Electric Industrial Co., Ltd. | Optical information recording and reproducing system using optical disks having an error correction function |
USRE34100E (en) * | 1987-01-12 | 1992-10-13 | Seagate Technology, Inc. | Data error correction system |
US4942579A (en) * | 1987-06-02 | 1990-07-17 | Cab-Tek, Inc. | High-speed, high-capacity, fault-tolerant error-correcting storage system |
US5257367A (en) * | 1987-06-02 | 1993-10-26 | Cab-Tek, Inc. | Data storage system with asynchronous host operating system communication link |
US4870643A (en) * | 1987-11-06 | 1989-09-26 | Micropolis Corporation | Parallel drive array storage system |
US4993030A (en) * | 1988-04-22 | 1991-02-12 | Amdahl Corporation | File system for a plurality of storage classes |
US4914656A (en) * | 1988-06-28 | 1990-04-03 | Storage Technology Corporation | Disk drive memory |
US5077736A (en) * | 1988-06-28 | 1991-12-31 | Storage Technology Corporation | Disk drive memory |
US4989206A (en) * | 1988-06-28 | 1991-01-29 | Storage Technology Corporation | Disk drive memory |
US5283791A (en) * | 1988-08-02 | 1994-02-01 | Cray Research Systems, Inc. | Error recovery method and apparatus for high performance disk drives |
US5218689A (en) * | 1988-08-16 | 1993-06-08 | Cray Research, Inc. | Single disk emulation interface for an array of asynchronously operating disk drives |
JP2718708B2 (en) * | 1988-08-26 | 1998-02-25 | 株式会社日立製作所 | Control method for storage control system, storage control system, and storage control device |
US5148432A (en) * | 1988-11-14 | 1992-09-15 | Array Technology Corporation | Arrayed disk drive system and method |
US5007053A (en) * | 1988-11-30 | 1991-04-09 | International Business Machines Corporation | Method and apparatus for checksum address generation in a fail-safe modular memory |
US5008886A (en) * | 1989-01-27 | 1991-04-16 | Digital Equipment Corporation | Read-modify-write operation |
US5185746A (en) * | 1989-04-14 | 1993-02-09 | Mitsubishi Denki Kabushiki Kaisha | Optical recording system with error correction and data recording distributed across multiple disk drives |
US5146574A (en) * | 1989-06-27 | 1992-09-08 | Sf2 Corporation | Method and circuit for programmable selecting a variable sequence of element using write-back |
US5072378A (en) * | 1989-12-18 | 1991-12-10 | Storage Technology Corporation | Direct access storage device with independently stored parity |
US5402428A (en) * | 1989-12-25 | 1995-03-28 | Hitachi, Ltd. | Array disk subsystem |
JPH03216751A (en) * | 1990-01-05 | 1991-09-24 | Internatl Business Mach Corp <Ibm> | Method of transferring file |
US5315708A (en) * | 1990-02-28 | 1994-05-24 | Micro Technology, Inc. | Method and apparatus for transferring data through a staging memory |
US5233618A (en) * | 1990-03-02 | 1993-08-03 | Micro Technology, Inc. | Data correcting applicable to redundant arrays of independent disks |
US5134619A (en) * | 1990-04-06 | 1992-07-28 | Sf2 Corporation | Failure-tolerant mass storage system |
US5140592A (en) * | 1990-03-02 | 1992-08-18 | Sf2 Corporation | Disk array system |
US5212785A (en) * | 1990-04-06 | 1993-05-18 | Micro Technology, Inc. | Apparatus and method for controlling data flow between a computer and memory devices |
US5195100A (en) * | 1990-03-02 | 1993-03-16 | Micro Technology, Inc. | Non-volatile memory storage of write operation identifier in data sotrage device |
US5388243A (en) * | 1990-03-09 | 1995-02-07 | Mti Technology Corporation | Multi-sort mass storage device announcing its active paths without deactivating its ports in a network architecture |
US5129082A (en) * | 1990-03-27 | 1992-07-07 | Sun Microsystems, Inc. | Method and apparatus for searching database component files to retrieve information from modified files |
US5325497A (en) * | 1990-03-29 | 1994-06-28 | Micro Technology, Inc. | Method and apparatus for assigning signatures to identify members of a set of mass of storage devices |
US5202856A (en) * | 1990-04-05 | 1993-04-13 | Micro Technology, Inc. | Method and apparatus for simultaneous, interleaved access of multiple memories by multiple ports |
US5233692A (en) * | 1990-04-06 | 1993-08-03 | Micro Technology, Inc. | Enhanced interface permitting multiple-byte parallel transfers of control information and data on a small computer system interface (SCSI) communication bus and a mass storage system incorporating the enhanced interface |
US5956524A (en) * | 1990-04-06 | 1999-09-21 | Micro Technology Inc. | System and method for dynamic alignment of associated portions of a code word from a plurality of asynchronous sources |
US5414818A (en) * | 1990-04-06 | 1995-05-09 | Mti Technology Corporation | Method and apparatus for controlling reselection of a bus by overriding a prioritization protocol |
US5214778A (en) * | 1990-04-06 | 1993-05-25 | Micro Technology, Inc. | Resource management in a multiple resource system |
US5130992A (en) * | 1990-04-16 | 1992-07-14 | International Business Machines Corporaiton | File-based redundant parity protection in a parallel computing system |
US5263145A (en) * | 1990-05-24 | 1993-11-16 | International Business Machines Corporation | Method and means for accessing DASD arrays with tuned data transfer rate and concurrency |
JPH0731582B2 (en) * | 1990-06-21 | 1995-04-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | Method and apparatus for recovering parity protected data |
US5220569A (en) * | 1990-07-09 | 1993-06-15 | Seagate Technology, Inc. | Disk array with error type indication and selection of error correction method |
US5265098A (en) * | 1990-08-03 | 1993-11-23 | International Business Machines Corporation | Method and means for managing DASD array accesses when operating in degraded mode |
US5375128A (en) * | 1990-10-18 | 1994-12-20 | Ibm Corporation (International Business Machines Corporation) | Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders |
EP0481735A3 (en) * | 1990-10-19 | 1993-01-13 | Array Technology Corporation | Address protection circuit |
US5208813A (en) * | 1990-10-23 | 1993-05-04 | Array Technology Corporation | On-line reconstruction of a failed redundant array system |
AU8683991A (en) * | 1990-11-09 | 1992-05-14 | Array Technology Corporation | Logical partitioning of a redundant array storage system |
US5235601A (en) * | 1990-12-21 | 1993-08-10 | Array Technology Corporation | On-line restoration of redundancy information in a redundant array system |
US5274799A (en) * | 1991-01-04 | 1993-12-28 | Array Technology Corporation | Storage device array architecture with copyback cache |
US6874101B2 (en) * | 1991-01-31 | 2005-03-29 | Hitachi, Ltd. | Storage unit subsystem |
JP3409859B2 (en) * | 1991-01-31 | 2003-05-26 | 株式会社日立製作所 | Control method of control device |
US5239640A (en) * | 1991-02-01 | 1993-08-24 | International Business Machines Corporation | Data storage system and method including data and checksum write staging storage |
US5303244A (en) * | 1991-03-01 | 1994-04-12 | Teradata | Fault tolerant disk drive matrix |
US5257362A (en) * | 1991-03-08 | 1993-10-26 | International Business Machines Corporation | Method and means for ensuring single pass small read/write access to variable length records stored on selected DASDs in a DASD array |
US5345565A (en) * | 1991-03-13 | 1994-09-06 | Ncr Corporation | Multiple configuration data path architecture for a disk array controller |
US5506979A (en) * | 1991-04-02 | 1996-04-09 | International Business Machines Corporation | Method and means for execution of commands accessing variable length records stored on fixed block formatted DASDS of an N+2 DASD synchronous array |
JP2743606B2 (en) * | 1991-04-11 | 1998-04-22 | 三菱電機株式会社 | Array type recording device |
JP3187525B2 (en) * | 1991-05-17 | 2001-07-11 | ヒュンダイ エレクトロニクス アメリカ | Bus connection device |
US5278838A (en) * | 1991-06-18 | 1994-01-11 | Ibm Corp. | Recovery from errors in a redundant array of disk drives |
US5333143A (en) * | 1991-08-29 | 1994-07-26 | International Business Machines Corporation | Method and means for b-adjacent coding and rebuilding data from up to two unavailable DASDS in a DASD array |
US5499337A (en) | 1991-09-27 | 1996-03-12 | Emc Corporation | Storage device array architecture with solid-state redundancy unit |
US5636358A (en) * | 1991-09-27 | 1997-06-03 | Emc Corporation | Method and apparatus for transferring data in a storage device including a dual-port buffer |
US5237658A (en) * | 1991-10-01 | 1993-08-17 | Tandem Computers Incorporated | Linear and orthogonal expansion of array storage in multiprocessor computing systems |
US5379417A (en) * | 1991-11-25 | 1995-01-03 | Tandem Computers Incorporated | System and method for ensuring write data integrity in a redundant array data storage system |
EP0619896A1 (en) * | 1991-12-27 | 1994-10-19 | Compaq Computer Corporation | Method for performing disk array operations using a nonuniform stripe size mapping scheme |
US5333305A (en) * | 1991-12-27 | 1994-07-26 | Compaq Computer Corporation | Method for improving partial stripe write performance in disk array subsystems |
EP0551009B1 (en) * | 1992-01-08 | 2001-06-13 | Emc Corporation | Method for synchronizing reserved areas in a redundant storage array |
US5341381A (en) * | 1992-01-21 | 1994-08-23 | Tandem Computers, Incorporated | Redundant array parity caching system |
EP0559488B1 (en) * | 1992-03-06 | 1998-08-19 | Data General Corporation | Handling data in a system having a processor for controlling access to a plurality of data storage disks |
US5371743A (en) * | 1992-03-06 | 1994-12-06 | Data General Corporation | On-line module replacement in a multiple module data processing system |
US5305326A (en) * | 1992-03-06 | 1994-04-19 | Data General Corporation | High availability disk arrays |
AU653670B2 (en) * | 1992-03-10 | 1994-10-06 | Data General Corporation | Improvements for high availability disk arrays |
US5469566A (en) * | 1992-03-12 | 1995-11-21 | Emc Corporation | Flexible parity generation circuit for intermittently generating a parity for a plurality of data channels in a redundant array of storage units |
WO1993018456A1 (en) * | 1992-03-13 | 1993-09-16 | Emc Corporation | Multiple controller sharing in a redundant storage array |
US5740465A (en) * | 1992-04-08 | 1998-04-14 | Hitachi, Ltd. | Array disk controller for grouping host commands into a single virtual host command |
US5418921A (en) * | 1992-05-05 | 1995-05-23 | International Business Machines Corporation | Method and means for fast writing data to LRU cached based DASD arrays under diverse fault tolerant modes |
US5708668A (en) * | 1992-05-06 | 1998-01-13 | International Business Machines Corporation | Method and apparatus for operating an array of storage devices |
JP2888401B2 (en) * | 1992-08-03 | 1999-05-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | Synchronization method for redundant disk drive arrays |
US5913926A (en) * | 1992-08-20 | 1999-06-22 | Farrington Investments Ltd. | Expandable modular data storage system having parity storage capability |
US6640235B1 (en) | 1992-08-20 | 2003-10-28 | Intel Corporation | Expandable mass disk drive storage system |
JP3183719B2 (en) * | 1992-08-26 | 2001-07-09 | 三菱電機株式会社 | Array type recording device |
JP3181398B2 (en) * | 1992-10-06 | 2001-07-03 | 三菱電機株式会社 | Array type recording device |
EP0600137A1 (en) * | 1992-11-30 | 1994-06-08 | International Business Machines Corporation | Method and apparatus for correcting errors in a memory |
JP3176157B2 (en) * | 1992-12-28 | 2001-06-11 | 株式会社日立製作所 | Disk array device and data updating method thereof |
US5579474A (en) | 1992-12-28 | 1996-11-26 | Hitachi, Ltd. | Disk array system and its control method |
JP2743756B2 (en) * | 1993-02-03 | 1998-04-22 | 日本電気株式会社 | Semiconductor disk device |
JP3258117B2 (en) * | 1993-03-08 | 2002-02-18 | 株式会社日立製作所 | Storage subsystem |
US5649162A (en) * | 1993-05-24 | 1997-07-15 | Micron Electronics, Inc. | Local bus interface |
US5867640A (en) * | 1993-06-01 | 1999-02-02 | Mti Technology Corp. | Apparatus and method for improving write-throughput in a redundant array of mass storage devices |
DE69431186T2 (en) * | 1993-06-03 | 2003-05-08 | Network Appliance Inc | Method and file system for assigning file blocks to storage space in a RAID disk system |
US6138126A (en) * | 1995-05-31 | 2000-10-24 | Network Appliance, Inc. | Method for allocating files in a file system integrated with a raid disk sub-system |
EP0702815B1 (en) * | 1993-06-03 | 2000-08-23 | Network Appliance, Inc. | Write anywhere file-system layout |
US6604118B2 (en) | 1998-07-31 | 2003-08-05 | Network Appliance, Inc. | File system image transfer |
US5963962A (en) * | 1995-05-31 | 1999-10-05 | Network Appliance, Inc. | Write anywhere file-system layout |
US7174352B2 (en) | 1993-06-03 | 2007-02-06 | Network Appliance, Inc. | File system image transfer |
WO1994029795A1 (en) * | 1993-06-04 | 1994-12-22 | Network Appliance Corporation | A method for providing parity in a raid sub-system using a non-volatile memory |
US5555389A (en) * | 1993-07-07 | 1996-09-10 | Hitachi, Ltd. | Storage controller for performing dump processing |
US5987622A (en) * | 1993-12-10 | 1999-11-16 | Tm Patents, Lp | Parallel computer system including parallel storage subsystem including facility for correction of data in the event of failure of a storage device in parallel storage subsystem |
US5396620A (en) * | 1993-12-21 | 1995-03-07 | Storage Technology Corporation | Method for writing specific values last into data storage groups containing redundancy |
US20030088611A1 (en) * | 1994-01-19 | 2003-05-08 | Mti Technology Corporation | Systems and methods for dynamic alignment of associated portions of a code word from a plurality of asynchronous sources |
US5911150A (en) * | 1994-01-25 | 1999-06-08 | Data General Corporation | Data storage tape back-up for data processing systems using a single driver interface unit |
US5446855A (en) * | 1994-02-07 | 1995-08-29 | Buslogic, Inc. | System and method for disk array data transfer |
US5537567A (en) * | 1994-03-14 | 1996-07-16 | International Business Machines Corporation | Parity block configuration in an array of storage devices |
JP2981711B2 (en) * | 1994-06-16 | 1999-11-22 | 日本アイ・ビー・エム株式会社 | Disk storage device |
US5467361A (en) * | 1994-06-20 | 1995-11-14 | International Business Machines Corporation | Method and system for separate data and media maintenance within direct access storage devices |
US5657439A (en) * | 1994-08-23 | 1997-08-12 | International Business Machines Corporation | Distributed subsystem sparing |
US5412668A (en) * | 1994-09-22 | 1995-05-02 | International Business Machines Corporation | Parity striping feature for optical disks |
US5623595A (en) * | 1994-09-26 | 1997-04-22 | Oracle Corporation | Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system |
GB2293912A (en) * | 1994-10-05 | 1996-04-10 | Ibm | Disk storage device for disk array |
US5497457A (en) * | 1994-10-17 | 1996-03-05 | International Business Machines Corporation | Redundant arrays of independent libraries of dismountable media with parity logging |
US5488701A (en) * | 1994-11-17 | 1996-01-30 | International Business Machines Corporation | In log sparing for log structured arrays |
US5574882A (en) * | 1995-03-03 | 1996-11-12 | International Business Machines Corporation | System and method for identifying inconsistent parity in an array of storage |
US5848230A (en) | 1995-05-25 | 1998-12-08 | Tandem Computers Incorporated | Continuously available computer memory systems |
EP0831484A1 (en) * | 1995-06-08 | 1998-03-25 | Ibm Japan Ltd. | Data reconstruction method and data storage system |
US5657468A (en) * | 1995-08-17 | 1997-08-12 | Ambex Technologies, Inc. | Method and apparatus for improving performance in a reduntant array of independent disks |
US5875456A (en) * | 1995-08-17 | 1999-02-23 | Nstor Corporation | Storage device array and methods for striping and unstriping data and for adding and removing disks online to/from a raid storage array |
US6098128A (en) | 1995-09-18 | 2000-08-01 | Cyberstorage Systems Corporation | Universal storage management system |
US5799200A (en) * | 1995-09-28 | 1998-08-25 | Emc Corporation | Power failure responsive apparatus and method having a shadow dram, a flash ROM, an auxiliary battery, and a controller |
US5941994A (en) * | 1995-12-22 | 1999-08-24 | Lsi Logic Corporation | Technique for sharing hot spare drives among multiple subsystems |
US5838892A (en) * | 1995-12-29 | 1998-11-17 | Emc Corporation | Method and apparatus for calculating an error detecting code block in a disk drive controller |
US6055577A (en) * | 1996-05-06 | 2000-04-25 | Oracle Corporation | System for granting bandwidth for real time processes and assigning bandwidth for non-real time processes while being forced to periodically re-arbitrate for new assigned bandwidth |
US5790774A (en) * | 1996-05-21 | 1998-08-04 | Storage Computer Corporation | Data storage system with dedicated allocation of parity storage and parity reads and writes only on operations requiring parity information |
US5856989A (en) * | 1996-08-13 | 1999-01-05 | Hewlett-Packard Company | Method and apparatus for parity block generation |
US6041423A (en) * | 1996-11-08 | 2000-03-21 | Oracle Corporation | Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment |
US6161165A (en) * | 1996-11-14 | 2000-12-12 | Emc Corporation | High performance data path with XOR on the fly |
KR100223186B1 (en) * | 1997-01-29 | 1999-10-15 | 윤종용 | Data recording method in dvd-ram |
JPH10254642A (en) * | 1997-03-14 | 1998-09-25 | Hitachi Ltd | Storage device system |
JP4499193B2 (en) * | 1997-04-07 | 2010-07-07 | ソニー株式会社 | Recording / reproducing apparatus and recording / reproducing method |
US5974503A (en) * | 1997-04-25 | 1999-10-26 | Emc Corporation | Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names |
US5968182A (en) * | 1997-05-12 | 1999-10-19 | International Business Machines Corporation | Method and means for utilizing device long busy response for resolving detected anomalies at the lowest level in a hierarchical, demand/response storage management subsystem |
US5991894A (en) * | 1997-06-06 | 1999-11-23 | The Chinese University Of Hong Kong | Progressive redundancy transmission |
US6016552A (en) * | 1997-06-06 | 2000-01-18 | The Chinese University Of Hong Kong | Object striping focusing on data object |
US6112277A (en) * | 1997-09-25 | 2000-08-29 | International Business Machines Corporation | Method and means for reducing device contention by random accessing and partial track staging of records according to a first DASD format but device mapped according to a second DASD format |
KR100564664B1 (en) | 1997-10-08 | 2006-03-29 | 시게이트 테크놀로지 엘엘씨 | Hybrid data storage and reconstruction system and method for a data storage device |
US6112255A (en) * | 1997-11-13 | 2000-08-29 | International Business Machines Corporation | Method and means for managing disk drive level logic and buffer modified access paths for enhanced raid array data rebuild and write update operations |
US6101624A (en) * | 1998-01-21 | 2000-08-08 | International Business Machines Corporation | Method and apparatus for detecting and correcting anomalies in field-programmable gate arrays using CRCs for anomaly detection and parity for anomaly correction |
US6457130B2 (en) | 1998-03-03 | 2002-09-24 | Network Appliance, Inc. | File access control in a multi-protocol file server |
US6317844B1 (en) | 1998-03-10 | 2001-11-13 | Network Appliance, Inc. | File server storage arrangement |
DE19811035A1 (en) * | 1998-03-13 | 1999-09-16 | Grau Software Gmbh | Data storage method for data sequences |
US6219751B1 (en) | 1998-04-28 | 2001-04-17 | International Business Machines Corporation | Device level coordination of access operations among multiple raid control units |
US6704837B2 (en) | 1998-06-29 | 2004-03-09 | International Business Machines Corporation | Method and apparatus for increasing RAID write performance by maintaining a full track write counter |
US6427212B1 (en) | 1998-11-13 | 2002-07-30 | Tricord Systems, Inc. | Data fault tolerance software apparatus and method |
US6343984B1 (en) | 1998-11-30 | 2002-02-05 | Network Appliance, Inc. | Laminar flow duct cooling system |
US6449731B1 (en) | 1999-03-03 | 2002-09-10 | Tricord Systems, Inc. | Self-healing computer system storage |
US6725392B1 (en) | 1999-03-03 | 2004-04-20 | Adaptec, Inc. | Controller fault recovery system for a distributed file system |
US6530036B1 (en) | 1999-08-17 | 2003-03-04 | Tricord Systems, Inc. | Self-healing computer system storage |
US6970450B1 (en) * | 1999-10-29 | 2005-11-29 | Array Telecom Corporation | System, method and computer program product for point-to-point bandwidth conservation in an IP network |
JP2001166887A (en) * | 1999-12-08 | 2001-06-22 | Sony Corp | Data recording and reproducing device and data recording and reproducing method |
US7194504B2 (en) * | 2000-02-18 | 2007-03-20 | Avamar Technologies, Inc. | System and method for representing and maintaining redundant data sets utilizing DNA transmission and transcription techniques |
US7062648B2 (en) * | 2000-02-18 | 2006-06-13 | Avamar Technologies, Inc. | System and method for redundant array network storage |
US6826711B2 (en) | 2000-02-18 | 2004-11-30 | Avamar Technologies, Inc. | System and method for data protection with multidimensional parity |
US6704730B2 (en) | 2000-02-18 | 2004-03-09 | Avamar Technologies, Inc. | Hash file system and method for use in a commonality factoring system |
US7509420B2 (en) | 2000-02-18 | 2009-03-24 | Emc Corporation | System and method for intelligent, globally distributed network storage |
US6820088B1 (en) * | 2000-04-10 | 2004-11-16 | Research In Motion Limited | System and method for synchronizing data records between multiple databases |
US6636879B1 (en) | 2000-08-18 | 2003-10-21 | Network Appliance, Inc. | Space allocation in a write anywhere file system |
US6728922B1 (en) | 2000-08-18 | 2004-04-27 | Network Appliance, Inc. | Dynamic data space |
US7072916B1 (en) | 2000-08-18 | 2006-07-04 | Network Appliance, Inc. | Instant snapshot |
US6865650B1 (en) | 2000-09-29 | 2005-03-08 | Emc Corporation | System and method for hierarchical data storage |
US6507890B1 (en) | 2000-09-29 | 2003-01-14 | Emc Corporation | System and method for expanding a log structure in a disk array |
US6611852B1 (en) | 2000-09-29 | 2003-08-26 | Emc Corporation | System and method for cleaning a log structure |
US6654912B1 (en) | 2000-10-04 | 2003-11-25 | Network Appliance, Inc. | Recovery of file system data in file servers mirrored file system volumes |
US6952797B1 (en) | 2000-10-25 | 2005-10-04 | Andy Kahn | Block-appended checksums |
US6810398B2 (en) | 2000-11-06 | 2004-10-26 | Avamar Technologies, Inc. | System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences |
US6650601B1 (en) | 2001-04-26 | 2003-11-18 | International Business Machines Corporation | Hard disk drive picking device and method |
US6600703B1 (en) | 2001-04-26 | 2003-07-29 | International Business Machines Corporation | Magazine for a plurality of removable hard disk drives |
US6512962B2 (en) | 2001-04-26 | 2003-01-28 | International Business Machines Corporation | Cabling picker in a library of stationary memory devices |
US6941260B2 (en) * | 2001-04-26 | 2005-09-06 | International Business Machines Corporation | Method and apparatus for emulating a fiber channel port |
US6754768B2 (en) | 2001-04-26 | 2004-06-22 | International Business Machines Corporation | Library of hard disk drives with transparent emulating interface |
US6871263B2 (en) | 2001-08-28 | 2005-03-22 | Sedna Patent Services, Llc | Method and apparatus for striping data onto a plurality of disk drives |
US7346831B1 (en) | 2001-11-13 | 2008-03-18 | Network Appliance, Inc. | Parity assignment technique for parity declustering in a parity array of a storage system |
US6851082B1 (en) | 2001-11-13 | 2005-02-01 | Network Appliance, Inc. | Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array |
US6978283B1 (en) | 2001-12-21 | 2005-12-20 | Network Appliance, Inc. | File system defragmentation technique via write allocation |
US7640484B2 (en) | 2001-12-28 | 2009-12-29 | Netapp, Inc. | Triple parity technique for enabling efficient recovery from triple failures in a storage array |
US7073115B2 (en) | 2001-12-28 | 2006-07-04 | Network Appliance, Inc. | Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups |
US6993701B2 (en) * | 2001-12-28 | 2006-01-31 | Network Appliance, Inc. | Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array |
US7613984B2 (en) * | 2001-12-28 | 2009-11-03 | Netapp, Inc. | System and method for symmetric triple parity for failing storage devices |
US8402346B2 (en) * | 2001-12-28 | 2013-03-19 | Netapp, Inc. | N-way parity technique for enabling recovery from up to N storage device failures |
US7007220B2 (en) * | 2002-03-01 | 2006-02-28 | Broadlogic Network Technologies, Inc. | Error correction coding across multiple channels in content distribution systems |
US7080278B1 (en) | 2002-03-08 | 2006-07-18 | Network Appliance, Inc. | Technique for correcting multiple storage device failures in a storage array |
US6993539B2 (en) | 2002-03-19 | 2006-01-31 | Network Appliance, Inc. | System and method for determining changes in two snapshots and for transmitting changes to destination snapshot |
US7254813B2 (en) * | 2002-03-21 | 2007-08-07 | Network Appliance, Inc. | Method and apparatus for resource allocation in a raid system |
US7539991B2 (en) | 2002-03-21 | 2009-05-26 | Netapp, Inc. | Method and apparatus for decomposing I/O tasks in a raid system |
US7437727B2 (en) * | 2002-03-21 | 2008-10-14 | Network Appliance, Inc. | Method and apparatus for runtime resource deadlock avoidance in a raid system |
US7200715B2 (en) * | 2002-03-21 | 2007-04-03 | Network Appliance, Inc. | Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes |
US6976146B1 (en) | 2002-05-21 | 2005-12-13 | Network Appliance, Inc. | System and method for emulating block appended checksums on storage devices by sector stealing |
US7024586B2 (en) * | 2002-06-24 | 2006-04-04 | Network Appliance, Inc. | Using file system information in raid data reconstruction and migration |
US7873700B2 (en) * | 2002-08-09 | 2011-01-18 | Netapp, Inc. | Multi-protocol storage appliance that provides integrated support for file and block access protocols |
US7340486B1 (en) * | 2002-10-10 | 2008-03-04 | Network Appliance, Inc. | System and method for file system snapshot of a virtual logical disk |
US7085953B1 (en) | 2002-11-01 | 2006-08-01 | International Business Machines Corporation | Method and means for tolerating multiple dependent or arbitrary double disk failures in a disk array |
US7809693B2 (en) * | 2003-02-10 | 2010-10-05 | Netapp, Inc. | System and method for restoring data on demand for instant volume restoration |
US7185144B2 (en) * | 2003-11-24 | 2007-02-27 | Network Appliance, Inc. | Semi-static distribution technique |
US7424637B1 (en) | 2003-03-21 | 2008-09-09 | Networks Appliance, Inc. | Technique for managing addition of disks to a volume of a storage system |
US7664913B2 (en) * | 2003-03-21 | 2010-02-16 | Netapp, Inc. | Query-based spares management technique |
US7143235B1 (en) | 2003-03-21 | 2006-11-28 | Network Appliance, Inc. | Proposed configuration management behaviors in a raid subsystem |
US7111147B1 (en) * | 2003-03-21 | 2006-09-19 | Network Appliance, Inc. | Location-independent RAID group virtual block management |
US7328364B1 (en) | 2003-03-21 | 2008-02-05 | Network Appliance, Inc. | Technique for coherent suspension of I/O operations in a RAID subsystem |
US7171606B2 (en) * | 2003-03-25 | 2007-01-30 | Wegener Communications, Inc. | Software download control system, apparatus and method |
US7275179B1 (en) | 2003-04-24 | 2007-09-25 | Network Appliance, Inc. | System and method for reducing unrecoverable media errors in a disk subsystem |
US7437523B1 (en) | 2003-04-25 | 2008-10-14 | Network Appliance, Inc. | System and method for on-the-fly file folding in a replicated storage system |
US7174476B2 (en) * | 2003-04-28 | 2007-02-06 | Lsi Logic Corporation | Methods and structure for improved fault tolerance during initialization of a RAID logical unit |
US20040250028A1 (en) * | 2003-06-09 | 2004-12-09 | Daniels Rodger D. | Method and apparatus for data version checking |
US7206411B2 (en) | 2003-06-25 | 2007-04-17 | Wegener Communications, Inc. | Rapid decryption of data by key synchronization and indexing |
US7146461B1 (en) | 2003-07-01 | 2006-12-05 | Veritas Operating Corporation | Automated recovery from data corruption of data volumes in parity RAID storage systems |
US7047379B2 (en) * | 2003-07-11 | 2006-05-16 | International Business Machines Corporation | Autonomic link optimization through elimination of unnecessary transfers |
US7328305B2 (en) * | 2003-11-03 | 2008-02-05 | Network Appliance, Inc. | Dynamic parity distribution technique |
US7721062B1 (en) | 2003-11-10 | 2010-05-18 | Netapp, Inc. | Method for detecting leaked buffer writes across file system consistency points |
US7783611B1 (en) | 2003-11-10 | 2010-08-24 | Netapp, Inc. | System and method for managing file metadata during consistency points |
US7401093B1 (en) | 2003-11-10 | 2008-07-15 | Network Appliance, Inc. | System and method for managing file data during consistency points |
US7428691B2 (en) * | 2003-11-12 | 2008-09-23 | Norman Ken Ouchi | Data recovery from multiple failed data blocks and storage units |
US7263629B2 (en) * | 2003-11-24 | 2007-08-28 | Network Appliance, Inc. | Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array |
US7366837B2 (en) * | 2003-11-24 | 2008-04-29 | Network Appliance, Inc. | Data placement technique for striping data containers across volumes of a storage system cluster |
US7647451B1 (en) | 2003-11-24 | 2010-01-12 | Netapp, Inc. | Data placement technique for striping data containers across volumes of a storage system cluster |
EP1695220B1 (en) | 2003-12-19 | 2013-02-20 | Network Appliance, Inc. | System and method for supporting asynchronous data replication with very short update intervals |
US7478101B1 (en) | 2003-12-23 | 2009-01-13 | Networks Appliance, Inc. | System-independent data format in a mirrored storage system environment and method for using the same |
WO2005065368A2 (en) * | 2003-12-29 | 2005-07-21 | Sherwood Information Partners, Inc. | System and method for reduced vibration interaction in a multiple-hard-disk-drive enclosure |
US8041888B2 (en) * | 2004-02-05 | 2011-10-18 | Netapp, Inc. | System and method for LUN cloning |
US7430571B2 (en) * | 2004-04-30 | 2008-09-30 | Network Appliance, Inc. | Extension of write anywhere file layout write allocation |
US7409511B2 (en) * | 2004-04-30 | 2008-08-05 | Network Appliance, Inc. | Cloning technique for efficiently creating a copy of a volume in a storage system |
US7409494B2 (en) * | 2004-04-30 | 2008-08-05 | Network Appliance, Inc. | Extension of write anywhere file system layout |
US7334095B1 (en) | 2004-04-30 | 2008-02-19 | Network Appliance, Inc. | Writable clone of read-only volume |
US7334094B2 (en) * | 2004-04-30 | 2008-02-19 | Network Appliance, Inc. | Online clone volume splitting technique |
US7509329B1 (en) | 2004-06-01 | 2009-03-24 | Network Appliance, Inc. | Technique for accelerating file deletion by preloading indirect blocks |
US7519628B1 (en) | 2004-06-01 | 2009-04-14 | Network Appliance, Inc. | Technique for accelerating log replay with partial cache flush |
US8726129B1 (en) * | 2004-07-23 | 2014-05-13 | Hewlett-Packard Development Company, L.P. | Methods of writing and recovering erasure coded data |
US20060075281A1 (en) * | 2004-09-27 | 2006-04-06 | Kimmel Jeffrey S | Use of application-level context information to detect corrupted data in a storage system |
US7243207B1 (en) | 2004-09-27 | 2007-07-10 | Network Appliance, Inc. | Technique for translating a pure virtual file system data stream into a hybrid virtual volume |
US7194595B1 (en) | 2004-09-27 | 2007-03-20 | Network Appliance, Inc. | Technique for translating a hybrid virtual volume file system into a pure virtual file system data stream |
US7260678B1 (en) | 2004-10-13 | 2007-08-21 | Network Appliance, Inc. | System and method for determining disk ownership model |
US7603532B2 (en) | 2004-10-15 | 2009-10-13 | Netapp, Inc. | System and method for reclaiming unused space from a thinly provisioned data container |
US7730277B1 (en) | 2004-10-25 | 2010-06-01 | Netapp, Inc. | System and method for using pvbn placeholders in a flexible volume of a storage system |
US7636744B1 (en) | 2004-11-17 | 2009-12-22 | Netapp, Inc. | System and method for flexible space reservations in a file system supporting persistent consistency point images |
US7523286B2 (en) * | 2004-11-19 | 2009-04-21 | Network Appliance, Inc. | System and method for real-time balancing of user workload across multiple storage systems with shared back end storage |
US7707165B1 (en) | 2004-12-09 | 2010-04-27 | Netapp, Inc. | System and method for managing data versions in a file system |
US7506111B1 (en) | 2004-12-20 | 2009-03-17 | Network Appliance, Inc. | System and method for determining a number of overwitten blocks between data containers |
US8180855B2 (en) * | 2005-01-27 | 2012-05-15 | Netapp, Inc. | Coordinated shared storage architecture |
US8019842B1 (en) | 2005-01-27 | 2011-09-13 | Netapp, Inc. | System and method for distributing enclosure services data to coordinate shared storage |
US7424497B1 (en) | 2005-01-27 | 2008-09-09 | Network Appliance, Inc. | Technique for accelerating the creation of a point in time prepresentation of a virtual file system |
US7398460B1 (en) | 2005-01-31 | 2008-07-08 | Network Appliance, Inc. | Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array |
US7574464B2 (en) * | 2005-02-14 | 2009-08-11 | Netapp, Inc. | System and method for enabling a storage system to support multiple volume formats simultaneously |
US7757056B1 (en) | 2005-03-16 | 2010-07-13 | Netapp, Inc. | System and method for efficiently calculating storage required to split a clone volume |
WO2006116183A1 (en) * | 2005-04-25 | 2006-11-02 | Network Appliance, Inc. | Architecture for supporting sparse volumes |
ATE512412T1 (en) * | 2005-04-25 | 2011-06-15 | Network Appliance Inc | SYSTEM AND METHOD FOR CAPACING NETWORK FILE SYSTEMS |
US7617370B2 (en) | 2005-04-29 | 2009-11-10 | Netapp, Inc. | Data allocation within a storage system architecture |
US7468117B2 (en) * | 2005-04-29 | 2008-12-23 | Kimberly-Clark Worldwide, Inc. | Method of transferring a wet tissue web to a three-dimensional fabric |
US7370261B2 (en) * | 2005-05-09 | 2008-05-06 | International Business Machines Corporation | Convolution-encoded raid with trellis-decode-rebuild |
US7401253B2 (en) * | 2005-05-09 | 2008-07-15 | International Business Machines Corporation | Convolution-encoded data storage on a redundant array of independent devices |
US7634760B1 (en) | 2005-05-23 | 2009-12-15 | Netapp, Inc. | System and method for remote execution of a debugging utility using a remote management module |
US7739318B2 (en) * | 2005-06-20 | 2010-06-15 | Netapp, Inc. | System and method for maintaining mappings from data containers to their parent directories |
US7653682B2 (en) * | 2005-07-22 | 2010-01-26 | Netapp, Inc. | Client failure fencing mechanism for fencing network file system data in a host-cluster environment |
US7516285B1 (en) | 2005-07-22 | 2009-04-07 | Network Appliance, Inc. | Server side API for fencing cluster hosts via export access rights |
US7650366B1 (en) | 2005-09-09 | 2010-01-19 | Netapp, Inc. | System and method for generating a crash consistent persistent consistency point image set |
US20070088917A1 (en) * | 2005-10-14 | 2007-04-19 | Ranaweera Samantha L | System and method for creating and maintaining a logical serial attached SCSI communication channel among a plurality of storage systems |
US7467276B1 (en) | 2005-10-25 | 2008-12-16 | Network Appliance, Inc. | System and method for automatic root volume creation |
US7376796B2 (en) * | 2005-11-01 | 2008-05-20 | Network Appliance, Inc. | Lightweight coherency control protocol for clustered storage system |
US7653829B2 (en) * | 2005-12-08 | 2010-01-26 | Electronics And Telecommunications Research Institute | Method of data placement and control in block-divided distributed parity disk array |
US7693864B1 (en) | 2006-01-03 | 2010-04-06 | Netapp, Inc. | System and method for quickly determining changed metadata using persistent consistency point image differencing |
US8560503B1 (en) | 2006-01-26 | 2013-10-15 | Netapp, Inc. | Content addressable storage system |
US7734603B1 (en) | 2006-01-26 | 2010-06-08 | Netapp, Inc. | Content addressable storage array element |
US8285817B1 (en) | 2006-03-20 | 2012-10-09 | Netapp, Inc. | Migration engine for use in a logical namespace of a storage system environment |
US7590660B1 (en) | 2006-03-21 | 2009-09-15 | Network Appliance, Inc. | Method and system for efficient database cloning |
US8260831B2 (en) * | 2006-03-31 | 2012-09-04 | Netapp, Inc. | System and method for implementing a flexible storage manager with threshold control |
US20070233868A1 (en) * | 2006-03-31 | 2007-10-04 | Tyrrell John C | System and method for intelligent provisioning of storage across a plurality of storage systems |
US7769723B2 (en) * | 2006-04-28 | 2010-08-03 | Netapp, Inc. | System and method for providing continuous data protection |
EP2021926A4 (en) | 2006-05-05 | 2009-07-15 | Hybir Inc | Group based complete and incremental computer file backup system, process and apparatus |
US7822921B2 (en) | 2006-10-31 | 2010-10-26 | Netapp, Inc. | System and method for optimizing write operations in storage systems |
US7613947B1 (en) | 2006-11-30 | 2009-11-03 | Netapp, Inc. | System and method for storage takeover |
KR20090102789A (en) * | 2006-12-06 | 2009-09-30 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | Apparatus, system, and method for data storage using progressive raid |
US7647526B1 (en) | 2006-12-06 | 2010-01-12 | Netapp, Inc. | Reducing reconstruct input/output operations in storage systems |
US8301673B2 (en) * | 2006-12-29 | 2012-10-30 | Netapp, Inc. | System and method for performing distributed consistency verification of a clustered file system |
US8219821B2 (en) | 2007-03-27 | 2012-07-10 | Netapp, Inc. | System and method for signature based data container recognition |
US8312214B1 (en) | 2007-03-28 | 2012-11-13 | Netapp, Inc. | System and method for pausing disk drives in an aggregate |
US8209587B1 (en) | 2007-04-12 | 2012-06-26 | Netapp, Inc. | System and method for eliminating zeroing of disk drives in RAID arrays |
US8219749B2 (en) * | 2007-04-27 | 2012-07-10 | Netapp, Inc. | System and method for efficient updates of sequential block storage |
US8898536B2 (en) * | 2007-04-27 | 2014-11-25 | Netapp, Inc. | Multi-core engine for detecting bit errors |
US7882304B2 (en) * | 2007-04-27 | 2011-02-01 | Netapp, Inc. | System and method for efficient updates of sequential block storage |
US7827350B1 (en) | 2007-04-27 | 2010-11-02 | Netapp, Inc. | Method and system for promoting a snapshot in a distributed file system |
US7840837B2 (en) * | 2007-04-27 | 2010-11-23 | Netapp, Inc. | System and method for protecting memory during system initialization |
US7752489B2 (en) | 2007-05-10 | 2010-07-06 | International Business Machines Corporation | Data integrity validation in storage systems |
US7836331B1 (en) | 2007-05-15 | 2010-11-16 | Netapp, Inc. | System and method for protecting the contents of memory during error conditions |
US7975102B1 (en) | 2007-08-06 | 2011-07-05 | Netapp, Inc. | Technique to avoid cascaded hot spotting |
US7873878B2 (en) * | 2007-09-24 | 2011-01-18 | International Business Machines Corporation | Data integrity validation in storage systems |
US7873803B2 (en) | 2007-09-25 | 2011-01-18 | Sandisk Corporation | Nonvolatile memory with self recovery |
US7996636B1 (en) | 2007-11-06 | 2011-08-09 | Netapp, Inc. | Uniquely identifying block context signatures in a storage volume hierarchy |
US7984259B1 (en) | 2007-12-17 | 2011-07-19 | Netapp, Inc. | Reducing load imbalance in a storage system |
US8380674B1 (en) | 2008-01-09 | 2013-02-19 | Netapp, Inc. | System and method for migrating lun data between data containers |
US8725986B1 (en) | 2008-04-18 | 2014-05-13 | Netapp, Inc. | System and method for volume block number to disk block number mapping |
US8621154B1 (en) | 2008-04-18 | 2013-12-31 | Netapp, Inc. | Flow based reply cache |
US8161236B1 (en) | 2008-04-23 | 2012-04-17 | Netapp, Inc. | Persistent reply cache integrated with file system |
US8006128B2 (en) * | 2008-07-31 | 2011-08-23 | Datadirect Networks, Inc. | Prioritized rebuilding of a storage device |
WO2010049928A1 (en) * | 2008-10-27 | 2010-05-06 | Kaminario Tehnologies Ltd. | System and methods for raid writing and asynchronous parity computation |
US9158579B1 (en) | 2008-11-10 | 2015-10-13 | Netapp, Inc. | System having operation queues corresponding to operation execution time |
US8392682B2 (en) | 2008-12-17 | 2013-03-05 | Unisys Corporation | Storage security using cryptographic splitting |
US8135980B2 (en) | 2008-12-23 | 2012-03-13 | Unisys Corporation | Storage availability using cryptographic splitting |
AU2009313741A1 (en) * | 2008-11-17 | 2011-07-07 | Unisys Corporation | Data recovery using error strip identifiers |
US8386798B2 (en) | 2008-12-23 | 2013-02-26 | Unisys Corporation | Block-level data storage using an outstanding write list |
US8495417B2 (en) * | 2009-01-09 | 2013-07-23 | Netapp, Inc. | System and method for redundancy-protected aggregates |
US8171227B1 (en) | 2009-03-11 | 2012-05-01 | Netapp, Inc. | System and method for managing a flow based reply cache |
US8433685B2 (en) * | 2010-08-18 | 2013-04-30 | Hewlett-Packard Development Company, L.P. | Method and system for parity-page distribution among nodes of a multi-node data-storage system |
US8849877B2 (en) | 2010-08-31 | 2014-09-30 | Datadirect Networks, Inc. | Object file system |
US8572441B2 (en) * | 2011-08-05 | 2013-10-29 | Oracle International Corporation | Maximizing encodings of version control bits for memory corruption detection |
US8756582B2 (en) | 2011-08-22 | 2014-06-17 | International Business Machines Corporation | Tracking a programs calling context using a hybrid code signature |
US20130198585A1 (en) * | 2012-02-01 | 2013-08-01 | Xyratex Technology Limited | Method of, and apparatus for, improved data integrity |
US8874956B2 (en) | 2012-09-18 | 2014-10-28 | Datadirect Networks, Inc. | Data re-protection in a distributed replicated data storage system |
US9043559B2 (en) | 2012-10-23 | 2015-05-26 | Oracle International Corporation | Block memory engine with memory corruption detection |
US9367394B2 (en) | 2012-12-07 | 2016-06-14 | Netapp, Inc. | Decoupled reliability groups |
US8843447B2 (en) | 2012-12-14 | 2014-09-23 | Datadirect Networks, Inc. | Resilient distributed replicated data storage system |
US9020893B2 (en) | 2013-03-01 | 2015-04-28 | Datadirect Networks, Inc. | Asynchronous namespace maintenance |
US10482009B1 (en) | 2013-03-15 | 2019-11-19 | Google Llc | Use of a logical-to-logical translation map and a logical-to-physical translation map to access a data storage device |
US9830354B2 (en) | 2013-08-07 | 2017-11-28 | International Business Machines Corporation | Accelerating multiple query processing operations |
US9619499B2 (en) | 2013-08-07 | 2017-04-11 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm |
US9672298B2 (en) | 2014-05-01 | 2017-06-06 | Oracle International Corporation | Precise excecution of versioned store instructions |
US9563509B2 (en) | 2014-07-15 | 2017-02-07 | Nimble Storage, Inc. | Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system |
US9195593B1 (en) | 2014-09-27 | 2015-11-24 | Oracle International Corporation | Hardware assisted object memory migration |
US10310813B2 (en) | 2014-12-29 | 2019-06-04 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm using an external memory |
CN107748702B (en) | 2015-06-04 | 2021-05-04 | 华为技术有限公司 | Data recovery method and device |
US10528546B1 (en) | 2015-09-11 | 2020-01-07 | Cohesity, Inc. | File system consistency in a distributed system using version vectors |
US11016848B2 (en) | 2017-11-02 | 2021-05-25 | Seagate Technology Llc | Distributed data storage system with initialization-less parity |
US11593237B2 (en) | 2021-05-28 | 2023-02-28 | International Business Machines Corporation | Fast recovery with enhanced raid protection |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3387261A (en) * | 1965-02-05 | 1968-06-04 | Honeywell Inc | Circuit arrangement for detection and correction of errors occurring in the transmission of digital data |
US4092732A (en) * | 1977-05-31 | 1978-05-30 | International Business Machines Corporation | System for recovering data stored in failed memory unit |
NL7804674A (en) * | 1978-05-02 | 1979-11-06 | Philips Nv | MEMORY WITH ERROR DETECTION AND CORRECTION. |
US4433388A (en) * | 1980-10-06 | 1984-02-21 | Ncr Corporation | Longitudinal parity |
DE3379192D1 (en) * | 1983-12-19 | 1989-03-16 | Itt Ind Gmbh Deutsche | Correction method for symbol errors in video/teletext signals |
US4842262A (en) * | 1984-02-22 | 1989-06-27 | Delphax Systems | Document inverter |
-
1986
- 1986-06-12 US US06873249 patent/US4761785B1/en not_active Expired - Lifetime
-
1987
- 1987-04-27 CA CA000535598A patent/CA1270333A/en not_active Expired - Lifetime
- 1987-05-08 JP JP62110902A patent/JPS62293355A/en active Granted
- 1987-05-26 DE DE3750790T patent/DE3750790T2/en not_active Expired - Lifetime
- 1987-05-26 EP EP87107666A patent/EP0249091B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0249091A3 (en) | 1990-04-25 |
EP0249091B1 (en) | 1994-11-30 |
US4761785B1 (en) | 1996-03-12 |
CA1270333A (en) | 1990-06-12 |
JPS62293355A (en) | 1987-12-19 |
DE3750790D1 (en) | 1995-01-12 |
US4761785A (en) | 1988-08-02 |
EP0249091A2 (en) | 1987-12-16 |
JPH0547857B2 (en) | 1993-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3750790T2 (en) | Parity distribution for improved memory access. | |
DE60304194T2 (en) | METHOD AND DEVICE FOR TOLERATING MULTIPLE DEPENDENT OR TWO ANY ERRORS IN A MEMORY PLATE ASSEMBLY | |
DE69632219T2 (en) | Disk array system | |
DE69219208T2 (en) | Distributed replacement in DASD fields | |
DE68928546T2 (en) | FILE SYSTEM FOR A VARIETY OF STORAGE CLASSES | |
DE69632424T2 (en) | Continuous data server and data transfer scheme for multiple concurrent data access | |
DE3784190T2 (en) | ENTERING A DATA BASE INDEX IN THE JOURNAL FOR IMPROVED RESET. | |
DE68926436T2 (en) | Disk drive assembly system and method | |
DE69215538T2 (en) | METHOD FOR IMPROVING PARTIAL STRIP WRITING OPERATIONS OF A DISK ARRANGEMENT | |
DE60031064T2 (en) | Copying between logical disks, disk system and program for it | |
DE69030024T2 (en) | Process for making a duplication from a database | |
DE69112110T2 (en) | Parity protection method in a parallel computer system. | |
DE19581103C2 (en) | Method and device for real-time reconstruction of destroyed data in a storage system with redundant arrangement | |
DE69117371T2 (en) | Background disk surface analysis performed by a smart disk array controller | |
DE69738091T2 (en) | Storage disk arrangement and method for its control | |
DE69127895T4 (en) | LOGICAL TRACK WRITE ASSIGNMENT SYSTEM FOR PARALLEL DISK DRIVE MATRIX DATA STORAGE SUBSYSTEM | |
DE60313783T2 (en) | MOVING DATA BETWEEN MEMORY UNITS | |
DE69126416T2 (en) | Storage device array architecture with copyback cache | |
DE69629444T2 (en) | Data processing device and method for replacing failed storage units | |
DE112010003794B4 (en) | Data storage using bitmaps | |
DE68923863T2 (en) | I / O cache storage. | |
DE69635713T2 (en) | Disk array subsystem | |
DE69534994T2 (en) | CONTROL DEVICE FOR MEMORY PLATE ASSEMBLY AND MEMORY PLATE ASSEMBLY DEVICE | |
DE3688211T2 (en) | DEVICE FOR STORING DIGITAL DATA WORDS. | |
DE3810233A1 (en) | METHOD FOR TREATING SECTOR ERRORS IN DISK STORAGE |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |