[go: up one dir, main page]

DE3750790T2 - Paritätsverteilung zum verbesserten Speicherzugriff. - Google Patents

Paritätsverteilung zum verbesserten Speicherzugriff.

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
Application number
DE3750790T
Other languages
English (en)
Other versions
DE3750790D1 (de
Inventor
Brian Eldridge Clark
Francis Daniel Lawlor
Werner Eric Schmidt-Stumpf
Terrence James Stewart
George David Timms
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25361257&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE3750790(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3750790D1 publication Critical patent/DE3750790D1/de
Application granted granted Critical
Publication of DE3750790T2 publication Critical patent/DE3750790T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/104Metadata, 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Fig. 1 ist ein Blockdiagramm eines Systems, das die Verteilung der Paritätsdatenblöcke zum Schutz entsprechend der gegenwärtigen Erfindung enthält.
  • Fig. 2 ist ein Blockdiagramm der Verteilung der Paritätsblöcke von Fig. 1 auf eine Vielzahl von Speichergeräten;
  • Fig. 3 ist ein Blockdiagramm, das logische Tabellen darstellt, die genutzt werden, um Paritätsgruppen und Datensätze miteinander zu korrelieren;
  • Fig. 4 ist ein Blockdiagramm von Datensätzen in einem Streifen des Speichers, der Versionsindikatoren für die Synchronisation benutzt;
  • Fig. 5 ist ein Flußdiagramm der Initialisierung der Speichergeräte für den Schutz der Paritätsblöcke und
  • Fig. 6 ist ein Flußdiagramm der Schritte, die die Aktualisierung der Datensätze und ihrer korrespondierenden Paritätsdatensätze mit sich bringt.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Das System wird dann bei 520 auf Standardweise durch Auslösen des Ladens eines ersten Programmes initialisiert.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Die Wiederherstellung wird durchgeführt, wenn entweder ein einzelner Datensatzlesefehler während des Normalbetriebs des Systems auftritt, oder wenn die gesamte Einheit ausfällt.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.

Claims (18)

1. Ein Datenschutzmechanismus für ein Computersystem mit Speichergeräten (30, 32, 34, 36, 38), auf die mehrfach unabhängig zugegriffen werden kann, sowie mit Speichermanagementmitteln für das Management der Speicherung von Datenblöcken auf den Speichergeräten (30, 32, 34, 36, 38) und:
mit Generierungsmitteln für die Generierung von Paritätsblöcken als eine Funktion von Datenblocksätzen, wobei die Datenblöcke eines Satzes, die mit einem Paritätsblock korrespondieren, auf unterschiedlichen Speichergeräten gespeichert sind, dadurch gekennzeichnet, daß er weiterhin folgendes umfaßt:
Mittel zur Verteilung, die mit den Mitteln für das Speichermanagement verbunden sind, um ein Speichergerät für das Speichermanagementmittel zu identifizieren, auf das der Paritätsblock so zu speichern ist, daß keines der Speichergeräte (32, 34, 36, 38) die Paritätsblöcke (70, 80, 82, 84, 86, 88, 90, 92) für alle Datenblockgruppen (72, 74, 76, 78) enthält.
2. Der Datenschutzmechanismus nach Anspruch 1, wobei das Mittel für die Verteilung die Paritätsblöcke im Wesentlichen gleichmäßig auf die Speichergeräte verteilt.
3. Der Datenschutzmechanismus nach Anspruch 2 wobei das Mittel für die Verteilung die Paritätsblöcke umlaufend der Reihe nach verteilt.
4. Der Datenschutzmechanismus nach Anspruch 1, wobei jeder Datenblock eines Satzes und dessen korrespondierender Paritätsblock einen Streifen der gleichen Adreßbereiche für jedes der Speichergeräte bildet.
5. Der Datenschutzmechanismus nach Anspruch 4, wobei wenigstens ein Streifen gleicher Adressen Datenblöcke ohne einen Paritätsblock enthält.
6. Der Datenschutzmechanismus nach Anspruch 4, wobei es wenigstens soviele Streifen wie Datenblöcke in einer Gruppe plus einem Paritätsblock gibt.
7. Der Datenschutzmechanismus nach Anspruch 4, wobei die Größe des Adreßbereiches wenigstens so groß wie das größte dem System zuteilbare zusammenhängende Stück Speicher ist.
8. Der Datenschutzmechanismus nach Anspruch 1, wobei jedes Speichergerät die gleiche Adreßgröße besitzt.
9. Der Datenschutzmechanismus nach Anspruch 1, wobei ein Satz wenigstens drei Speichergeräte umfaßt.
10. Der Datenschutzmechanismus nach Anspruch 1, wobei die Speichergeräte eines Satzes ausgewählt wurden, um die Anzahl der Speichergeräte, die durch den Ausfall einer einzigen Komponente des Computersystems betroffen sind, zu minimieren.
11. Der Datenschutzmechanismus nach Anspruch 1, wobei ein Block eine Vielzahl in ihrer Größe festgelegter Datensätze umfaßt und der Mechanismus weiterhin ein Mittel für die Versionsgenerierung für die Lieferung unabhängiger Versionsnummern an Datensätze mit der gleichen Adresse in einem Satz und korrespondierender Versionsnummern an den Paritätsdatensatz umfaßt, der eine derartige Gruppe Datensätze abdeckt.
12. Der Datenschutzmechanismus nach Anspruch 11, wobei die Versionsncnimern Zähler enthalten, und die Mittel für die Versionsgenerierung den Zähler in einem revidierten Datensatz erhöhen und den korrospondierenden Zähler in dem Paritätsdatensatz erhöhen.
13. Der Datenschutzmechanismus nach Anspruch 12, der weiterhin Mittel für die Wiederherstellung von Daten enthält, um Datensätze, die auf einem ausgefallenen Speichergerät verloren gegangen sind, durch Kombination der in dem Satz aus Speichergeräten verbliebenen Datensätze wiederherzustellen.
14. Der Datenschutzmechanismus nach Anspruch 13, wobei die Wiederherstellung eines verlorengegangenen Datensatzes von einem Gerät an jedem verbliebenen Datensatz in derjenigen Menge Datensätze möglich ist, die Versionsnummern besitzen, die zu den Versionsnummern in dem Paritätsdatensatz passen.
15. Der Datenschutzmechanismus nach Anspruch 1, der weiterhin Mittel für die Markierung von Änderungen für die Erzeugung einer Änderungsmaske für einen Paritätsdatensatz enthält, wenn ein Datensatz in der Gruppe zu ändern ist, wobei die Änderungsmaske als Funktion des Originaldatensatzes und des geänderten Datensatzes generiert wurde.
16. Eine Methode zum Schutz von auf einer Vielzahl Speichergeräten gespeicherter Daten, bestehend aus:
dem Einteilen von adressierbarem Speicher auf jedem der Speichergeräte (30, 32, 34, 36, 38) in Speicherblöcke, so daß jeder Speicher die gleiche Anzahl von Blöcken besitzt, wobei die Blöcke auf jedem Speicher den gleichen Adreßbereich, der einen Streifen umfaßt, besitzen;
dem Speichern der Paritätsinformationen für jeden Streifen Speicherblöcke auf verteilte Weise entlang der Speichergeräten (30, 32, 34, 36, 38), um die Gesamtzugriffsrate auf die Speichergeräte zu verbessern; und
dem Ändern der Paritätsinformationen für jedem Streifen als eine Funktion einer Änderung an einem Block in dessen korrespondlerendem Streifen, ohne alle Blöcke in dem Streifen lesen zu müssen.
17. Die Methode nach Anspruch 16, wobei der Schritt der Änderung der Paritätsinformation aus den folgenden Schritten besteht:
dem Lesen der zu ändernden Daten;
dem Erzeugen einer Kopie der zu ändernden Daten;
dem Erzeugen der Datenänderungen;
der Generierung einer Änderungsmaske als eine Funktion der Kopie der zu ändernden Daten und der geänderten Daten;
dem Schreiben der geänderten Daten in den Speicher;
dem Lesen der korrespondierenden Paritätsdaten;
dem Anlegen der Änderungsmaske an die Paritätsdaten, um diese zu aktualisieren; und
dem Schreiben der aktualisierten Daten in den Speicher.
18. Die Methode nach Anspruch 16, wobei der Schritt der Änderung der Paritätsinformationen weiterhin den Schritt zur Generierung einer Versionsnummer umfaßt, die sowohl mit dem Datenblock als auch mit dem Paritätsblock gemeinsam gespeichert wird.
DE3750790T 1986-06-12 1987-05-26 Paritätsverteilung zum verbesserten Speicherzugriff. Expired - Lifetime DE3750790T2 (de)

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 (de) 1995-01-12
DE3750790T2 true DE3750790T2 (de) 1995-05-24

Family

ID=25361257

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3750790T Expired - Lifetime DE3750790T2 (de) 1986-06-12 1987-05-26 Paritätsverteilung zum verbesserten Speicherzugriff.

Country Status (5)

Country Link
US (1) US4761785B1 (de)
EP (1) EP0249091B1 (de)
JP (1) JPS62293355A (de)
CA (1) CA1270333A (de)
DE (1) DE3750790T2 (de)

Families Citing this family (315)

* Cited by examiner, † Cited by third party
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 (ja) * 1988-08-26 1998-02-25 株式会社日立製作所 記憶制御システムの制御方法および記憶制御システムならびに記憶制御装置
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 (ja) * 1990-01-05 1991-09-24 Internatl Business Mach Corp <Ibm> フアイル転送方法
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
US5195100A (en) * 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage 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
US5140592A (en) * 1990-03-02 1992-08-18 Sf2 Corporation Disk array system
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
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
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
US5214778A (en) * 1990-04-06 1993-05-25 Micro Technology, Inc. Resource management in a multiple resource system
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
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 (ja) * 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション パリティ保護データを回復するための方法および装置
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
DE69131551T2 (de) * 1990-11-09 2000-02-17 Emc Corp., Hopkinton Logische Aufteilung eines Speichersystems mit redundanter Matrix
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
JP3409859B2 (ja) * 1991-01-31 2003-05-26 株式会社日立製作所 制御装置の制御方法
US6874101B2 (en) * 1991-01-31 2005-03-29 Hitachi, Ltd. Storage unit subsystem
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 (ja) * 1991-04-11 1998-04-22 三菱電機株式会社 アレイ型記録装置
JP3187525B2 (ja) * 1991-05-17 2001-07-11 ヒュンダイ エレクトロニクス アメリカ バス接続装置
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
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
US5499337A (en) * 1991-09-27 1996-03-12 Emc Corporation Storage device array architecture with solid-state redundancy unit
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
US5333305A (en) * 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
AU3424993A (en) * 1991-12-27 1993-07-28 Compaq Computer Corporation Method for performing disk array operations using a nonuniform stripe size mapping scheme
EP0551009B1 (de) * 1992-01-08 2001-06-13 Emc Corporation Verfahren zur Synchronisierung von reservierten Bereichen in einer redundanten Speicheranordnung
US5341381A (en) * 1992-01-21 1994-08-23 Tandem Computers, Incorporated Redundant array parity caching system
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
US5371743A (en) * 1992-03-06 1994-12-06 Data General Corporation On-line module replacement in a multiple module data processing system
DE69320388T2 (de) * 1992-03-06 1999-05-12 Data General Corp., Westboro, Mass. Datenbehandlung in einem System mit einem Prozessor zur Steuerung des Zugangs zu einer Mehrzahl von Datenspeicherplatten
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 (ja) * 1992-08-03 1999-05-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 冗長ディスクドライブアレイに対する同期方法
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 (ja) * 1992-08-26 2001-07-09 三菱電機株式会社 アレイ型記録装置
JP3181398B2 (ja) * 1992-10-06 2001-07-03 三菱電機株式会社 アレイ型記録装置
EP0600137A1 (de) * 1992-11-30 1994-06-08 International Business Machines Corporation Verfahren und Einrichtung zur Korrektur von Fehlern in einem Speicher
JP3176157B2 (ja) * 1992-12-28 2001-06-11 株式会社日立製作所 ディスクアレイ装置及びそのデータ更新方法
US5579474A (en) * 1992-12-28 1996-11-26 Hitachi, Ltd. Disk array system and its control method
JP2743756B2 (ja) * 1993-02-03 1998-04-22 日本電気株式会社 半導体ディスク装置
JP3258117B2 (ja) * 1993-03-08 2002-02-18 株式会社日立製作所 記憶装置サブシステム
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
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US7174352B2 (en) 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
EP0702815B1 (de) * 1993-06-03 2000-08-23 Network Appliance, Inc. Anordnung eines dateisystems zum beschreiben beliebiger bereiche
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
EP1197836A3 (de) * 1993-06-03 2009-06-17 Network Appliance, Inc. Dateizuordnungsverfahren in einem in ein RAID-Diskuntersystem integriertes Dateisystem
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
EP0701715A4 (de) * 1993-06-04 1999-11-17 Network Appliance Corp Verfahren zur paritätsdarstellung in einem raid-untersystem unter verwendung eines nichtflüchtigen speichers
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 (ja) * 1994-06-16 1999-11-22 日本アイ・ビー・エム株式会社 ディスク記憶装置
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
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
KR100300836B1 (ko) * 1995-06-08 2001-09-03 포만 제프리 엘 데이타재구성방법및데이타기억시스템
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
US5657468A (en) * 1995-08-17 1997-08-12 Ambex Technologies, Inc. Method and apparatus for improving performance in a reduntant array of independent disks
WO1997011426A1 (en) 1995-09-18 1997-03-27 Cyberstorage Systems, Inc. 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 (ko) * 1997-01-29 1999-10-15 윤종용 Dvd-ram에서 고속의 데이타기록방법
JPH10254642A (ja) * 1997-03-14 1998-09-25 Hitachi Ltd 記憶装置システム
JP4499193B2 (ja) * 1997-04-07 2010-07-07 ソニー株式会社 記録再生装置及び記録再生方法
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
CN1281560A (zh) 1997-10-08 2001-01-24 西加特技术有限责任公司 混合数据存储和重建系统以及用于数据存储装置的方法
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 (de) * 1998-03-13 1999-09-16 Grau Software Gmbh Verfahren zum Speichern von Daten
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
US6530036B1 (en) 1999-08-17 2003-03-04 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
US6449731B1 (en) 1999-03-03 2002-09-10 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 (ja) * 1999-12-08 2001-06-22 Sony Corp データ記録再生装置及びデータ記録再生方法
US6826711B2 (en) 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US7509420B2 (en) 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
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
US6704730B2 (en) 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US7062648B2 (en) * 2000-02-18 2006-06-13 Avamar Technologies, Inc. System and method for redundant array 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
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6728922B1 (en) 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
US6507890B1 (en) 2000-09-29 2003-01-14 Emc Corporation System and method for expanding a log structure in a disk array
US6865650B1 (en) 2000-09-29 2005-03-08 Emc Corporation System and method for hierarchical data storage
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
US6512962B2 (en) 2001-04-26 2003-01-28 International Business Machines Corporation Cabling picker in a library of stationary memory devices
US6754768B2 (en) 2001-04-26 2004-06-22 International Business Machines Corporation Library of hard disk drives with transparent emulating interface
US6941260B2 (en) * 2001-04-26 2005-09-06 International Business Machines Corporation Method and apparatus for emulating a fiber channel port
US6600703B1 (en) 2001-04-26 2003-07-29 International Business Machines Corporation Magazine for a plurality of removable hard disk drives
US6871263B2 (en) * 2001-08-28 2005-03-22 Sedna Patent Services, Llc Method and apparatus for striping data onto a plurality of disk drives
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
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
US6978283B1 (en) 2001-12-21 2005-12-20 Network Appliance, Inc. File system defragmentation technique via write allocation
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
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
US7640484B2 (en) * 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
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
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
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation 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
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7664913B2 (en) * 2003-03-21 2010-02-16 Netapp, Inc. Query-based spares management technique
US7111147B1 (en) * 2003-03-21 2006-09-19 Network Appliance, Inc. Location-independent RAID group virtual block management
US7143235B1 (en) 2003-03-21 2006-11-28 Network Appliance, Inc. Proposed configuration management behaviors 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
US7401093B1 (en) 2003-11-10 2008-07-15 Network Appliance, Inc. System and method for managing file data during consistency points
US7783611B1 (en) 2003-11-10 2010-08-24 Netapp, Inc. System and method for managing file metadata during consistency points
US7721062B1 (en) 2003-11-10 2010-05-18 Netapp, Inc. Method for detecting leaked buffer writes across file system consistency points
US7428691B2 (en) * 2003-11-12 2008-09-23 Norman Ken Ouchi Data recovery from multiple failed data blocks and storage units
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
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
WO2005064469A1 (en) 2003-12-19 2005-07-14 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
KR20060133555A (ko) * 2003-12-29 2006-12-26 셔우드 인포메이션 파트너스 인코포레이션 멀티플 hdd 케이스를 이용한 대량 저장 시스템 및 방법
US8041888B2 (en) * 2004-02-05 2011-10-18 Netapp, Inc. System and method for LUN cloning
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
US7430571B2 (en) * 2004-04-30 2008-09-30 Network Appliance, Inc. Extension of write anywhere file layout write allocation
US7334094B2 (en) * 2004-04-30 2008-02-19 Network Appliance, Inc. Online clone volume splitting technique
US7334095B1 (en) 2004-04-30 2008-02-19 Network Appliance, Inc. Writable clone of read-only volume
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
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
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
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
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
US8180855B2 (en) * 2005-01-27 2012-05-15 Netapp, Inc. Coordinated shared storage architecture
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
ATE512412T1 (de) * 2005-04-25 2011-06-15 Network Appliance Inc System und verfahren zum zwischenspeichern von netzwerkdateisystemen
WO2006116183A1 (en) * 2005-04-25 2006-11-02 Network Appliance, Inc. Architecture for supporting sparse volumes
US7468117B2 (en) * 2005-04-29 2008-12-23 Kimberly-Clark Worldwide, Inc. Method of transferring a wet tissue web to a three-dimensional fabric
US7617370B2 (en) 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US7401253B2 (en) * 2005-05-09 2008-07-15 International Business Machines Corporation Convolution-encoded data storage on a redundant array of independent devices
US7370261B2 (en) * 2005-05-09 2008-05-06 International Business Machines Corporation Convolution-encoded raid with trellis-decode-rebuild
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
US7516285B1 (en) 2005-07-22 2009-04-07 Network Appliance, Inc. Server side API for fencing cluster hosts via export access rights
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
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
US7734603B1 (en) 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
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
AU2007247939B2 (en) 2006-05-05 2012-02-09 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
US7647526B1 (en) 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
KR20090087119A (ko) 2006-12-06 2009-08-14 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 빈 데이터 토큰 지시어를 사용한 저장 장치 내의 데이터 관리 장치, 시스템 및 방법
US8301673B2 (en) * 2006-12-29 2012-10-30 Netapp, Inc. System and method for performing distributed consistency verification of a clustered file system
US10776489B2 (en) 2007-03-06 2020-09-15 Unisys Corporation Methods and systems for providing and controlling cryptographic secure communications terminal operable to provide a plurality of desktop environments
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
US7827350B1 (en) 2007-04-27 2010-11-02 Netapp, Inc. Method and system for promoting a snapshot in a distributed file system
US7882304B2 (en) * 2007-04-27 2011-02-01 Netapp, Inc. System and method for efficient updates of sequential block storage
US7840837B2 (en) * 2007-04-27 2010-11-23 Netapp, Inc. System and method for protecting memory during system initialization
US8898536B2 (en) * 2007-04-27 2014-11-25 Netapp, Inc. Multi-core engine for detecting bit errors
US8219749B2 (en) * 2007-04-27 2012-07-10 Netapp, Inc. System and method for efficient updates of sequential block storage
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
US8621154B1 (en) 2008-04-18 2013-12-31 Netapp, Inc. Flow based reply cache
US8725986B1 (en) 2008-04-18 2014-05-13 Netapp, Inc. System and method for volume block number to disk block number mapping
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
US8386798B2 (en) 2008-12-23 2013-02-26 Unisys Corporation Block-level data storage using an outstanding write list
US8392682B2 (en) 2008-12-17 2013-03-05 Unisys Corporation Storage security using cryptographic splitting
AU2009313741A1 (en) * 2008-11-17 2011-07-07 Unisys Corporation Data recovery using error strip identifiers
US8135980B2 (en) 2008-12-23 2012-03-13 Unisys Corporation Storage availability using cryptographic splitting
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
US11030305B2 (en) 2010-10-04 2021-06-08 Unisys Corporation Virtual relay device for providing a secure connection to a remote device
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 (zh) 2015-06-04 2021-05-04 华为技术有限公司 一种数据恢复方法和装置
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)

* Cited by examiner, † Cited by third party
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 (nl) * 1978-05-02 1979-11-06 Philips Nv Geheugen met detektie en korrektie van fouten.
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

Also Published As

Publication number Publication date
CA1270333A (en) 1990-06-12
JPH0547857B2 (de) 1993-07-19
DE3750790D1 (de) 1995-01-12
JPS62293355A (ja) 1987-12-19
EP0249091B1 (de) 1994-11-30
EP0249091A3 (en) 1990-04-25
US4761785A (en) 1988-08-02
US4761785B1 (en) 1996-03-12
EP0249091A2 (de) 1987-12-16

Similar Documents

Publication Publication Date Title
DE3750790T2 (de) Paritätsverteilung zum verbesserten Speicherzugriff.
DE69131551T2 (de) Logische Aufteilung eines Speichersystems mit redundanter Matrix
DE69225296T2 (de) Datenrekonstruktion in einem Speichergerätanordnungssystem
DE69033476T2 (de) Schutz von Datenredundanz und -rückgewinnung
DE60304194T2 (de) Verfahren und vorrichtung zur tolerierung von mehreren abhängigen oder zwei beliebigen fehlern in einer speicherplattenanordnung
DE69632219T2 (de) Speicherplattenanordnungssystem
DE69219208T2 (de) Verteilter Ersatz in DASD-Feldern
DE68928546T2 (de) Dateisystem für eine vielzahl von speicherklassen
DE69412775T2 (de) System zur Kontrolle der Befehlswarteschlange der Paritätsplatte in einer Speicherplattenanordnung
DE69431186T2 (de) Verfahren und Dateisystem zur Zuordnung von Datei-Blöcken zu Speicherplatz in einem RAID-Plattensystem
DE69632424T2 (de) Server für kontinuierliche Daten und Datentransferschema für mehrfache gleichzeitige Datenzugriffe
DE69724846T2 (de) Mehrweg-Ein/Ausgabespeichersysteme mit Mehrweg-Ein/Ausgabeanforderungsmechanismus
DE3856443T2 (de) Gegen Fehler tolerantes, Fehler korrigierendes Speichersystem und Verfahren zur Speicherung digitaler Information in einem derartigen Speichersystem
DE69224589T2 (de) Speicherplattenanordnung und Verfahren zur Bestimmung des Vorhandenseins korrekter Speichervorrichtungen
DE69127229T2 (de) Verfahren und Vorrichtung zur Datenformatierung auf DASD-Anordnungen
DE69430599T2 (de) Dynamisch ausbaubares Speichereinheitsmatrixsystem
DE69311952T2 (de) Verfahren und System zur inkrementalen Datensicherung
DE69215538T2 (de) Verfahren zur verbesserung von partiellen streifenschreib-operationen einer speicherplattenanordnung
DE69321901T2 (de) Redundante Speicherplattenmatrix mit verbesserter Schreib- und Lesegeschwindigkeit
DE69131562T2 (de) Verfahren und Anordnung zur Wiederherstellung von durch Parität geschützten Daten
DE69528430T2 (de) Verfahren und System zum Auswählen von Daten für Migration in einem hierarchischen Datenspeichersystem mit Frequenzverteilungstabellen
DE69130279T2 (de) On-line Wiederherstellung eines fehlerhaften redundanten Gruppensystems
DE69621270T2 (de) Cache-Speichersteuervorrichtung und Methode
DE69221279T2 (de) Plattenlaufwerkmatrix mit redundanten Kanälen
DE69231841T2 (de) Verfahren und Vorrichtung zum Zugriff von Datensätze mit variabler Länge die mit fester Block-Formatierung auf Speicheranordnungen mit direktem Zugriff gespeichert sind

Legal Events

Date Code Title Description
8364 No opposition during term of opposition