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 AnordnungInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1833—Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/16—Analogue secrecy systems; Analogue subscription systems
- H04N7/173—Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
- H04N7/17309—Transmission or handling of upstream communications
- H04N7/17336—Handling 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.
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.
"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.
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)
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)
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)
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 |
-
1994
- 1994-09-26 US US08/312,509 patent/US5623595A/en not_active Expired - Lifetime
-
1995
- 1995-09-25 CA CA002176384A patent/CA2176384C/en not_active Expired - Lifetime
- 1995-09-25 DE DE19581103T patent/DE19581103C2/de not_active Expired - Lifetime
- 1995-09-25 WO PCT/US1995/012154 patent/WO1996010228A1/en active Application Filing
- 1995-09-25 GB GB9608436A patent/GB2297855B/en not_active Expired - Lifetime
- 1995-09-25 AU AU37234/95A patent/AU3723495A/en not_active Abandoned
Patent Citations (12)
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 |