DE69512459T2 - RAID 5 - Plattenspeicheranordnung mit Paritätscachespeicher mit freien Blöcken - Google Patents

RAID 5 - Plattenspeicheranordnung mit Paritätscachespeicher mit freien Blöcken

Info

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
Application number
DE69512459T
Other languages
English (en)
Other versions
DE69512459D1 (de
Inventor
Peter Anthony Franaszek
John Timothy Robinson
Alexander Thomasian
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69512459D1 publication Critical patent/DE69512459D1/de
Publication of DE69512459T2 publication Critical patent/DE69512459T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1033Inactive data in parity groups, i.e. RAID parity groups where parity is calculated on only occupied or busy bits in the stripe
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In 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

    Grundlagen der Erfindung Gebiet der Erfindung
  • 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.
  • Zugehörige Technik
  • 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.
  • Zusammenfassung der Erfindung
  • 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.
  • Kurze Beschreibung der Zeichnungen
  • 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.
  • Ausführliche Beschreibung der bevorzugten Ausführungsform
  • 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.
DE69512459T 1994-05-05 1995-04-07 RAID 5 - Plattenspeicheranordnung mit Paritätscachespeicher mit freien Blöcken Expired - Lifetime DE69512459T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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