DE19581103C2 - Verfahren und Vorrichtung zur Echtzeit-Rekonstruktion zerstörter Daten in einem Speichersystem mit redundanter Anordnung - Google Patents

Verfahren und Vorrichtung zur Echtzeit-Rekonstruktion zerstörter Daten in einem Speichersystem mit redundanter Anordnung

Info

Publication number
DE19581103C2
DE19581103C2 DE19581103T DE19581103T DE19581103C2 DE 19581103 C2 DE19581103 C2 DE 19581103C2 DE 19581103 T DE19581103 T DE 19581103T DE 19581103 T DE19581103 T DE 19581103T DE 19581103 C2 DE19581103 C2 DE 19581103C2
Authority
DE
Germany
Prior art keywords
data
blocks
block
received
strip
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
DE19581103T
Other languages
English (en)
Other versions
DE19581103T1 (de
Inventor
William Bailey
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.)
NCube Corp
Original Assignee
Oracle 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
Application filed by Oracle Corp filed Critical Oracle Corp
Publication of DE19581103T1 publication Critical patent/DE19581103T1/de
Application granted granted Critical
Publication of DE19581103C2 publication Critical patent/DE19581103C2/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/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
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17336Handling of requests in head-ends

Description

Die vorliegende Erfindung betrifft das Gebiet von Datenspeichersystemen, insbesondere ein Verfahren zum Schaffen einer Echtzeit-Rekonstruktion zerstörter Daten, sowie ein für diesen Zweck geeignetes Datenspeichersystem mit redundanter Anordnung.
Ein typisches Datenspeichersystem enthält eine oder mehrere Datenspeicherein­ heiten, die eine Datenspeicherung und -wiedergewinnung für einen Computer oder eine andere Datenverarbeitungsvorrichtung zur Verfügung stellen. Datenspei­ chereinheiten können Bandlaufwerke mit hoher Kapazität, Festkörperspeicherchips und magnetische, optische und/oder magneto-optische Plattenlaufwerke sein.
Datenspeicheranwendungen, wie beispielsweise Online-Banksysteme oder Video­ dateisysteme benötigen eine nahezu 100%-ig zuverlässiges Datenspeichersystem. Das bedeutet, daß alle zum Datenspeichersystem gesendeten Daten richtig ge­ speichert werden müssen, und daß die Daten aus dem Speichersystem richtig ausgegeben werden müssen, wenn dazu aufgefordert wird. Gegenwärtige Daten­ speichereinheiten sind nicht 100%-ig zuverlässig; statt dessen haben sie allgemein eine statistisch vorhersagbare Fehlerrate. Solche Fehler reichen von einem loka­ len Fehler, wie beispielsweise die Zerstörung eines einzelnen Datenbits, bis hin zu einem vollständigen Ausfall der Datenspeichereinheit.
Die Folgen von Speichersystemausfällen reichen von einem nicht wiedergewinnba­ ren Verlust von Daten bis zu Verzögerungen bei der Ausgabe von Daten, während zerstörte Daten wiedergewonnen oder rekonstruiert werden. Ein nicht wiederge­ winnbarer Datenverlust ist ein ernsthaftes Problem für jedes System. Auch Verzö­ gerungen bei der Ausgabe von Daten, während sie wiedergewonnen oder rekon­ struiert werden, können ernsthafte Folgen haben, und zwar insbesondere dann, wenn die durch das Datenspeichersystem ausgegebenen Daten aus langen konti­ nuierlichen Datenströmen bestehen, deren Integrität von einer Ausgabe der Daten mit konstanter Geschwindigkeit abhängt.
Ein Beispiel eines Systems, bei dem Unterbrechungen bei der Ausgabe von Daten nicht akzeptierbare Ergebnisse hervorrufen, ist ein Videodateisystem, das für eine Ausgabe von Videoprogrammen in voller Länge auf eine Anfrage hin verwendet wird. In einem derartigen System sind hunderte von Videos in voller Länge in digi­ taler Form in einem Datenspeichersystem mit mehreren Terabytes gespeichert. Videodaten werden auf eine Kundenanfrage hin in Echtzeit wiedergewonnen und über ein Kommunikationsnetzwerk zu einem Kunden zum Anschauen ausgegeben. Bei dieser Art von System verursachen Unterbrechungen des kontinuierlichen Flusses von Videodaten aus dem Datenspeichersystem zum Kunden "Blips" oder eine andere nicht akzeptierbare Verschlechterung der Qualität des gerade ausge­ gebenen Videobildes. Um dem Endbenutzer ein zufriedenstellendes Produkt zu liefern, müssen solche Unterbrechungen vermieden werden.
Es ist vorgeschlagen worden, daß die Zuverlässigkeit bei einer Datenspeicherung durch Erzeugen von Fehlerkorrekturinformation und/oder durch Verwenden redun­ danter Datenspeichereinheiten verbessert werden kann.
Beispielsweise beschreibt das US-Patent 5,208,813 von Stallmo mit dem Titel "On-Line Reconstruction of a Failed Redundant Array System" eine Anzahl verschiedener Ansätze zum Schaffen einer zuverlässigen Datenspeicherung unter Verwendung einer redundanten An­ ordnung billiger Platten. Fünf unterschiedliche Architekturen sind unter dem Acronym "RAID" ("Redundant array of inexpensive disks" = "Redundante Anord­ nungen billiger Platten") beschrieben.
RAID 1 bietet eine "gespiegelte" Speichereinheit für jede primäre Speichereinheit, die eine duplizierte Kopie aller Daten auf der primären Einheit hält. Während RAID-1-Systeme eine erhöhte Zuverlässigkeit bieten, verdoppeln sie die Kosten für die Datenspeicherung.
Im RAID-2-Systemen sind alle Bits aller Worte von Daten plus "Fehlererfassungs- und -korrektur"-("EDC")-Bits für jedes Wort auf einer separaten Speichereinheit gespeichert. Diese Technik ist als "Bit-Streifenbildung" (bit striping) bekannt. Ein RAID-2-System ist zuverlässig und hat eine hohe Datenübertragungsbandbreite, da im wesentlichen ein gesamter Datenblock während der Zeit übertragen wird, zu der jedes Plattenlaufwerk ein einzelnes Bit übertragen muß. Jedoch sind Nachteile eines RAID-2-Systems eine große Anzahl von benötigter Platten und das hohe Verhältnis von Fehlererfassungs- und -korrekturbit-Speicherplatten zu Datenspei­ cherplatten. Zusätzlich gibt es, weil im wesentlichen gleichzeitig zum Lesen oder Schreiben eines Datenblocks auf jede der Platten zugegriffen wird, effektiv nur ein einziges Bedienelement für alle Platten. Als Ergebnis wird die Leistungsfähigkeit des Systems für unregelmäßige Auslesungen kleiner Dateien verschlechtert.
RAID-3-Systeme basieren auf der Idee, daß eine typische Speichereinheit interne Mittel zum Bestimmen von Daten- oder Systemfehlern hat. Demgemäß kann die Stelle eines Fehlers durch die Speichereinheit selbst bestimmt werden, und eine Paritätsprüfung, die eine einfachere Form einer Fehlerkorrektur ist, kann verwen­ det werden. RAID-3-Systeme verwenden wie RAID-2-Systeme eine separate Spei­ chereinheit zum Speichern aller Bits in einem Wort von Daten. Die Inhalte dieser Speichereinheiten werden "Exklusiv-OR"-("XOR")-verknüpft, um eine Paritätsin­ formation zu erzeugen, die auf einer einzelnen gesonderten Speichereinheit ge­ speichert wird. Wenn eine Speichereinheit ausfällt, können die Daten auf der aus­ gefallenen Speichereinheit durch XOR-Verknüpfen der Daten auf den übrigen Speichereinheiten mit der Paritätsinformation rekonstruiert werden. RAID-3- Systeme benötigen ein kleineres Verhältnis redundanter Speichereinheiten zu Datenspeichereinheiten als RAID-2-Systeme. Jedoch leiden RAID-3-Systeme, weil die Daten bitweise gespeichert werden, an derselben Verschlechterung der Lei­ stungsfähigkeit wie RAID-2-Systeme für ein unregelmäßiges Auslesen kleiner Da­ teien.
RAID-4-Systeme verbessern die Leistungsfähigkeit von RAID-3-Systeme durch Aufteilen von Daten unter den Datenspeichereinheiten in Mengen, die größer als die in RAID-3-Systemen verwendeten einzelnen Bits sind. In RAID-4-Systemen ist die Größe eines solchen "Blocks" von Daten typischerweise gleich einem Platten­ sektor. Ein Aufteilen von Daten in solche Blocks wird auch "Block-Streifenbildung" genannt. Für jeden "Streifen" von Daten wird ein Paritätsblock auf einer einzelnen gesonderten Speichereinheit gespeichert, die mit Paritätseinheit bezeichnet ist.
Eine Beschränkung von RAID-4-Systemen besteht darin, daß jedesmal wenn Da­ ten zu einer beliebigen der unabhängig arbeitenden Datenspeichereinheiten ge­ schrieben werden, auch eine neue Paritätsinformation zur Paritätseinheit ge­ schrieben werden muß. Die auf der Paritätseinheit gespeicherte Paritätsinformati­ on muß gelesen werden und mit den alten Daten XOR-verknüpft werden (um den Informationsinhalt der alten Daten in den Paritätsdaten zu entfernen), und die re­ sultierende Summe muß mit den neuen Daten XOR-verknüpft werden (um die neue Paritätsinformation zu berechnen). Die neuen Daten und die neue Paritätsin­ formation müssen dann jeweils zu den Daten- und Paritätsspeichereinheiten ge­ schrieben werden. Dieses Verfahren wird "Lesen-Modifizieren-Schreiben"- Verfahren genannt.
Demgemäß treten ein Lesen und ein Schreiben bei der Paritätseinheit jedesmal dann auf, wenn ein Datensatz auf einer beliebigen der Datenspeichereinheiten geändert wird. Somit wird die Paritätseinheit in einem RAID-4-System ein potentiel­ ler Flaschenhals.
RAID-5-Systeme verwenden dieselbe Blockgröße und dieselben Paritätsfehlerkor­ rekturkonzepte wie RAID-4-Systeme. Jedoch wird in einem RAID-5-System, statt daß man eine einzelne Speichereinheit hat, die zum Speichern von Paritätsinfor­ mation bestimmt ist, die Paritätsinformation auf alle Speichereinheiten im System verteilt.
RAID-5-Systeme verwenden das Konzept einer "Redundanzgruppe". Eine "Redundanzgruppe" ist eine Gruppe von "N + 1"-Speichereinheiten. Jede der Speichereinheiten ist in eine Anzahl gleich großer Adressenfelder aufgeteilt, die "Blöcke" genannt werden. Jede Speichereinheit enthält normalerweise dieselbe Anzahl solcher Blöcke. Blöcke jeder Speichereinheit in einer Redundanzgruppe mit demselben Bereich von Adressen werden "Streifen" genannt. Jeder "Streifen" von Blöcken in der Redundanzgruppe enthält "N" Blöcke von Daten und einen ("+1")- Block von Paritätsdaten. Die Stelle des Blocks der Paritätsdaten ändert sich von einem Streifen zum nächsten. Beispielsweise könnten für ein RAID-5-System mit einer Redundanzgruppe, die aus fünf Plattenlaufwerken besteht, die Paritätsdaten für den ersten Streifen auf dem ersten Plattenlaufwerk gespeichert sein, die Pari­ tätsdaten für den zweiten Streifen auf dem zweiten Plattenlaufwerk, usw. Der Pari­ tätsblock läuft somit in einem schrägen Muster quer durch die Plattenlaufwerke.
Da in einem RAID-5-System keine einzelne Speichereinheit dazu verwendet wird, alle Paritätsdaten zu speichern, wird der Flaschenhals bezüglich einer einzelnen Speichereinheit der RAID-4-Systeme abgemildert. Jedoch muß der Paritätsblock jedesmal dann, wenn Daten zu irgendeinem der Datenblöcke in einem Streifen ge­ schrieben werden, noch gelesen, modifiziert und geschrieben werden, wie im RAID-4-System.
RAID-5-Systeme bieten die Fähigkeit zum Rekonstruieren eines Blocks zerstörter Daten für jeden Streifen. Die Zerstörung eines Blocks von Daten könnte aus einem lokalen Fehler resultieren, der auf einen bestimmten Sektor einer Speichereinheit beschränkt ist (beispielsweise aus einem Staubpartikel, der einen Lese-Schreib- Kopf stört, oder daraus, daß ein einzelner Plattensektor schlecht wird) oder aus dem Ausfall einer Speichereinheit als Ganzes (was beispielsweise aus einer Kopf­ zerstörung oder einem Steuerungsfehler resultiert).
Wenn eine Antwort auf eine Leseanfrage zu einem RAID-5-System nach dem Stand der Technik in einem lokalen Block-Eingabe-Ausgabe-Fehler resultiert, ver­ sucht das RAID-5-System typischerweise erneut ein nicht erfolgreiches Lesen von Daten in einem Block mehrere Male, bevor das RAID-5-System feststellt, daß der Block nicht wiedergewinnbar schlecht ist. Wenn einmal eine solche Feststellung gemacht ist, gibt das RAID-5-System eine Leseanfrage von den anderen Spei­ chereinheiten in der Redundanzeinheit für die anderen Blöcke in dem beeinträch­ tigten Streifen aus. Die fehlenden Daten werden dann durch XOR-Verknüpfen der guten Daten rekonstruiert, und die rekonstruierten Daten werden dann durch das RAID-5-System zu der Vorrichtung ausgegeben, die die Leseanfrage ausgab. Somit resultiert ein Block-IO-Fehler in RAID-5-Systemen nach dem Stand der Technik in einer signifikanten Verzögerung, bevor die rekonstruierten angeforder­ ten Daten ausgegeben werden können, verglichen mit der Zeit, die zum Ausgeben angeforderter Daten erforderlich ist, wenn es keinen IO-Fehler gibt. Zusätzlich er­ fordert das Rekonstruktionsverfahren, daß mehrere IO-Anfragen für jede fehlge­ schlagene IO-Anfrage ausgegeben werden. Demgemäß bindet das Rekonstrukti­ onsverfahren Systemmittel und reduziert den Datendurchsatz des Speichersy­ stems.
Wenn in einem RAID-5-System eine gesamte Speichereinheit ausfällt, kann eine Austauscheinheit eingesetzt werden, und die verlorenen Daten können Streifen für Streifen rekonstruiert werden. In einem RAID-System, das im US-Patent 5,208,813 offenbart ist, können Daten von einer ausgefallenen Speichereinheit gelesen wer­ den, während eine Rekonstruktion der Daten auf die Austausch-Speichereinheit stattfindet. Bei diesem System nach dem Stand der Technik werden Daten Streifen für Streifen rekonstruiert. Wenn eine Leseanfrage für Daten von einem Block von Daten von einer Speichereinheit empfangen wird, die eine andere als die ausgefal­ lene Speichereinheit ist, wird der Block von Daten von der geeigneten Spei­ chereinheit auf die normale Weise gelesen. Wenn eine Leseanfrage für Daten von einem Block auf der ausgefallenen Speichereinheit empfangen wird, gibt das Sy­ stem jedoch Leseanfragen für alle anderen Datenblöcke und den Paritätsblock für jenen Streifen von den anderen funktionierenden Speichereinheiten aus. Das Sy­ stem rekonstruiert dann die zerstörten Daten und gibt sie zum anfragenden Daten­ verarbeitungssystem aus.
Somit rekonstruieren RAID-Systeme nach dem Stand der Technik Daten nur, wenn das System nach vielen Leseversuchen oder anderen Mitteln feststellt, daß ein Sektor einer Platte schlecht ist, oder alternativ dazu, wenn ein System nach einer vorbestimmten Anzahl nicht erfolgreicher IO-Operationen zur selben Speicherein­ heit oder anderen Mitteln feststellt, daß eine gesamte Speichereinheit ausgefallen ist. In beiden Fällen führt das System zum Ausgeben der angeforderten Daten zu­ sätzliche Schritte durch, die während einer normalen Operation nicht durchgeführt werden. Aufgrund der zusätzlichen Arbeiten, die zu diesen Feststellungen und zum Durchführen dieser zusätzlichen Schritte gehören, erlegt eine Ausgabe rekonstru­ ierter zerstörter Daten, verglichen mit einer Ausgabe nicht zerstörter Daten, Zeit­ verzögerungen auf. Zusätzlich bindet das Rekonstruktionsverfahren Systemmittel, was den Datendurchsatz des Datenspeichersystems erniedrigt. Somit können Sy­ steme nach dem Stand der Technik Informationsströme nicht zuverlässig kontinu­ ierlich, mit hoher Bandbreite, ununterbrochen und unverzögert ausgeben.
Das US-Patent 5,278,838 von Ng et al. offenbart ein Verfahren zum Wiederauf­ bauen verlorener Daten in einem RAID-System, während eine Störung normaler Operationen zur Datenwiedergewinnung- und -speicherung reduziert wird.
Das US-Patent 5,315,602 von Noya et al. offenbart ein System zum Reduzieren der Anzahl von I/O-Anfragen, die zum Schreiben von Daten in einem RAID-System erforderlich sind.
Das US-Patent 5,305,326 von Solomon et al. offenbart ein Verfahren zum Bearbei­ ten einer Rekonstruktion von Daten nach einem Leistungsausfall, wie zum Beispiel nach einem Leistungsausfall eines I/O-Prozessors in einem RAID-System.
Das US-Patent 5,303,244 von Watson offenbart ein Verfahren zum Abbilden logi­ scher RAID-Speicheranordnungen auf physikalische Plattenlaufwerke.
Das US-Patent 5,235,601 von Stallmo et al. offenbart ein Verfahren zum erneuten Speichern gültiger Daten in einem RAID-System nach einem durch einen Spei­ chereinheitsfehler verursachten Schreibfehler.
Das US-Patent 5,233,618 von Glider et al. offenbart ein Verfahren und ein Gerät zum Erfassen und Rekonstruieren unrichtig geführter Daten, zum Erfassen, wann ein Fehler beim Schreiben eines Blocks von Daten aufgetreten ist, und zum Re­ konstruieren der verlorenen Daten.
Das US-Patent 5,287,462 von Jibbe et al. offenbart ein Gerät zum Koppeln eines Hostbusses mit einer Anzahl von Speicheranordnungsbussen in einem RAID- System.
Das US-Patent 5,124,987 von Milligan et al. offenbart eine Plattenlaufwerkanord­ nung, in der Erneuerungen von Redundanzdaten durch Schreiben modifizierter "virtueller Spurfälle" in logische Spuren der Platten eliminiert werden, die eine Redundanzgruppe aufweisen.
Das US-Patent 5,088,081 von Farr offenbart ein RAID-System, in dem rekonstru­ ierte Daten von einem schlechten Datenblock auf einer "Reserveplatte" gespei­ chert werden.
Das US-Patent 4,761,785 von Clark et al. offenbart ein Speichermanagementsy­ stem, in dem Paritätsblöcke auf eine Gruppe von Speichervorrichtungen aufgeteilt werden, statt in einer einzelnen Speichervorrichtung gespeichert zu werden.
Eine Aufgabe der vorliegenden Erfindung besteht in der Schaffung eines Verfahrens und eines Geräts zum Schaffen ei­ ner transparenten Echtzeit-Rekonstruktion zerstörter Daten aus einer redundanten Anordnung von Speichereinheiten auf eine Weise, die einer Rekonstruktion sol­ cher zerstörter Daten im Vergleich mit einer Ausgabe nicht zerstörter Daten keine Verschlechterung der Leistung auferlegt und die keine Systemmittel bindet.
Ein Verfahren bzw. eine Vorrichtung gemäß der vorliegenden Erfindung sind in den unabhängigen Patentansprüchen 1 und 12 definiert. Die abhängigen Ansprüche definieren besondere Ausführungsformen der Erfindung.
Die vorliegende Erfindung ist insbesondere für Anwendungen geeignet, bei denen Daten aus einer Speichereinrichtung in Parzellen etwa gleicher Größe wiederge­ wonnen werden. Parzellengrößen reichen größenmäßig typischerweise von etwa 2 Kilobytes ("KB") für datensatzorientierte Datenbankanwendungen bis zu 256 KB und darüber für Videoserver und andere Systeme, die Daten vom Speicher in gro­ ßen kontinuierlichen Strömen wiedergewinnen. Jede Parzelle ist in "N" Blöcke von Daten unterteilt. Ein "N + 1"-ter" Paritätsblock für jede Parzelle wird basierend auf dem Inhalt der "N" Blöcke von Daten abgeleitet. Die "N" Blöcke von Daten und der Paritätsblock für jede Parzelle werden in Streifen von Blöcken in einer Redun­ danzgruppe gespeichert, die aus "N + 1" Datenspeichereinheiten besteht. Daten werden von den Speichereinheiten als ganzer Streifen zu einer Zeit gelesen.
Zum Lesen eines Streifens wird eine Leseanfrage gleichzeitig zu jeder Spei­ chereinheit in der Redundanzgruppe gesendet, welche den Block von Daten in jener Speichereinheit anfordert, die dem Streifen entspricht, der gelesen wird. Jede Speichereinheit verarbeitet unabhängig die Leseanfrage, die sie empfangen hat, und sendet den angeforderten Block zurück, sobald er gelesen worden ist. Bei ei­ nem Ausführungsbeispiel werden, wenn die ersten "N" empfangenen Blöcke den Paritätsblock enthalten (was anzeigt, daß der ausstehende "N + 1-te" Block ein Datenblock ist), die "N" empfangenen Blöcke miteinander XOR-verknüpft, um ei­ nen ausstehenden "N + 1-ten" Block zu rekonstruieren.
Jede Speichereinheit kann ihre angeforderte Leseoperation zu einer etwas ande­ ren Zeit als die anderen Speichereinheiten beenden, selbst wenn es keine Fehler in einer der Speichereinheiten gibt. Wenn ein Eingabe-/Ausgabefehler in einer der Speichereinheiten auftritt, wird die Ausgabe der angeforderten Daten aus jener Speichereinheit verloren oder signifikant verzögert. In jedem Fall werden, wenn "N" Blöcke wiedergewonnen worden sind, diese entweder sofort zum anfragenden Sy­ stem ausgegeben (wenn alle "N" Blöcke Datenblöcke sind) oder sofort XOR- verknüpft (wenn einer der "N" Blöcke der Paritätsblock ist). Im letzteren Fall wer­ den die empfangenen Datenblöcke und die XOR-Verknüpfungssumme, die eine Rekonstruktion des ausstehenden "N + 1-ten" Datenblocks darstellen, zur anfra­ genden Vorrichtung oder zum anfragenden Verfahren ausgegeben. Dasselbe Verfahren wird jedesmal verwendet, wenn Daten gelesen werden. Das System der vorliegenden Erfindung gibt somit Daten mit einer gleichbleibenden Geschwindig­ keit aus, ungeachtet dessen, ob ein Speichereinheitsfehler auftritt.
Die Erfindung wird nachfolgend unter Bezugnahme auf die beiliegende Zeichnung im Detail beschrieben. Es zeigen:
Fig. 1 ist ein schematisches Diagramm einer beispielhaften Anordnung von Speichereinheiten, die bei der vorliegenden Erfindung verwendet werden kann.
Fig. 2 ist ein schematisches Diagramm einer "Block-Streifenbildung", die bei den Speichereinheiten der Fig. 1 verwendet werden kann.
Fig. 3 ist eine Zeittabelle, die Schritte zeigt, die bei einer redundanten An­ ordnung eines Speichersystems nach dem Stand der Technik durch­ geführt werden.
Fig. 4 ist eine Zeittabelle, die Schritte zeigt, die in einem Ausführungsbei­ spiel der vorliegenden Erfindung durchgeführt werden.
Fig. 5 ist ein Blockdiagramm eines Computersystems, bei dem die vorlie­ gende Erfindung implementiert werden kann.
Fig. 6 ist ein Ablaufdiagramm für ein Ausführungsbeispiel der vorliegenden Erfindung.
Fig. 7 ist ein Ablaufdiagramm für ein zweites Ausführungsbeispiel der vor­ liegenden Erfindung.
In der folgenden Beschreibung werden zahlreiche spezifische Details für ein bes­ seres Verstehen der vorliegenden Erfindung vorgestellt. Es wird einem Fachmann auf dem Gebiet jedoch klar werden, daß die vorliegende Erfindung ohne diese spezifischen Details ausgeführt werden kann. Anderenfalls sind wohlbekannte Merkmale nicht detailliert beschrieben worden, um die vorliegende Erfindung nicht unnötig schwer verständlich zu machen.
Fig. 1 ist ein Beispiel eines Datenspeichersystems, das bei der vorliegenden Erfin­ dung verwendet werden kann. Das in Fig. 1 gezeigte System besteht aus einer zentralen Verarbeitungseinheit ("CPU") 100, einer Steuerung 105 und Spei­ chereinheiten "SU1" bis "SU5", die jeweils mit den Bezugszeichen 110A bis 110E bezeichnet sind. Die CPU 100 kann irgendeine Datenverarbeitungsvorrichtung sein, die Daten aus Datenspeichereinheiten speichern und/oder wiedergewinnen muß. Die Speichereinheiten SU1 bis SU5 können irgendwelche Vorrichtungen sein, die Daten speichern und wiedergewinnen können, einschließlich von Fest­ körperspeichern, Magnetbandlaufwerken und magnetischen, optischen und ma­ gneto-optischen Plattenlaufwerken. Obwohl das in Fig. 1 gezeigte System fünf Speichereinheiten enthält, kann die vorliegende Erfindung für irgendeine Anzahl von Speichereinheiten verwendet werden. Die Steuerung 105 steuert die Operati­ on der Speichereinheiten SU1 bis SU5. In Abhängigkeit von der Implementierung kann die Menge an Intelligenz der Steuerung 105 variieren, und die Steuerung 105 kann aus dem Bereich von einer einfachen hardwaremäßigen Plattenlaufwerk­ steuerung bis zu einer intelligenten selbständigen Datenverarbeitungsvorrichtung sein, die Platten- und Datenspeichermanagementfunktionen auf höherem Niveau durchführt.
Fig. 2 zeigt, wie die Anordnung von Speichereinheiten SU1 bis SU5 in Fig. 1 ver­ wendet werden kann, um ein redundantes Datenspeichersystem vom RAID-5-Typ zu schaffen. In RAID-5-Systemen sind Daten durch die Verwendung einer "Block- Streifenbildung" auf Datenspeichereinheiten in einer "Redundanzgruppe" aufge­ teilt. Eine "Redundanzgruppe" ist eine Gruppe gleicher Speichereinheiten, die auf eine Weise zusammen betrieben werden, die eine Redundanz bietet, wenn ir­ gendeine Speichereinheit innerhalb jener Gruppe ausfallen sollte. Bei dem Beispiel der Fig. 2 weisen die Speichereinheiten SU1 bis SU5 eine Redundanzgruppe auf. Eine "Block-Streifenbildung" ist eine Technik, bei der Datenspeichereinheiten der Redundanzgruppe in "Streifen" gleich großer "Blöcke" aufgeteilt sind. Bei dem Bei­ spiel der Fig. 2 ist jede der Speichereinheiten SU1 bis SU5 in sechs Blöcke aufge­ teilt gezeigt, die für jede Speichereinheit mit "A" bis "F" bezeichnet sind. Somit sind die Blöcke für die Speichereinheit SU1 mit "A1" bis "F1" bezeichnet, die Blöcke für die Speichereinheit SU2 sind mit "A2" bis "F2" bezeichnet, die Blöcke für die Spei­ chereinheit SU3 sind mit "A3" bis "F3" bezeichnet, die Blöcke für die Speicherein­ heit SU4 sind mit "A4" bis "F4" bezeichnet, und die Blöcke für die Speichereinheit SU5 sind mit "A5" bis "F5" bezeichnet.
Blockgrößen reichen typischerweise von der Größe eines einzelnen Plattensektors (etwa 512 Bytes) bis zu Größen von 64 KB und darüber bei bestimmten Ausfüh­ rungsbeispielen der vorliegenden Erfindung. Eine Speichereinheit hat typischer­ weise eine Kapazität von Zehntausenden von Blöcken und darüber. Der Klarheit halber sind in Fig. 2 jedoch nur sechs Blöcke für jede Speichereinheit gezeigt.
Ein "Streifen" von Blöcken besteht aus einer Gruppe, die einen entsprechenden Block von jeder der Speichereinheiten in einer Redundanzgruppe enthält. Bei­ spielsweise sind die ersten Blöcke der Speichereinheiten SU1 bis SU5 jeweils die Blöcke A1, A2, A3, A4 und A5. Die Gruppe von Blöcken A1, A2, A3, A4 und A5 ist somit der erste "Streifen" der Redundanzgruppe. Dieser Streifen ist in Fig. 2 mit "Streifen A" bezeichnet. Auf gleiche Weise besteht der zweite Streifen der Redun­ danzgruppe, der "Streifen B", aus den Blöcken B1, B2, B3, B4 und B5, der "Streifen C" besteht aus den Blöcken C1, C2, C3, C4 und C5, der "Streifen D" be­ steht aus den Blöcken D1, D2, D3, D4 und D5, der "Streifen E" besteht aus den Blöcken E1, E2, E3, E4 und E5, und der "Streifen F" besteht aus den Blöcken F1, F2, F3, F4 und F5.
Jeder Streifen der Redundanzgruppe der Fig. 2 enthält vier Blöcke der Gruppe von Daten, und einen Block mit Paritätsinformation. In Fig. 2 zeigt ein Rechteck um die Bezeichnung eines Blocks an, daß der Block ein Paritätsblock ist. Für den Streifen "A" in Fig. 2 sind aktuelle Daten in den Blöcken A1, A2, A3 und A4 gespeichert, während eine Paritätsinformation im Block A5 gespeichert ist. Die im Paritätsblock eines Streifens in einem RAID-5-System gespeicherte Paritätsinformation besteht typischerweise aus der XOR-verknüpften Summe der Datenblöcke im Streifen. Bei dem Beispiel der Fig. 2 besteht die im Block A5 gespeicherte Paritätsinformation aus der XOR-verknüpften Summe der Datenblöcke A1, A2, A3 und A4.
In einem RAID-5-System ist nicht die gesamte Paritätsinformation in der selben Speichereinheit gespeichert (wie in RAID-4-Systemen), sondern ist auf jeder der Speichereinheiten in einer Redundanzgruppe in einem allgemein vorbestimmten Muster abwechselnd gespeichert. Bei dem Beispiel der Fig. 2 ist die Paritätsinfor­ mation für die Streifen "A" und "F" auf der Speichereinheit SU5 gespeichert, für den Streifen "B" in der Speichereinheit SU1, für den Streifen "C" in der Spei­ chereinheit SU2, für den Streifen "D" in der Speichereinheit SU3, und für den Streifen "E" in der Speichereinheit SU4. Der Paritätsblock "folgt somit einer Bewe­ gung eines Kreisels" (it precesses) um die Speichereinheiten in einem spiral- bzw. schraubenförmigen Muster.
Beim Stand der Technik werden RAID-5-Systeme dazu verwendet, Online- Datenbanken zu speichern, die aus einer großen Anzahl einzelner Datensätze bestehen. Eine typische Leseanfrage resultiert somit in der Wiedergewinnung ei­ ner relativ kleinen Menge von Daten. Daten werden aus den Datenspeichereinhei­ ten in einem oder zwei Blöcken von Information zu einer Zeit wiedergewonnen. Während einer Leseanfrage wird der Paritätsblock eines Streifens nur gelesen, wenn ein Problem beim Lesen der Datenblöcke aufgetreten ist, für die eine Le­ seanfrage durchgeführt worden ist (was gegensätzlich zu einer Schreibanfrage ist, wo die Paritätsinformation für einen Streifen gelesen, modifiziert und erneut ge­ schrieben werden muß, wann immer die Daten in irgendeinem der Blöcke eines Streifens geändert werden). Wenn ein Versuch zum Lesen eines bestimmten Blocks von Daten fehlschlägt, werden einige Versuche zum erneuten Lesen durch­ geführt. Nur dann, wenn es scheint, daß der Block nicht wiedergewinnbar zerstört ist, werden die Daten im Block durch Lesen der Paritätsinformation für den Pari­ tätsblock für den Streifen des zerstörten Blocks und durch XOR-Verknüpfen von ihm mit den übrigen Datenblöcken in dem Streifen rekonstruiert. Nachdem die üb­ rigen Datenblöcke und der Paritätsblock miteinander XOR-verknüpft worden sind, wird der resultierende rekonstruierte ursprünglich angeforderte Datenblock zur an­ fragenden Vorrichtung ausgegeben.
Fig. 3 ist eine Zeittabelle, die Schritte zeigt, die bei einem System nach dem Stand der Technik durchgeführt werden, das die Redundanzgruppe der Fig. 2 dazu ver­ wendet, vier einzelne Blöcke von Daten zu lesen, von denen einer zerstört und unlesbar geworden ist. Die vier bei diesem Beispiel nach dem Stand der Technik verwendeten Datenblöcke sind die Blöcke A3, D1, B5 und A4. Von diesen ist der zerstörte Datenblock der Block B5 (was in Fig. 2 durch Unterstreichen gezeigt ist).
In Fig. 3 listet die linke Spalte Zeitinkremente T1, T2, T3, etc. auf, während die rechte Spalte die während jedes Zeitinkrements durchgeführte Handlung auflistet. Die Zeitinkremente sind nicht notwendigerweise gleich lang.
Wie es in Fig. 3 gezeigt ist, ist eine Ausgabe eines nicht zerstörten Datenblocks, wie beispielsweise des ersten Datenblocks A3, ein Verfahren mit drei Schritten. Eine Anfrage zum Lesen des Blocks A3 wird durch eine Anfragevorrichtung zur Zeit T1 durchgeführt. Zur Zeit T2 wird der Block A3 von der geeigneten Datenspei­ chereinheit gelesen, die in diesem Fall die Speichereinheit SU3 ist. Zur Zeit T3 werden die Daten im Block A3 zur Anfragevorrichtung ausgegeben.
Der zweite Block, der im Beispiel der Fig. 3 angefordert wird, ist auch nicht zer­ stört. Demgemäß wird dasselbe Verfahren mit drei Schritten zu den Zeiten T4, T5 und T6 für den zweiten Datenblock D1 wiederholt: eine Anfrage zum Lesen des Blocks D1 wird durchgeführt, der Block D1 wird von der Speichereinheit SU1 gele­ sen und die Daten im Block D1 werden ausgegeben.
Daten aus nicht zerstörten Datenblöcken können daher bei diesem Beispiel mit einer Geschwindigkeit von einem Datenblock in jeweils drei Zeitinkrementen aus­ gegeben werden. Wenn ein zerstörter Datenblock, wie beispielsweise der Daten­ block B5, angetroffen wird, müssen besondere Schritte unternommen werden, und der stetige Fluß von Daten wird unterbrochen. Die beim Lesen des zerstörten Da­ tenblocks B5 involvierten Schritte treten in Fig. 3 während der Zeitinkremente T7 bis T14 auf. Wie für die vorherigen zwei Datenblöcke besteht der erste Schritt darin, daß zur Zeit T7 eine Leseanfrage für den Block B5 durchgeführt wird. In Antwort auf die Leseanfrage wird zur Zeit T8 ein Versuch zum Lesen des Blocks B5 aus der Speichereinheit SU5 durchgeführt. Weil der Block B5 jedoch zerstört ist, ist der erste Leseversuch nicht erfolgreich. Zwei zusätzliche Versuche, den Block B5 zu lesen, werden zu den Zeiten T9 und T10 durchgeführt. Nach diesen drei nicht erfolgreichen Leseversuchen wird ein Lesefehler berichtet. An dieser Stelle wird eine Rekonstruktion des zerstörten Datenblocks B5 initiiert. Für ein Sy­ stem mit einem allgemeinen Aufbau, der gleich dem in Fig. 1 gezeigten Aufbau ist, kann das Rekonstruktionsverfahren in Abhängigkeit von der spezifischen Imple­ mentierung entweder durch die Steuerung 105 oder durch die CPU 100 gesteuert werden.
Das Rekonstruktionsverfahren tritt während der Zeitinkremente T12, T13 und T14 in Fig. 3 auf. Zur Zeit T12 werden die übrigen Blöcke im Streifen "B" (dem Streifen, in dem der zerstörte Datenblock B5 angeordnet ist), nämlich der Paritätsblock B1 und die Datenblöcke B2, B3 und B4 von den Speichereinheiten SU1, SU2, SU3 bzw. SU4 gelesen. Nachdem die Blöcke B1, B2, B3 und B4 aus den jeweiligen Speichereinheiten gelesen worden sind, werden diese Blöcke zur Zeit T13 mitein­ ander XOR-verknüpft, was einen rekonstruierten Datenblock B5 ergibt. Der rekon­ struierte Datenblock B5 wird dann zur Zeit T14 zur Anfragevorrichtung ausgege­ ben.
Der vierte Datenblock bei diesem Beispiel, nämlich der Block A4, ist nicht zerstört. Es wird demselben Verfahren mit drei Schritten zum Anfragen, Lesen und Ausge­ ben des Blocks A4 während der Zeitinkremente T15, T16 bzw. T17 gefolgt, wie ihm für die nicht zerstörten Datenblöcke A3 und D1 gefolgt wurde.
Ungleich dem Verfahren mit drei Schritten zum Ausgeben nicht zerstörter Daten­ blöcke A3, D1 und A4 enthält eine Ausgabe des rekonstruierten Datenblocks B5 die zusätzlichen Schritte zum Durchführen wiederholter Leseversuche, zum Berich­ ten eines Lesefehlers, zum Initiieren des Rekonstruktionsverfahrens, zum Lesen der übrigen Blöcke im Streifen und zum XOR-Verknüpfen der übrigen Blöcke zum Rekonstruieren des zerstörten Blocks. Diese zusätzlichen Schritte vergrößern die Zeitperiode von der Zeit, zu der eine Leseanfrage des zerstörten Blocks durchge­ führt wird, bis zu der Zeit, zu der der rekonstruierte Block schließlich ausgegeben wird. Demgemäß gibt es einen Unterschied bezüglich der Zeit, die zum Ausgeben eines nicht zerstörten Blocks benötigt wird, gegenüber einem Ausgeben eines zerstörten Blocks. Die Datenausgabe wird verzögert.
Zusätzlich zu einem individuellen Block-IO-Fehler sind Datenspeichereinheiten auch anfällig gegenüber einem katastrophalen Fehler mit beschränkten Ausfallra­ ten. Bei einem Datenspeichersystem, das aus einer großen Anzahl von Datenspei­ chereinheiten besteht, die für lange Zeitperioden kontinuierlich in Betrieb sind, tritt ein katastrophaler Fehler gesamter Speichereinheiten mit vorhersagbaren Häufig­ keiten auf. Der Ausfall einer gesamten Speichereinheit innerhalb einer Redun­ danzgruppe erhöht die Anzahl von Datenrekonstruktionen, die nötig sind, da eine derartige Rekonstruktion für jede Leseanfrage für einen Datenblock auf der ausge­ fallenen Speichereinheit erforderlich ist.
Zum Schaffen einer akzeptierbaren Leistungsfähigkeit für Systeme, die kontinuier­ liche Datenströme mit hohen Geschwindigkeiten ausgeben, muß ein redundantes Datenspeichersystem rekonstruierte Daten auf einen lokalen Lesefehler hin oder auf einen Ausfall der gesamten Speichereinheit hin mit im wesentlichen keiner Verzögerung gegenüber der Geschwindigkeit ausgeben können, mit der nicht zer­ störte nicht rekonstruierte Daten ausgegeben werden.
Die vorliegende Erfindung überwindet die Beschränkungen des Standes der Technik durch Schaffen einer Echtzeit-Rekonstruktion zerstörter Daten für Daten­ speichersysteme mit einem kontinuierlichen Strom einer hohen Datenübertra­ gungsgeschwindigkeit und andere Systeme, in denen Daten aus einer Redun­ danzgruppe für einen gesamten Streifen zu einer Zeit gelesen werden können.
In Systemen mit hoher Datenübertragungsgeschwindigkeit wird eine Einga­ be/Ausgabe gegenüber Speichersystemen am effizientesten in großen sequentiel­ len Stücken durchgeführt. Beispielsweise kann für die in Fig. 2 gezeigte Redun­ danzgruppe ein Teil eines Videoprogramms sequentiell in Streifen "A" bis "F" ge­ speichert werden. Jeder Streifen enthält vier Datenblöcke und einen Paritätsblock. Die Streifen "A" bis "F" enthalten somit eine Gesamtheit von vierundzwanzig Da­ tenblöcken. Die Größe jedes Blocks beträgt bei einem Ausführungsbeispiel der vorliegenden Erfindung 64 Kilobytes ("KB") (bei anderen Ausführungsbeispielen werden Blockgrößen von 32 KB und darunter verwendet). Für dieses Ausfüh­ rungsbeispiel enthält jeder Streifen somit vier Blöcke von jeweils 64 KB oder eine Gesamtheit von 256 KB von Daten. Die Summe der Streifen "A" bis "F" beträgt das Sechsfache von 256 KB oder 1.536 Megabytes ("MB") oder 12.288 Megabits ("Mb") von Daten. Für mit einer Geschwindigkeit von etwa 1,5 Megabits pro Se­ kunde übertragene Videodaten enthalten die Streifen "A" bis "F" somit etwa 8 Se­ kunden von Videodaten.
In dem Speichersystem der vorliegenden Erfindung werden Daten in einer Redun­ danzgruppe von Datenspeichereinheiten in Inkrementen eines Streifens auf einmal gespeichert und wieder hervorgeholt, was bei diesem Beispiel insgesamt 256 KB, gespeichert in vier Blöcken von jeweils 64 KB, ist. Der fünfte Block jedes Streifens ist ein Paritätsblock, der die XOR-verknüpfte Summe der vier Datenblöcke in dem Streifen enthält. Zum Lesen des Teils des in den Streifen "A" bis "F" der Fig. 2 ge­ speicherten Videoprogramms werden zuerst Leseanfragen gleichzeitig für alle Blöcke im Streifen "A" ausgegeben, nämlich die Blöcke A1, A2, A3, A4 und A5. Diese Leseanfragen können in Abhängigkeit vom Ausführungsbeispiel durch ein Verfahren ausgegeben werden, das in einer Datenverarbeitungsvorrichtung läuft, oder durch eine intelligente Speichereinheitssteuerung.
Gleichzeitig werden eine Leseanfrage für den Block A1 zur Speichereinheit SU1, eine Leseanfrage für den Block A2 zur Speichereinheit SU2, eine Leseanfrage für den Block A3 zur Speichereinheit SU3, eine Leseanfrage für den Block A4 zur Speichereinheit SU4 und eine Leseanfrage für den Block A5 zur Speichereinheit SU5 ausgegeben. Die angeforderten Datenblöcke werden nicht immer zur gleichen Zeit ausgegeben. Statt dessen werden sie über eine gewisse Zeitperiode verteilt.
Bei einem Ausführungsbeispiel der vorliegenden Erfindung wird ein Block, sobald er empfangen wird, in einem Puffer gespeichert, und es wird eine Prüfung durchge­ führt, um zu bestimmen, ob der empfangene Block neben dem letzten Block im Streifen ist (d. h. bei diesem Beispiel der vierte Block). Wenn der zuletzt empfan­ gene Block neben dem letzten Block ist (was anzeigt, daß alle außer einem der Blöcke des Streifens empfangen worden sind), wird eine weitere Prüfung durchge­ führt, um zu bestimmen, ob alle empfangenen Blöcke Datenblöcke sind, oder ob statt dessen einer von ihnen der Paritätsblock ist. Wenn alle ersten vier Blöcke Datenblöcke sind, sind alle Datenblöcke des Streifens empfangen worden, und sie werden zur Anfragevorrichtung oder zum Anfrageverfahren ausgegeben. Wenn einer der ersten vier Blöcke der Paritätsblock für den Streifen ist, dann ist der noch ausstehende Block ein Datenblock. Statt damit fortzufahren, auf den ausstehenden Block zu warten, rekonstruiert die vorliegende Erfindung den fehlenden Block durch XOR-Verknüpfen der drei Datenblöcke und des Paritätsblocks, die schon empfangen worden sind. Die drei empfangenen Datenblöcke zusammen mit der XOR-verknüpften Summe dieser drei Blöcke und des Paritätsblocks werden zur Anfragevorrichtung oder zum Anfrageverfahren ausgegeben. Weil ein Streifen vier Datenblöcke und einen Paritätsblock mit der XOR-verknüpften Summe der vier Datenblöcke enthält, ist die XOR-verknüpfte Summe vier beliebiger der fünf Blöcke eines Streifens ungeachtet der Reihenfolge, in der die Blöcke empfangen werden, dasselbe wie der fünfte Block. Demgemäß gibt es bei der vorliegenden Erfindung ungeachtet des Grunds für die Verzögerung des fünften Blocks keine Notwendig­ keit, auf die Ausgabe des fünften und letzten Blocks zu warten.
Bei dem Beispiel der Fig. 2 enthält der Streifen "A" keinerlei zerstörte Blöcke. Demgemäß hängt die Reihenfolge, in der Blöcke von jeder der Speichereinheiten SU1 bis SU5 in Antwort auf gleichzeitige Leseanfragen, die zu jeder der jeweiligen Speichereinheiten ausgegeben werden, primär von den relativen charakteristi­ schen Reaktionszeiten der Speichereinheiten ab. Für dieses Beispiel ist ange­ nommen, daß die Reihenfolge der relativen charakteristischen Reaktionszeiten der Speichereinheiten von der schnellsten bis zur langsamsten SU4, SU2, SU5, SU1 und SU3 ist. Es ist demgemäß auch angenommen, daß in Abwesenheit irgendwel­ cher zerstörter Blöcke oder anderer Unregelmäßigkeiten für gleichzeitig ausgege­ bene Leseanfragen die Speichereinheit SU4 den angeforderten Block zuerst aus­ gibt, jeweils gefolgt von den Speichereinheiten SU2, SU5, SU1 und SU3. Die Zah­ len unter jeder der Speichereinheiten SU1 bis SU5 in Fig. 2 zeigen die relative Leistungsfähigkeit der Speichereinheiten an.
Fig. 4 ist eine Zeittabelle, die die Handlungen zeigt, die bei dem vorliegenden Ausführungsbeispiel der vorliegenden Erfindung auftreten, wenn Streifen "A" bis "D" der Fig. 2 gelesen werden. Die erste Spalte in Fig. 4 spezifiziert das relative Zeitintervall einer Handlung. Die zweite Spalte der Fig. 4 identifiziert die während dem spezifizierten Zeitintervall durchgeführte Handlung. Die dritte Spalte der Fig. 4 listet die Blöcke auf, die am Ende des spezifizierten Zeitintervalls in einem Puffer gespeichert sind.
Wie es in Fig. 4 gezeigt ist, ist die erste zur Zeit T1 durchgeführte Handlung, daß gleichzeitige Anfragen zu den Speichereinheiten SU1 bis SU5 durchgeführt wer­ den, um den Block jeder Speichereinheit zu lesen, die dem Streifen "A" entspricht, nämlich jeweils die Blöcke A1 bis A5. Wie es in Fig. 2 gezeigt ist, gibt es keine zerstörten Blöcke im Streifen "A". Demgemäß werden die Blöcke von den Spei­ chereinheiten basierend auf den Charakteristiken der Leistungsfähigkeit der Spei­ chereinheiten empfangen. Bei Vorgabe der in Fig. 2 spezifizierten angenommenen relativen Leistungsfähigkeit ist der erste Block, der in Antwort auf gleichzeitige Le­ seanfragen für jeden der Blöcke im Streifen "A" der Fig. 2 empfangen wird, der Block A4 von der am schnellsten antwortenden Speichereinheit SU4. Wie es in Fig. 4 gezeigt ist, wird der Block A4 zur Zeit T2 empfangen und gespeichert.
Die zweitschnellste Speichereinheit ist die Speichereinheit SU2. Demgemäß ist der zweite Block, der vom Streifen "A" empfangen wird, der Block A2 von der Spei­ chereinheit SU2. Wie es in Fig. 4 gezeigt ist, wird der Block A2 zur Zeit T3 emp­ fangen und gespeichert. Am Ende des Zeitintervalls T3 sind die Blöcke A4 und A2 empfangen und in einem Puffer gespeichert worden, wie es in der dritten Spalte der Fig. 4 gezeigt ist.
Die drittschnellste Speichereinheit ist die Speichereinheit SU5. Demgemäß ist der dritte Block, der vom Streifen "A" empfangen wird, der Block A5 von der Spei­ chereinheit SU5. Wie es in Fig. 2 gezeigt ist, ist der Block A5 der Paritätsblock für den Streifen "A". In Fig. 4 ist ein Paritätsblock durch Unterstreichen angezeigt. Wie es in Fig. 4 gezeigt ist, wird der Block A5 zur Zeit T4 empfangen und gespeichert. Am Ende des Zeitintervalls T4 sind die Blöcke A4, A2 und A5 empfangen und ge­ speichert worden, wie es in der dritten Spalte der Fig. 4 gezeigt ist.
Die viertschnellste Speichereinheit ist die Speichereinheit SU1. Demgemäß ist der vierte Block, der vom Streifen "A" empfangen wird, der Block A1 von der Spei­ chereinheit SU1. Wie es in Fig. 4 gezeigt ist, wird der Block A1 zur Zeit T5 emp­ fangen und gespeichert. Am Ende des Zeitintervalls T5 sind die Blöcke A4, A2, A5 und A1 empfangen und gespeichert worden, wie es in der dritten Spalte der Fig. 4 gezeigt ist.
Sobald vier von fünf Blöcken eines Streifens empfangen worden sind, wird eine Prüfung durchgeführt, um zu bestimmen, ob alle der ersten vier empfangenen Blöcke Datenblöcke sind, was gegenteilig zu Paritätsblöcken ist. Hier sind nur drei der ersten Blöcke Datenblöcke, da der dritte Block, der empfangen wurde, der Paritätsblock A5 ist. Da die ersten vier Blöcke nicht alles Datenblöcke sind, bleibt ein Datenblock, in diesem Fall der Block A3, ausstehend. Demgemäß werden die vier empfangenen Blöcke zur Zeit T6 miteinander XOR-verknüpft, um den ausste­ henden fünften Block, nämlich A3, zu rekonstruieren. Dieser rekonstruierte Block wird zusammen mit den vier empfangenen Blöcken in einem Puffer gespeichert. Am Ende des Zeitintervalls T6 sind die Blöcke A4, A2, A5, A1 und der rekonstruier­ te Block A3 empfangen und gespeichert worden, wie es in der dritten Spalte der Fig. 4 gezeigt ist. In Fig. 4 wird ein rekonstruierter Block, wie beispielsweise der Block A3, dadurch angezeigt, daß er von Klammern umgeben ist (z. B. "[A3]"). Nachdem die ersten vier Blöcke empfangen und XOR-verknüpft worden sind, wer­ den die drei empfangenen Datenblöcke A4, A2 und A1 und der rekonstruierte vierte Datenblock [A3] zu der Vorrichtung ausgegeben, die zum Lesen des Strei­ fens aufforderte. Wie es in Fig. 4 gezeigt ist, findet diese Ausgabe für den Streifen "A" zur Zeit T7 statt. Für einen Streifen, wie beispielsweise den Streifen "A" der Fig. 2, der keinerlei zerstörte Datenblöcke enthält, findet ein Lesen und Ausgeben aller Blöcke im Streifen über eine Zeit hinweg statt, die der Summe der Zeitinterval­ le T1 bis T7 gleicht.
Die nächsten sieben Zeitintervallzeilen in Fig. 4, nämlich T8 bis T14, zeigen die Handlungen, die durchgeführt werden, wenn ein Streifen wie beispielsweise der Streifen "B" gelesen wird, in dem einer der Blöcke (in diesem Fall der Block B5) zerstört ist. Zur Zeit T8 werden, wie es auch zur Zeit T1 für den Streifen "A" durch­ geführt wurde, Leseanfragen gleichzeitig zu den Speichereinheiten SU1 bis SU5 für alle Blöcke, nämlich die Blöcke B1 bis B5, des Streifens "B" ausgegeben. Die schnellste Speichereinheit ist noch die Speichereinheit SU4, so daß der erste Block, der zurückgebracht wird, der Block B4 ist. Wie es in Fig. 4 gezeigt ist, wird der Block B4 zur Zeit T9 empfangen und gespeichert.
Die zweitschnellste Speichereinheit ist wieder die Speichereinheit SU2. Der zweite Block, der empfangen wird, ist demgemäß der Block B2. Wie es in Fig. 4 gezeigt ist, wird der Block B2 zur Zeit T10 empfangen und gespeichert.
Wie es durch Unterstreichen in Fig. 2 angezeigt ist, ist der Block B5 auf der Spei­ chereinheit SU5 zerstört. Demgemäß schlägt ein Versuch der Speichereinheit SU5 fehl, den Block B5 zu lesen. Nachdem ihr erster Versuch zum Lesen des Blocks B5 fehlgeschlagen ist, kann die Speichereinheit SU5 versuchen, den Block B5 ein zweites Mal zu lesen. In jedem Fall kann die Speichereinheit SU5 aufgrund der Zerstörung des Blocks B5 den Block B5 nicht zu der Zeit ausgeben, zu der sie ei­ nen nicht zerstörten Datenblock ausgeben könnte. Auch wenn die Speichereinheit SU5 normalerweise die drittschnellste Speichereinheit ist, ist sie in diesem Fall nicht die dritte Speichereinheit, die einen Block im angeforderten Streifen ausgibt.
Aufgrund der Verzögerung beim Ausgeben des Blocks B5 von der Speichereinheit SU5 ist der dritte Block, der empfangen wird, der Paritätsblock B1 von der Spei­ chereinheit SU1. Wie es in Fig. 4 gezeigt ist, wird der Paritätsblock B1 zur Zeit T11 empfangen und gespeichert. Aufgrund der andauernden Unfähigkeit der Spei­ chereinheit SU5, den Block B5 auszugeben, ist der vierte Block, der empfangen wird, der Block B3. Wie es in Fig. 4 gezeigt ist, wird der Block B3 zur Zeit T12 empfangen und gespeichert.
Sobald die Blöcke B4, B2, B1 und B3 empfangen worden sind, wird eine Prüfung durchgeführt, um zu bestimmen, ob alle der empfangenen Blöcke Datenblöcke sind oder nicht. Da einer der empfangenen Blöcke der Paritätsblock B1 ist, sind nicht alle empfangenen Blöcke Datenblöcke. Demgemäß werden sie zur Zeit T13 mit­ einander XOR-verknüpft, um einen rekonstruierten Datenblock [B5] zu erzeugen. Die drei empfangenen Datenblöcke B2, B3 und B4 und der rekonstruierte Daten­ block [B5] werden dann zu der Vorrichtung oder dem Verfahren zur Zeit T14 aus­ gegeben, die bzw. das zum Lesen des Streifens "B" aufforderte. Für einen Streifen, wie beispielsweise den Streifen "B" der Fig. 2, der einen zerstörten Datenblock enthält, findet ein Lesen und Ausgeben aller Blöcke im Streifen über eine Zeit hin­ weg statt, die gleich der Summe der Zeitintervalle T8 bis T14 ist. Ein Vergleich der Handlungen, die über die sieben Zeitintervalle T8 bis T14 durchgeführt werden, mit den Handlungen, die über die sieben Zeitintervalle T1 bis T7 hinweg für den Streifen "A" (der keine zerstörten Blöcke enthält) durchgeführt werden, kann gese­ hen werden, daß die in beiden Fällen vorgenommenen Handlungen, und daher die verstrichene Zeit, im wesentlichen gleich sind. Demgemäß kann die vorliegende Erfindung alle Blöcke des Streifens "B" mit derselben Geschwindigkeit ausgeben, mit der es möglich war, alle Blöcke des Streifens "A" auszugeben, selbst wenn ei­ ner der Blöcke des Streifens "B" zerstört war.
Zusätzlich zu den Verzögerungen bei der Ausgabe eines angeforderten Blocks durch eine Speichereinheit aufgrund einer Zerstörung des Datenblocks können Verzögerungen auch auftreten, wenn eine Speichereinheit eine periodische Selbstdiagnose oder eine andere Systemfunktion durchführt. Beispielsweise führen Festplatten-Speichereinheiten gemeinsam ein Verfahren, das als thermische Kali­ brierung bekannt ist, alle paar Minuten oder so durch. Während dieses Verfahrens gelangt die Platte außer Betrieb und ist für einige Sekunden nicht ansprechbar, während sie erneut kalibriert. Die vorliegende Erfindung kompensiert auch Verzö­ gerungen, die durch derartige Speichereinheitssystemverfahren induziert werden. Beispielsweise ist in Fig. 4 angenommen, daß die Speichereinheit SU4 einem der­ artigen Systemverfahren unterzogen wird, während der Streifen "C" während Zei­ tintervallen T15 bis T21 gelesen wird. Aufgrund dieses Systemverfahrens wird die Speichereinheit SU4, die normalerweise die Speichereinheit ist, die am schnellsten antwortet, statt dessen die langsamste Speichereinheit. Die ersten vier Blöcke, die zu Zeitintervallen T16, T17, T18 und T19 in Antwort auf die gleichzeitigen Lesean­ fragen für alle Blöcke im Streifen "C" zur Zeit T15 empfangen werden, sind daher jeweils der Paritätsblock C2 und die Datenblöcke C5, C1 und C3. Da der ausste­ hende Block ein Datenblock ist, werden diese vier Blöcke zur Zeit T20 miteinander XOR-verknüpft, um den ausstehenden Datenblock C4 zu rekonstruieren. Die drei empfangenen Datenblöcke C1, C3 und C5 sowie der rekonstruierte Datenblock [C4] werden zur Zeit T21 ausgegeben. Die über die sieben Zeitintervalle T15 bis T21 hinweg durchgeführten Handlungen und die verstrichene Zeit sind wiederum im wesentlichen dieselben wie für die sieben Zeitintervalle T1 bis T7, während welcher die Blöcke im Streifen "A" gelesen und ausgegeben wurden.
In bezug auf das Lesen des Streifens "D" während der Zeitintervalle T22 bis T28 in Fig. 4 ist angenommen, daß ein katastrophaler Fehler gegenüber der Speicherein­ heit SU1 aufgetreten ist, und daß es nun nicht mehr möglich ist, irgendwelche Da­ ten von der Speichereinheit SU1 zu erhalten. Weil die Speichereinheit SU1, die normalerweise die viertschnellste Speichereinheit ist, nicht mehr funktioniert, sind die ersten vier Blöcke, die in Antwort auf gleichzeitige Leseanfragen für Blöcke D1 bis D5 zur Zeit T22 empfangen werden, die Datenblöcke D4, D2, D5 und der Pari­ tätsblock D3. Diese Blöcke werden jeweils zu Zeiten T23, T24, T25 und T26 emp­ fangen und gespeichert und, weil der ausstehende Block ein Datenblock ist, zur Zeit T27 XOR-verknüpft. Die drei empfangenen Datenblöcke D4, D2 und D5 sowie der rekonstruierte Datenblock [D1] von der ausgefallenen Speichereinheit SU1 werden zur Zeit T28 ausgegeben. Die über die sieben Zeitintervalle T22 bis T27 durchgeführten Handlungen und die verstrichene Zeit sind wiederum im wesentli­ chen dieselben wie für die sieben Zeitintervalle T1 bis T7, während welcher die Blöcke im Streifen "A" gelesen und ausgegeben wurden.
Wie es in Fig. 4 gezeigt ist, kompensiert daher die vorliegende Erfindung einen lokalen Datenblockfehler, einen katastrophalen Speichereinheitsausfall oder eine Speichereinheitssystem-Verfahrensverzögerung in Echtzeit, ohne dem Daten­ strom, der ausgegeben wird, eine Verzögerung aufzuerlegen.
Bisher ist die vorliegende Erfindung unter Bezugnahme auf das System der Fig. 2 diskutiert worden, welches Streifen mit fünf Blöcken zeigt, die aus 64 KB Blöcken aufgebaut sind, die in fünf Speichereinheiten gespeichert sind. Es wird Fachleuten auf dem Gebiet klar werden, daß die vorliegende Erfindung nicht auf dieses spezi­ fische Ausführungsbeispiel beschränkt ist, sondern daß irgendeine willkürliche An­ zahl von Blöcken und Speichereinheiten und eine beliebige Blockgröße verwendet werden kann. Weiterhin kann die vorliegende Erfindung, obwohl sie in bezug auf ein System vom RAID-5-Typ beschrieben worden ist, genausogut unter Verwen­ dung einer RAID-4-Systemarchitektur oder einer anderen Systemarchitektur im­ plementiert werden.
Bei dem allgemeinen Fall enthält das System der vorliegenden Erfindung eine Redundanzgruppe von "N + 1" Speichereinheiten. Der Speicherbereich jeder Spei­ chereinheit ist in eine Vielzahl von Blöcken aufgeteilt, so daß jeder Block einer Speichereinheit einen entsprechenden Block in jeder der anderen Speichereinhei­ ten hat. Die Gruppe, die einen Block aufweist, und die entsprechenden Blöcke in jeder der anderen Speichereinheiten sind ein "Streifen". Typischerweise ist die Blockgröße für alle Streifen gleich. Jedoch können bei einigen Ausführungsbei­ spielen unterschiedliche Streifen unterschiedliche Blockgrößen haben. Diese Art von Aufbau kann beispielsweise geeignet sein, wo unterschiedliche Streifen Datei­ en unterschiedlicher Typen und/oder Größen speichern.
Innerhalb jedes Streifens speichern "N" Blöcke Daten, und ein Block ist ein Pari­ tätsblock, der eine Paritätsinformation für die Datenblöcke im Streifen speichert. Die Paritätsinformation ist typischerweise die XOR-verknüpfte Summe der Daten­ blöcke im Streifen. Demgemäß können die Daten in irgendeinem Block durch XOR-Verknüpfen der Daten in jedem der anderen Blöcke erhalten werden. Die Paritätsblöcke für unterschiedliche Streifen können in einem zugehörigen der "N + 1" Speichereinheiten gespeichert werden, wie in einem RAID-4-System, oder der Paritätsblock kann auf die Speichereinheiten aufgeteilt werden, wie beispielsweise in einem RAID-5-System.
Wie in dem System mit fünf Speichereinheiten der Fig. 2 liest in einem System mit "N + 1" Speichereinheiten der vorliegenden Erfindung jede Leseoperation einen gesamten Streifen zu einer Zeit. Leseanfragen für jeden Block in dem Streifen werden gleichzeitig zu jeder der jeweiligen Speichereinheiten in der Redundanz­ gruppe ausgegeben. Sobald die "N" Blöcke (d. h. alle Blöcke in dem Streifen außer einem) empfangen worden sind, wird eine Prüfung durchgeführt, um zu bestimmen, ob die "N" empfangenen Blöcke alles Datenblöcke sind. Wenn sie es sind, werden sie sofort zur anfragenden Vorrichtung oder zum anfragenden Verfahren ausgege­ ben. Wenn einer der ersten "N" Blöcke der Paritätsblock ist, dann sind nur "N - 1" Datenblöcke empfangen worden, und ein Datenblock bleibt ausstehend. Demge­ mäß werden der Paritätsblock und die "N - 1" empfangenen Datenblöcke miteinan­ der XOR-verknüpft, um den fehlenden Datenblock zu rekonstruieren. Die "N - 1" empfangenen Datenblöcke und die XOR-Verknüpfungssumme, die den rekonstru­ ierten fehlenden Datenblock darstellt, werden zur anfragenden Vorrichtung oder zum anfragenden Verfahren ausgegeben. Der "N + 1-te" Block wird daher, wann immer er ein Datenblock ist, immer im Vorbeigehen rekonstruiert. Der rekonstruier­ te Block wird ungeachtet dessen ausgegeben, ob die verzögerte Ankunft (verglichen mit den vorangehenden "N" Blöcken) des "N + 1"-ten Blocks durch ir­ gendein System oder ein Speichereinheitsverfahren oder einen Fehler oder ir­ gendeinen anderen Grund verursacht wurde oder nicht. Somit bleiben die Verfah­ rensschritte, die durch das System durchgeführt werden, und die Geschwindigkeit, mit der angeforderte Daten ausgegeben werden, ungeachtet dessen, ob irgendein Lesefehler auftritt, im wesentlichen konstant.
Bei einem Ausführungsbeispiel der vorliegenden Erfindung wird, nachdem be­ stimmt worden ist, daß die ersten "N" empfangenen Blöcke nicht alles Datenblöcke sind, und bevor sie miteinander XOR-verknüpft werden, um den ausstehenden "N + 1-ten" Block zu rekonstruieren, eine Prüfung in letzter Minute durchgeführt, um zu bestimmen, ob der "N + 1-te" Block empfangen worden ist, wodurch die Not­ wendigkeit vermieden wird, das XOR-Verknüpfungsverfahren durchzuführen. Ein Ablaufdiagramm für dieses Ausführungsbeispiel ist in Fig. 6 gezeigt.
Wie es in Fig. 6 gezeigt ist, werden bei diesem Ausführungsbeispiel Leseanfragen für alle "N + 1" Blöcke ("N" Datenblöcke und einen Paritätsblock) in einem Streifen beim Schritt 600 ausgegeben, und die gelesenen Blöcke werden beim Schritt 610 erwartet. Nachdem ein Block beim Schritt 610 empfangen worden ist, wird beim Schritt 620 eine Bestimmung darüber durchgeführt, ob die "N" Blöcke (alle Blöcke im Streifen außer einem) empfangen worden sind. Wenn nicht, wird beim Schritt 610 der nächste Block erwartet. Wenn "N" Blöcke empfangen worden sind, wird beim Schritt 630 eine Bestimmung darüber durchgeführt, ob irgendeiner der "N" Blöcke, die empfangen worden sind, der Paritätsblock ist, was anzeigt, daß der ausstehende Block ein Datenblock ist. Wenn keiner der empfangenen Blöcke ein Paritätsblock ist, ist der ausstehende Block der Paritätsblock. Somit sind schon alle Datenblöcke des Streifens empfangen worden, und sie können beim Schritt 650 in dem Anwenderpuffer angeordnet werden. Wenn einer der Blöcke, die empfangen worden sind, der Paritätsblock ist, dann ist der ausstehende Block ein Datenblock, der durch miteinander "XOR-Verknüpfen" der schon empfangenen Blöcke rekon­ struiert werden kann. Vor einem Beginnen des XOR-Verfahrens wird jedoch beim Schritt 635 eine Endprüfung durchgeführt, um zu bestimmen, ob der "N + 1-te" Block nun angekommen ist. Die Prüfung kann sofort durchgeführt werden, oder ein kurze vorbestimmte Verzögerung kann implementiert sein, um dem "N + 1-ten" Block eine Chance zum Ankommen zu geben. Wenn beim Schritt 635 bestimmt wird, daß der "N + 1-te" Block angekommen ist, wird kein XOR- Verknüpfungsverfahren benötigt, und die "N" Datenblöcke werden beim Schritt 650 zum Anwenderpuffer ausgegeben. Wenn der "N + 1-te" Block nicht angekommen ist, werden die "N" empfangenen Blöcke, die aus dem Paritätsblock und "N - 1" Datenblöcken bestehen, beim Schritt 640 miteinander XOR-verknüpft, um den letzten Datenblock zu erhalten. Die "N" Datenblöcke, die aus "N - 1" empfangenen Datenblöcken und einem rekonstruierten Datenblock bestehen, werden beim Schritt 650 zu einem Anwenderpuffer kopiert.
Das Ausführungsbeispiel der Fig. 7 ist ähnlich dem Ausführungsbeispiel der Fig. 6, außer daß die empfangenen Blöcke überwacht werden, wenn sie empfangen wer­ den, um zu bestimmen, ob irgendeiner der ersten "N" Blöcke, die empfangen wer­ den, der Paritätsblock ist. Das XOR-Verknüpfen der empfangenen Blöcke wird be­ gonnen, sobald der Paritätsblock empfangen wird. Wie es in Fig. 7 gezeigt ist, werden Leseanfragen für alle "N + 1" Blöcke in einem Streifen beim Schritt 700 ausgegeben, und die ersten resultierenden Blöcke werden beim Schritt 710 erwar­ tet. Nachdem ein Block empfangen worden ist, wird beim Schritt 720 eine Prüfung durchgeführt, um zu bestimmen, ob alle "N" Datenblöcke empfangen worden sind. Wenn alle "N" Datenblöcke empfangen worden sind, werden die "N" Datenblöcke beim Schritt 780 zu einem Anwenderpuffer kopiert.
Wenn noch nicht alle "N" Datenblöcke empfangen worden sind, wird beim Schritt 730 eine Prüfung durchgeführt, um zu bestimmen, ob der Paritätsblock empfangen worden ist. Wenn der Paritätsblock nicht empfangen worden ist, werden beim Schritt 710 weitere Blöcke erwartet. Wenn der Paritätsblock empfangen worden ist, werden beim Schritt 740 alle schon empfangenen Datenblöcke mit dem Paritäts­ block XOR-verknüpft und im Paritätspuffer gespeichert. Danach wird beim Schritt 745 eine Prüfung durchgeführt, ob "N" Blöcke empfangen worden sind. Wenn "N" Blöcke empfangen worden sind, dann ist die XOR-Verknüpfungssumme jener "N" Blöcke äquivalent zum ausstehenden Datenblock, und alle Datenblöcke ("N - 1" empfangenen Datenblöcke und ein rekonstruierter Datenblock) sind zur Ausgabe verfügbar, und sie werden beim Schritt 780 zum Anwenderpuffer ausgegeben. Wenn noch nicht "N" Blöcke empfangen worden sind, werden beim Schritt 750 zu­ sätzliche Blöcke erwartet. Da der Paritätsblock an dieser Stelle empfangen worden ist, sind alle übrigen ausstehenden Blöcke Datenblöcke.
Nachdem der nächste Datenblock empfangen worden ist, wird er beim Schritt 760 in den Paritätspuffer XOR-verknüpft, der entweder den Paritätsblock (wenn der Paritätsblock der erste Block war, der empfangen wurde) oder die XOR- Verknüpfungssumme des Paritätsblocks und zuvor empfangene Datenblöcke ent­ hält. Beim Schritt 770 wird eine Prüfung durchgeführt, um zu bestimmen, ob "N" Blöcke empfangen worden sind. Wenn beim Schritt 770 bestimmt wird, daß "N" Blöcke empfangen worden sind, werden beim Schritt 780 "N" Datenblöcke zum Anwenderpuffer kopiert. Diese "N" Datenblöcke bestehen aus einem rekonstruier­ ten Datenblock, der die XOR-Verknüpfungssumme der "N" empfangenen Blöcke und der "N - 1" empfangenen Blöcke, die andere als der Paritätsblock sind, ist.
Zusätzlich zu einem Geeignetsein für Anwendungen, wie beispielsweise die Aus­ gabe von kontinuierlichen Strömen von Daten, wie beispielsweise digitaler Video- und/oder Audiodaten ist die vorliegende bei geeigneter Wahl des Streifens, des Blocks und von Redundanzgruppengrößen geeignet für eine beliebige Anwen­ dung, bei der Daten in etwa gleich bemaßten Parzellen wiedergewonnen werden. In diesem allgemeinen Fall sind für eine Redundanzgruppe, die "N + 1" Datenspei­ chereinheiten ("N" Speichereinheiten, die aktuelle Daten speichern, und eine, die eine Paritätsinformation speichert) aufweist, die Blockgröße "B" und die Anzahl von Datenspeichereinheiten "N" zum Speichern aktueller Daten derart, daß das Produkt von "B" und "N" der Datenparzellengröße "D" gleicht. Somit ist "B" mal "N" gleich "D"; "D" geteilt durch "B" ist gleich "N"; und "D" geteilt durch "N" ist gleich "B".
Beispielsweise werden bei datensatzorientierten Datenbanksystemen Daten all­ gemein in 2 KB Parzellen gespeichert: "D" gleicht bei diesem Beispiel somit 2 KB. Eine typische Sektorgröße in einer Datenspeichereinheit beträgt 512 Bytes. Wenn die Blockgröße "B" jeder Speichereinheit auf die Größe eines typischen Platten­ sektors eingestellt ist, nämlich 512 Bytes, dann wird der geeignete Wert für "N" durch Teilen von 2 KB ("D") durch 512 Bytes ("B") erhalten. Demgemäß ist "N" gleich 4, und die Gesamtanzahl von Datenspeichereinheiten in einer geeigneten Redundanzgruppe ist "N + 1" oder 5. Somit ist ein System der vorliegenden Erfin­ dung, das eine Redundanzgruppe von fünf Datenspeichereinheiten verwendet, die in Blöcke von 512 Bytes aufgeteilt sind, für eine Datenbankanwendung geeignet, die Daten in Mengen von 2 KB liest.
Die vorliegende Erfindung kann bei einem Computer für allgemeine Zwecke im­ plementiert werden, wie er beispielsweise in Fig. 5 dargestellt ist. Eine Tastatur 510 und eine Maus 511 sind mit einem bidirektionalen Systembus 518 gekoppelt. Die Tastatur und die Maus dienen zum Eingeben einer Benutzereingabe zum Computersystem und zum Übertragen jener Benutzereingabe zur CPU 513. Das Computersystem der Fig. 5 enthält auch einen Videospeicher 514, einen Haupt­ speicher 515 und einen Massenspeicher 512, die alle zusammen mit der Tastatur 510, der Maus 511 und der CPU 513 mit dem bidirektionalen Systembus 518 ge­ koppelt sind. Der Massenspeicher 512 kann mehrere Datenspeichereinheiten auf­ weisen und kann sowohl feste als auch entfernbare Medien enthalten, wie bei­ spielsweise magnetische, optische und magneto-optische Speichersysteme oder irgendeine andere verfügbare Massenspeichertechnologie. Der Bus 518 kann bei­ spielsweise 32 Adressenleitungen zum Adressieren des Videospeichers 514 oder des Hauptspeichers 515 enthalten. Der Systembus 518 enthält beispielsweise auch einen 32-Bit-Datenbus zum Übertragen von Daten zwischen und unter den Komponenten, wie beispielsweise der CPU 513, dem Hauptspeicher 515, dem Vi­ deospeicher 514 und dem Massenspeicher 512. Alternativ dazu können Multiplex- Daten/Adressenleitungen anstelle einzelner Daten- und Adressenleitungen ver­ wendet werden.
Bei einem Ausführungsbeispiel dieser Erfindung ist die CPU 513 ein 32-Bit- Mikroprozessor, der von Motorola hergestellt wird, wie beispielsweise der 680X0- Prozessor, oder ein Mikroprozessor der von Intel hergestellt wird, wie beispiels­ weise der 80X86 oder der Pentium-Prozessor. Jedoch kann irgendein anderer ge­ eigneter Mikroprozessor, Mikrocomputer, Multiprozessor oder ein anderer Daten­ prozessor verwendet werden. Der Hauptspeicher 515 ist ein dynamischer Direkt­ zugriffsspeicher (DRAM). Der Videospeicher 514 ist ein Video- Direktzugriffsspeicher mit zwei Anschlußstellen. Eine Anschlußstelle des Vi­ deospeichers 514 ist mit einem Videoverstärker 516 gekoppelt. Der Videoverstär­ ker 516 wird dazu verwendet, den Kathodenstrahlröhren-(CRT)-Rastermonitor 517 anzusteuern. Der Videoverstärker 516 ist auf dem technischen Gebiet wohlbekannt und kann durch irgendeine geeignete Einrichtung implementiert werden. Diese Schaltung wandelt Pixeldaten, die in dem Videospeicher 514 gespeichert sind, in ein Rastersignal um, das zur Verwendung durch den Monitor 517 geeignet ist. Der Monitor 517 ist eine Art von Monitor, die zum Anzeigen graphischer Bilder geeignet ist.
Das oben beschriebene Computersystem dient nur als ein Beispiel. Die vorliegen­ de Endung kann bei irgendeiner Art eines Computersystems oder einer Pro­ grammier- oder Verarbeitungsumgebung implementiert werden.

