DE69512459T2 - RAID 5 - Plattenspeicheranordnung mit Paritätscachespeicher mit freien Blöcken - Google Patents
RAID 5 - Plattenspeicheranordnung mit Paritätscachespeicher mit freien BlöckenInfo
- Publication number
- DE69512459T2 DE69512459T2 DE69512459T DE69512459T DE69512459T2 DE 69512459 T2 DE69512459 T2 DE 69512459T2 DE 69512459 T DE69512459 T DE 69512459T DE 69512459 T DE69512459 T DE 69512459T DE 69512459 T2 DE69512459 T2 DE 69512459T2
- Authority
- DE
- Germany
- Prior art keywords
- block
- data
- parity
- disk
- blocks
- 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
- 238000000034 method Methods 0.000 claims description 25
- 238000011084 recovery Methods 0.000 description 11
- 238000005192 partition Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 2
- 101150034459 Parpbp gene Proteins 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1009—Cache, i.e. caches used in RAID system with parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1033—Inactive data in parity groups, i.e. RAID parity groups where parity is calculated on only occupied or busy bits in the stripe
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1059—Parity-single bit-RAID5, i.e. RAID 5 implementations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
- Diese Erfindung bezieht sich im allgemeinen auf Permanentspeichersysteme für digitale Information, besonders die vom Plattentyp, und insbesondere auf Plattenmatrixsysteme, die Paritätsblöcke erzeugen und speichern, um Wiederherstellung bei einem Plattenausfall zu erleichtern.
- Eine redundante Matrix von Billigplatten (RAID) ist als kostengünstige Alternative zu einer teuren großen Einzelplatte (SLED) vorgeschlagen worden, um für digitale Information viel Speicherplatz mit hohem Durchsatz bereitzustellen. Die Theorie von RAID besteht darin, relativ billige Platten zu benutzen, die einzeln eine höhere Ausfallwahrscheinlichkeit als teurere Platten haben und diese höhere Ausfallrate zu kompensieren, indem die Redundanz dadurch erhöht wird, dass Paritätsblöcke erzeugt und gespeichert werden, welche die Wiederherstellung nach einem Plattenausfall ermöglichen.
- Fig. 1A zeigt einen Aufbau eines Plattenmatrix-Untersystems, bei dem eine RAID-Organisation eingerichtet werden kann. Eine mit einem Hauptrechnersystem 10 verbundene und mit einem Cachespeicher 31 ausgestattete Plattensteuerung 30 verwaltet eine Matrix von Billigplatten 40 bis 43. In einer RAID-Orga nisation mit einer Gesamtanzahl von N+1 Platten wird für jeweils N Datenblöcke ein Paritätsblock erzeugt, und jeder dieser N+1 Datenblöcke (N Datenblöcke plus ein Paritätsblock) wird auf einer unterschiedlichen Platte gespeichert. Bei einer Ausführungsform wird aus den N Datenblöcken ein Paritätsblock berechnet, indem Bit für Bit eine "Ausschließlich-Oder"-Verknüpfung (XOR) der N Datenblöcke berechnet wird. Der Paritätsblock wird zusammen mit den N Datenblöcken, aus denen dieser Paritätsblock berechnet wurde, als Paritätsgruppe bezeichnet. Jeder beliebige Block in einer Paritätsgruppe kann aus den anderen Blöcken dieser Paritätsgruppe berechnet werden.
- In "A Case for Redundant Arrays of Inexpensive Disks (RAID)", Proc. of ACM SIGMOD International Conference of Management of Data, S. 109 bis 116, 1988, der hier als Quelle angegeben wird, beschreiben D. A. Patterson, G. Gibson und R. H. Katz fünf Arten von Plattenmatrizen, die als RAID-Stufen 1 bis 5 klassifiziert werden. Von besonderem Interesse sind Plattenmatrizen mit einer RAID-Organisationsstufe 5, weil die Paritätsblöcke in einem derartigen RAID-Typ gleichförmig über alle Platten verteilt sind und daher keine Engpassprobleme verursachen.
- Ein Nachteil der RAID-Umgebung besteht darin, dass ein Aufzeichnungsvorgang auf einem Plattenspeicher viel kostspieliger als auf einer SLED ist, weil eine Datenaufzeichnung auf RAID mindestens vier Plattenzugriffsvorgänge im Vergleich mit zwei Plattenzugriffsvorgängen auf eine SLED erfordert. Immer dann, wenn die Plattensteuerung in einer RAID-Organisation eine Anforderung zum Aufzeichnen eines Datenblockes empfängt, muss sie nicht nur den Datenblock aktualisieren (d. h. lesen und aufzeichnen), sondern sie muss auch den entsprechenden Pari tätsblock aktualisieren (d. h. lesen und aufzeichnen), um Konsistenz aufrechtzuerhalten. Beispielsweise wird, wenn Datenblock D1 in Fig. 2A aufgezeichnet werden soll, der neue Wert von P0 berechnet als:
- neuer P0 = (alter D1 AUSSCHLIESSLICH-ODER neuer D1 AUSSCHLIESSLICH-ODER alter P0).
- Daher sind die folgenden vier Plattenzugriffsvorgänge erforderlich: (1) Lesen des alten Datenblockes D1; (2) Lesen des alten Paritätsblockes P0; (3) Aufzeichnen des neuen Datenblokkes D1; und (4) Aufzeichnen des neuen Paritätsblockes P0. Die Lesevorgänge müssen abgeschlossen sein, ehe die Aufzeichnungsvorgänge beginnen können.
- In "Performance of Disk Arrays in Transaction Processing Environments", Proc. of International Conference on Distributed Computing Systems, S. 302 bis 309, 1992, legen J. Menon und D. Mattson dar, dass das Speichern in einem Cachespeicher oder das Zwischenspeichern von Blöcken in der Plattensteuerung die Leistungsfähigkeit eines RAID-Plattenmatrix-Untersystems verbessern kann. Wenn ein Platten-Cachespeicher vorhanden ist, kann das Vorab-Lesen eines Blockes aus der Plattenmatrix, der ersetzt werden soll, dann vermieden werden, wenn sich der Block im Cachespeicher befindet. Weiterhin können, wenn der Paritätsblock für jede Paritätsgruppe ebenfalls in dem Cachespeicher gespeichert ist, beide Lesevorgänge aus der Plattenmatrix vermieden werden, wenn sich der Paritätsblock im Cachespeicher befindet.
- Die generell übertragene und ebenfalls anhängige US-Patentanmeldung 07/017 920, angemeldet am 16. Februar 1993, beschreibt ein System, in dem Paritätsblöcke aus Paritätsgruppen mit hoher Aufzeichnungsaktivität in einem Cache-Zwischenspeicher gespeichert werden, um die Anzahl der Plattenzugriffe während des Aktualisierens zu vermindern.
- Ein Nachteil der Schemata nach Stand der Technik besteht darin, dass zu einem beliebigen gegebenen Zeitpunkt verschiedene Datenblöcke innerhalb einer gegebenen Paritätsgruppe keine nützlichen Daten enthalten können. Beispielsweise können einige der Datenblöcke nicht benutzt worden sein, während andere, obwohl sie vorher benutzt wurden, durch das Betriebssystem freigegeben worden sind. Damit hängt unabhängig davon, ob sich der Datenblock in Gebrauch befindet, jedes Bit eines Paritätsblockes trotz der Zuordnung jedes Paritätsblocks zu einer Gruppe von Datenblöcken von allen entsprechenden Datenblockbits ab.
- Das Dokument EP-A 584 804 schlägt Verfahren zum Vermindern dieses Nachteiles vor, die das Erzeugen einer Gebrauchsstatustabelle in der Plattenmatrixsteuerung enthalten, wobei diese eine direkte Kopie der Dateizuordnungstabelle, die auf den Platten gespeichert ist, oder eine Bitabbildversion ist, die davon abgeleitet wurde. Die Gebrauchsstatustabelle hält damit eine Aufzeichnung der Datenblöcke auf den Platten bereit, die derzeit in Gebrauch sind, und kann durch den Prozessor der Plattenmatrixsteuerung dahingehend befragt werden, dass die Anzahl der Daten- und Paritätsblöcke begrenzt wird, die von den Platten gelesen werden soll, wenn ein Aufzeichnungsvorgang neuer Daten auf den Platten und wenn ein Löschvorgang von Daten von den Platten erfolgt. Die Verwaltung und Aktualisierung der Gebrauchsstatustabelle erzeugt jedoch eine zusätzliche Belastung auf dem Hauptrechner und der Plattenmatrixsteuerung, die dazu führen kann, dass das Aktualisieren verzögert oder sogar nicht vorgenommen wird.
- Die vorliegende Erfindung, wie sie in den Ansprüchen definiert wird, beseitigt die vorstehend erörterten Nachteile. Die vorliegende Erfindung ist ein System zum Aufzeichnen von Daten in einer Plattenmatrix, in dem ein Paritätsblock entweder Information für alle Datenblöcke innerhalb seiner Paritätsgruppe oder für eine beliebige Untermenge dieser Datenblöcke bereitstellen kann. Dies gestattet es, dass Paritätsinformationen nur für Datenblöcke gespeichert werden, die derzeit in Gebrauch sind. Das System enthält einen Cachespeicher, der mit der Plattenmatrix verbunden ist, damit er Paritätsblöcke speichert, die mit Paritätsgruppen verbunden sind, die entsprechende Standorte umfassen. Gemäß der vorliegenden Erfindung enthält jeder der Paritätsblöcke einen Kennzeichner, der eine Anzeige für Datenblöcke innerhalb einer bestimmten Paritätsgruppe ist, die durch die Paritätsdaten geschützt werden. Die Aufzeichnungslogik, die mit dem Cachespeicher und der Plattenmatrix verbunden ist, enthält Mittel zum Lesen des Kennzeichners und zum Feststellen, ob ein Zielblock nicht durch die Paritätsdaten geschützt ist. Die Aufzeichnungslogik enthält auch Aufzeichnungsmittel zum Aufzeichnen am ungeschützten Standort und Aktualisierungsmittel zum Aktualisieren der Paritätsdaten und des Kennzeichners, der mit dem Paritätsblock verbunden ist, einschließlich des Standortes, um anzuzeigen, dass der Standort geschützt ist.
- Die vorliegende Erfindung ist unter Bezugnahme auf die Zeichnungen besser zu verstehen, in denen:
- Fig. 1A ein Blockschaltbild ist, das den Aufbau eines Plattenmatrix-Untersystems veranschaulicht;
- Fig. 1B ein Blockschaltbild ist, das den Aufbau eines Plattenmatrix-Untersystems veranschaulicht, in dem die vorliegende Erfindung realisiert ist;
- Fig. 2A eine konventionelle Abbildung von Daten der RAID- Stufe 5 ist, welche die Unterbringung von Daten- und Paritätsblöcken zeigt;
- Fig. 2 ein in Partitionen aufgeteilter Paritäts-/Daten-Platten-Cachespeicher ist;
- Fig. 3 ein Flussbild einer Einzelblockaufzeichnung gemäß einer Ausführungsform der vorliegenden Erfindung ist;
- Fig. 4 ein Flussbild eines Befehles zum Freimachen von Blökken gemäß einer Ausführungsform der vorliegenden Erfindung ist;
- Fig. 5 ein Blockdiagramm ist, das die Paritäts- und Kennzeichnerblöcke der vorliegenden Erfindung beschreibt.
- Die vorliegende Erfindung kann auf dem in Fig. 1B gezeigten Plattenmatrix-Untersystem in die Praxis umgesetzt werden, das eine Plattensteuerung 30 enthält, die einen Cachespeicher 31 und eine Matrix von Platten 40, 41, 42 und 43 hat. Der Cachespeicher 31 ist in zwei Partitionen unterteilt: eine Datenpartition 31a zum Zwischenspeichern von Datenblöcken und eine Paritätspartition 31b zum Zwischenspeichern von Paritätsblöcken. Auf die Datenpartition 31a und die Paritätspartition 31b kann von der Cachespeichersteuerung unabhängig zugegriffen werden. Gemäß einer Ausführungsform der vorliegenden Erfindung werden Datenblockaufzeichnungen unter der Steuerung der variablen Aufzeichnungsschutzlogik 32 vorgenommen, die mit beiden Partitionen 31a und 31b des Cachespeichers 31 verbunden ist. Die Datenabbildung in der Plattenmatrix 40 bis 43 der bevorzugten Ausführungsform, die beschrieben werden soll, ist eine Abbildung der RAID-Stufe 5 (RAID V).
- Fig. 2 stellt die Datenstrukturen dar, die von der Plattensteuerung 30 für ihre Cachespeicher 31a und 31b benutzt werden. Wenn Block 202 eine Streifen-ID bekommt, bestimmt RAID V, welcher Plattenspeicher die Parität hat und bestimmt die Numerierung von Datenblöcken auf den anderen Plattenspeichern. Die Plattensteuerung arbeitet dann mit realen Plattenspeicheradressen. Die Cachespeicherverzeichnisse 204 und 206 werden als Hash-Tabellen eingerichtet, eine für den Paritätscachespeicher und eine für den Datencachespeicher. Wenn eine Plattenblockadresse gegeben ist, wird die Hash-Tabelle befragt, um festzustellen, ob die Daten mit der Adresse sich im Cachespeicher befinden oder nicht, und wenn sie sich im Cachespeicher befinden, wo sie sich befinden. Ein Hash-Tabelleneintrag für einen im Paritätscachespeicher befindlichen Block zeigt auf einen Stapel 208, dessen Benutzung am längsten zurückliegt (LRU). Die Adresse des LRU-Stapeleintrages bestimmt, wo sich die tatsächlichen Daten befinden, da eine Eins-zu-Eins-Entsprechung zwischen LRU-Stapeleinträgen und Cachespeicherblökken vorhanden ist. Um die Adresse der Daten zu berechnen, wird (Cachespeicherbasisadresse) + (Blockgröße) * (LRU-Stapeleintragsadresse - LRU-Stapelbasisadresse)/(LRU-Stapeleintragslänge) benutzt. LRU-Stapeleinträge 210 haben ein Datenblock- Adressfeld.
- Während des Betriebes wird jeder Cachespeicher auf folgende Weise benutzt: (1) jedes Mal, wenn auf einen Paritäts-/Datenblock zugegriffen wird, wird er von seiner aktuellen Position auf die Position der zuletzt erfolgten Benutzung (MRU) im LRU- Stapel verschoben; (2) wenn Platz gebraucht wird, um einen Paritäts- /Datenblock einzulesen, wird der Cachespeicherplatz für den LRU-Block freigemacht, der Block wird an seinen Standort eingelesen, an der MRU-Position untergebracht, und das Cachespeicherverzeichnis wird entsprechend aktualisiert.
- In einer bevorzugten Ausführungsform wird ein LRU-Stapel als doppeltverkettete Liste oder Kette mit Einträgen fester Größe eingerichtet. Jeder Eintrag kann Informationen über das Objekt haben, für das es einen LRU-Stapel gibt. In diesem Falle ist ein Zeiger auf den Cachespeicherblock nicht nötig, wenn Adressberechnungstechniken benutzt werden. Jeder Eintrag kann auch Informationen über zwei Zeiger haben, einen auf den nächsten MRU-Eintrag (oder NIL, wenn es der MRU-Eintrag ist), und einen auf den nächsten LRU-Eintrag (oder NIL, wenn es der LRU- Eintrag ist). Der LRU-Stapel kann in der Software eingerichtet werden, da mit einigen wenigen Anweisungen Einträge aus der Mitte des Stapels irgendwohin verschoben werden können und dann oben auf dem Stapel abgelegt werden können.
- Fig. 2A zeigt ein Datenabbild für RAID-Stufe 5. In einem System der RAID-Stufe 5 mit einer Gesamtanzahl von N+1 Plattenspeichern enthält jede Paritätsgruppe N Datenblöcke und einen Paritätsblock. Die übliche Verfahrensweise besteht darin, Datenblöcke in Paritätsgruppen zu unterteilen, wie sie in Fig. 2A gezeigt werden. In Fig. 2A bilden beispielsweise Datenblökke D0, D1, D2 und D3 und Paritätsblock P0 eine Paritätsgruppe. In Fig. 2A werden die Paritätsblöcke mit 100, 101, 102, 103 und 104 bezeichnet. Paritätsblock P0 (mit 100 bezeichnet) ist daher die ausschließliche ODER-Verknüpfung von Datenblöcken D0 (mit 110 gekennzeichnet), D1 (mit 111 gekennzeichnet), D2 (mit 112 gekennzeichnet) und D3 (mit 113 gekennzeichnet). Gemäß der vorliegenden Erfindung sind bei jeder Anforderung zur Aktualisierung von Datenblöcken vom Hauptrechnersystem 10 an die Plattensteuerung 30, wenn sich der entsprechende Paritätsblock schon im Cachespeicher 31 der Steuereinheit befindet, für eine Datenaktualisierung drei physische Plattenspeicherzugriffsvorgänge erforderlich: 1) Lesen der alten Daten; und 2) Aufzeichnen der neuen Daten; 3) Aufzeichnen des neuen Paritätsblockes.
- Gemäß einer Ausführungsform der vorliegenden Erfindung enthält jeder der Paritätsblöcke einen Kennzeichner oder "Vorsatz", der anzeigt, welche der Datenblöcke in der Paritätsgruppe geschützt sind. Wenn das Hauptrechnersystem 10 an die Plattensteuerung 30 einen Aufzeichnungsbefehl schickt, liest die variable Aufzeichnungsschutzlogik 32 den Vorsatz aus dem betroffenen Paritätsblock im Cachespeicher 31. In Fällen, bei denen der Vorsatz des Paritätsblockes, der mit einer Paritätsgruppe (oder einem "Streifen") verbunden ist, in der aufgezeichnet werden soll, anzeigt, dass ein bestimmter Datenblock durch die Parität nicht geschützt ist, wird die alte Parität mit AUSSCHLIESSLICH ODER mit dem neuen Datenblock verknüpft, der Vorsatz wird aktualisiert, um anzuzeigen, dass der Datenblock geschützt ist, die neuen Daten werden in den Datenblock auf dem Plattenspeicher aufgezeichnet, und der neue Paritätsblock wird auf dem Plattenspeicher aufgezeichnet. Damit wird der Schritt des Lesens der alten Daten von der Platte vollständig vermieden.
- Ein Flussbild der Einzelblock-Aufzeichnungslogik 32 mit variablem Aufzeichnungsschutz gemäß der Erfindung wird in Fig. 3 veranschaulicht. Diese Aufzeichnungslogik 32 mit variablem Schutz kann als Mikrosteuerprogramm ausgeführt werden, das auf dem Mikroprozessor der Plattensteuerung läuft.
- Die Logik beginnt, wenn die Plattensteuerung vom Hauptrechnerprozessor 10 einen Aufzeichnungsbefehl empfängt. Der Aufzeichnungsbefehl enthält den Datenblock und die Aufzeichnungsadresse. Im Aufzeichnungsbefehl ist auch eine Markierung enthalten, die vom Dateisystem des Hauptrechners gesetzt wird, die anzeigt, ob der gesamte Streifen aus freiem (d. h. nicht genutztem) Platz besteht.
- In Schritt 302 prüft die Plattensteuerung die Markierung für einen freien Streifen, um festzustellen, ob der gesamte Streifen frei ist, zu dem der Datenblock gehört. Wenn der gesamte Streifen frei ist, setzt in Schritt 304 die Plattensteuerung den Paritätsblock P des Streifens gleich dem Datenblock D (P = D). Datenblock D wird im Bitvektor für freie Blöcke auch als geschützt markiert. Es ist anzumerken, dass dieser Vorgang keinerlei Lesevorgänge vom Cachespeicher oder vom Plattenspei cher erfordert. In Schritt 306 zeichnet die Steuerung P und D auf dem Plattenspeicher auf.
- Wenn in Schritt 302 die Plattensteuerung feststellt, dass nicht der gesamte Streifen frei ist, stellt in Schritt 308 die Steuerung mit Hilfe von Hash-Tabelle 304 fest, ob der Paritätsblock P sich im Cachespeicher 31 befindet. Wenn dies nicht der Fall ist, stellt in Schritt 310 die Steuerung fest, ob sich der zu ersetzende Datenblock Dalt im Cachespeicher 31 befindet. Wenn dies der Fall ist, liest in Schritt 312 die Steuerung P vom Plattenspeicher. Wenn dies nicht der Fall ist, liest in Schritt 314 die Steuerung sowohl P als auch Dalt vom Plattenspeicher.
- Als nächstes prüft in Schritt 316 die Steuerung den Vorsatz des Paritätsblockes, um festzustellen, ob Dalt geschützt ist. Wenn dies der Fall ist, bestimmt in Schritt 318 die Steuerung den neuen Wert für die Parität P als P = P AUSSCHLIESSLICH ODER Dalt AUSSCHLIESSLICH ODER D. Dann werden in Schritt 306 P und D auf dem Plattenspeicher aufgezeichnet. Wenn er nicht geschützt ist, wird in Schritt 320 der neue Wert für P als P = P AUSSCHLIESSLICH ODER D ermittelt, und D wird im Blockvorsatz als geschützt markiert. Dann werden in Schritt 306 P und D auf dem Plattenspeicher aufgezeichnet.
- Wenn in Schritt 308 festgestellt wird, dass sich P im Cachespeicher befindet, prüft in Schritt 324 die Steuerung den Vorsatz des Paritätsblockes, um festzustellen, ob Dalt geschützt ist. Wenn dies der Fall ist, stellt in Schritt 326 die Plattensteuerung fest, ob sich Dalt im Cachespeicher befindet. Wenn dies der Fall ist, werden Schritte 318 und 306 ausgeführt. Wenn dies nicht der Fall ist, wird in Schritt 328 Dalt vom Plattenspeicher gelesen, und dann werden Schritte 318 und 306 ausgeführt.
- Wenn aus Schritt 324 festgestellt wird, dass Dalt nicht geschützt ist, ermittelt in Schritt 320 die Steuerung den neuen Paritätswert zu P = P AUSSCHLIESSLICH ODER D und markiert dann D als geschützt. Dann wird Schritt 306 ausgeführt. Es ist anzumerken, dass in Schritt 320 alle Werte aus dem Cachespeicher entnommen werden und damit keine Lesevorgänge vom Plattenspeicher erforderlich sind.
- In einer bevorzugten Ausführungsform wird der Plattenspeicherplatz durch eine Komponente des Hauptrechnerbetriebssystems verwaltet, die als Dateisystem bekannt ist. Das Dateisystem ist für das Abbilden logischer Datenelemente, die als Dateien und Verzeichnisse bekannt sind, auf den physischen Platz auf dem Plattenspeicher und für das Verwalten des freien (nicht gebrauchten) Plattenspeicherplatzes verantwortlich. Beispielsweise kann das Dateisystem, wenn es erforderlich ist, eine neue Datei erzeugen oder eine vorhandene Datei erweitern, vorhandenen freien Platz zu diesem Zwecke zuordnen, so dass der freie Platz unfrei (d. h. benutzt) wird. Umgekehrt kann, wenn Dateien gelöscht werden oder wenn der Platz abnimmt, der zum Speichern einer Datei nötig ist, vorher in Benutzung befindlicher Platz freigemacht werden. Um das Leistungsvermögen von Plattenspeicheraufzeichnungen auf freien Platz zu optimieren und um Wiederherstellung nach einem Plattenausfall zu beschleunigen, ist es wünschenswert, dass freie Plattenspeicherblöcke nicht geschützt sind. Zu diesem Zwecke wird der Plattensteuerung ein "Befehl zum Freimachen von Blöcken" bereitgestellt, dessen Logik in Fig. 4 gezeigt wird. Dieser Befehl kann beispielsweise durch das Dateisystem entweder dann her ausgegeben werden, wenn in einem beliebigen gegebenen Streifen S vorher in Gebrauch befindlicher Platz freigemacht werden soll, oder andernfalls periodisch, wie es durch eine gegebene Zeitspanne bestimmt würde, stapelweise (wobei ein Stapel aus einem Befehl für jeden Streifen besteht, der geschützten freien Platz enthält, den man vom Schutz befreien möchte) oder durch einen Schwellenwert von geschütztem freiem Platz, der sich angesammelt hat, usw.
- Der Befehl "Blöcke freimachen" von Fig. 4 arbeitet wie folgt: Zuerst stellt in Schritt 402 das Programm zur Cachespeicherverwaltung fest, ob sich P im Cachespeicher befindet. Wenn dies nicht der Fall ist, wird in Schritt 404 P vom Plattenspeicher in den Cachespeicher gelesen. Als nächstes stellt in Schritt 406 das Programm fest, ob die Anzahl der Blöcke (k), die freigemacht werden sollen, gleich der Anzahl von Blöcken im Streifen (N) (P nicht gezählt) ist. Wenn der gesamte Streifen (mit Ausnahme von P) freigemacht werden soll, werden in Schritt 408 alle Datenblöcke als ungeschützt markiert. In Schritt 410 wird jeder freizumachende Block Bj, der im Cachespeicher gespeichert ist, als freier Cachespeicherplatz markiert. Dann wird in Schritt 412 der neue Paritätsblock auf dem Plattenspeicher aufgezeichnet.
- Wenn weniger als der gesamte Streifen von Datenblöcken freigemacht werden soll, wird in Schritt 414 die Anzahl der in Gebrauch befindlichen Datenblöcke (d) ermittelt, die nicht im Cachespeicher gespeichert sind. d ist die Anzahl von Datenblöcken, die vom Plattenspeicher gelesen werden müssen, um die Parität durch AUSSCHLIESSLICH-ODER-Verknüpfung aller in Gebrauch befindlichen Datenblöcke zu berechnen. In Schritt 416 wird die Anzahl b aller freizumachenden geschützten Datenblök ke ermittelt, die sich nicht im Cachespeicher befinden. b ist die Anzahl von Blöcken, die vom Plattenspeicher gelesen werden müssen, wenn die Parität erneut berechnet wird, indem die geschützten Blöcke abgezogen werden, die den Schutz verlieren.
- Als nächstes wird in Schritt 415 festgestellt, ob d kleiner als oder gleich b ist. Der Zweck dieses Schrittes besteht darin, die Mindestanzahl von E/A-Vorgängen der beiden Alternativen auszuführen. Wenn d kleiner als oder gleich b ist, werden in Schritt 418 alle in Gebrauch befindlichen Datenblöcke, die nicht im Cachespeicher sind, vom Plattenspeicher gelesen, und dann wird in Schritt 420 die Parität neu berechnet, indem eine ausschließliche ODER-Verknüpfung aller Datenblöcke D1 ... Dn miteinander erfolgt. Wenn andererseits d größer als b ist, werden in Schritt 422 alle geschützten Datenblöcke, die sich nicht im Cachespeicher befinden, vom Plattenspeicher gelesen, und dann wird in Schritt 424 jeder freizumachende Datenblock Bj mit dem Paritätsblock P durch AUSSCHLIESSLICH-ODER verknüpft. Dieser Vorgang subtrahiert die freizumachenden geschützten Datenblöcke Bj vom Paritätsblock.
- In Schritt 426 werden alle freizumachenden Blöcke Bj als nicht geschützt markiert, indem ihre Einträge im relevanten Blockvorsatz gelöscht werden. Dann werden die Schritte 410 und 412 wie vorstehend beschrieben ausgeführt.
- Fig. 5A bis 5C zeigen einige Beispiele, wie die Parität unter Verwendung eines Paritätsblockvorsatzes 502 gemäß der vorliegenden Erfindung ermittelt wird. Eine Ausführungsform wird gezeigt, die vier Datenblöcke und einen Paritätsblock pro Streifen (Paritätsgruppe) hat. Der Vorsatz wird derart abgebildet, dass jeder Datenblock Dn eine Position in dem Vorsatz hat. Ei ne Null zeigt an, dass der jeweilige Datenblock nicht in der Paritätsberechnung enthalten ist, und eine 1 zeigt an, dass der Datenblock in der Paritätsberechnung enthalten ist.
- In Fig. 5A sind die Datenblöcke D9, D10 und D11 frei, damit ist nur Datenblock D8 durch den Paritätsblock P2 geschützt. Der Vorsatz 502a wird (binär) auf 1000 eingestellt, um anzuzeigen, dass die Paritätsbits 504a von Paritätsblock P2 nur von Block D8 erzeugt wurden. Die drei Nullen zeigen an, dass die restlichen drei Datenblöcke nicht geschützt sind.
- In Fig. 5B wird angenommen, dass die Steuerung in Block D10 einen Aufzeichnungsvorgang vornehmen muss. Durch Überprüfen des alten Paritätsblockvorsatzes 502a stellt die Steuerung fest, dass durch die Paritätsbits nur Block D8 geschützt ist, und damit wird die neue Parität berechnet zu P = D8 AUSSCHLIESSLICH ODER D10, oder P = D10 AUSSCHLIESSLICH-ODER altes P und wird in Paritätsblock 504b gespeichert.
- In Fig. 5C wird angenommen, dass die Steuerung in Block D9 einen Aufzeichnungsvorgang vornehmen muss. Die alte Parität 502b zeigt an, dass Block D9 nicht geschützt ist. Damit wird die neue Parität berechnet zu P = D8 AUSSCHLIESSLICH-ODER D9 AUSSCHLIESSLICH-ODER D10, oder P = D9 AUSSCHLIESSLICH-ODER altes P. P wird in Paritätsblock 504c gespeichert, und der Vorsatz wird wie in 502c gezeigt aktualisiert.
- Bei der RAID 5 mit einem Paritätssystem freier Blöcke der vorliegenden Erfindung, ist, wenn eine Platte in der Plattenmatrix ausfällt, das Vorgehen bei Wiederherstellung das gleiche wie bei einer Standard-RAID-Plattenmatrix. Der fehlende Block in jeder Paritätsgruppe, die einen Block auf der ausgefallenen Platte hat, wird von den anderen Blöcken seiner Paritätsgruppe auf anderen Platten abgeleitet. Ein Vorteil während der Wiederherstellung besteht jedoch darin, dass in dem vorliegenden System der Vorsatz ein Abbild der Datenblöcke bereitstellt, die durch den Paritätsblock beschrieben werden. Daher ist die Wiedergewinnung von nicht benutzten Datenblöcken unnötig.
- Im Falle eines einzelnen Plattenausfalles kann der Inhalt der Platte in Plattensystemen mit RAID-Aufbau nach dem Stand der Technik wiederhergestellt werden. Im wesentlichen wird für jeden Block der ausgefallenen Platte, wenn er ein Paritätsblock ist, dann die Paritätsinformation neu berechnet, und wenn er ein Datenblock ist, kann sein Inhalt unter Verwendung aller anderen Datenblöcke im Streifen zusammen mit dem Paritätsblock für den Streifen wiederhergestellt werden.
- Wenn das variable Streifenschutzschema der vorliegenden Erfindung benutzt wird, erfolgt die Wiederherstellung wie folgt. Zuerst soll angenommen werden, dass der Block auf der ausgefallenen Platte ein Datenblock ist. Aus dem Paritätsblock für den Streifen kann festgestellt werden, ob der Block geschützt oder ungeschützt ist. Wenn er geschützt ist, wird sein Inhalt wie vorstehend beschrieben wiederhergestellt, ausgenommen, dass nur die anderen geschützten Datenblöcke (zusammen mit dem Paritätsblock) in dem Streifen benutzt werden. Wenn nur einige wenige andere Blöcke geschützt sind, führt dies zu E/A-Einsparungen (verglichen mit Verfahren nach dem Stand der Technik) und damit schnellerer Plattenwiederherstellung mit wachsenden Einsparungen bei weniger geschützten Blöcken in jedem Streifen. Der andere Fall besteht darin, dass der Datenblock nicht geschützt ist. In diesem Falle ist keine weitere Aktion erforderlich, was ganz klar eine bedeutende Verbesserung gegenüber dem Verfahren nach dem Stand der Technik ist. Insbesondere ist anzumerken, dass dann, wenn die ausgefallene Platte eine große Menge von nicht geschütztem (freiem) Platz enthält, die Plattenwiederherstellung extrem schnell im Vergleich mit den früheren Plattenwiederherstellungsverfahren ist.
- Als nächstes wird angenommen, dass der Block auf der ausgefallenen Platte ein Paritätsblock ist. In diesem Falle gibt es zwei Verfahren zur Wiederherstellung des Blockes. Wenn gewünscht wird, die Plattenwiederherstellung unabhängig von einem Hauptrechnersystem vorzunehmen, muss zunächst der schlimmste Fall angenommen werden, dass alle Datenblöcke in dem Streifen gültig (in Gebrauch) sind. In diesem Falle wird der Paritätsblock durch Berechnen der Parität aller Datenblöcke im Streifen gefunden, und weiterhin werden im Vorsatzbereich des Paritätsblockes alle Datenblöcke als geschützt markiert.
- Ein zweites Verfahren, das eine Verbindung mit einem Hauptrechnersystem betrifft, besteht in Folgendem. Für jeden Paritätsblock auf der ausgefallenen Platte fragt die Plattensteuerung ein Hauptrechnerdateisystem nach dem Status (frei oder in Gebrauch) der Datenblöcke im Streifen ab. Das Hauptrechnerdateisystem schickt einen Bitvektor zurück, der für jeden Block im Streifen anzeigt, ob er frei ist. Jeder derartige freie Block wird als nicht geschützt markiert, und die anderen Datenblöcke in dem Streifen werden als geschützt markiert. Schließlich wird für die geschützten Blöcke im Streifen die Parität berechnet, damit wird der Paritätsblock auf der ausgefallenen Platte wiederhergestellt. Wenn weniger als alle Datenblöcke in einem Streifen geschützt sind, ist dies ebenfalls eine Verbesserung gegenüber früheren Verfahren, weil nur die geschützten Blöcke vom Plattenspeicher gelesen werden müssen, um den Paritätsblock neu zu berechnen.
- Zusammenfassend vermindert die vorliegende Erfindung die Anzahl der erforderlichen Lese- und Aufzeichnungsvorgänge dann, wenn weniger als alle Datenblöcke innerhalb eines Streifens durch den Paritätsblock geschützt sind. Insbesondere enthalten die Paritätsblöcke Kennzeichner, die jeden Datenblock dahingehend klassifizieren, dass er entweder aus geschützten Daten besteht, d. h. Daten, für die Paritätsinformation in dem Paritätsblock berechnet und gespeichert worden ist; oder aus ungeschützten Daten besteht, d. h. Daten, für die es keine gespeicherte Paritätsinformation gibt. Ein Datenblock in der letzteren Kategorie sollte immer ein Datenblock sein, der sich nicht im Gebrauch befindet. Zusätzlich können Datenblöcke in der ersten (geschützten) Kategorie weiterhin dahingehend klassifiziert werden, dass sie sich in Gebrauch oder nicht in Gebrauch befinden. Der Fall, in dem ein geschützter Datenblock Daten enthält, die sich nicht in Gebrauch befinden, kann sich einstellen, wenn beispielsweise Informationen in dem gegebenen Block aktualisiert und an einem anderen Plattenspeicherstandort aufgezeichnet worden sind, oder wenn die Informationen veralten und der Plattenspeicherplatz, der die Daten enthält, durch das Betriebssystem freigemacht wird. Aufzeichnungen in ungeschützte Datenblöcke werden vorgenommen, ohne dass zuerst der aktuelle Blockinhalt ermittelt wird, da diese nicht in der aktuellen Paritätsinformation enthalten sind. Weiterhin können Datenblöcke, die geschützt sind, sich aber nicht in Gebrauch befinden, in ungeschützte Blöcke umgewandelt werden, indem die Paritätsinformation für die in Gebrauch befindlichen Datenblöcke neu berechnet wird. In einer bevorzugten Ausführungsform benutzt das System einen Cachespeicher, dessen Inhalt ei ne Anzahl von Daten- und Paritätsblöcken und auch Aufzeichnungslogik enthält, die Vorsätze in Paritätsblöcken liest und modifiziert, um so die Aktionen zu ermitteln, die zum Lesen und Aufzeichnen von Blöcken jeder Art erforderlich sind.
- Obgleich die Erfindung insbesondere unter Bezugnahme auf ihre bevorzugten Ausführungsformen gezeigt und beschrieben worden ist, versteht es sich für den Fachmann, das verschiedene Veränderungen in Form und Einzelheiten darin vorgenommen werden können, die vom Umfang der Erfindung abweichen.
Claims (16)
1. System zum Aufzeichnen von Daten auf eine Platte (40 - 43)
in einer redundanten Matrix von Billigplatten, bei denen
ein oder mehrere Paritätsblöcke zu Gruppen von
Plattendatenblöcken gehören, wobei jeder Paritätsblock
Paritätsdaten für einen oder mehrere Blöcke in einer Gruppe von
Plattendatenblöcken enthält, von denen sich jeder
Paritäts- und Datenblock aus einer Gruppe auf einer
unterschiedlichen Platte befindet, wobei das System umfasst:
einen Cachespeicher (31), der mit der Plattenmatrix
verbunden ist, wobei der Cachespeicher einen oder mehrere
Paritätsblöcke (31b) speichert, die zu Gruppen von
Plattendatenblöcken (31a) gehören, wobei jeder Paritätsblock
einen Kennzeichner (502) enthält, der geschützte Datenblöcke
in der Gruppe kennzeichnet; und
Aufzeichnungslogik (32), die mit dem Cachespeicher (31)
und der Plattenmatrix verbunden ist, wobei die
Aufzeichnungslogik (32) enthält:
Mittel zum Feststellen des Paritätsschutzes (316), um
festzustellen, ob ein Datenblock durch die Paritätsdaten
geschützt ist oder nicht;
Aufzeichnungsmittel (306) zum Aufzeichnen von Daten in
einen ausgewählten Datenblock;
Mittel zum Feststellen freier Datenblöcke (302), um
festzustellen, ob der ausgewählte Datenblock zu einer Gruppe
von freien Datenblöcken gehört;
erste Berechnungsmittel (304), die auf eine Feststellung
durch das Feststellmittel für freie Datenblöcke (302)
reagieren, dass der ausgewählte Datenblock zu einer Gruppe
von freien Datenblöcken gehört, um den Paritätsblock unter
alleiniger Verwendung der neuen Daten einzurichten;
zweite Berechnungsmittel (318), die auf eine Feststellung
durch das Feststellmittel für freie Datenblöcke (302)
dass der ausgewählte Datenblock nicht zu einer Gruppe von
freien Datenblöcken gehört, und auf eine Feststellung
durch das den Paritätsschutz feststellende Mittel (316)
reagieren, dass der ausgewählte Datenblock durch die
Paritätsdaten geschützt ist, um einen neuen Paritätsblock zu
berechnen, der die neuen Daten unter Verwendung der neuen
Daten, des ausgewählten Datenblockes und des
Paritätsblokkes widerspiegelt; und
dritte Berechnungsmittel (320), die auf eine Feststellung
durch das Feststellmittel für freie Datenblöcke (302),
dass der ausgewählte Datenblock nicht zu einer Gruppe von
freien Datenblöcken gehört, und auf eine Feststellung
durch das Feststellmittel für den Paritätsschutz (316),
dass der ausgewählte Datenblock nicht durch die
Paritätsdaten geschützt ist, reagieren, um einen neuen
Paritätsblock zu berechnen, der die neuen Daten unter Verwendung
der neuen Daten und des Paritätsblockes widerspiegelt und
der den Kennzeichner aktualisiert,
um damit anzuzeigen, dass der ausgewählte Datenblock nun
durch den Paritätsblock geschützt ist.
2. System nach Anspruch 1, weiterhin umfassend:
Mittel (FILE SYSTEM) zum Feststellen des Plattenbereiches,
der nicht oder nicht mehr in Gebrauch ist, und zum
Freimachen des entsprechenden Plattendatenblöcke;
Mittel (422) zum Lesen eines Blockes von Daten von der
Plattenmatrix, nachdem er freigegebenen worden ist; und
Mittel (420, 424; 408, 426) zum erneuten Berechnen von
Paritätsdaten und zum Aktualisieren des mit den neu
berechneten Paritätsdaten verbundenen Kennzeichners, um das
Freimachen des Blockes von Daten widerzuspiegeln.
3. System nach Anspruch 2, das Mittel (422) zum Lesen eines
Blockes von Daten von der Plattenmatrix nach seiner
Freigabe enthält.
4. System nach Anspruch 2 oder Anspruch 3, das weiterhin
Mittel (414, 415, 416) zum Feststellen einer optimalen
Gruppen von Blöcken zum Lesen von der Platte umfasst, um damit
die Paritätsdaten neu zu berechnen, indem die Anzahl der
freizumachenden geschützten Datenblöcke, die sich nicht im
Cachespeicher befinden, mit der Anzahl der in Gebrauch
befindlichen Datenblöcke verglichen wird, die sich nicht im
Cachespeicher befinden.
5. System nach Anspruch 2, das weiterhin Mittel (422)
umfasst, um eine Vielzahl von Blöcken von Daten von der
Plattenmatrix zu lesen, nachdem sie freigegeben worden
sind.
6. Verfahren zum Aufzeichnen von neuen Daten auf Platte in
einer redundanten Matrix von Billigplatten, wobei zu
Gruppen von Plattendatenblöcken ein oder mehrere
Paritätsblökke gehören, wobei jeder Paritätsblock Paritätsdaten für
einen oder mehrere Blöcke in einer Gruppe von
Plattendatenblöcken enthält, wobei sich jeder Paritäts- und
Datenblock einer Gruppe auf einer unterschiedlichen Platte
befindet, wobei das Verfahren umfasst:
Speichern der neuen Daten in einem Cachespeicher (31a);
Berechnen eines Paritätsblockes (504a) für in Gebrauch
befindliche Datenblöcke einer Gruppe von Datenblöcken (D8-
D11) in der Plattenmatrix;
Anbringen eines Kennzeichners (502a) am Paritätsblock
(504a), der anzeigt, welche Datenblöcke der Gruppe von
Datenblöcken in Gebrauch sind;
Feststellen (302), ob der Bestimmungsblock für die neuen
Daten zu einer Gruppe von freien Datenblöcken gehört, und
wenn dies der Fall ist, Einrichten (304) des
Paritätsblokkes nur unter Verwendung der neuen Daten, und Aufzeichnen
des eingerichteten Paritätsblockes und der neuen Daten auf
der Platte, andernfalls Feststellen (324) aus dem
Kennzeichner, ob der Bestimmungsblock durch den Paritätsblock
geschützt ist;
wenn dies der Fall ist, Benutzen (318) der neuen Daten,
des Bestimmungsblockes und des Paritätsblockes zum
Berechnen eines neuen Paritätsblockes, der die neuen Daten
widerspiegelt, und Aufzeichnen (306) des neuen
Paritätsblokkes und der neuen Daten im Cachespeicher und auf dem
Plattenspeicher;
wenn dies nicht der Fall ist, Benutzen (320) der neuen
Daten und des Paritätsblockes zum Berechnen eines neuen
Paritätsblockes, der die neuen Daten widerspiegelt,
Aufzeichnen des neuen Paritätsblockes und der neuen Daten im
Cachespeicher und auf dem Plattenspeicher und
Aktualisieren (320) des Kennzeichners, um anzuzeigen, dass der
Bestimmungsblock nun durch den Paritätsblock geschützt ist.
7. Verfahren nach Anspruch 6, wobei, wenn der
Bestimmungsblock durch den Paritätsblock (324) geschützt ist und wenn
der Inhalt des Bestimmungsblockes nicht im Cachespeicher
(326) gespeichert ist, das Verfahren weiterhin vor dem
Berechnen (318) des neuen Paritätsblockes den Schritt (328)
des Lesens des Inhaltes des Bestimmungsblockes vom
Plattenspeicher umfasst.
8. Verfahren nach Anspruch 6 oder Anspruch 7, wobei der
Paritätsblock (100) und jeder der Blöcke (110 - 113) in der
Gruppe der Datenblöcke auf einer unterschiedlichen Platte
in der Plattenmatrix (0 - 4) gespeichert sind.
9. Verfahren nach einem beliebigen der Ansprüche 6 bis 8,
wobei, wenn der Paritätsblock nicht im Cachespeicher (308)
gespeichert ist, das Verfahren weiterhin vor dem Schritt
(316) des Feststellens, ob der Bestimmungsblock geschützt
ist, den Schritt (312) des Lesens des Paritätsblockes und
des Kennzeichners von Platte umfasst.
10. Verfahren nach einem beliebigen der Ansprüche 6 bis 9,
wobei der neue Paritätsblock durch ausschließliche ODER-
Verknüpfung des neuen Datenblockes und des Paritätsblockes
berechnet (320) wird.
11. Verfahren nach einem beliebigen der Ansprüche 6 bis 10,
weiterhin umfassend:
wenn ein Block vom in Gebrauch befindlichen zum nicht
gebrauchten Zustand neu klassifiziert werden soll, Berechnen
eines neuen Paritätsblockes (420; 424) unter Verwendung
des Paritätsblockes und der Daten in dem Block, der neu
klassifiziert werden soll, und Aktualisieren (426) des
Kennzeichners, um anzuzeigen, dass der neu zu
klassifizierende Block durch den neuen Paritätsblock nicht geschützt
ist.
12. Verfahren nach Anspruch 11, wobei, wenn (402) der
Paritätsblock und der Kennzeichner nicht im Cachespeicher
gespeichert sind, das Verfahren vor dem Schritt (420; 424)
des Berechnens eines neuen Paritätsblockes weiterhin den
Schritt (404) des Lesens des Paritätsblockes und des
Kennzeichners von der Platte umfasst.
13. Verfahren nach Anspruch 11, wobei, wenn der erneut zu
klassifizierende Datenblock nicht im Cachespeicher
gespeichert ist, das Verfahren weiterhin vor dem Schritt (420;
424) des Berechnens eines neuen Paritätsblocks den Schritt
(418; 422) des Lesens des erneut zu klassifizierenden
Datenblockes von der Platte umfasst.
14. Verfahren nach einem beliebigen der Ansprüche 11 bis 13,
wobei der Kennzeichner (502a) eine Anzahl von Bits
umfasst, die gleich der Anzahl von Datenblöcken (D8 - D11)
in der Gruppe ist, wobei jedes Bit einem unterschiedlichen
Datenblock in der Gruppe entspricht und wobei der Schritt
(408; 426) des Aktualisierens des Kennzeichners das
Verändern des Status desjenigen Bits umfasst, welches dem
erneut zu klassifizierenden Block entspricht.
15. Verfahren nach einem beliebigen der Ansprüche 11 bis 14,
wobei der Paritätsblock (P2) und jeder der Datenblöcke (D8
- D11) in der Gruppe auf einer unterschiedlichen Platte in
der Matrix gespeichert sind.
16. Verfahren nach einem beliebigen der Ansprüche 11 bis 15,
wobei der Schritt (424) des Berechnens eines neuen
Paritätsblockes die ausschließliche ODER-Verknüpfung des
Paritätsblockes und der Daten in dem erneut zu
klassifizierenden Block umfasst.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/238,769 US5522032A (en) | 1994-05-05 | 1994-05-05 | Raid level 5 with free blocks parity cache |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69512459D1 DE69512459D1 (de) | 1999-11-04 |
DE69512459T2 true DE69512459T2 (de) | 2000-05-04 |
Family
ID=22899236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69512459T Expired - Lifetime DE69512459T2 (de) | 1994-05-05 | 1995-04-07 | RAID 5 - Plattenspeicheranordnung mit Paritätscachespeicher mit freien Blöcken |
Country Status (6)
Country | Link |
---|---|
US (1) | US5522032A (de) |
EP (1) | EP0681238B1 (de) |
JP (1) | JP2902970B2 (de) |
KR (1) | KR100188485B1 (de) |
CN (1) | CN1097774C (de) |
DE (1) | DE69512459T2 (de) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3687111B2 (ja) * | 1994-08-18 | 2005-08-24 | 株式会社日立製作所 | 記憶装置システムおよび記憶装置の制御方法 |
JP3202550B2 (ja) * | 1995-07-14 | 2001-08-27 | 日本電気株式会社 | ディスクアレイサブシステム |
US5933592A (en) * | 1995-10-13 | 1999-08-03 | Digital Equipment Corporation | Promoting device level error to raidset level error to restore redundacy in a raid array data storage system |
US5961652A (en) * | 1995-10-13 | 1999-10-05 | Compaq Computer Corporation | Read checking for drive rebuild |
US5737744A (en) * | 1995-10-13 | 1998-04-07 | Compaq Computer Corporation | Disk array controller for performing exclusive or operations |
US5826001A (en) * | 1995-10-13 | 1998-10-20 | Digital Equipment Corporation | Reconstructing data blocks in a raid array data storage system having storage device metadata and raid set metadata |
US5860090A (en) * | 1995-10-20 | 1999-01-12 | Informix Software, Inc. | Append-only storage in a disk array using striping and parity caching |
US5720025A (en) * | 1996-01-18 | 1998-02-17 | Hewlett-Packard Company | Frequently-redundant array of independent disks |
KR100208801B1 (ko) | 1996-09-16 | 1999-07-15 | 윤종용 | 데이타 입/출력 성능을 향상시키기 위한 기억장치 시스템 및 그에 따른 데이타 복구정보 캐시구현방법 |
US6016552A (en) * | 1997-06-06 | 2000-01-18 | The Chinese University Of Hong Kong | Object striping focusing on data object |
US6012123A (en) * | 1997-06-10 | 2000-01-04 | Adaptec Inc | External I/O controller system for an independent access parity disk array |
US6035347A (en) * | 1997-12-19 | 2000-03-07 | International Business Machines Corporation | Secure store implementation on common platform storage subsystem (CPSS) by storing write data in non-volatile buffer |
JPH11203056A (ja) * | 1998-01-19 | 1999-07-30 | Fujitsu Ltd | 入出力制御装置及びアレイディスク装置 |
US6029168A (en) | 1998-01-23 | 2000-02-22 | Tricord Systems, Inc. | Decentralized file mapping in a striped network file system in a distributed computing environment |
US6173415B1 (en) | 1998-05-22 | 2001-01-09 | International Business Machines Corporation | System for scalable distributed data structure having scalable availability |
US6122754A (en) * | 1998-05-22 | 2000-09-19 | International Business Machines Corporation | Method and system for data recovery using a distributed and scalable data structure |
US6725392B1 (en) | 1999-03-03 | 2004-04-20 | Adaptec, Inc. | Controller fault recovery system for a distributed file system |
US6513093B1 (en) | 1999-08-11 | 2003-01-28 | International Business Machines Corporation | High reliability, high performance disk array storage system |
US6629199B1 (en) * | 1999-08-20 | 2003-09-30 | Emc Corporation | Digital data storage system including directory for efficiently providing formatting information for stored records and utilization of a check value for verifying that a record is from a particular storage location |
JP2001356882A (ja) * | 2000-06-13 | 2001-12-26 | Nec Corp | データ読み書き制御方法及びディスクアレイ装置並びにデータ読み書き制御用プログラムを記憶した記録媒体 |
EP1168173A3 (de) * | 2000-06-29 | 2004-09-22 | Snap Appliance, Inc. | Fehlertolerante Speicherungsvorrichtung mit einem Cachespeicher |
US6775792B2 (en) * | 2001-01-29 | 2004-08-10 | Snap Appliance, Inc. | Discrete mapping of parity blocks |
US6990667B2 (en) * | 2001-01-29 | 2006-01-24 | Adaptec, Inc. | Server-independent object positioning for load balancing drives and servers |
US6862692B2 (en) * | 2001-01-29 | 2005-03-01 | Adaptec, Inc. | Dynamic redistribution of parity groups |
US7054927B2 (en) * | 2001-01-29 | 2006-05-30 | Adaptec, Inc. | File system metadata describing server directory information |
US6766491B2 (en) | 2001-05-09 | 2004-07-20 | Dot Hill Systems Corp. | Parity mirroring between controllers in an active-active controller pair |
US20030037302A1 (en) * | 2001-06-24 | 2003-02-20 | Aliaksei Dzienis | Systems and methods for automatically converting document file formats |
US7168025B1 (en) * | 2001-10-11 | 2007-01-23 | Fuzzyfind Corporation | Method of and system for searching a data dictionary with fault tolerant indexing |
US7085953B1 (en) * | 2002-11-01 | 2006-08-01 | International Business Machines Corporation | Method and means for tolerating multiple dependent or arbitrary double disk failures in a disk array |
US7185144B2 (en) * | 2003-11-24 | 2007-02-27 | Network Appliance, Inc. | Semi-static distribution technique |
GB0315157D0 (en) * | 2003-06-28 | 2003-08-06 | Ibm | Safe write to multiply-redundant storage |
CN101566931B (zh) * | 2003-08-14 | 2011-05-18 | 克姆佩棱特科技公司 | 虚拟磁盘驱动系统和方法 |
US7562230B2 (en) * | 2003-10-14 | 2009-07-14 | Intel Corporation | Data security |
CN100419700C (zh) * | 2004-02-11 | 2008-09-17 | 鸿富锦精密工业(深圳)有限公司 | 磁盘容错系统及方法 |
US7370163B2 (en) * | 2004-05-03 | 2008-05-06 | Gemini Storage | Adaptive cache engine for storage area network including systems and methods related thereto |
US20060036904A1 (en) * | 2004-08-13 | 2006-02-16 | Gemini Storage | Data replication method over a limited bandwidth network by mirroring parities |
US7457980B2 (en) * | 2004-08-13 | 2008-11-25 | Ken Qing Yang | Data replication method over a limited bandwidth network by mirroring parities |
US7321905B2 (en) | 2004-09-30 | 2008-01-22 | International Business Machines Corporation | System and method for efficient data recovery in a storage array utilizing multiple parity slopes |
US7711965B2 (en) * | 2004-10-20 | 2010-05-04 | Intel Corporation | Data security |
KR100579133B1 (ko) | 2004-12-06 | 2006-05-12 | 한국전자통신연구원 | 블록분할 디스크 어레이에서의 분산 패러티를 이용한데이터 배치 방법 및 블록분할 분산패러티 디스크어레이에서의 대형/소형 블록 읽기/쓰기 제어 방법 |
JP2006171957A (ja) * | 2004-12-14 | 2006-06-29 | Fujitsu Ltd | ストレージ制御装置および方法 |
US7343546B2 (en) * | 2004-12-23 | 2008-03-11 | Intel Corporation | Method and system for syndrome generation and data recovery |
US7779294B2 (en) * | 2005-04-15 | 2010-08-17 | Intel Corporation | Power-safe disk storage apparatus, systems, and methods |
US7454668B1 (en) * | 2005-09-23 | 2008-11-18 | Emc Corporation | Techniques for data signature and protection against lost writes |
CN101361278B (zh) * | 2006-01-19 | 2012-02-01 | 富士通株式会社 | 奇偶校验位生成电路、计数电路以及计数方法 |
US7836380B2 (en) * | 2006-10-31 | 2010-11-16 | Intel Corporation | Destination indication to aid in posted write buffer loading |
US8316258B2 (en) * | 2007-05-03 | 2012-11-20 | Oracle America, Inc. | System and method for error detection in a data storage system |
JP5279785B2 (ja) * | 2010-09-17 | 2013-09-04 | 株式会社東芝 | コントローラ、記憶装置、およびプログラム |
JP6039699B2 (ja) * | 2012-07-23 | 2016-12-07 | 株式会社日立製作所 | ストレージシステム及びデータ管理方法 |
US9830220B1 (en) * | 2014-09-29 | 2017-11-28 | EMC IP Holding Company LLC | Enhanced error recovery for data storage drives |
US9672106B2 (en) | 2014-12-30 | 2017-06-06 | Nutanix, Inc. | Architecture for implementing erasure coding |
US10567009B2 (en) | 2016-12-06 | 2020-02-18 | Nutanix, Inc. | Dynamic erasure coding |
US10664346B2 (en) * | 2018-05-18 | 2020-05-26 | Microsoft Technology Licensing, Llc | Parity log with by-pass |
CN112947847B (zh) * | 2019-12-11 | 2023-12-29 | 伊姆西Ip控股有限责任公司 | 用于存储数据的方法、设备和计算机程序产品 |
CN111880963B (zh) * | 2020-07-29 | 2022-06-10 | 北京浪潮数据技术有限公司 | 一种数据重构方法、装置、设备及存储介质 |
CN112947858B (zh) * | 2021-02-25 | 2023-04-25 | 浪潮电子信息产业股份有限公司 | 一种raid 5校验值的更新方法、装置和介质 |
CN117785026B (zh) * | 2023-11-17 | 2024-05-17 | 青海师范大学 | 一种基于ssd raid-5系统高效写的缓存方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4419725A (en) * | 1980-11-14 | 1983-12-06 | Sperry Corporation | Cache/disk subsystem with tagalong copy |
US5233618A (en) * | 1990-03-02 | 1993-08-03 | Micro Technology, Inc. | Data correcting applicable to redundant arrays of independent disks |
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 |
US5375128A (en) * | 1990-10-18 | 1994-12-20 | Ibm Corporation (International Business Machines Corporation) | Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders |
US5359611A (en) * | 1990-12-14 | 1994-10-25 | Dell Usa, L.P. | Method and apparatus for reducing partial write latency in redundant disk arrays |
US5274799A (en) * | 1991-01-04 | 1993-12-28 | Array Technology Corporation | Storage device array architecture with copyback cache |
JPH0820964B2 (ja) * | 1991-09-13 | 1996-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレイション | メモリ制御装置および方法 |
US5333305A (en) * | 1991-12-27 | 1994-07-26 | Compaq Computer Corporation | Method for improving partial stripe write performance in disk array subsystems |
US5341381A (en) * | 1992-01-21 | 1994-08-23 | Tandem Computers, Incorporated | Redundant array parity caching system |
US5410667A (en) * | 1992-04-17 | 1995-04-25 | Storage Technology Corporation | Data record copy system for a disk drive array data storage subsystem |
JP2810593B2 (ja) * | 1992-05-13 | 1998-10-15 | 三菱電機株式会社 | 記憶装置 |
US5309451A (en) * | 1992-08-12 | 1994-05-03 | Digital Equipment Corporation | Data and parity prefetching for redundant arrays of disk drives |
US5315602A (en) * | 1992-08-12 | 1994-05-24 | Digital Equipment Corporation | Optimized stripe detection for redundant arrays of disk drives |
JP3183719B2 (ja) * | 1992-08-26 | 2001-07-09 | 三菱電機株式会社 | アレイ型記録装置 |
US5392244A (en) * | 1993-08-19 | 1995-02-21 | Hewlett-Packard Company | Memory systems with data storage redundancy management |
-
1994
- 1994-05-05 US US08/238,769 patent/US5522032A/en not_active Expired - Lifetime
-
1995
- 1995-02-13 JP JP7023667A patent/JP2902970B2/ja not_active Expired - Lifetime
- 1995-04-07 EP EP95105237A patent/EP0681238B1/de not_active Expired - Lifetime
- 1995-04-07 DE DE69512459T patent/DE69512459T2/de not_active Expired - Lifetime
- 1995-04-14 CN CN95103824A patent/CN1097774C/zh not_active Expired - Lifetime
- 1995-05-04 KR KR1019950010951A patent/KR100188485B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US5522032A (en) | 1996-05-28 |
CN1097774C (zh) | 2003-01-01 |
KR100188485B1 (ko) | 1999-06-01 |
JP2902970B2 (ja) | 1999-06-07 |
CN1118503A (zh) | 1996-03-13 |
EP0681238A1 (de) | 1995-11-08 |
JPH07306759A (ja) | 1995-11-21 |
DE69512459D1 (de) | 1999-11-04 |
EP0681238B1 (de) | 1999-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69512459T2 (de) | RAID 5 - Plattenspeicheranordnung mit Paritätscachespeicher mit freien Blöcken | |
DE112018002951B4 (de) | Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten | |
DE69431186T2 (de) | Verfahren und Dateisystem zur Zuordnung von Datei-Blöcken zu Speicherplatz in einem RAID-Plattensystem | |
DE69412775T2 (de) | System zur Kontrolle der Befehlswarteschlange der Paritätsplatte in einer Speicherplattenanordnung | |
DE69528430T2 (de) | Verfahren und System zum Auswählen von Daten für Migration in einem hierarchischen Datenspeichersystem mit Frequenzverteilungstabellen | |
DE68928546T2 (de) | Dateisystem für eine vielzahl von speicherklassen | |
DE69131562T2 (de) | Verfahren und Anordnung zur Wiederherstellung von durch Parität geschützten Daten | |
DE112010004969B4 (de) | Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen | |
DE112012002615B4 (de) | Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren | |
DE69330319T2 (de) | Verfahren und System für Datenspeicher-Formatumwandlung, Daten-Zugriffsverfahren und Steuergerät | |
DE69807101T2 (de) | Segmentiertes dma mit xor-puffer für speicheruntersysteme | |
DE68927142T2 (de) | Verriegelungs- und Lese-Minimierung in einem segmentierten Speicherraum | |
DE68929229T2 (de) | Steuergerät mit einem Cache-Speicher und Verfahren zur Steuerung des Cache-Speichers | |
DE3686291T2 (de) | Cache-anordnung mit einem lru-verfahren und magnetscheibensteuereinrichtung mit einer solchen anordnung. | |
DE60035151T2 (de) | Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem | |
DE69623407T2 (de) | Verfahren zur Überprüfung der Blockzuordnung eines Flash-Speichers mit Übersetzungsschicht | |
DE69528443T2 (de) | Betriebsverfahren einer Speicherplattenanordnung | |
DE10055603B4 (de) | Verfahren zum Zugriff auf eine Datei in einer Vielzahl von Datenspeicherbibliotheken und Datenspeicherbibliothek-System | |
DE112011100618B4 (de) | Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird | |
DE69310908T2 (de) | Verfahren und geraet um nicht loeschbare dateien auf ein speichermedium zu schreiben | |
DE69516538T2 (de) | Speicherung von rechnerdaten | |
DE69533058T2 (de) | Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung | |
DE69533570T2 (de) | Verfahren und System zum Erkennen von Datenverlust in einem hierarchischen Datenspeichersystem | |
DE69833815T2 (de) | Verbesserter Disk-Log mit verteiltem Schreibsystem | |
DE112011103290B4 (de) | Intelligente Schreibcacheoperationen für sequenzielle Datenspuren |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8320 | Willingness to grant licences declared (paragraph 23) | ||
8328 | Change in the person/name/address of the agent |
Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7 |