Claims (18)

1. Computerbezogenes Verfahren zum Schaffen einer Echtzeit-Rekonstruktion zerstörter Daten aus einer redundanten Anordnung eines Speichersystems mit "N + 1" Datenspeichereinheiten, wobei das Verfahren folgende Schritte aufweist:
Speichern eines ersten Streifens von Daten, der "N" Datenblöcke und einen Block für Redundanzinformation aufweist, auf den "N + 1" Datenspeichereinheiten, so daß einer von jedem der "N" Datenblöcke auf jeder von "N" der "N + 1" Datenspeichereinheiten gespeichert wird, und daß der Block für Redundanzinformation auf einer übrigen der Datenspeichereinheiten gespeichert wird;
Ausgeben von gleichzeitigen Leseanfragen für alle "N + 1" Blöcke des ersten Streifens während des normalen Systembetriebs, wenn irgendwelche der im ersten Streifen gespeicherten Daten wieder aufgefunden werden; und
Rekonstruieren eines "N + 1-ten" Blocks des ersten Streifens aus Inhalten erster "N" Blöcke, die in Antwort auf die gleichzeitigen Leseanfragen empfangen werden, wobei
der Schritt des Rekonstruierens nur durchgeführt wird, wenn nach einer vorbestimmten Zeitspanne der "N + 1-te" Block noch nicht empfangen wurde und einer der ersten empfangenen "N" Blöcke den Block für Redundanzinformation enthält.
2. Computerbezogenes Verfahren nach Anspruch 1, wobei der eine Block für Redundanzinformation eine XOR-Verknüpfungssumme der Daten aufweist, die in den "N" Datenblöcken enthalten sind.
3. Computerbezogenes Verfahren nach Anspruch 2, wobei der Schritt des Rekonstruierens eines "N + 1-ten" Blocks des ersten Streifens aus Inhalten der ersten "N" in Antwort auf die gleichzeitigen Leseanfragen empfangenen Blöcke so durchgeführt wird, daß eine XOR-Verknüpfungssumme der Inhalte der ersten "N" Blöcke, wie sie empfangen wurden, mit einer exklusiv geODER-ten Summe irgendwelcher vorher empfangenen Blöcke gebildet wird.
4. Computerbezogenes Verfahren nach einem der Ansprüche 1 bis 3, wobei der Schritt zum Ausgeben der gleichzeitigen Leseanfragen in Antwort auf eine Anfrage von einem Verfahren zum Wiederauffinden von in dem ersten Streifen gespeicherten Daten durchgeführt wird, und wobei ein Ende der Zeitperiode durch das Verfahren bestimmt wird.
5. Computerbezogenes Verfahren nach einem der Ansprüche 1 bis 4, wobei die "N" Datenblöcke des ersten Streifens einen ersten Teil einer Datei von Daten aufweisen, wobei ein zweiter Teil der Datei von Daten auf den Datenspeichereinheiten in einem zweiten Streifen von Blöcken gespeichert ist, der an den ersten Streifen von Blöcken anschließt.
6. Computerbezogenes Verfahren nach einem der Ansprüche 1 bis 5, wobei jeder der Blöcke wenigstens 32 KB Daten enthält.
7. Computerbezogenes Verfahren nach einem der Ansprüche 1 bis 6, wobei jeder der Datenblöcke eine Datenmenge enthält, die in einem ganzzahligen Vielfachen der Sektoren gespeichert werden kann.
8. Computerbezogenes Verfahren nach Anspruch 7, wobei das ganzzahlige Vielfache 1 ist.
9. Computerbezogenes Verfahren nach einem der Ansprüche 1 bis 8, wobei der Schritt zum Ausgeben der gleichzeitigen Leseanfragen in Antwort auf eine Anfrage von einem Verfahren zum Wiederauffinden von im ersten Streifen gespeicherten Daten durchgeführt wird.
10. Computerbezogenes Verfahren nach Anspruch 9, wobei das Verfahren Daten in Inkrementen einer vorbestimmten Größe verwendet.
11. Computerbezogenes Verfahren nach Anspruch 10, wobei die Datenmenge, die in "N" Datenblöcken des ersten Streifens gespeichert ist, etwa gleich der vorbestimmten Größe eines der Inkremente ist.
12. Datenspeichersystem mit redundanter Anordnung, das folgendes aufweist:
"N + 1" Datenspeichereinheiten;
einen ersten Streifen von Daten, der "N" Datenblöcke und einen Block für Redundanzinformation aufweist, die auf den "N + 1" Datenspeichereinheiten derart gespeichert sind, daß einer von jedem der "N" Datenblöcke auf jeder von "N" der "N + 1" Datenspeichereinheiten gespeichert ist und daß der Block für Redundanzinformation auf einer übrigen der Datenspeichereinheiten gespeichert ist;
eine Einrichtung zum Ausgeben gleichzeitiger Leseanfragen für alle der "N + 1" Blöcke in dem ersten Streifen, wenn irgendwelche in dem ersten Streifen gespeicherten Daten wiederaufgefunden werden; und
eine Einrichtung zum Rekonstruieren eines "N + 1-ten" Blocks des ersten Streifens aus Inhalten erster "N" Blöcke, die in Antwort auf die gleichzeitigen Leseanfragen empfangen werden nur dann, wenn nach einer vorbestimmten Zeitspanne der "N + 1-te" Block noch nicht empfangen wurde und einer der ersten empfangenen "N" Blöcke den Block für Redundanzinformation enthält.
13. Datenspeichersystem nach Anspruch 12, das weiterhin eine Einrichtung zum Bestimmen aufweist, ob irgendein in Antwort auf die Leseanfragen empfangener Block der Block für Redundanzinformation ist.
14. Datenspeichersystem nach einem der Ansprüche 12 oder 13, wobei die "N" Datenblöcke des ersten Streifens einen ersten Teil einer Datei von Daten aufweisen, wobei ein zweiter Teil der Datei von Daten auf den Datenspeichereinheiten in einem zweiten Streifen von Blöcken gespeichert ist, der an den ersten Streifen anschließt.
15. Datenspeichersystem nach einem der Ansprüche 12 bis 14, wobei jeder der Blöcke wenigstens 32 KB Daten enthält.
16. Datenspeichersystem nach einem der Ansprüche 12 bis 15, wobei die Datenspeichereinheiten Plattenlaufwerk-Speichereinheiten sind, die in Sektoren aufgeteilte Speichermedien aufweisen.
17. Datenspeichersystem nach einem der Ansprüche 12 bis 16, wobei jeder der Datenblöcke die Datenmenge enthält, die in einem ganzzahligen Vielfachen der Sektoren gespeichert werden kann.
18. Datenspeichersystem nach Anspruch 14, wobei die Datei Videodaten aufweist.
DE19581103T 1994-09-26 1995-09-25 Verfahren und Vorrichtung zur Echtzeit-Rekonstruktion zerstörter Daten in einem Speichersystem mit redundanter Anordnung Expired - Lifetime DE19581103C2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/312,509 US5623595A (en) 1994-09-26 1994-09-26 Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system
PCT/US1995/012154 WO1996010228A1 (en) 1994-09-26 1995-09-25 Real time raid for a continuous media server system

Publications (2)

Publication Number Publication Date
DE19581103T1 DE19581103T1 (de) 1996-11-14
DE19581103C2 true DE19581103C2 (de) 1998-12-10

Family

ID=23211776

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19581103T Expired - Lifetime DE19581103C2 (de) 1994-09-26 1995-09-25 Verfahren und Vorrichtung zur Echtzeit-Rekonstruktion zerstörter Daten in einem Speichersystem mit redundanter Anordnung

Country Status (6)

Country Link
US (1) US5623595A (de)
AU (1) AU3723495A (de)
CA (1) CA2176384C (de)
DE (1) DE19581103C2 (de)
GB (1) GB2297855B (de)
WO (1) WO1996010228A1 (de)

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592612A (en) * 1995-04-28 1997-01-07 Birk; Yitzhak Method and apparatus for supplying data streams
JP3617879B2 (ja) * 1995-09-12 2005-02-09 株式会社東芝 実時間ストリームサーバのディスク修復方法及びディスク修復装置
US5737744A (en) * 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US6449730B2 (en) 1995-10-24 2002-09-10 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US5862312A (en) * 1995-10-24 1999-01-19 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US5717850A (en) * 1996-03-12 1998-02-10 International Business Machines Corporation Efficient system for predicting and processing storage subsystem failure
GB2312319B (en) * 1996-04-15 1998-12-09 Discreet Logic Inc Video storage
CA2201679A1 (en) 1996-04-15 1997-10-15 Raju C. Bopardikar Video data storage
CA2201691C (en) * 1996-04-15 2001-07-17 Raju C. Bopardikar Data storage
US6018778A (en) * 1996-05-03 2000-01-25 Netcell Corporation Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory
US6185368B1 (en) * 1996-07-29 2001-02-06 Sony Corporation Redundant disk array with real-time lost data reconstruction
US5928327A (en) * 1996-08-08 1999-07-27 Wang; Pong-Sheng System and process for delivering digital data on demand
US5787485A (en) * 1996-09-17 1998-07-28 Marathon Technologies Corporation Producing a mirrored copy using reference labels
US6615284B2 (en) * 1996-10-31 2003-09-02 Alon Schatzberg Method and apparatus for performing input/output operations between a requesting device and responding device
US5896493A (en) * 1997-01-17 1999-04-20 Dell Usa, L.P. Raid algorithm using a multimedia functional unit
JP3384272B2 (ja) * 1997-02-27 2003-03-10 安藤電気株式会社 フェイルメモリ
JP4499193B2 (ja) * 1997-04-07 2010-07-07 ソニー株式会社 記録再生装置及び記録再生方法
US6016552A (en) * 1997-06-06 2000-01-18 The Chinese University Of Hong Kong Object striping focusing on data object
JP3745506B2 (ja) * 1997-07-12 2006-02-15 ソニー株式会社 データ処理装置及び方法
US6311216B1 (en) 1998-05-29 2001-10-30 Microsoft Corporation Method, computer program product, and system for client-side deterministic routing and URL lookup into a distributed cache of URLS
US6377991B1 (en) * 1998-05-29 2002-04-23 Microsoft Corporation Method, computer program product, and system for migrating URLs within a dynamically changing distributed cache of URLs
JP2000003255A (ja) * 1998-06-12 2000-01-07 Nec Corp ディスクアレイ装置
US6427212B1 (en) 1998-11-13 2002-07-30 Tricord Systems, Inc. Data fault tolerance software apparatus and method
US6321345B1 (en) * 1999-03-01 2001-11-20 Seachange Systems, Inc. Slow response in redundant arrays of inexpensive disks
US6449731B1 (en) 1999-03-03 2002-09-10 Tricord Systems, Inc. Self-healing computer system storage
US6725392B1 (en) 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
US6530036B1 (en) 1999-08-17 2003-03-04 Tricord Systems, Inc. Self-healing computer system storage
US6401214B1 (en) 1999-03-04 2002-06-04 International Business Machines Corporation Preventive recovery action in hard disk drives
US6769088B1 (en) * 1999-06-30 2004-07-27 Maxtor Corporation Sector-coding technique for reduced read-after-write operations
US6557123B1 (en) * 1999-08-02 2003-04-29 Inostor Corporation Data redundancy methods and apparatus
US6581185B1 (en) * 2000-01-24 2003-06-17 Storage Technology Corporation Apparatus and method for reconstructing data using cross-parity stripes on storage media
JP4175764B2 (ja) 2000-05-18 2008-11-05 株式会社日立製作所 計算機システム
US6807623B2 (en) 2000-07-27 2004-10-19 Matsushita Electric Industrial Co., Ltd. Data processing control system, controller, data processing control method, program, and medium
EP1193591A3 (de) 2000-09-29 2007-10-31 Matsushita Electric Industrial Co., Ltd. Datenspeicheranordnung und Verfahren zum Datenzugriff
US6996742B2 (en) * 2000-11-28 2006-02-07 Sedna Patent Services, Llc Method for regenerating and streaming content from a video server using RAID 5 data striping
US20020080888A1 (en) * 2000-12-22 2002-06-27 Li Shu Message splitting and spatially diversified message routing for increasing transmission assurance and data security over distributed networks
GB0108354D0 (en) * 2001-04-03 2001-05-23 Thirdspace Living Ltd System and method for providing a user with access to a plurality of sevices and content from a broadband television service
GB2374749B (en) * 2001-04-20 2005-04-06 Discreet Logic Inc Image data processing
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US6732232B2 (en) * 2001-11-26 2004-05-04 International Business Machines Corporation Adaptive resource allocation in multi-drive arrays
US7171493B2 (en) * 2001-12-19 2007-01-30 The Charles Stark Draper Laboratory Camouflage of network traffic to resist attack
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
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US7613984B2 (en) * 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US7640484B2 (en) 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US6728898B2 (en) 2002-03-06 2004-04-27 Marathon Technologies Corporation Producing a mirrored copy using incremental-divergence
US7080278B1 (en) 2002-03-08 2006-07-18 Network Appliance, Inc. Technique for correcting multiple storage device failures in a storage array
US7437727B2 (en) * 2002-03-21 2008-10-14 Network Appliance, Inc. Method and apparatus for runtime resource deadlock avoidance in a raid system
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation in a raid system
US7539991B2 (en) 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
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
JP2004192483A (ja) * 2002-12-13 2004-07-08 Hitachi Ltd 分散ストレージシステムの管理方法
US7185144B2 (en) * 2003-11-24 2007-02-27 Network Appliance, Inc. Semi-static distribution technique
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7143235B1 (en) 2003-03-21 2006-11-28 Network Appliance, Inc. Proposed configuration management behaviors 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
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7275179B1 (en) 2003-04-24 2007-09-25 Network Appliance, Inc. System and method for reducing unrecoverable media errors in a disk subsystem
US20070033430A1 (en) * 2003-05-05 2007-02-08 Gene Itkis Data storage distribution and retrieval
GB2402803B (en) * 2003-06-11 2006-06-28 Ibm Arrangement and method for detection of write errors in a storage system
US7380198B2 (en) * 2003-06-11 2008-05-27 International Business Machines Corporation System and method for detecting write errors in a storage device
US7143305B2 (en) * 2003-06-25 2006-11-28 International Business Machines Corporation Using redundant spares to reduce storage device array rebuild time
US7146461B1 (en) 2003-07-01 2006-12-05 Veritas Operating Corporation Automated recovery from data corruption of data volumes in parity RAID storage systems
US7328305B2 (en) * 2003-11-03 2008-02-05 Network Appliance, Inc. Dynamic parity distribution technique
US7263629B2 (en) * 2003-11-24 2007-08-28 Network Appliance, Inc. Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
US7366837B2 (en) * 2003-11-24 2008-04-29 Network Appliance, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
JP2006040044A (ja) * 2004-07-28 2006-02-09 Sony Corp データ蓄積装置及びそのデータ蓄積方法
CN100407166C (zh) * 2004-07-29 2008-07-30 普安科技股份有限公司 改善数据读取效率的方法及其储存系统
JP2006079418A (ja) * 2004-09-10 2006-03-23 Fujitsu Ltd 記憶制御装置、制御方法及びプログラム
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
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
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
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
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
US9632870B2 (en) * 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
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
US7836331B1 (en) 2007-05-15 2010-11-16 Netapp, Inc. System and method for protecting the contents of memory during error conditions
US7971126B2 (en) * 2007-06-27 2011-06-28 International Business Machines Corporation Apparatus, system, and method for hard disk drive redundancy
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
US7890795B1 (en) * 2008-06-02 2011-02-15 Emc Corporation Auto-adapting cache memory system and memory
US9158579B1 (en) 2008-11-10 2015-10-13 Netapp, Inc. System having operation queues corresponding to operation execution time
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
US11429486B1 (en) * 2010-02-27 2022-08-30 Pure Storage, Inc. Rebuilding data via locally decodable redundancy in a vast storage network
US20130117525A1 (en) * 2011-11-04 2013-05-09 Lsi Corporation Method for implementing pre-emptive read reconstruction
US9697063B2 (en) * 2013-05-15 2017-07-04 Amazon Technologies, Inc. Allocating data based on hardware faults
US10558538B2 (en) 2017-11-22 2020-02-11 Netapp, Inc. Erasure coding repair availability
US9626245B2 (en) 2015-02-20 2017-04-18 Netapp, Inc. Policy based hierarchical data protection
US10146616B1 (en) * 2015-03-31 2018-12-04 EMC IP Holding Company LLC Cache based recovery of corrupted or missing data
WO2019049224A1 (ja) * 2017-09-06 2019-03-14 株式会社日立製作所 分散ストレージシステム及び分散記憶制御方法
EP3989069B1 (de) * 2019-07-22 2023-10-25 Huawei Technologies Co., Ltd. Verfahren und vorrichtung zur datenrekonstruktion, computervorrichtung, speichermedium und system
US11734117B2 (en) * 2021-04-29 2023-08-22 Vast Data Ltd. Data recovery in a storage system
TWI764856B (zh) * 2021-12-13 2022-05-11 慧榮科技股份有限公司 記憶體控制器與資料處理方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761785A (en) * 1986-06-12 1988-08-02 International Business Machines Corporation Parity spreading to enhance storage access
US5088081A (en) * 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
US5124987A (en) * 1990-04-16 1992-06-23 Storage Technology Corporation Logical track write scheduling system for a parallel disk drive array data storage subsystem
US5208813A (en) * 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5233618A (en) * 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5235601A (en) * 1990-12-21 1993-08-10 Array Technology Corporation On-line restoration of redundancy information in a redundant array system
US5278838A (en) * 1991-06-18 1994-01-11 Ibm Corp. Recovery from errors in a redundant array of disk drives
US5287462A (en) * 1991-12-20 1994-02-15 Ncr Corporation Bufferless SCSI to SCSI data transfer scheme for disk array applications
US5303244A (en) * 1991-03-01 1994-04-12 Teradata Fault tolerant disk drive matrix
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
US5315602A (en) * 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771143A (en) * 1972-06-01 1973-11-06 Burroughs Corp Method and apparatus for providing alternate storage areas on a magnetic disk pack
US4959774A (en) * 1984-07-06 1990-09-25 Ampex Corporation Shadow memory system for storing variable backup blocks in consecutive time periods
JP2603757B2 (ja) * 1990-11-30 1997-04-23 富士通株式会社 アレ−ディスク装置の制御方法
US5271012A (en) * 1991-02-11 1993-12-14 International Business Machines Corporation Method and means for encoding and rebuilding data contents of up to two unavailable DASDs in an array of DASDs
US5258984A (en) * 1991-06-13 1993-11-02 International Business Machines Corporation Method and means for distributed sparing in DASD arrays
US5239659A (en) * 1991-06-19 1993-08-24 Storage Technology Corporation Phantom duplex copy group apparatus for a disk drive array data storge subsystem
EP0519669A3 (en) * 1991-06-21 1994-07-06 Ibm Encoding and rebuilding data for a dasd array
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
FR2700909B1 (fr) * 1993-01-27 1995-03-17 Gen Electric Cgr Dispositif et procédé automatique de calibration géométrique d'un système d'imagerie par rayons X.
US5390327A (en) * 1993-06-29 1995-02-14 Digital Equipment Corporation Method for on-line reorganization of the data on a RAID-4 or RAID-5 array in the absence of one disk and the on-line restoration of a replacement disk
US5414455A (en) * 1993-07-07 1995-05-09 Digital Equipment Corporation Segmented video on demand system
US5442390A (en) * 1993-07-07 1995-08-15 Digital Equipment Corporation Video on demand with memory accessing and or like functions
US5392244A (en) * 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761785A (en) * 1986-06-12 1988-08-02 International Business Machines Corporation Parity spreading to enhance storage access
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US5233618A (en) * 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5088081A (en) * 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
US5124987A (en) * 1990-04-16 1992-06-23 Storage Technology Corporation Logical track write scheduling system for a parallel disk drive array data storage subsystem
US5208813A (en) * 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5235601A (en) * 1990-12-21 1993-08-10 Array Technology Corporation On-line restoration of redundancy information in a redundant array system
US5303244A (en) * 1991-03-01 1994-04-12 Teradata Fault tolerant disk drive matrix
US5278838A (en) * 1991-06-18 1994-01-11 Ibm Corp. Recovery from errors in a redundant array of disk drives
US5287462A (en) * 1991-12-20 1994-02-15 Ncr Corporation Bufferless SCSI to SCSI data transfer scheme for disk array applications
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
US5315602A (en) * 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives

Also Published As

Publication number Publication date
CA2176384C (en) 2006-01-10
WO1996010228A1 (en) 1996-04-04
US5623595A (en) 1997-04-22
AU3723495A (en) 1996-04-19
GB2297855B (en) 1999-07-14
DE19581103T1 (de) 1996-11-14
GB2297855A (en) 1996-08-14
CA2176384A1 (en) 1996-04-04
GB9608436D0 (en) 1996-06-26

Similar Documents

Publication Publication Date Title
DE19581103C2 (de) Verfahren und Vorrichtung zur Echtzeit-Rekonstruktion zerstörter Daten in einem Speichersystem mit redundanter Anordnung
DE69733076T2 (de) Hochleistungsdatenweg mit sofortigem xor
DE69434381T2 (de) Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
DE60304194T2 (de) Verfahren und vorrichtung zur tolerierung von mehreren abhängigen oder zwei beliebigen fehlern in einer speicherplattenanordnung
DE69738091T2 (de) Speicherplattenanordnung und Verfahren zu deren Steuerung
DE69632219T2 (de) Speicherplattenanordnungssystem
US5805788A (en) Raid-5 parity generation and data reconstruction
DE60006031T2 (de) Speicherfehlerkorrektur mit einem redundanten geschnittenen Speicher und Standard ECC Mechanismus
DE69631106T2 (de) On-line-Rekonfiguration einer Speicherplattenanordnung
DE69838898T2 (de) Doppelte Plattenspeichersteuerungen
DE69727083T2 (de) Überprüfungssystem um die integrität der parität einer speicherplattenmatrix aufrechtzuerhalten
DE112010003345B4 (de) Datenspeichersystem und Verfahren für das Betreiben eines Datenspeichersystems
DE19983218B4 (de) Verfahren zum Codieren von Datensignalen zur Speicherung
US5504858A (en) Method and apparatus for preserving data integrity in a multiple disk raid organized storage system
DE60318687T2 (de) Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz
DE19723909B4 (de) Verfahren zum Verbessern der Fehlerfestigkeit und Leistungsfähigkeit eines RAID-Untersystems
DE102013210642B4 (de) Vorrichtung zum Wiederherstellen von Redundanz
DE19720721C2 (de) Speichersystem
DE112011100112T5 (de) Pufferspeicher-platte in blitzkopie-kaskade
US6983396B2 (en) Apparatus for reducing the overhead of cache coherency processing on each primary controller and increasing the overall throughput of the system
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE10341692B4 (de) Sicherungssystem
US20020083379A1 (en) On-line reconstruction processing method and on-line reconstruction processing apparatus
DE112019005408B4 (de) Masterloses raid für byte-adressierbaren nichtflüchtigen speicher
DE112007002170T5 (de) Optimierte Rekonstruktion und Rückkopiemethodik für ein abgetrenntes Laufwerk bei Anwesenheit einer globalen Hot Spare Platte

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: NCUBE CORPORATION, FOSTER CITY, CALIF., US THIRDSP

R071 Expiry of right