DE69434381T2 - Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers - Google Patents

Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers Download PDF

Info

Publication number
DE69434381T2
DE69434381T2 DE69434381T DE69434381T DE69434381T2 DE 69434381 T2 DE69434381 T2 DE 69434381T2 DE 69434381 T DE69434381 T DE 69434381T DE 69434381 T DE69434381 T DE 69434381T DE 69434381 T2 DE69434381 T2 DE 69434381T2
Authority
DE
Germany
Prior art keywords
parity
data
disk
strip
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
DE69434381T
Other languages
English (en)
Other versions
DE69434381D1 (de
Inventor
David Hitz
Michael Malcolm
James Lau
Byron Burlingame Rakitzis
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.)
NetApp Inc
Original Assignee
Network Appliance Inc
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 Network Appliance Inc filed Critical Network Appliance Inc
Application granted granted Critical
Publication of DE69434381D1 publication Critical patent/DE69434381D1/de
Publication of DE69434381T2 publication Critical patent/DE69434381T2/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
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • 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/1061Parity-single bit-RAID4, i.e. RAID 4 implementations

Description

  • Die vorliegende Erfindung betrifft das Gebiet von Fehlerkorrekturtechniken für eine Plattenanordung.
  • Ein Computersystem benötigt typischerweise große Mengen von sekundärem Speicher, wie zum Beispiel ein Plattenlaufwerk, um Information zu speichern (zum Beispiel Daten und/oder Applikationsprogramme). Computersysteme des Standes der Technik verwenden oft ein einzelnes Festplattenlaufwerk vom Typ „Winchester", um eine permanente Speicherung von großen Datenmengen zu bieten. Da sich die Leistung von Computern und zugeordneten Prozessoren vergrößert hat, hat sich der Bedarf an zu Hochgeschwindigkeitsdatentransferraten fähigen Plattenlaufwerken mit größerer Kapazität vergrößert. Um Schritt zu halten, wurden Veränderungen und Verbesserungen der Leistung von Plattenlaufwerken gemacht. Zum Beispiel resultierten Daten- und Spurdichtenerhöhungen, Medienverbesserungen und eine größere Zahl von Köpfen und Platten in einem einzelnen Plattenlaufwerk in höheren Datentransferraten.
  • Ein Nachteil der Verwendung einzelner Plattenlaufwerke zum Bereitstellen von sekundärem Speicher ist der Aufwand beim Ersetzen des Laufwerks, wenn eine größere Kapazität oder Leistung benötigt wird. Ein weiterer Nachteil ist der Mangel an Redundanz oder Datensicherung eines einzelnen Plattenlaufwerks. Wenn ein einzelnes Plattenlaufwerk beschädigt, gestört oder ersetzt wird, wird das System ausgeschaltet.
  • Ein Versuch im Standes der Technik, die obigen Nachteile von Einzelplattenlaufwerksystemen zu reduzieren oder zu vermeiden, ist, eine Vielzahl von miteinander parallel geschalteten Laufwerken zu verwenden. Die Daten werden in Brocken zerteilt, auf die von mehreren Laufwerken simultan, parallel oder sequentiell von einem einzelnen Laufwerk der Vielzahl von Laufwerken aus zugegriffen werden kann. Ein solches System von parallel kombinierten Plattenlaufwerken ist als „Redundant Array of Inexpensive Disks" (RAID) bekannt. Ein RAID-System stellt die gleiche Speicherkapazität bereit wie ein größeres Einzelplattenlaufwerksystem, aber bei geringeren Kosten. Ähnlich können hohe Datentransferraten aufgrund der Parallelisierung der Anordnung erreicht werden.
  • RAID-Systeme erlauben eine inkrementelle Vergrößerung der Speicherkapazität durch das Zufügen von zusätzlichen Plattenlaufwerken zu der Anordnung. Wenn eine Platte in dem RAID-System abstürzt, kann sie ohne Ausschalten des gesamten Systems ersetzt werden. Daten auf der abgestürzten Platte können unter Verwendung von Fehlerkorrekturtechniken wiederhergestellt werden.
  • RAID-Anordnungen
  • Ein RAID hat sechs Plattenanordnungskonfigurationen, die als RAID-Level 0 bis RAID-Level 5 bezeichnet werden. Jeder RAID-Level hat Vorteile und Nachteile. Bei der vorliegenden Diskussion werden nur RAID-Level 4 und 5 beschrieben. Eine detaillierte Beschreibung der verschiedenen RAID-Levels wurde jedoch von Patterson et al. offenbart, in „A Case for Redundant Arrays of Inexpensive Disks (RAID)", ACM SIGMOD Konferenz, Juni 1988.
  • RAID-Systeme stellen Techniken zum Schutz gegen Laufwerksausfälle bereit. Obwohl RAID eine Anzahl von verschiedenen Formaten (wie oben angegeben) umfasst, ist ein gemeinsames Merkmal, dass eine Platte (oder verschiedene Platten) Paritätsinformationen von in der Anordnung der Platten gespeicherten Daten speichert. Ein RAID-Level-4-System speichert die gesamte Paritätsinformation auf einer einzelnen Paritätsplatte, während ein RAID-Level-5-System Paritätsblöcke in der gesamten RAID-Anordnung gemäß einem bekannten Muster speichert. Im Falle eines Plattenausfalls erlaubt die in dem RAID-Subsystem gespeicherte Paritätsinformation, die verlorenen Daten von einer ausgefallenen Platte neu zu berechnen.
  • 1 ist ein Blockdiagramm, welches ein System des Standes der Technik illustriert, welches RAID-Level 4 implementiert. Das System umfasst N + 1 Platten 112118, die durch einen Kommunikationskanal 130 an ein Computersystem oder einen Host-Computer angeschlossen sind. In dem Beispiel werden Daten auf jeder Festplatte in Blöcken oder Segmenten von 4 KByte (KB) gespeichert. Platte 112 ist die Paritätsplatte für das System, während Platten 114118 Datenplatten 0 bis N – 1 sind. RAID-Level 4 verwendet ein Platten-„Striping", welches Datenblöcke über alle Platten in einer Anordnung wie in 1 gezeigt verteilt. Ein Streifen („Stripe") ist eine Gruppe von Datenblöcken, wobei jeder Block auf einer separaten Platte der N Platten zusammen mit einem zugeordneten Paritätsblock auf einer einzelnen Paritätsplatte gespeichert ist. In 1 ist ein erster und ein zweiter Streifen 140 und 142 durch gepunktete Linien angegeben. Der erste Streifen 140 umfasst Paritätsblock 0 und Datenblöcke 0 bis N – 1. In dem gezeigten Beispiel wird ein erster Datenblock 0 auf Platte 114 der N + 1-Plattenanordnung gespeichert. Der zweite Datenblock 1 wird auf Platte 116 gespeichert, usw. Schließlich wird Datenblock N – 1 auf Platte 118 gespeichert. Eine Parität wird für Streifen 140 unter Verwendung bekannter Techniken berechnet und als Paritätsblock 0 auf Platte 112 gespeichert. Ähnlich wird der N Datenblöcke umfassende Streifen 142 als Datenblock N auf Platte 114 gespeichert, Datenblock N + 1 auf Platte 116 und Datenblock 2 N – 1 auf Platte 118. Eine Parität wird für die vier Streifen 142 berechnet und als Paritätsblock 1 auf Platte 112 gespeichert.
  • Wie in 1 gezeigt, fügt RAID-Level 4 ein zusätzliches Paritätsplattenlaufwerk hinzu, welches fehlerkorrigierende Informationen für jeden Streifen in dem System enthält. Falls ein Fehler in dem System auftritt, muss die RAID-Anordnung alle Platten in der Anordnung verwenden, um den Fehler in dem System zu korrigieren. RAID-Level 4 arbeitet adäquat wenn kleine Datenstücke gelesen werden. Eine RAID-Level-4-Anordnung ver wendet jedoch immer das dezidierte Paritätslaufwerk wenn es Daten in die Anordnung schreibt.
  • RAID-Level-5-Anordnungssysteme zeichnen ebenfalls Paritätsinformation auf. Jedoch behalten sie nicht alle Paritätssektoren auf einer einzelnen Platte. RAID-Level 5 rotiert die Position der Datenblöcke über die bereitstehenden Platten in der Plattenanordnung aus N + 1 Platten. Somit verbessern RAID-Level-5-Systeme gegenüber RAID 4 eine Performanz durch Verteilen von Paritätsdaten über die N + 1 Plattenlaufwerke, je ein Block zu einem Zeitpunkt. Für die erste Menge von Blöcken kann der Paritätsblock auf der ersten Platte gespeichert werden. Für die zweite Menge von Blöcken würde er auf dem zweiten Plattenlaufwerk gespeichert werden. Dies wird so wiederholt, dass jede Menge einen Paritätsblock hat, aber nicht die gesamte Paritätsinformation auf einem einzelnen Plattenlaufwerk gespeichert ist. Weil keine einzelne Platte die gesamte Paritätsinformation für eine Gruppe von Blöcken vorhält, ist es bei RAID-Level-5-Systemen oft möglich, in einem Augenblick auf verschiede unterschiedliche Laufwerke in der Anordnung zu schreiben. Somit werden sowohl Lesezugriffe als auch Schreibzugriffe auf RAID-Level-5-Systemen schneller durchgeführt als auf einer RAID-4-Anordnung.
  • 2 ist ein Blockdiagramm, welches ein System des Standes der Technik illustriert, welches RAID-Level 5 implementiert. Das System umfasst N + 1 Platten 212218, die an ein Computersystem oder einen Host-Computer 120 durch einen Kommunikationskanal 130 angeschlossen sind. Im Streifen 240 ist ein Paritätsblock 0 auf der ersten Platte 212 gespeichert. Datenblock 0 ist auf der zweiten Platte 214 gespeichert, Datenblock 1 ist auf der dritten Platte 216 gespeichert, usw. Schließlich ist Datenblock N – 1 auf Platte 218 gespeichert. Im Streifen 212 ist Datenblock N auf der ersten Platte 212 gespeichert. Der zweite Paritätsblock 1 ist auf der zweiten Platte 214 gespeichert. Datenblock N + 1 ist auf Platte 216 gespeichert, usw. Schließlich ist Datenblock 2 N – 1 auf der Platte 218 gespeichert. Im M – 1-Streifen 244 ist Datenblock MN-N auf der ersten Platte 212 gespeichert. Datenblock MN-N + 1 ist auf der zweiten Platte 214 gespeichert. Datenblock MN-N + 2 ist auf der dritten Platte 216 gespeichert, usw. Schließlich ist Paritätsblock M – 1 auf der n-ten Platte 218 gespeichert. Somit illustriert 2, dass RAID-Level-5-Systeme die gleiche Paritätsinformation wie RAID-Level-4-Systeme speichern, RAID-Level-5-Systeme jedoch die Positionen der Paritätsblöcke über die bereitstehenden Platten 212218 rotieren.
  • Im RAID-Level 5 wird die Parität über die Anordnung der Platten verteilt. Dies führt zu vielfachen Suchzugriffen auf die Platten. Es verhindert auch eine einfache Vergrößerung der Größe der RAID-Anordnung, weil aufgrund von Paritätsanforderungen eine festgelegte Anzahl von Platten dem System hinzugefügt werden muss.
  • Die Systeme des Standes der Technik zum Implementieren von RAID-Level 4 und 5 haben vielfache Nachteile. Der erste Nachteil ist, dass nach einem Systemausfall die Paritätsinformation für jeden Streifen mit den Datenblöcken inkonsistent ist, die auf den anderen Platten in dem Streifen gespeichert sind. Dies erfordert, die Parität für die gesamte RAID-Anordnung erneut zu berechnen. Die Parität wird vollständig neu berechnet, weil es kein Verfahren gibt, zu wissen, welche Paritätsblöcke inkorrekt sind. Somit müssen alle Paritätsblöcke in der RAID-Anordnung neu berechnet werden. Eine Neuberechnung einer Parität für die gesamte RAID-Anordnung ist sehr zeitaufwendig, da die gesamten in der RAID-Anordnung gespeicherten Daten gelesen werden müssen. Zum Beispiel erfordert ein Lesen einer vollständigen 2-GB-Platte bei maximaler Geschwindigkeit 15 bis 20 Minuten. Da wenige Computersysteme in der Lage sind, sehr viele Platten parallel mit maximaler Geschwindigkeit zu lesen braucht eine Neuberechnung einer Parität für eine RAID-Anordnung jedoch sogar länger.
  • Eine Technik zum Verringern der zum Neuberechnen einer Parität für eine RAID-Anordnung benötigten Zeit, ist, einen sofortigen Zugriff auf die RAID-Anordnung zu ermöglichen und eine Parität für das System neu zu berechnen, während es on-line ist. Diese Technik bringt jedoch zwei Probleme mit sich. Das erste Problem ist, dass während eines Neuberechnens einer Parität, Blöcke mit inkonsistenter Parität nicht gegen weitere Beschädigungen geschützt sind. Während dieser Zeit resultiert ein Plattenausfall in der RAID-Anordnung in einem permanenten Datenverlust in dem System. Das zweite Problem mit dieser Technik des Standes der Technik ist, dass RAID-Subsysteme während eines Neuberechnens einer Parität schlecht arbeiten. Dies tritt aufgrund der Zeitverzögerung auf, die durch eine Vielzahl von Eingangs-/Ausgangsoperationen (I/O) erzeugt wird, die durchgeführt werden, um eine Parität neu zu berechnen.
  • Der zweite Nachteil der Systeme des Standes der Technik betrifft Schreibzugriffe auf die RAID-Anordnung während einer Phase, wenn eine Platte nicht funktioniert. Weil ein RAID-Subsystem Daten auf einer gestörten Platte unter Verwendung von Paritätsinformation neu berechnen kann, erlaubt das RAID-Subsystem, dass Daten weiterhin gelesen werden, obwohl die Platte gestört ist. Desweiteren erlauben viele RAID-Systeme weiterhin Schreibzugriffe, obwohl eine Platte gestört ist. Dies ist nachteilhaft, weil ein Schreiben auf eine kaputte RAID-Anordnung Daten im Falle eines Systemausfalls beschädigen kann. Zum Beispiel tritt ein Systemausfall auf, wenn ein Betriebssystem, das eine RAID-Anordnung verwendet, abstürzt oder wenn eine Energieversorgung für das System ausfällt oder anderweitig unterbrochen wird. RAID-Subsysteme des Standes der Technik bieten keinen Schutz für diese Abfolge von Ereignissen.
  • Gray, J. et al., "Parity Striping of Disc Arrays: Low-Cost Reliable Storage with Acceptable Throughput", Proceedings of the International Conference on Very Large Databases, 13. August 1990, Seiten 148–161 diskutieren und vergleichen Spiegeln und "Striping" und RAID 5 und schlagen vor, dass das System nach einem doppelten Ausfall von einem Archiv restauriert werden muss, während nach einem einzelnen Ausfall eine Belastung auf den verbleibenden Platten anwächst.
  • Menon, J. et al., "The Architecture of a Fault-Tolerant Cached RAID Controller", Proceedings of the International Symposium on Computer Architecture, Los Alamitos, IEEE, Comp. Soc. Press, Vol. 20, 16. Mai 1993, Seiten 76–86 beschreiben eine schnelle Schreibprozedur, die auf RAID-5-Anordnungen anwendbar ist.
  • EP 0 492 808 beschreibt ein RAID-System, bei welchem Schreibanfragen in einer nicht-volatilen Speichereinrichtung temporär gespeichert werden, welche als Datenpuffer wirkt.
  • EP 0 462 917 A beschreibt ein Verfahren zum Betreiben eines RAID in einem degenerierten Modus nach einem Ausfall einer Speichereinheit. Eine Statuskarte gibt den Status des Datenblocks und die Position seines korrespondierenden Paritätsblocks an und gibt an, ob Daten rekonstruiert wurden oder nicht.
  • Die vorliegende Erfindung wird in den anhängenden Ansprüchen definiert und stellt eine Fehlerkorrektur für eine Anordnung von Platten bereit.
  • Ein nicht-volatiler RAM wird verwendet, um die Geschwindigkeit einer RAID-Wiederherstellung von einem Plattenfehler/Plattenfehlern zu erhöhen. Dies wird erreicht, durch Vorhalten einer Liste von allen Plattenblöcken, für welche die Parität möglicherweise inkonsistent ist. Eine solche Liste von Plattenblöcken ist kleiner als die Gesamtzahl von Paritätsblöcken in dem RAID-Subsystem. Die Gesamtzahl von Paritätsblöcken in dem RAID-Subsystem ist typischerweise im Bereich von Hunderttausenden von Paritätsblöcken. Ein Wissen über die Anzahl von Paritätsblöcken, die möglicherweise inkonsistent sind, macht es möglich, mit einem signifikant geringeren Zeitbedarf als es im Stand der Technik möglich ist nur diejenigen wenigen Blöcke zu reparieren, die in der Liste angegeben sind. Die vorliegende Erfindung stellt auch eine Technik zum Schützen vor einem simulta nen Systemausfall und einer kaputten Platte und zum sicheren Schreiben in ein RAID-Subsystem mit einer kaputten Platte bereit.
  • Die vorliegende Erfindung wird nachfolgend mit Bezug auf die folgende Beschreibung von exemplarischen Ausführungsformen und den beiliegenden Zeichnungen weiter beschrieben, in welchen:
  • 1 ist ein Blockdiagramm eines RAID-Level-4-Subsystems des Standes der Technik;
  • 2 ist ein Blockdiagramm eines RAID-Level-5-Subsystems des Standes der Technik;
  • 3A bis 3C sind Diagramme des Standes der Technik, die ein Neuberechnen von Daten illustrieren, die in einem "Streifen" gespeichert sind;
  • 4A bis 4B sind Zeitdiagramme des Standes der Technik zur Paritätsbeschädigung bei einem Systemausfall;
  • 5 ist ein Zeitdiagramm der vorliegenden Erfindung zum Verhindern einer Datenbeschädigung bei einem Auftreten einer Schreibanweisung während eines Systemausfalls;
  • 6 ist ein Zeitdiagramm des Standes der Technik, das eine Datenbeschädigung bei einem Schreibzugriff mit einer kaputten Platte illustriert;
  • 7A bis 7B sind Zeitdiagramme der vorliegenden Erfindung zum Verhindern einer Datenverfälschung bei einem Schreibvorgang mit einer kaputten Platte;
  • 8 ist ein Diagramm, das die vorliegende Erfindung illustriert;
  • 9 ist ein Zeitdiagramm des Standes der Technik, das eine Datenbeschädigung für simultane System- und Plattenausfälle illustriert;
  • 10A bis 10C sind Zeitdiagramme der vorliegenden Erfindung, die eine Datenbeschädigung bei simultanen System- und Plattenausfällen verhindert; und
  • 11A bis 11C sind Flussdiagramme der vorliegenden Erfindung, die den Prozess einer Wiederherstellung illustrieren;
  • 12A bis 12C sind Zeitdiagramme zur Parität-durch-Neuberechnung.
  • Ein Verfahren und eine Vorrichtung zum Bereitstellen einer Fehlerkorrektur für eine Anordnung von Platten unter Verwendung eines nicht volatilen Random-Access-Speichers (NV-RAM) wird beschrieben. In der folgenden Beschreibung werden vielfältige spezifische Details, wie zum Beispiel Zahlen und Wesen von Platten, Plattenblockgröße, etc., im Detail beschrieben, um eine gründlichere Beschreibung der vorliegenden Erfindung bereitzustellen. Es wird für den Fachmann jedoch offensichtlich sein, dass die vor liegende Erfindung ohne diese spezifischen Details ausgeführt werden kann. Bei anderen Gelegenheiten wurden bekannte Merkmale nicht im Detail beschrieben, um die vorliegende Erfindung nicht unnötig zu verschleiern.
  • Insbesondere betreffen viele Beispiele den Fall, dass nur ein Block in einem Streifen aktualisiert wird, aber die beschriebenen Techniken betreffen gleichsam auch Mehrfach-Blockaktualisierungen.
  • Die vorliegende Erfindung stellt eine Technik bereit zum: Reduzieren der Zeit, die zur Neuberechnung einer Parität nach einem Systemausfall benötigt wird; und zum Verhindern einer Beschädigung von Daten in einer RAID-Anordnung, wenn Daten in eine gestörte Platte geschrieben werden und das System abstürzt. Die vorliegende Erfindung verwendet einen nicht-volatilen RAM, um diese Probleme zu reduzieren. Eine Beschreibung des Standes der Technik und der damit in Zusammenhang stehenden Nachteile folgt. Die Nachteile des Standes der Technik werden beschrieben zur: Paritätsbeschädigung bei einem Systemausfall; Datenbeschädigung bei einem Schreibzugriff mit kaputter Platte; und Datenbeschädigung mit simultanen System- und Plattenausfällen.
  • Neuberechnen von verlorenen Daten mit einem RAID
  • Eine Parität wird durch Bilden eines Exklusiven-Oders der in einem Streifen gespeicherten Datenblöcke berechnet. Der Paritätswert, der aus den N Datenblöcken berechnet wird, wird in dem Paritätsblock des Streifens aufgezeichnet. Wenn Daten von einem beliebigen einzelnen Block verloren sind (das heißt aufgrund eines Plattenausfalls), werden die verlorenen Daten für die Platte durch Bilden eines Exklusiven-Oders der verbleibenden Blöcke in dem Streifen neu berechnet. Grundsätzlich muss, wann immer ein Datenblock in einem Streifen modifiziert wird, eine Parität für den Streifen neu berechnet werden. Wenn ein Streifen durch Schreiben aller N Datenblöcke aktualisiert wird, kann eine Parität ohne Lesen von Daten von einer Platte berechnet werden und eine Parität und Daten können in nur einem I/O-Takt gemeinsam geschrieben werden. Somit erfordert ein Schreiben von allen N Datenblöcken in einem Streifen einen minimalen Zeitbedarf. Wenn ein einzelner Datenblock auf eine Platte geschrieben wird, wird Parität-durch-Subtraktion verwendet (nachfolgend beschrieben). Ein I/O-Takt wird benötigt, um die alten Daten und die Parität zu lesen, und ein zweiter I/O-Takt wird benötigt, um die neuen Daten und die Parität zu schreiben. Weil die Spindeln der Platten in der RAID-Anordnung nicht synchronisiert sind, treten die Schreibzugriffe grundsätzlich nicht zu exakt der gleichen Zeit auf. In einigen Fällen wird der Paritätsblock die Platte zuerst erreichen, und in anderen Fällen wird einer der Datenblöcke die Platte zuerst erreichen. Die hier beschriebenen Techniken hängen nicht von der Reihenfolge ab, in der Blöcke die Platte erreichen.
  • Eine andere Alternative für Platten mit nicht-synchronisierten Spindeln ist, eine Parität erst zu berechnen und den Paritätsblock auf die Platte zu schreiben, bevor ein Datenblock/Datenblöcke auf die Platte geschrieben werden. Jeder Datenblock auf einer Platte in der RAID-Anordnung spei chert 4 KB Daten. In der folgenden Diskussion werden die Daten in jedem 4-KB-Block als einzelne große Ganzzahl (64 K-Bit lang) betrachtet. Somit stellen die Zeichnungen ganzzahlige Werte für Informationen dar, die in den Paritäts- und Datenplattenblöcken gespeichert sind. Diese Konvention wird nur zur Illustration verwendet, um die Zeichnungen zu vereinfachen.
  • 3A ist ein Diagramm, welches ein RAID-Level-4-Subsystem des Standes der Technik mit N = 3 illustriert, welches vier Platten 330336 umfasst. In dem Diagramm ist Platte 330 die Paritätsplatte. Platten 332336 sind Datenplatten. Das Diagramm illustriert einen Streifen 320, der auf den Platten 330336 in der RAID-Anordnung enthalten ist. Plattenblock 330A ist ein Paritätsblock, welcher den ganzzahligen Wert 12 enthält. Plattenblöcke 332A336A sind jeweils Datenblöcke des Streifens 320. Datenblöcke 332A336A enthalten jeweils Datenwerte von 4, 7 und 1. Daten für jeden Block 332A336A in einem einzelnen Streifen 320 werden als eine ganze Zahl repräsentiert. Die Parität für Streifen 320 wird repräsentiert als die Summe der Datenwerte, die in den Datenblöcken 332A336A gespeichert sind. Paritätsblock 330A enthält den Wert 12 (d.h. 4 + 7 + 1). 3A ist eine Zeichnung, die lediglich ein Beispiel einer Fehlerkorrekturtechnik unter Verwendung einer Parität zeigt. Der Paritätswert ist das Exklusive-Oder der Datenblöcke 332A336A, aber die mathematischen Eigenschaften einer Addition sind die gleichen wie diejenigen der Exklusiven-Oder-Funktion. Deshalb wird in 3A eine Addition verwendet.
  • 3B ist ein Zeitdiagramm einer Aktivität auf dem Streifen 320, der in 3A illustriert ist. Die Tabelle hat Überschriften Parität, Daten 0, Daten 1 und Daten 2. Die Werte 12, 4, 7 und 1 sind unterhalb der entsprechenden Tabellenüberschriften illustriert.
  • 3B ist eine Tabelle, die einen Streifen mit einem verlorenen Datenblock zum Zeitpunkt TB illustriert. Wie in 3B illustriert, umfasst Streifen 320 verlorene Daten im Datenblock 1 der Datenplatte 334 der 3A. Dies wird in der Tabelle durch ein Fragezeichen illustriert, welches sich in einem Kästchen unter der Überschrift Daten 1 befindet. Zum Zeitpunkt TA haben die Parität, Daten 0 und Daten 2 jeweils Werte von 12, 4 und 1. Die Daten auf Platte 334 für Datenblock 1 können wie folgt in Echtzeit neu berechnet werden: Daten 1 = Parität – Daten 0 – Daten 2 = 12 – 4 – 1 = 7, (1)wobei Datenblock 1 unter Verwendung des Paritätsblocks, Datenblocks 0 und Datenblocks 2 berechnet wird. Somit kann der Datenwert 7, der im Datenblock 1 der in 3A gezeigten Platte 334 gespeichert ist, zum Zeitpunkt TC neu berechnet werden. In 3B wird der zum Zeitpunkt TC für Datenblock 1 neu berechnete Wert 7 in Klammern eingeschlossen angegeben. In nachfolgenden Figuren werden neu berechnete Werte durch Verwendung von Klammern repräsentiert. Das heißt, die Klammern geben Daten einer kaputten Platte als durch die Parität und Daten auf den anderen Platten berechnet an.
  • Wie in 3B gezeigt, können Daten auf einer kaputten Platte unter Verwendung der Paritätsplatte und der verbleibenden Platten in der Platten anordnung neu berechnet werden. Die kaputte Platte 334 der 3A kann eventuell ersetzt werden und der alte Inhalt der Platte kann neu berechnet und auf eine neue Platte geschrieben werden. 3C ist ein Blockdiagramm des RAID-Subsystems, welches eine neue Daten 1-Platte 338 enthält. Wie in 3C gezeigt, hat Streifen 320 Werte 12, 4, 7 und 1 für Parität, Daten 0, neue Daten 1 und Daten 2. Diese Werte werden im Paritätsblock 330A und Datenblöcken 332A, 338A und 336A gespeichert. Somit ersetzt eine neue Platte 338 eine kaputte Platte 334 des RAID-Systems und die vorher im Datenblock 334A der Platte 334 gespeicherten Datenwerte können wie oben gezeigt berechnet werden und im Datenblock 338A einer Austauschplatte 338 gespeichert werden.
  • Wenn neue Daten in einen Datenblock geschrieben werden, wird auch der Paritätsblock aktualisiert. Eine Parität wird wie oben beschrieben einfach berechnet, wenn alle Datenblöcke in einem Streifen gleichzeitig aktualisiert werden. Wenn dies auftritt, wird der neue Wert für eine Parität aus der Information, die auf die Platten geschrieben ist, neu berechnet. Die neuen Paritäts- und Datenblöcke werden dann auf die Platte geschrieben. Wenn nur einige der Datenblöcke in einem Streifen modifiziert werden, ist eine Aktualisierung des Paritätsblocks schwieriger, da mehr I/O-Operationen benötigt werden. Es gibt zwei Methoden zum Aktualisieren einer Parität in diesem Fall: Paritätsaktualisierung durch Subtraktion und Paritätsaktualisierung durch Neuberechnung.
  • Wenn zum Beispiel ein einzelner Datenblock geschrieben wird, kann das RAID-System eine Parität durch Subtraktion aktualisieren. Das RAID- System liest den Paritätsblock und den zu überschreibenden Block. Es subtrahiert zunächst den alten Datenwert von dem Paritätswert, addiert den neuen Datenwert des Datenblocks zu dem Zwischenparitätswert und schreibt dann sowohl die neue Parität als auch die Datenblöcke auf die Platte.
  • Zum Neuberechnen einer Parität liest das RAID-System zunächst die anderen N – 1 Datenblöcke in dem Streifen. Nach einem Lesen der N – 1 Datenblöcke berechnet das RAID-System eine Parität unter Verwendung des modifizierten Datenblocks und der N – 1 Datenblöcke der Platte wieder ganz von vorn. Sobald eine Parität neu berechnet ist, werden die neue Parität und die Datenblöcke auf die Platte geschrieben.
  • Sowohl die Subtraktions- als auch die Neuberechnungstechnik zum Aktualisieren einer Parität können für Situationen generalisiert werden, in welchen mehr als ein Datenblock auf den gleichen Streifen geschrieben werden. Zur Subtraktion werden zunächst die Paritätsblöcke und die gegenwärtigen Inhalte aller Datenblöcke, die überschrieben werden sollen, von der Platte gelesen. Zur Neuberechnung werden zunächst die gegenwärtigen Inhalte aller Datenblöcke, die nicht überschrieben werden sollen, von der Platte gelesen. Der Fall, in dem alle N Datenblöcke in dem Streifen simultan geschrieben werden, ist ein Spezialfall einer Parität durch Neuberechnung. Alle Datenblöcke, die nicht geschrieben werden, werden zunächst von der Platte gelesen, aber in diesem Falle gibt es keine solchen Blöcke.
  • Wie Streifen während eines Systemausfalls inkonsistent werden
  • Ein inkonsistenter Streifen umfasst einen Paritätsblock, der nicht das Exklusive-Oder aller anderen Blöcke in dem Streifen enthält. Ein Streifen wird inkonsistent, wenn ein Systemausfall auftritt, während einige der Schreibzugriffe für eine Aktualisierung abgeschlossen sind, andere jedoch nicht. Zum Beispiel, wenn ein erster Datenblock beschrieben wird. Wie vorher beschrieben wurde, wird der Paritätsblock für den Streifen neu berechnet und wie auch der Datenblock überschrieben. Wenn das System ausfällt nachdem einer der Datenblöcke auf eine Platte geschrieben wurde, nicht aber der andere, wird der Streifen inkonsistent.
  • Ein Streifen kann nur inkonsistent werden, wenn er aktualisiert wird. Somit ist die Anzahl von potentiellen inkonsistenten Streifen in jedem Fall auf die Anzahl von Streifen beschränkt, die aktualisiert werden. Aus diesem Grund führt die vorliegende Erfindung eine Liste im NV-RAM, die alle die Streifen umfasst, die gegenwärtig aktualisiert werden. Da nur diese Streifen potentiell beschädigt sein können, wird eine Parität nach einem Systemausfall nur für die Streifen neu berechnet, die in der Liste im NV-RAM gespeichert sind. Dies reduziert sehr den Gesamtumfang der Zeit, die zur Neuberechnung einer Parität nach einem Systemausfall benötigt wird, im Vergleich mit vorher beschriebenen Verfahren des Standes der Technik, welche viel länger brauchen.
  • Paritätsbeschädigung bei einem Systemausfall im Stand der Technik
  • In den folgenden Diagrammen ist der eingeklammerte Wert für eine gestörte Datenplatte kein tatsächlicher Wert, der auf der Platte gespeichert ist. Stattdessen ist er ein neu berechneter Wert, der im Speicher für die kaputte Platte in der RAID-Anordnung gehalten wird.
  • 4A ist ein Diagramm des Standes der Technik, welches einen Systemabsturz illustriert, während sich verändernde Werte auf die Platten 330336 der 3A geschrieben werden. Das Diagramm gilt für den Fall, in welchem die Datenblöcke die Platte vor dem Paritätsblock erreichen. Wie in 4A angegeben ist, schreitet die Zeit in absteigender Richtung fort. Zum Zeitpunkt TA hat der Paritätsblock einen Wert 12 und die Datenblöcke 0 bis 2 haben jeweils Werte von 4, 7 und 1. Zum Zeitpunkt TB wird ein neuer Wert von 2 in Datenblock 0 geschrieben (angegeben durch ein Kästchen um den Wert 2), wodurch der Wert 4 ersetzt wird, der im Datenblock 0 zum Zeitpunkt TA gespeichert ist. Die anderen in den Datenblöcken 1 und 2 gespeicherten Werte verändern sich nicht. Bei normalem Betrieb schreibt der Stand der Technik einen neuen Paritätswert 10 (angegeben durch ein Kästchen) zum Zeitpunkt TC auf die Paritätsplatte, wie es unterhalb der Paritätsüberschrift angegeben ist. Dies aktualisiert den Paritätsblock für den Schreibzugriff auf Datenblock 0 zum Zeitpunkt TB. Der neue Wert von 10 für eine Parität zum Zeitpunkt TC wird aus den Werten 2, 7 und 1 der jeweiligen Datenblöcke 0 bis 2 berechnet. Somit illustriert das Zeitdiagramm in 4A ein RAID-Subsystem des Standes der Technik in dem Fall, in welchem der Datenblock die Platte vor dem Paritätsblock erreicht.
  • Wenn ein Systemausfall zwischen den Zeitpunkten TB und TC in 4A auftritt, wird die Parität für den Streifen beschädigt. Das Zeitdiagramm zeigt, dass ein neuer Datenwert von 2 zum Zeitpunkt TB auf die Datenplatte 0 geschrieben wird, bevor eine neu berechnete Parität für den Streifen aktualisiert wird. Wenn das RAID-Subsystem nachfolgend wieder startet, hat somit die Paritätsplatte den alten Wert von 12 (durch eine Unterstreichung angegeben) anstelle des korrekten Werts von 10. Dies tritt auf, da der Streifen nicht aktualisiert wurde, bevor der Systemfehler auftrat. Die Parität für den Streifen ist nun beschädigt, da: Parität = Daten 0 + Daten 1 + Daten 2 = 2 + 7 + 1 = 10 ≠ 12 (2)
  • Ähnlich ist 4B ein weiteres Diagramm des Standes der Technik, welches ein Systemabsturz illustriert, während sich verändernde Werte auf die Platten 330336 der 3A geschrieben werden. Das Diagramm gilt für den Fall, in welchem der Paritätsblock eine Platte vor dem Datenblock erreicht. Zum Zeitpunkt TA hat der Paritätsblock einen Wert von 12 und die Datenblöcke 0 bis 2 haben jeweils Werte von 4, 7 und 1. Zum Zeitpunkt TB wird ein neuer Wert von 10 in den Paritätsblock geschrieben (angegeben durch ein Kästchen um den Wert 2), wodurch der Wert 12, der in dem Paritätsblock zum Zeitpunkt TA gespeichert ist, ersetzt wird. Die in den Datenblöcken 0 bis 2 gespeicherten Werte verändern sich nicht. Der neue Wert von 10 für eine Parität zum Zeitpunkt TB wird aus den Werten 7 und 1 der jeweiligen Datenblöcke 1 und 2 und dem neuen Wert 2 für Datenblock 0 berechnet. Bei normalem Betrieb schreibt der Stand der Technik den neuen Datenwert 2 (angegeben durch ein Kästchen) zum Zeitpunkt TC auf die Datenplatte 0, wie es unterhalb der Überschrift Daten 0 angegeben ist. Dies aktualisiert den Datenblock 0 gemäß dem Schreibzugriff auf den Paritätsblock zum Zeitpunkt TB. Somit illustriert das Zeitdiagramm in 4A ein RAID-Subsystem des Standes der Technik in dem Fall, in welchem der Paritätsblock die Platte vor dem Datenblock erreicht.
  • Wenn ein Systemausfall zwischen den Zeitpunkten TB und TC in 4B auftritt, wird die Parität für den Streifen beschädigt. Das Zeitdiagramm zeigt, dass der neue Paritätswert von 10 zum Zeitpunkt TB auf die Paritätsplatte geschrieben wird, bevor der Datenblock 0 des Streifens aktualisiert wird. Wenn das RAID-Subsystem nachfolgend wieder startet, hat somit die Datenplatte 0 den alten Wert von 4 (angegeben durch eine Unterstreichung) anstelle des korrekten Werts von 2. Dies tritt auf, weil der Streifen nicht aktualisiert wurde, bevor der Systemausfall auftrat. Die Parität des Streifens ist nun beschädigt, da: Parität = Daten 0 + Daten 1 + Daten 2 = 4 + 7 + 1 = 12 ≠ 10 (3)
  • Die 4A4B illustrieren zwei Fälle eines Schreibens von neuen Daten in einem Datenblock und eines Aktualisierens der Paritätsplatte, bei welcher die Spindeln der Platten in der RAID-Anordnung nicht synchronisiert sind. Der erste, in 4A gezeigte Fall illustriert einen neuen Datenwert, der die Datenplatte zuerst erreicht und dann ein nachfolgendes Aktualisieren des Paritätswerts auf der Paritätsplatte. Der zweite, in 4B illustrierte Fall zeigt eine Parität, die die Platte zuerst erreicht, gefolgt von der Datenaktualisierung. Bei den 4A und 4B tritt eine Beschädigung des Dateisystems auf, wenn das System zwischen den Zeitpunkten TB und TC ausfällt. Falls das System nach dem Zeitpunkt TB in den 4A und 4B ausfällt, sind die illustrierten Paritätswerte für das System nicht korrekt. In dem Falle des in 4A illustrierten Systems haben die neuen Datenwerte eine Summe von 10, welche gleich der Werte 2, 7 und 1 ist. Jedoch gibt der Paritätswert zum Zeitpunkt TB einen Wert von 12 an. Somit ist der Paritätswert, der auf der Paritätsplatte gespeichert ist, nicht gleich dem neuen Paritätswert für die Datenwerte, die auf den Datenplatten 0–2 gespeichert sind. Ähnlich haben die Datenplatten 0–1 jeweils Werte von 4, 7 und 1, falls ein Ausfall nach dem Zeitpunkt TB für das zweite System auftritt, welches in 4B illustriert ist. Der Paritätswert für diese Datenblöcke ist gleich 12. Jedoch wird die Parität in diesem System zuerst aktualisiert, bevor die neuen Datenwerte auf die Platte geschrieben werden, weshalb die Parität, die auf der Paritätsplatte gespeichert ist, zum Zeitpunkt TB gleich 10 ist. Somit ist nach dem Zeitpunkt TB die auf der Paritätsplatte gespeicherte Parität nicht gleich dem Paritätswert für die Datenblöcke, weil der neue Datenblock nicht vor dem Systemausfall aktualisiert wurde.
  • Im Stand der Technik wird nach einem Systemausfall eine Parität für alle Streifen beim Auftreten eines Systemneustarts neu berechnet. Dieses Verfahren zum Neuberechnen einer Parität nach einem Ausfall für alle Streifen erfordert intensive Berechnungen und ist deshalb sehr langsam. Die vorliegende Erfindung ist ein Verfahren zum Neuberechnen einer Parität nach einem Systemausfall. Das System führt eine Liste von Streifen mit gegenwärtig ablaufenden Schreibzugriffen im nicht-volatilen RAM. Beim Neu start nach einem Systemausfall wird nur die Liste der Streifen mit gegenwärtig in Bearbeitung befindlichen Schreibzugriffen, die im nicht-volatilen RAM gespeichert ist, neu berechnet.
  • Datenbeschädigung bei einem Schreibzugriff mit einer kaputten Platte im Stand der Technik
  • Beim Schreiben auf eine RAID-Anordnung, welche eine gestörte oder kaputte Platte hat, tritt eine Datenbeschädigung während eines Systemausfalls auf. 6 ist ein Diagramm des Standes der Technik, welches eine Datenbeschädigung für eine gestörte Platte illustriert, wenn ein Systemausfall auftritt, bei dem die Datenplatte für den neuen Datenwert aktualisiert wird, bevor eine Parität auf die Platte geschrieben wird. In 6 wird die Datenplatte 1 durch Angeben von eingeklammerten Werten unterhalb der Überschrift Daten 1 als gestört gezeigt. Zum Zeitpunkt TA hat die Paritätsplatte einen Wert von 12. Vor einem Zeitpunkt TA, wenn eine Datenplatte 1 gestört ist, ist der Paritätsplattenwert gleich der Summe der Datenplatten 0–2 mit jeweils den Werten von 4, 7 und 1. Der Wert von 7 für Datenblock 1 zum Zeitpunkt TA ist in Klammern eingeschlossen. Dieser Wert repräsentiert keinen Wert, der auf der Datenplatte 1 gespeichert ist, sondern wird stattdessen aus dem Paritätsblock und den Datenblöcken 0 und 2 des Streifens wie folgt berechnet: Daten 0 = Parität – Daten 1 – Daten 2 = 12 – 4 – 1 = 7. (4)
  • Zum Zeitpunkt TB wird ein neuer Wert von 2 auf die Datenplatte 0 geschrieben (angegeben durch Einschließen der 2 innerhalb eines Kästchens). Zum Zeitpunkt TB wurde die Parität für den neuen Wert 2, der auf die Datenplatte 0 geschrieben wurde, nicht aktualisiert und hat einen Wert von 12. Der berechnete Wert für Datenblock 1 ist somit 9 anstelle von 7. Dies wird in 6 durch Einschließen des Werts 9 in Klammern für Datenplatte 1 zum Zeitpunkt TB angegeben.
  • Bei einem normalen Betrieb wird der Paritätsblock aufgrund dessen, dass der Wert von 2 zum Zeitpunkt TB in den Datenblock 0 geschrieben wurde, zum Zeitpunkt TC auf 10 aktualisiert. Der neue Wert von 10 für eine Parität zum Zeitpunkt TC ist innerhalb eines Rechtecks angegeben. Für einen Paritätswert von 10 ist der korrekte Wert von 7 für Datenblock 1 eingeklammert angegeben. Wie in 6 angegeben, werden die Daten, die im Datenblock 1 gespeichert sind, basierend auf den anderen Blöcken in der Plattenanordnung neu berechnet, weil Datenplatte 1 kaputt ist. Nach dem ersten Schreibzugriff zum Zeitpunkt TB für Datenblock 0 ist der berechnete Wert des Datenblocks 1 inkorrekt. Der Wert von 9 für Datenblock 1 ist unkorrekt bis der zweite Schreibzugriff für eine Parität zum Zeitpunkt TC beendet ist.
  • Wenn ein Systemausfall zwischen Zeitpunkten TC und TC auftritt, beschädigt ein Schreibzugriff auf eine RAID-Anordnung, die eine gestörte oder kaputte Platte hat, Daten in dem Streifen. Wie in 6 für den Stand der Technik gezeigt ist, wird die Parität nicht aktualisiert und hat deshalb einen Wert von 12 (angegeben durch eine Unterstreichung). Der berechnete Wert für Datenblock 1 des Streifens ist somit unkorrekt und der Streifen wird wie folgt beschädigt: Daten 1 = Parität – Daten 0 – Daten 2 = 12 – 2 – 1 = 9 ≠ 7 (5)
  • In ähnlicher Weise tritt eine Beschädigung von Daten für den Fall auf, wenn eine Parität die Platte vor den Daten erreicht.
  • Datenbeschädigung mit simultanen System- und Plattenausfällen
  • Wenn ein Systemausfall aufgrund einer Energieunterbrechung auftritt, erfahren RAID-Systeme höchstwahrscheinlich einen Plattenausfall. Üblicherweise beschädigt eine große transiente Spannungsspitze, welche nach einer Energieunterbrechung auftritt, eine Platte. Es ist somit möglich, dass ein Streifen durch simultane System- und Plattenausfälle beschädigt wird.
  • 9 ist ein Diagramm des Standes der Technik, welches simultane System- und Plattenausfälle illustriert, wobei die Datenplatte mit einem neuen Datenwert aktualisiert wird, bevor die Parität auf eine Platte geschrieben wird. Zum Zeitpunkt TA hat die Platte einen Wert von 12 und die Datenplatten 0–2 haben jeweils Werte von 4, 7 und 1. Zum Zeitpunkt TB wird ein neuer Wert von 2 auf die Datenplatte 0 geschrieben (angegeben durch ein Kästchen). Zum Zeitpunkt TB wird eine Parität für den auf die Datenplatte 0 geschriebenen neuen Wert von 2 nicht aktualisiert und hat einen Wert von 12. Wenn ein Systemausfall zwischen den Zeitpunkten TB und TC auftritt, wird der Wert der Platte 1 beschädigt. Dies tritt aufgrund von simultanen System- und Plattenfehlern zwischen den Zeitpunkten TB und TC auf.
  • Zum Zeitpunkt TC ist eine Parität aufgrund des Systemausfalls nicht aktualisiert und hat deshalb einen Wert von 12 anstelle von 10. Weiterhin ist die Datenplatte 1 aufgrund des Plattenausfalls beschädigt. Der berechnete Wert von 9 für den Datenblock 1 ist unkorrekt. Er wird für die Datenplatte 1 unter Verwendung des beschädigten Paritätswerts wie folgt unkorrekt berechnet: Daten 1 = Parität – Daten 0 – Daten 2 = 12 – 2 – 1 = 9 ≠ 7 (7)
  • Daten werden ähnlich beschädigt für den Fall, in welchem eine Parität die Platte vor den Daten erreicht.
  • Überblick über die vorliegende Erfindung
  • 8 ist ein Diagramm, welches die vorliegende Erfindung zum Bereitstellen einer Fehlerkorrektur unter Verwendung eines NV-RAM für ein RAID-System illustriert, welches einen Host-Computer 810, einen RAID-Controller 814, der einen NV-RAM 816 umfasst, und N + 1 Platten 820826 umfasst. Der Host-Computer 810 ist durch einen ersten Kommunikationskanal 812 an den RAID-Controller 814 angeschlossen. Der RAID-Controller 814 umfasst einen NV-RAM 816 zum Speichern von Streifen der RAID-Anordnung 828, die möglicherweise in einem inkonsistenten Zustand sind.
  • Der RAID-Controller 814 ist an die N + 1 Platten 820826 der RAID-Anordnung 828 durch einen zweiten Kommunikationskanal 818 angeschlossen. Die RAID-Anordnung 828 umfasst eine Paritätsplatte 820 und jeweils N Datenplatten 822826.
  • Der NV-RAM 816 wird verwendet, um die Geschwindigkeit einer RAID-Wiederherstellung nach einem Systemausfall durch Führen einer Liste aller auf der Paritätsplatte 820 geführten Paritätsblöcke zu erhöhen, welche möglicherweise inkonsistent sind. Typischerweise ist diese Liste von Blöcken klein. Sie kann einige Größenordnungen kleiner sein als die Gesamtzahl an Paritätsblöcken in der RAID-Anordnung 828. Zum Beispiel kann eine RAID-Anordnung 828 hunderttausende von Paritätsblöcken umfassen, während die möglicherweise inkonsistenten Blöcke nur einige hundert oder weniger zählen können. Ein Wissen über die wenigen Paritätsblöcke, die möglicherweise inkonsistent sind, vereinfacht eine rasche Neuberechnung der Parität, da nur solche Paritätsblöcke wiederhergestellt werden müssen.
  • Die vorliegende Erfindung verwendet den NV-RAM 816 auch, um Daten sicher in eine RAID-Anordnung 828 mit einer kaputten Platte zu schreiben, ohne Daten aufgrund eines Systemausfalls zu beschädigen. Daten, die beschädigt werden können, werden in den NV-RAM 816 kopiert, bevor eine potentiell schädigende Operation durchgeführt wird. Nach einem Systemausfall werden die Daten, die in dem NV-RAM 816 gespeichert sind, verwendet, um die RAID-Anordnung 828 in einen konsistenten Zustand wiederherzustellen.
  • Die 11A–C sind Flussdiagramme, die die Schritte illustrieren, welche durch die vorliegende Erfindung durchgeführt werden. Bezugnehmend zunächst auf 11A wird eine Boot-Operation ausgeführt. Beim Entscheidungsblock 1101 wird eine Prüfung durchgeführt, um zu ermitteln, ob das System gerade ausgefallen ist. Falls der Entscheidungsblock wahr zurückgibt, fährt das System mit Schritt 1102 (11B) fort und führt einen Wiederherstellungsprozess aus. Falls der Entscheidungsblock falsch zurückgibt, fährt das System mit Schritt 1103 (11C) im normalen Betrieb fort.
  • Bezugnehmend nun auf 11B, ist ein Flussdiagramm eines Wiederherstellens nach einem Systemausfall illustriert. Beim Entscheidungsblock 1104 wird eine Prüfung durchgeführt, um zu ermitteln, ob es verbleibende Streifen gibt, die in der Liste der schmutzigen Streifen im NV-RAM spezifiziert sind. Falls der Entscheidungsblock 1104 falsch zurückgibt, fährt das System mit einem Rückgabeschritt fort. Falls der Entscheidungsblock 1104 wahr zurückgibt, fährt das System mit Schritt 1105 fort.
  • Beim Schritt 1105 wird die Streifennummer eingeholt. Beim Schritt 1106 werden die Datenblöcke der Identifizierten Streifen gelesen, die zum Neuberechnen der Parität benötigt werden. Die Parität wird für den Streifen neu berechnet beim Schritt 1107. Beim Schritt 1108 wird für den Streifen der neue Paritätsblock geschrieben. Das System kehrt dann zum Entscheidungsblock 1104 zurück.
  • Ein normaler Betrieb ist in 11C illustriert. Beim Schritt 1109 werden alle Blöcke gelesen, welche zur Aktualisierung eines Streifens benötigt werden. Beim Schritt 1110 wird eine neue Parität für den Streifen bei Verwendung der neuen Daten verwendet. Die Streifennummer des Streifens wird in die Liste der schmutzigen Streifen im NV-RAM bei Schritt 1111 geschrieben. Bei Schritt 1112 werden die Plattenblöcke geschrieben, welche zum Aktualisieren des Streifens benötigt werden. Beim Schritt 1113 wird die Nummer des Streifens von der Liste der schmutzigen Streifen im NV-RAM entfernt.
  • Paritätsbeschädigung für einen Systemausfall unter Verwendung eines NV-RAM
  • 5 ist ein Diagramm, welches die vorliegende Erfindung zum Verhindern einer Beschädigung einer Parität unter Verwendung eines NV-RAM illustriert. Das Zeitdiagramm wird mit Bezug auf die 11A–C beschrieben. 5 ist ein Zeitdiagramm für die vorliegende Erfindung, welches einen Systemabsturz illustriert, während sich verändernde Werte auf Platten 330336 der 3A geschrieben werden. Das Diagramm gilt für den Fall, in welchem eine Parität für einen neuen Datenwert berechnet wird und die Daten auf eine Platte geschrieben werden, bevor der Paritätsblock aktualisiert wird. Zum Zeitpunkt TA hat der Paritätsblock einen Wert von 12 und die Datenblöcke 0 bis 2 haben jeweils Werte von 4, 7 und 1. Zum Zeitpunkt TA wird Schritt 1109 der 11C für die vorliegende Erfindung ausgeführt, wobei Blöcke, die notwendigerweise den Streifen aktualisieren, in einen Speicher gelesen werden. Das System führt Schritt 1110 aus, wobei ein neuer Paritätswert in Abhängigkeit von dem/den neuen Datenwerten) berechnet wird. Zum Zeitpunkt TB wird Schritt 1111 der 11C ausgeführt, wobei die Streifennummer in den NV-RAM geschrieben wird.
  • Zum Zeitpunkt TC wird im Schritt 1112 der neue Datenwert von 2 (angegeben durch ein Kästchen um den Wert 2) in den Datenblock 0 geschrieben, wodurch der Wert von 4 ersetzt wird, welcher im Datenblock 0 zum Zeitpunkt TB gespeichert ist. Die anderen in den Datenblöcken 1 und 2 gespeicherten Werte verändern sich nicht. Zunächst wird der normale Fall betrachtet, in welchem das System nicht ausfällt. Die vorliegende Erfindung schreibt einen neuen Paritätswert von 10 (angegeben durch ein Kästchen unterhalb der Paritätsüberschrift) zum Zeitpunkt TD in Schritt 1112. Dies aktualisiert den Paritätsblock für den Schreibzugriff auf Datenblock 0 zum Zeitpunkt TC. Zum Zeitpunkt TE wird in Schritt 1113 die Streifennummer im NV-RAM gelöscht. Somit hat der Streifen, welcher die Blöcke für die Paritätsplatte und die Datenplatten 0–2 umfasst, bereits jeweils Werte von 10, 2, 7 und 1.
  • Als nächstes wird der Fall betrachtet, in welchem das System zwischen den Zeitpunkten ti und tD ausfällt (zwischen den Schritten 1111 und 1113). Das System bootet neu und beginnt eine Ausführung bei START in 11A.
  • Im Entscheidungsblock 1101 gibt der Entscheidungsblock 1101 zum Zeitpunkt TD wahr (Ja) zurück, wenn ein Systemfehler auftritt. Der Streifen hat einen Wert von 12 (angegeben durch eine Unterstreichung) für die Parität und Werten für die Datenplatten 0–2 von jeweils 2, 7 und 1. Wie in 5 für den Zeitpunkt TC illustriert, wird die Parität nach einem Systemfehler beschädigt, weil: Parität = Daten 0 + Daten 1 + Daten 2 = 2 + 7 + 1 = 10 ≠ 12 (9)
  • Der Streifen kann jedoch in einen konsistenten Zustand wiederhergestellt werden. Der NV-RAM umfasst eine Angabe der Streifen, die Kandidaten für eine Wiederherstellung sind, d.h. eine Liste von Streifen, die aktualisiert wurden. Alles außer dem Paritätswert ist auf der Platte verfügbar (die "2" wurde zum Zeitpunkt TC auf die Platte geschrieben). Die Datenwerte für den Streifen werden von der Platte gelesen und ein neuer Paritätswert von 10 wird berechnet. Parität = Daten 0 + Daten 1 + Daten 2 = 2 + 7 + 1 = 10 (10)
  • Somit wird der neu berechnete Paritätswert von 10 zum Zeitpunkt TD auf die Paritätsplatte im Schritt 1108 geschrieben und der Streifen ist nicht länger beschädigt.
  • Das folgende ist ein Beispiel eines Pseudocodes, welcher die Operation der 11C beschreibt:
    • (1) Lese alle zum Aktualisieren eines Streifens benötigten Plattenblöcke;
    • (2) Berechne neuen Paritätsinhalt;
    • (3) Füge Streifen # des geschriebenen Streifens der Liste der schmutzigen Streifen im NV-RAM zu;
    • (4) Schreibe alle zum Aktualisieren des Streifens benötigten Plattenblöcke;
    • (5) Entferne Streifen # des gerade geschriebenen Streifens aus Liste der schmutzigen Streifen im NV-RAM.
  • Nach einem Systemausfall kann ein Teil der Startprozedur der 11B durch den folgenden Pseudocode beschrieben werden:
    for (alle in Liste der schmutzigen Streifen im NV-RAM spezifizierten Streifen)
    {
    (1) Lese alle Datenblöcke in dem Streifen;
    (2) Berechne den Paritätsblock für den Streifen neu;
    (3) Schreibe den neuen Paritätsblock für den Streifen;
    }
  • Die vorliegende Erfindung verhindert somit eine Datenbeschädigung nach einem Systemausfall unter Verwendung des NV-RAM.
  • Detektion einer Paritätsbeschädigung mit einer Bitmap anstelle einer Liste
  • Der vorherige Abschnitt beschreibt eine Technik, bei welcher eine Liste von potentiell beschädigten Streifen im NV-RAM geführt wird, so dass beim Neustarten nach einem Systemausfall nur die Paritätsblöcke der Streifen in der Liste neu berechnet werden brauchen. Eine alternative Ausführungsform der vorliegenden Erfindung verwendet eine Bitmap im NV-RAM, um die potentiell beschädigten Streifen anzugeben, deren Paritätsblöcke nach einem Systemausfall neu berechnet werden müssen.
  • Diese Technik verwendet eine Bitmap, bei welcher jedes Bit eine Gruppe aus einem oder mehreren Streifen repräsentiert. Eine typische Plattenanordnung kann 250000 Streifen haben. Falls jeder Eintrag in der Bitmap einen einzelnen Streifen repräsentiert ist die Bitmap ungefähr 32 KB groß. Wenn jedes Bit eine Gruppe von 32 benachbarten Streifen repräsentiert, reduziert sich die Größe auf 1 KB.
  • Nach einem Systemausfall ist diese Technik im wesentlichen identisch mit der „Streifenlisten"-Technik, außer dass die Bitmap anstelle der Liste verwendet wird, um zu ermitteln, welche Streifen eine Paritätsneuberechnung brauchen. Für alle Streifen in Gruppen, deren Bit in der Bitmap gesetzt ist, wird deren Parität neu berechnet.
  • Eine Verwaltung der Bitmap während eines normalen Betriebs ist von einem Verwalten der Liste etwas verschieden. Es ist nicht länger möglich, einen Eintrag eines Streifens zu löschen, sobald die Aktualisierung fertig ist, weil ein einzelnes Bit eine Aktivität in mehr als einem Streifen anzeigen kann. Eine Aktualisierung eines Streifens kann durchgeführt sein, aber ein anderer Streifen, der das gleiche Bit teilt, kann immer noch aktiv sein.
  • Stattdessen wird das geeignete Bit für einen Streifen kurz bevor der Streifen aktualisiert wird gesetzt, aber es wird nicht gelöscht, nachdem die Aktualisierung beendet ist. Wenn die Bitmap zu viele Einträge gesammelt hat, werden alle Blöcke periodisch auf eine Platte geschrieben, um sicherzustellen, dass es keine inkonsistenten Streifen geben kann und die vollständige Bitmap wird gelöscht. Der folgende Pseudocode implementiert dies:
    • (1) Lese alle zur Aktualisierung eines Streifens benötigten Blöcke;
    • (2) Berechne neue Paritätsinhalte;
    • (3) Setze Bitmap-Eintrag für den Streifen, der aktualisiert wird;
    • (4) Schreibe alle zur Aktualisierung des Streifens benötigten Plattenblöcke;
    • (5) Falls die Bitmap zu voLL ist, warte bis alle Blöcke die Platte erreicht haben und lösche die vollständige Bitmap.
  • Im Falle eines Systemausfalls resultiert die Bitmap in mehr zu säubernden Blöcken als die Liste, aber die Einsparungen sind verglichen mit einer Neuberechnung der Parität für alle Streifen in dem System immer noch erheblich. Ein typisches RAID-System hat 250000 Streifen, so dass falls sogar 2500 potentiell beschädigte Streifen in der Bitmap referenziert sind, dies nur 1% der Streifen in dem System sind.
  • Die Bitmap-Technik ist insbesondere nützlich bei Platten mit einem Schreib-Cache, welche nicht garantieren, dass Daten im Falle eines Energieausfalls die Platte erreichen. Solche Platten können Daten im RAM für eine gewisse Zeitdauer halten bevor sie tatsächlich geschrieben werden. Das bedeutet, dass eine Paritätsbeschädigung immer noch möglich ist, selbst nachdem die Streifenaktualisierungsphase beendet ist. Die Listentechnik würde nicht funktionieren, weil die Parität eines Streifens immer noch potentiell beschädigt ist, obwohl der Streifen von der Liste entfernt wurde.
  • Ein Verwenden der Bitmap-Technik und ein Anweisen jeder Platte, ihren internen Cache zum gleichen Zeitpunkt auf die Platte zu schreiben, zu dem die Bitmap gelöscht wird, ermöglicht somit der Erfindung, in Kombination mit Plattenlaufwerken mit einem Schreib-Cache zu funktionieren.
  • Datenbeschädigung bei einem Schreibzugriff mit einer kaputten Platte unter Verwendung eines NV-RAM
  • Die vorliegende Erfindung löst dieses Problem der Datenbeschädigung beim Auftreten eines Schreibzugriffs mit einer gestörten Platte durch Sichern von Daten von der kaputten Platte im nicht-volatilen RAM. 7A ist ein Zeitdiagramm der vorliegenden Erfindung zum Verhindern einer Datenbeschädigung durch Speichern von Daten von einer gestörten Platte im NV-RAM. Die Zeichnung wird bezugnehmend auf die 11A–C diskutiert. In 7A werden Daten auf eine Platte geschrieben, bevor die Parität aktualisiert wird. Zum Zeitpunkt TA wird die kaputte Datenplatte 1 mit einem Wert von 7 illustriert, welcher eingeklammert angegeben ist. Der eingeklammerte Wert von 7 gibt an, dass die Datenplatte 1 gestört ist und dass es der berechnete Wert für die Platte ist. Dieser Wert wird durch Subtrahieren der Werte von 4 und 1 der Datenplatten 0 und 2 von dem Wert von 12 berechnet, welcher in der Paritätsplatte gespeichert ist. Im Schritt 1109 wird der Streifen von der RAID-Anordnung zum Zeitpunkt TA gelesen. Der NV-RAM wird gelöscht. Dies wird in 7A durch ein Fragezeichen unterhalb der Überschrift für den NV-RAM angezeigt.
  • Zum Zeitpunkt TB wird ein Wert von 7 der gestörten Datenplatte 1 in den NV-RAM gemäß Schritt 1109 geschrieben. Der Wert 7 für die Datenplatte 1, welcher in den NV-RAM geschrieben wird, wird durch ein rechteckiges Kästchen in 7A angegeben. Das System berechnet dann einen neuen Wert der Parität für den Streifen im Schritt 1110 der 11C.
  • Zum Zeitpunkt TC wird ein neuer Wert von 2 (angezeigt durch ein Kästchen) für die Datenplatte 0 auf die Platte geschrieben, bevor eine Parität für den Streifen gemäß Schritt 1112 aktualisiert wird. Deshalb ist zum Zeitpunkt TC der Wert für die Datenplatte 19 und ist dementsprechend eingeklammert angegeben. In dem normalen Fall, in welchem das System nicht ausfällt, wird ein neuer Paritätswert von 10 auf die Platte zum Zeitpunkt TD geschrieben und der berechnete Wert der Platte 1 wird wieder 7, was korrekt ist. Wenn ein Systemausfall zwischen den Zeitpunkten TC und TD auftritt, wird ein neuer Wert der Parität unter Verwendung des NV-RAM mit Bezug auf den Wert von 2 korrekt initialisiert, welcher zum Zeitpunkt TC auf die Datenplatte 0 geschrieben wurde.
  • Die Parität wird zum Zeitpunkt TD gemäß Schritt 1106 durch zunächst Lesen des Werts für alle funktionierenden Datenplatten, der im NV-RAM gespeichert ist, und Neuberechnen ihres Wertes wie folgt korrekt aktualisiert: Parität = Daten 0 + NV-RAM + Daten 2 = 2 + 7 + 1 = 10 (12)
  • Ein korrekter Wert von 10 wird somit für die Parität berechnet, wenn die vorliegende Erfindung nach einem Systemabsturz neu startet. Im Schritt 1108 wird zum Zeitpunkt TD der Wert von 10 auf die Paritätsplatte geschrieben, womit der berechnete Wert von D1 auf 1 zurückgesetzt wird, was korrekt ist. Zum Zeitpunkt TE wird der NV-RAM im Schritt 1113 gelöscht. Somit verhindert die vorliegende Erfindung unter Verwendung des NV-RAM, dass Daten durch einen Systemausfall beschädigt werden, wenn eine Platte gestört ist.
  • 7B ist ein Zeitdiagramm der vorliegenden Erfindung zum Verhindern einer Datenbeschädigung durch Speichern von Daten einer gestörten Platte im NV-RAM für den Fall, in welchem eine Parität auf die Platte geschrieben wird, bevor Daten aktualisiert werden. Zum Zeitpunkt TA wird eine kaputte Datenplatte 1 mit einem Wert von 7 illustriert, der eingeklammert angegeben ist. Dieser Wert wird wie oben mit Bezug auf 7A beschrieben berechnet. Im Schritt 1109 wird der Streifen zum Zeitpunkt TA von der RAID-Anordnung gelesen. Der NV-RAM wird gelöscht, was durch ein Fragezeichen unterhalb der Überschrift für den NV-RAM angezeigt wird.
  • Zum Zeitpunkt TB wird gemäß Schritt 1109 ein Wert von 7 für die gestörte Datenplatte 1 in den NV-RAM geschrieben. Der Wert von 7 für Datenplatte 1, welcher in den NV-RAM geschrieben wird, wird durch ein rechteckiges Kästchen in 7B angegeben. Das System berechnet dann einen neuen Wert der Parität für den Streifen in Schritt 1110 der 11.
  • Zum Zeitpunkt TC wird in Schritt 1108 ein neuer Wert von 10 (angegeben durch ein Kästchen) für die Parität auf die Paritätsplatte geschrieben, bevor der Datenblock 0 aktualisiert wird. Deshalb ist zum Zeitpunkt TC der Wert für die Datenplatte 15 und ist dementsprechend eingeklammert angegeben. Wenn ein Systemausfall zwischen den Zeitpunkten TC und TD auftritt, wird ein neuer Paritätswert für die Paritätsplatte unter Verwendung des NV-RAM korrekt aktualisiert. Beim Entscheidungsblock 1101 wird nachdem das System neu gestartet ist, eine Prüfung durchgeführt, ob ein Systemausfall stattgefunden hat. Der Entscheidungsblock gibt in dem vorliegenden Beispiel dementsprechend wahr (Ja) zurück und fährt bei Schritt 1104 fort.
  • Die Parität wird zum Zeitpunkt TD durch Neuberechnen ihres Wertes wie folgt korrekt aktualisiert: Parität = NV-Daten für kaputte Platte (7) + Daten auf Platten für alle nicht kaputten Platten = 4 + 7 + 1 = 12 (13)
  • Somit spart das System wie in den 7A bis 7B gezeigt den Wert für eine gestörte Datenplatte 1 im nicht-volatilen RAM, kurz bevor das System einen Streifen schreibt. Es schreibt dann den neuen Wert für Datenplatte 0 (Parität) auf die Platte. Falls ein Systemabsturz auftritt, nachdem der neue Wert auf die Platte 0 (die Paritätsplatte) zum Zeitpunkt TC geschrieben wird, ist der Wert für die Datenplatte 1 beschädigt. Nach dem Systemausfall wird der neue Wert der Parität (Datenplatte 0) unter Verwendung des Wertes von 7 berechnet, welcher im NV-RAM anstelle des berechneten Wertes von 5 für Datenplatte 1 gespeichert ist. Der Wert der Parität (Datenplatte 0) wird dann auf die Platte geschrieben. Sobald dies beendet ist, wird der NV-RAM gelöscht.
  • Simultaner System- und Plattenausfall unter Verwendung eines NV-RAM
  • Die vorliegende Erfindung löst das Problem einer Paritäts- und Datenbeschädigung wenn simultane System- und Plattenausfälle auftreten durch Sichern von Blöcken von Streifen im NV-RAM. Unter Verwendung des NV-RAM ermöglicht das System in einen konsistenten Zustand wiederhergestellt zu werden, wenn ein Systemabsturz auftritt, während verschiedene Blöcke (in dem folgenden Beispiel Datenblöcke 0 und 1) in dem System aktualisiert werden. Ein Verändern dieser Datenblöcke erfordert weiterhin, dass die Parität des Streifens aktualisiert wird. Die vorliegende Erfindung sichert immer jedweden Block im NV-RAM, welcher zu diesem Zweck von der Platte gelesen wird (zum Beispiel vor einem Aktualisieren des Datenblocks 0, lies ihn in den NV-RAM). Somit kann eine Streifeninformation aus den im NV-RAM gespeicherten Daten neu berechnet werden. Die vorliegende Erfindung stellt zwei Lösungen hierfür bereit, unter Verwendung einer Parität-durch-Subtraktion und einer Parität-durch-Neuberechnung.
  • Bei einer Parität-durch-Subtraktion werden Daten, die Paritäts- und Datenblöcke umfassen, bevor sie aktualisiert werden aus der Platte gelesen. 10A ist ein Zeitdiagramm der vorliegenden Erfindung zum Verhindern ei ner Paritäts- und Datenbeschädigung durch Speichern von Blöcken eines Streifens im NV-RAM. Die Zeichnung wird mit Bezug auf 11A–C diskutiert. In 10A werden Daten auf die Platte geschrieben, bevor eine Parität aktualisiert wird. Zum Zeitpunkt TA werden der Paritätsblock und Datenblock 0 von der RAID-Anordnung gelesen. Der NV-RAM wird gelöscht. Dies wird in 10A angegeben durch ein Fragezeichen unterhalb der Überschrift für den NV-RAM.
  • Zum Zeitpunkt TB werden der Paritätsblock und Datenblock 0 in den NV-RAM geschrieben, wenn sie von der Platte gelesen werden. Der Paritätsblock und der Datenblock 0, welche in den NV-RAM geschrieben werden, sind durch ein rechteckiges Kästchen in 10A angegeben. Das System berechnet dann einen neuen Wert der Parität für einen Wert von 2 für Datenblock 0.
  • Zum Zeitpunkt TC wird der neue Wert von 2 (angegeben durch ein Kästchen) für Datenplatte 0 auf die Platte geschrieben, bevor eine Parität für den Streifen aktualisiert wird. Wenn ein Systemausfall zwischen Zeitpunkt TC und TD auftritt, ist eine Platte in der RAID-Anordnung gestört und die vorliegende Erfindung stellt somit Lösungen für die drei Fälle einer kaputten Platte bereit: die Paritätsplatte; die Datenplatte 0; und die Datenplatte 1 (oder 2). Im Entscheidungsblock 1101 wird eine Prüfung durchgeführt, ob ein Systemausfall aufgetreten ist. Der Entscheidungsblock gibt in dem vorliegenden Beispiel dementsprechend wahr (Ja) zurück und fährt bei Schritt 1104 fort. Die drei Fälle einer kaputten Platte aufgrund eines Systemausfalls wenn eine Parität-durch-Subtraktion berechnet wird, sind jeweils in den 10A bis 10C gezeigt.
  • Zum Zeitpunkt TD ist die Paritätsplatte in 10A gestört aufgrund des Systemausfalls zwischen den Zeitpunkten TC und TD. In diesem Falle gibt es nichts, was getan werden kann. Keine Daten sind verloren, und es kann keine Information auf die Paritätsplatte geschrieben werden.
  • Bezugnehmend auf 10B ist eine Datenplatte 0 aufgrund des Systemausfalls zwischen Zeitpunkt TC und TD zum Zeitpunkt TD gestört. Die generelle Gleichung zum Neuberechnen einer Parität ist in diesem Falle: Parität = „NV-Wert für kaputte Platte" + „Werte auf Platten für alle nicht-kaputten Platten"
  • In dem vorliegenden Beispiel wird dies zu: Parität = NV(Daten 0) + Daten 1 + Daten 2 = 4 + 7 + 1 = 12
  • Im Ergebnis wird die Parität aktualisiert, um die kaputte Platte zu dem Wert wiederherzustellen, welcher für ihn in dem NV-RAM gespeichert ist. In diesem speziellen Beispiel kommt es vor, dass der neue Wert für eine Parität dem alten Wert entspricht. Falls neben Daten 0 andere Datenblöcke ebenfalls aktualisiert wurden und falls einer von ihnen die Platte vor dem Systemausfall erreicht hat, dann würde der neue Paritätswert nicht mit dem alten übereinstimmen.
  • Bezugnehmend auf 10C ist die Datenplatte 1 aufgrund des Systemausfalls zwischen den Zeitpunkten TC und TD zum Zeitpunkt TD gestört. Dieser Fall wird durch Lesen der Paritäts- und Datenplatten-0-Werte aus dem NV-RAM in Schritt 1114 und Schreiben von ihnen auf die Platte (angegeben durch ein Kästchen) behandelt. Somit wird die Veränderung der Datenplatte 0 überschrieben aber der Streifen wird in einen konsistenten Zustand zurückgeführt. Datenplatte 1 wird zum Zeitpunkt TD und TE durch Einklammern ihres Werts als kaputt gekennzeichnet. Der Wert der kaputten Datenplatte 1 wird somit zum Zeitpunkt TD wie folgt korrekt als 7 (angezeigt durch ein Kästchen) berechnet: Daten 1 = NV(Parität) – NV(Daten 0) – Daten 2 = 12 – 4 – 1 = 7, (14)wobei NV(Parität) und NV(Daten 0) die Werte für die Parität und den Datenblock 0 sind, die im NV-RAM gespeichert sind. Zum Zeitpunkt TE wird der NV-RAM gelöscht. Somit wird in 10C der Streifen durch die vorliegende Erfindung in einem konsistenten Zustand gehalten, obwohl Datenplatte 1 (eine kaputte Platte 2 wird ähnlich behandelt) nach dem Systemausfallzwischen Zeitpunkt TC und TD gestört ist.
  • Dieser Fall kann auch durch zunächst Berechnen des alten Inhalts der kaputten Platte wie folgt behandelt werden: D1-calc = NV-Parität – „NV-Werte für Platten, die aktualisiert werden" – „Werte auf Platten für nicht aktualisierte Datenplatten".
  • Ein neuer Paritätswert wird berechnet basierend auf: Parität = "D1-calc aus dem obigen Schritt" + "Werte auf Platten für alle nicht-ruinierten Datenplatten".
  • Simultane System- und Plattenausfälle mit Parität-durch-Neuberechnung
  • Bei einer Parität-durch-Neuberechnung werden die Datenblöcke, die nicht aktualisiert wurden, zunächst von der Platte gelesen und dann wird eine Parität basierend auf diesen Werten kombiniert mit den neuen Daten, die kurz davor stehen, geschrieben zu werden, neu berechnet. Dies wird typischerweise in Fällen verwendet, in welchen verschiedene Datenblöcke gleichzeitig aktualisiert werden, weil es in diesen Fällen effizienter ist als eine Parität-durch-Subtraktion. Der Einfachheit halber wird in dem vorliegenden Beispiel nur ein Block aktualisiert. Die gezeigten Techniken gelten für Aktualisierungen von beliebigen Anzahlen von Blöcken.
  • Die 12A12C sind Zeitdiagramme für eine Parität-durch-Neuberechnung. Für Zeitpunkte TA, TB und TC sind sie alle identisch.
  • Zum Zeitpunkt TA werden in Schritt 1109 Blöcke D1 und D2 von der Platte gelesen. In Schritt 1110 berechnet das System die neue Parität basierend auf den neuen Daten für die Platte 0 gemeinsam mit den gerade gelesenen Daten der Platten 1 und 2.
  • Zum Zeitpunkt TB werden in Schritt 1111 Blöcke D1 und D2 gemeinsam mit einer Kennzeichnung des Streifens, zu welchem sie gehören, in den NV-RAM geschrieben.
  • Zum Zeitpunkt TC wird während des Schritts 1112 der neue Wert "2" auf Platte 0 geschrieben. Im Normalfall würde der Paritätsblock auch während des Schrittes 1112 geschrieben werden und es gäbe keine Beschädigung.
  • In dem vorliegenden Beispiel gibt es einen Systemausfall in Kombination mit einem Plattenausfall. Wenn das System nach einem Systemausfall neu startet, beginnt eine Ausführung bei Schritt 1101. Weil es einen Ausfall gibt, gibt der Entscheidungsblock wahr (Ja) zurück und fährt bei Schritt 1102 fort und führt die notwendigen Schritte durch, um das RAID-Subsystem basierend auf dem Inhalt des NV-RAM wiederherzustellen.
  • 12A zeigt den Fall, wenn die Paritätsplatte ausfällt. In diesem Fall muss nichts getan werden. Es gibt keine Möglichkeit des Datenverlustes, weil keine Datenplatten ausgefallen sind.
  • 12B zeigt den Fall, in welchem die Platte ausfällt, die aktualisiert wird. Es ist anzumerken, dass zum Zeitpunkt TD der berechnete Wert für Platte 0 inkorrekt ist. Grundsätzlich gibt es nicht genug Information im NV-RAM, um den verlorenen Datenblock zu rekonstruieren, falls mehrere Blö cke aktualisiert werden. Dies ist so, weil es bei einer Parität-durch-Neuberechnung die Daten sind, die nicht aktualisiert werden, welche in den NV-RAM geladen werden. Die Daten auf der ausgefallenen Platte sind ohnehin nicht gesichert.
  • In diesem Fall berechnet die vorliegende Erfindung einen neuen Paritätswert der den Inhalt der ausgefallenen Platte auf 0 setzt. Die generelle Gleichung hierfür ist: Parität = Summe der nicht kaputten Platten
  • Und in diesem Beispiel ist das: Parität = D1 + D2 = 7 + 1 = 8
  • Zum Zeitpunkt TE wird der neue Paritätswert geschrieben und zum Zeitpunkt TF werden die NV-RAM-Werte für D1 und D2 gelöscht.
  • Mit einem Dateisystem des Standes der Technik, welches neue Daten an den gleichen Ort schreibt, wie alte Daten, wäre ein Eliminieren von Datenblöcken inakzeptabel. Aber mit einem WAFL („Write Anywhere File Layout"}, welches neue Daten immer an unbenutzten Orten auf die Platte schreibt, hat ein Eliminieren eines Blocks, der geschrieben wurde, keinen nachteiligen Effekt, weil der Inhalt des Blocks nicht Teil des Dateisystems ist.
  • 12C zeigt den Fall, in welchem die Platte, die nicht aktualisiert wird, ausfällt. Es ist zu beachten, dass zum Zeitpunkt TD der berechnete Wert für Platte 1 inkorrekt ist. Die Gleichung zum Neuberechnen der Parität ist: Parität = "NV-RAM-Wert für ausgefallene Platte" + "Werte auf Platten für nicht-ausgefallene Platten".
  • In dem vorliegenden Beispiel ist das: Parität = NV(Di) + D0 + D2 = 7 + 2 + 1 = 10
  • Zum Zeitpunkt TE wird der neue Paritätswert geschrieben und zum Zeitpunkt TF werden die NV-RAM-Werte für D1 und D2 gelöscht.
  • In dieser Weise wird ein Verfahren und eine Vorrichtung zum Bereitstellen einer Fehlerkorrektur für eine Anordnung von Platten unter Verwendung eines nicht-volatilen Random-Access-Speichers (NV-RAM) offenbart.

Claims (15)

  1. Ein Verfahren zum Bereitstellen einer Paritätskorrektur für eine RAID-Anordnung in einem Computersystem nach einem Systemfehler, umfassend die Schritte: Aufrechterhalten (11111113) von Information über Streifen mit möglicherweise inkonsistenter Parität während eines Routinebetriebs des Computersystems; Identifizieren (1104, 1105) von Streifen in Reaktion auf die Information nach dem Systemfehler; und Korrigieren (11061108) der möglichen inkonsistenten Parität für jeden der so identifizierten Streifen; dadurch gekennzeichnet, daß der Schritt des Aufrechterhaltens folgende Schritte umfaßt: beim Aktualisieren von Daten wird ein Anteil der Daten für einen oder mehrere erste Blöcke eines Streifens mit einer Streifennummer und einer existierenden Parität bestimmt; Lesen des ersten Blocks in einen nicht-volatilen Speicher; Lesen (1109) eines oder mehrere zweite Blöcke des Streifens, die benötigt werden, um eine neue Parität des Streifens zu berechnen; Berechnen (1110) der neuen Parität für den Streifen; Hinzufügen (1111) der Streifennummer zu einer Liste von schlechten Streifen, die die Information über Streifen umfaßt; Schreiben (1112) des Anteils der Daten in den Streifen; Schreiben (1112) der neuen Parität in den Streifen; Entfernen (1113) der Streifennummer von der Liste der schlechten Streifen.
  2. Verfahren nach Anspruch 1, wobei die Information eine Streifennummer-Information umfaßt.
  3. Verfahren nach Anspruch 1, wobei die zweiten ein oder mehrere Blöcke den existierenden Paritätsblock umfassen.
  4. Verfahren nach Anspruch 1, wobei die zweiten ein oder mehrere Blöcke den existierenden Paritätsblock ausschließen.
  5. Verfahren nach Anspruch 1, wobei die Information in einem nicht-volatilen RAM gespeichert wird.
  6. Verfahren nach Anspruch 1, wobei die Liste der schlechten Streifen in Form einer Bitmap vorliegt und jedes Bit in der Bitmap einer Gruppe von einem oder mehreren Streifen zugeordnet wird.
  7. Verfahren nach Anspruch 6, wobei jede der Gruppe 32 benachbarte Streifen umfaßt.
  8. Vorrichtung zum Bereitstellen einer Paritätskorrektur für eine RAID-Anordnung in einem Computersystem nach einem Systemfehler, wobei die Vorrichtung umfaßt: einen Aufrechterhaltungs-Mechanismus (11111113), der konfiguriert ist, um Information über Streifen mit möglicher inkonsistenter Parität aufrechtzuerhalten, die durch Aktualisieren von Daten während eines Routinebetriebs des Computersystems bewirkt wird; einen Identifikations-Mechanismus (1104), der konfiguriert ist, um Streifen in Reaktion auf die Information zu identifizieren, wobei der Identifikations-Mechanismus in Reaktion auf eine Überprüfung bei Neustart nach einem Systemfehler aktiviert wird; ein Korrektur-Mechanismus (11061108), der konfiguriert ist, um die mögliche inkonsistente Parität für jeden der Streifen zu korrigieren, die durch den Identifikations-Mechanismus identifiziert werden; dadurch gekennzeichnet, daß der Aufrechterhaltungs-Mechanismus umfaßt: einen Lese-Mechanismus (1109), der beim Aktualisieren von Daten aktiviert wird, wobei ein Anteil der Daten für einen oder mehrere erste Blöcke eines Streifens mit einer Streifennummer und einer existierenden Parität bestimmt wird, wobei der Lesemechanismus (1109) konfiguriert ist, um einen oder mehrere zweite Blöcke des Streifens zu lesen, die benötigt werden, um eine neue Parität des Streifens zu berechnen, und um den ersten Block in einen nicht-volatilen Speicher zu laden, wobei der Lese-Mechanismus aktiviert wird, wenn neue Daten in einen oder mehrere erste Blöcke eines Streifens mit einer Streifennummer und einer existierenden Parität zu schreiben sind; einen Berechnungs-Mechanismus (1110), der konfiguriert ist, um die neue Parität für den Streifen in Reaktion auf den Lesemechanismus zu berechnen; einen Beifüge-Mechanismus (1111), der konfiguriert ist, um die Streifennummer einer Liste von schlechten Streifen beizufügen, die die Information über Streifen in Reaktion auf den Berechnungs-Mechanismus umfaßt; einen Schreib-Mechanismus (1112), der konfiguriert ist, um die Daten in den Streifen zu schreiben; einen zweiten Schreib-Mechanismus, der konfiguriert ist, um die neue Parität in den Streifen zu schreiben; einen Entfern-Mechanismus (1113), der konfiguriert ist, um die Streifennummer von der Liste der schlechten Streifen zu entfernen.
  9. Vorrichtung nach Anspruch 8, wobei die Information Streifennummer-Information umfaßt.
  10. Vorrichtung nach Anspruch 8, wobei die zweiten ein oder mehreren Blöcke den existierenden Paritätsblock umfassen.
  11. Vorrichtung nach Anspruch 8, wobei die zweiten ein oder mehreren Blöcke den existierenden Paritätsblock ausschließen.
  12. Vorrichtung nach Anspruch 8, wobei die Information in einem nicht-volatilen RAM gespeichert ist.
  13. Vorrichtung nach Anspruch 8, wobei die Liste der schlechten Streifen in der Form einer Bitmap vorliegt, und jedes Bit in der Bitmap einer Gruppe mit einem oder mehreren Streifen zugeordnet ist.
  14. Vorrichtung nach Anspruch 13, wobei jede der Gruppen 32 benachbarte Streifen umfaßt.
  15. Ein Computerprogramm, umfassend eine Programmcode-Einrichtung, die das Computersystem veranlaßt, die Schritte eines der Verfahren nach den Ansprüchen 1 bis 7 auszuführen, wenn sie auf einem Computersystem ausgeführt wird.
DE69434381T 1993-06-04 1994-06-02 Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers Expired - Lifetime DE69434381T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US7179893A 1993-06-04 1993-06-04
US71798 1993-06-04

Publications (2)

Publication Number Publication Date
DE69434381D1 DE69434381D1 (de) 2005-06-23
DE69434381T2 true DE69434381T2 (de) 2006-01-19

Family

ID=22103665

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69434381T Expired - Lifetime DE69434381T2 (de) 1993-06-04 1994-06-02 Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers

Country Status (6)

Country Link
US (3) US5948110A (de)
EP (2) EP1031928B1 (de)
JP (3) JPH08511368A (de)
DE (1) DE69434381T2 (de)
HK (1) HK1028281A1 (de)
WO (1) WO1994029795A1 (de)

Families Citing this family (163)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
WO1994029795A1 (en) 1993-06-04 1994-12-22 Network Appliance Corporation A method for providing parity in a raid sub-system using a non-volatile memory
US5671377A (en) * 1994-07-19 1997-09-23 David Sarnoff Research Center, Inc. System for supplying streams of data to multiple users by distributing a data stream to multiple processors and enabling each user to manipulate supplied data stream
US5533190A (en) * 1994-12-21 1996-07-02 At&T Global Information Solutions Company Method for maintaining parity-data consistency in a disk array
US5758057A (en) * 1995-06-21 1998-05-26 Mitsubishi Denki Kabushiki Kaisha Multi-media storage system
GB2307071B (en) * 1995-06-21 1998-04-29 Mitsubishi Electric Corp Multi-media storage system
US6098128A (en) 1995-09-18 2000-08-01 Cyberstorage Systems Corporation Universal storage management system
US5893164A (en) * 1997-05-30 1999-04-06 Unisys Corporation Method of tracking incomplete writes in a disk array and disk storage system which performs such method
JP3618529B2 (ja) * 1997-11-04 2005-02-09 富士通株式会社 ディスクアレイ装置
US6516351B2 (en) * 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
KR19990060338A (ko) * 1997-12-31 1999-07-26 윤종용 하드 디스크 드라이브의 바이러스에 의한 손상 데이터복구방법
US6119244A (en) 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6219753B1 (en) * 1999-06-04 2001-04-17 International Business Machines Corporation Fiber channel topological structure and method including structure and method for raid devices and controllers
JP2001043031A (ja) * 1999-07-30 2001-02-16 Toshiba Corp 分散パリティ生成機能を備えたディスクアレイ制御装置
EP1188294B1 (de) 1999-10-14 2008-03-26 Bluearc UK Limited Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen
US6321294B1 (en) * 1999-10-27 2001-11-20 Mti Technology Corporation Method and apparatus for converting between logical and physical memory space in a raid system
US6636879B1 (en) 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6728922B1 (en) 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
US6640233B1 (en) * 2000-08-18 2003-10-28 Network Appliance, Inc. Reserving file system blocks
US6654912B1 (en) * 2000-10-04 2003-11-25 Network Appliance, Inc. Recovery of file system data in file servers mirrored file system volumes
US6952797B1 (en) 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US7054927B2 (en) 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US20020191311A1 (en) * 2001-01-29 2002-12-19 Ulrich Thomas R. Dynamically scalable disk array
US20020156973A1 (en) 2001-01-29 2002-10-24 Ulrich Thomas R. Enhanced disk array
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
JP4017177B2 (ja) * 2001-02-28 2007-12-05 スパンション エルエルシー メモリ装置
US6799284B1 (en) 2001-02-28 2004-09-28 Network Appliance, Inc. Reparity bitmap RAID failure recovery
US6854071B2 (en) 2001-05-14 2005-02-08 International Business Machines Corporation Method and apparatus for providing write recovery of faulty data in a non-redundant raid system
US7739614B1 (en) 2001-05-22 2010-06-15 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of directories
US8171414B2 (en) * 2001-05-22 2012-05-01 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of file systems
US6643654B1 (en) 2001-06-25 2003-11-04 Network Appliance, Inc. System and method for representing named data streams within an on-disk structure of a file system
US7249150B1 (en) 2001-07-03 2007-07-24 Network Appliance, Inc. System and method for parallelized replay of an NVRAM log in a storage appliance
US6944785B2 (en) * 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US6757695B1 (en) * 2001-08-09 2004-06-29 Network Appliance, Inc. System and method for mounting and unmounting storage volumes in a network storage environment
US6851070B1 (en) 2001-08-13 2005-02-01 Network Appliance, Inc. System and method for managing time-limited long-running operations in a data storage system
US6965989B1 (en) 2001-08-14 2005-11-15 Network Appliance, Inc. System and method for fast reboot of a file server
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US6871317B1 (en) 2001-11-13 2005-03-22 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7730153B1 (en) * 2001-12-04 2010-06-01 Netapp, Inc. Efficient use of NVRAM during takeover in a node cluster
US7613984B2 (en) 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US7640484B2 (en) * 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
KR20030073982A (ko) * 2002-03-14 2003-09-19 한국전자통신연구원 레이드 서브 시스템에서 중복 데이터의 일관성 유지 방법
US7437727B2 (en) * 2002-03-21 2008-10-14 Network Appliance, Inc. Method and apparatus for runtime resource deadlock avoidance in a raid system
US7539991B2 (en) * 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation in a raid system
US6857001B2 (en) 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US7024586B2 (en) * 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US7107385B2 (en) * 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7426576B1 (en) 2002-09-20 2008-09-16 Network Appliance, Inc. Highly available DNS resolver and method for use of the same
US7171452B1 (en) 2002-10-31 2007-01-30 Network Appliance, Inc. System and method for monitoring cluster partner boot status over a cluster interconnect
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US8041761B1 (en) 2002-12-23 2011-10-18 Netapp, Inc. Virtual filer and IP space based IT configuration transitioning framework
CN1302392C (zh) * 2003-01-24 2007-02-28 华为技术有限公司 一种磁盘在线重构方法
US7664913B2 (en) * 2003-03-21 2010-02-16 Netapp, Inc. Query-based spares management technique
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7383378B1 (en) * 2003-04-11 2008-06-03 Network Appliance, Inc. System and method for supporting file and block access to storage object on a storage appliance
US7457982B2 (en) 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
US7260737B1 (en) 2003-04-23 2007-08-21 Network Appliance, Inc. System and method for transport-level failover of FCP devices in a cluster
US7739543B1 (en) 2003-04-23 2010-06-15 Netapp, Inc. System and method for transport-level failover for loosely coupled iSCSI target devices
US7293152B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. Consistent logical naming of initiator groups
US7437530B1 (en) 2003-04-24 2008-10-14 Network Appliance, Inc. System and method for mapping file block numbers to logical block addresses
US7603553B1 (en) 2003-04-25 2009-10-13 Netapp, Inc. System and method to make file handles opaque to clients
US7577692B1 (en) 2003-04-25 2009-08-18 Netapp, Inc. System and method for reserving space to guarantee file writability in a file system supporting persistent consistency point images
US7181439B1 (en) 2003-04-25 2007-02-20 Network Appliance, Inc. System and method for transparently accessing a virtual disk using a file-based protocol
US7330862B1 (en) 2003-04-25 2008-02-12 Network Appliance, Inc. Zero copy write datapath
US7437523B1 (en) 2003-04-25 2008-10-14 Network Appliance, Inc. System and method for on-the-fly file folding in a replicated storage system
US7136974B2 (en) * 2003-06-19 2006-11-14 Pillar Data Systems, Inc. Systems and methods of data migration in snapshot operations
GB0315157D0 (en) * 2003-06-28 2003-08-06 Ibm Safe write to multiply-redundant storage
US7146461B1 (en) 2003-07-01 2006-12-05 Veritas Operating Corporation Automated recovery from data corruption of data volumes in parity RAID storage systems
US7523201B2 (en) * 2003-07-14 2009-04-21 Network Appliance, Inc. System and method for optimized lun masking
US7593996B2 (en) 2003-07-18 2009-09-22 Netapp, Inc. System and method for establishing a peer connection using reliable RDMA primitives
US7716323B2 (en) * 2003-07-18 2010-05-11 Netapp, Inc. System and method for reliable peer communication in a clustered storage system
US7055014B1 (en) 2003-08-11 2006-05-30 Network Applicance, Inc. User interface system for a multi-protocol storage appliance
US7827362B2 (en) 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7287133B2 (en) 2004-08-24 2007-10-23 Symantec Operating Corporation Systems and methods for providing a modification history for a location within a data store
US7725760B2 (en) 2003-09-23 2010-05-25 Symantec Operating Corporation Data storage system
US7991748B2 (en) 2003-09-23 2011-08-02 Symantec Corporation Virtual data store creation and use
US7904428B2 (en) 2003-09-23 2011-03-08 Symantec Corporation Methods and apparatus for recording write requests directed to a data store
US7577806B2 (en) * 2003-09-23 2009-08-18 Symantec Operating Corporation Systems and methods for time dependent data storage and recovery
US7730222B2 (en) 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
GB0322424D0 (en) * 2003-09-24 2003-10-29 Ibm Error detection in redundant array of storage units
US7512990B2 (en) * 2003-10-16 2009-03-31 International Business Machines Corporation Multiple simultaneous ACL formats on a filesystem
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7100073B2 (en) * 2004-01-05 2006-08-29 International Business Machines Corporation Grouped-object RAID
US7966293B1 (en) 2004-03-09 2011-06-21 Netapp, Inc. System and method for indexing a backup using persistent consistency point images
US8275951B2 (en) * 2004-06-10 2012-09-25 Hewlett-Packard Development Company, L.P. Local bitmaps for an array of redundant storage devices
US20060075281A1 (en) * 2004-09-27 2006-04-06 Kimmel Jeffrey S Use of application-level context information to detect corrupted data in a storage system
US7594075B2 (en) * 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US8458238B2 (en) * 2004-10-26 2013-06-04 Netapp, Inc. Method and system for efficient write journal entry management for a distributed file system
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
US20060123312A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US20060123271A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
US8429192B2 (en) * 2004-12-02 2013-04-23 International Business Machines Corporation System and method for supporting a plurality of access control list types for a file system in an operating system
US7143308B2 (en) * 2005-01-14 2006-11-28 Charlie Tseng Apparatus, system, and method for differential rebuilding of a reactivated offline RAID member disk
US7398460B1 (en) * 2005-01-31 2008-07-08 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7779294B2 (en) * 2005-04-15 2010-08-17 Intel Corporation Power-safe disk storage apparatus, systems, and methods
US7490263B2 (en) * 2006-01-17 2009-02-10 Allen King Apparatus, system, and method for a storage device's enforcing write recovery of erroneous data
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US20070180292A1 (en) * 2006-01-31 2007-08-02 Bhugra Kern S Differential rebuild in a storage environment
US7844584B1 (en) 2006-06-23 2010-11-30 Netapp, Inc. System and method for persistently storing lock state information
US7979701B1 (en) 2006-09-15 2011-07-12 Netapp, Inc. Cross mapping graphical interface to show encryption relationships between hosts and storage devices
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US7647526B1 (en) 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
US7620669B1 (en) 2006-12-15 2009-11-17 Netapp, Inc. System and method for enhancing log performance
US8868495B2 (en) * 2007-02-21 2014-10-21 Netapp, Inc. System and method for indexing user data on storage systems
US8312214B1 (en) 2007-03-28 2012-11-13 Netapp, Inc. System and method for pausing disk drives in an aggregate
US10493040B2 (en) * 2007-04-09 2019-12-03 Wake Forest University Health Sciences Oxygen-generating compositions for enhancing cell and tissue survival in vivo
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US7971126B2 (en) * 2007-06-27 2011-06-28 International Business Machines Corporation Apparatus, system, and method for hard disk drive redundancy
US8041990B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
US8041989B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for providing a high fault tolerant memory system
JP4678015B2 (ja) 2007-07-13 2011-04-27 富士通株式会社 動画像符号化装置及び動画像符号化方法
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
US8140483B2 (en) 2007-09-28 2012-03-20 International Business Machines Corporation Transaction log management
US7827441B1 (en) * 2007-10-30 2010-11-02 Network Appliance, Inc. Disk-less quorum device for a clustered storage system
US7984259B1 (en) 2007-12-17 2011-07-19 Netapp, Inc. Reducing load imbalance in a storage system
US8099554B1 (en) * 2007-12-31 2012-01-17 Emc Corporation System and method for flash-based data caching
US8799743B2 (en) 2008-10-28 2014-08-05 Micron Technology, Inc. Error correction in multiple semiconductor memory units
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
WO2010096519A1 (en) * 2009-02-18 2010-08-26 Marvell World Trade Ltd. Method and system for performing i/o operations on disk arrays
US8688798B1 (en) 2009-04-03 2014-04-01 Netapp, Inc. System and method for a shared write address protocol over a remote direct memory access connection
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US8549378B2 (en) 2010-06-24 2013-10-01 International Business Machines Corporation RAIM system using decoding of virtual ECC
US8484529B2 (en) 2010-06-24 2013-07-09 International Business Machines Corporation Error correction and detection in a redundant memory system
US8898511B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Homogeneous recovery in a redundant memory system
WO2012052800A1 (en) * 2010-10-21 2012-04-26 Oracle International Corp. Two stage checksummed raid storage model
US8522122B2 (en) 2011-01-29 2013-08-27 International Business Machines Corporation Correcting memory device and memory channel failures in the presence of known memory device failures
US9170868B2 (en) * 2011-07-27 2015-10-27 Cleversafe, Inc. Identifying an error cause within a dispersed storage network
US11016702B2 (en) 2011-07-27 2021-05-25 Pure Storage, Inc. Hierarchical event tree
US10678619B2 (en) 2011-07-27 2020-06-09 Pure Storage, Inc. Unified logs and device statistics
KR101801147B1 (ko) 2011-08-30 2017-11-27 삼성전자주식회사 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치
US9087019B2 (en) * 2012-01-27 2015-07-21 Promise Technology, Inc. Disk storage system with rebuild sequence and method of operation thereof
CN103577274B (zh) 2012-07-31 2016-07-06 国际商业机器公司 管理存储器阵列的方法和装置
KR102081980B1 (ko) * 2012-10-08 2020-02-27 삼성전자 주식회사 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
US10747475B2 (en) * 2013-08-26 2020-08-18 Vmware, Inc. Virtual disk blueprints for a virtualized storage area network, wherein virtual disk objects are created from local physical storage of host computers that are running multiple virtual machines
US11016820B2 (en) 2013-08-26 2021-05-25 Vmware, Inc. Load balancing of resources
US9372767B2 (en) 2014-06-06 2016-06-21 Netapp, Inc. Recovery consumer framework
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US9740440B2 (en) * 2015-05-21 2017-08-22 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Separating a hybrid asymmetric mix of a RAID 1 mirror and a parity-based RAID array
US10114694B2 (en) * 2016-06-07 2018-10-30 Storart Technology Co. Ltd. Method and controller for recovering data in event of program failure and storage system using the same
CN108228647B (zh) 2016-12-21 2022-05-24 伊姆西Ip控股有限责任公司 用于数据拷贝的方法和设备
US10089015B1 (en) 2016-12-28 2018-10-02 EMC IP Holding Company LLC Per-drive memory resident zeroing maps for drive zeroing in a data storage system
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
US10776202B1 (en) * 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
US10929226B1 (en) 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
TWI640997B (zh) * 2017-12-27 2018-11-11 群聯電子股份有限公司 資料保護方法、記憶體控制電路單元與記憶體儲存裝置
US11816353B2 (en) * 2021-12-20 2023-11-14 Western Digital Technologies, Inc. Parity data for non-volatile storage
CN115565598B (zh) * 2022-09-30 2023-06-02 中国科学院空间应用工程与技术中心 Raid阵列磁盘暂时失效的数据存储与修复方法及系统

Family Cites Families (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3525269A (en) 1968-11-04 1970-08-25 Deere & Co Harvesting machine component drive
US4075691A (en) * 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
US4156907A (en) * 1977-03-02 1979-05-29 Burroughs Corporation Data communications subsystem
US4399503A (en) * 1978-06-30 1983-08-16 Bunker Ramo Corporation Dynamic disk buffer control unit
US4377843A (en) * 1979-04-19 1983-03-22 Wescom Switching, Inc. Data distribution interface
US4333144A (en) * 1980-02-05 1982-06-01 The Bendix Corporation Task communicator for multiple computer system
US4488231A (en) * 1980-09-29 1984-12-11 Honeywell Information Systems Inc. Communication multiplexer having dual microprocessors
FR2500659B1 (fr) * 1981-02-25 1986-02-28 Philips Ind Commerciale Dispositif pour l'allocation dynamique des taches d'un ordinateur multiprocesseur
US4456957A (en) * 1981-09-28 1984-06-26 Ncr Corporation Apparatus using a decision table for routing data among terminals and a host system
US4685125A (en) * 1982-06-28 1987-08-04 American Telephone And Telegraph Company Computer system with tasking
US4550368A (en) * 1982-07-02 1985-10-29 Sun Microsystems, Inc. High-speed memory and memory management system
US4527232A (en) * 1982-07-02 1985-07-02 Sun Microsystems, Inc. High-speed memory and memory management system
US4710868A (en) * 1984-06-29 1987-12-01 International Business Machines Corporation Interconnect scheme for shared memory local networks
US4814971A (en) 1985-09-11 1989-03-21 Texas Instruments Incorporated Virtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint state
US4719569A (en) * 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
US4825354A (en) * 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
US4742447A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to control I/O accesses in a multi-tasking virtual memory virtual machine type data processing system
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US4803621A (en) * 1986-07-24 1989-02-07 Sun Microsystems, Inc. Memory access system
US4780821A (en) * 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
US4819159A (en) * 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
US4783730A (en) * 1986-09-19 1988-11-08 Datapoint Corporation Input/output control technique utilizing multilevel memory structure for processor and I/O communication
US4766534A (en) * 1986-10-16 1988-08-23 American Telephone And Telegraph Company, At&T Bell Laboratories Parallel processing network and method
US4887204A (en) * 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US4897781A (en) * 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US5109515A (en) * 1987-09-28 1992-04-28 At&T Bell Laboratories User and application program transparent resource sharing multiple computer interface architecture with kernel process level transfer of user requested services
IL88165A (en) * 1987-12-21 1993-01-31 Honeywell Bull Apparatus and method for a data processing system having a peer relationship among a plurality of central processing units
US4914583A (en) * 1988-04-13 1990-04-03 Motorola, Inc. Method of indicating processes resident within a cell of a data processing system
JP2625866B2 (ja) 1988-04-26 1997-07-02 日本電気株式会社 電子機器筐体の冷却構造
US4984272A (en) 1988-11-30 1991-01-08 At&T Bell Laboratories Secure file handling in a computer operating system
JPH02165241A (ja) 1988-12-19 1990-06-26 Toshiba Corp ファイルアクセス方式
US5222217A (en) 1989-01-18 1993-06-22 International Business Machines Corporation System and method for implementing operating system message queues with recoverable shared virtual storage
US5113442A (en) 1989-03-06 1992-05-12 Lachman Associates, Inc. Method and apparatus for providing access control in a secure operating system
US5144659A (en) 1989-04-19 1992-09-01 Richard P. Jones Computer file protection system
US5218696A (en) * 1989-07-24 1993-06-08 International Business Machines Corporation Method for dynamically expanding and rapidly accessing file directories
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5276867A (en) * 1989-12-19 1994-01-04 Epoch Systems, Inc. Digital data storage system with improved data migration
US5218695A (en) * 1990-02-05 1993-06-08 Epoch Systems, Inc. File server system having high-speed write execution
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5195100A (en) * 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US5166939A (en) * 1990-03-02 1992-11-24 Micro Technology, Inc. Data storage apparatus and method
US5088081A (en) * 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
JPH0731582B2 (ja) * 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション パリティ保護データを回復するための方法および装置
US5208813A (en) * 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5274807A (en) * 1990-11-01 1993-12-28 At&T Bell Laboratories Method for reducing magnetic storage volume for computer disk image backup
US5255270A (en) * 1990-11-07 1993-10-19 Emc Corporation Method of assuring data write integrity on a data storage device
AU8683991A (en) * 1990-11-09 1992-05-14 Array Technology Corporation Logical partitioning of a redundant array storage system
US5155835A (en) * 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US5146588A (en) * 1990-11-26 1992-09-08 Storage Technology Corporation Redundancy accumulator for disk drive array memory
JP2603757B2 (ja) * 1990-11-30 1997-04-23 富士通株式会社 アレ−ディスク装置の制御方法
US5235601A (en) * 1990-12-21 1993-08-10 Array Technology Corporation On-line restoration of redundancy information in a redundant array system
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5239640A (en) * 1991-02-01 1993-08-24 International Business Machines Corporation Data storage system and method including data and checksum write staging storage
US5276840A (en) * 1991-03-22 1994-01-04 Acer Incorporated Disk caching method for writing data from computer memory including a step of writing a plurality of physically adjacent blocks in a single I/O operation
US5502836A (en) * 1991-11-21 1996-03-26 Ast Research, Inc. Method for disk restriping during system operation
US5379417A (en) * 1991-11-25 1995-01-03 Tandem Computers Incorporated System and method for ensuring write data integrity in a redundant array data storage system
GB9126779D0 (en) 1991-12-17 1992-02-12 Int Computers Ltd Security mechanism for a computer system
US5313626A (en) * 1991-12-17 1994-05-17 Jones Craig S Disk drive array with efficient background rebuilding
US5333305A (en) * 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
AU3424993A (en) * 1991-12-27 1993-07-28 Compaq Computer Corporation Method for performing disk array operations using a nonuniform stripe size mapping scheme
JP3058743B2 (ja) * 1992-01-21 2000-07-04 株式会社日立製作所 ディスクアレイ制御装置
US5442752A (en) * 1992-01-24 1995-08-15 International Business Machines Corporation Data storage method for DASD arrays using striping based on file length
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
EP0559488B1 (de) * 1992-03-06 1998-08-19 Data General Corporation Datenbehandlung in einem System mit einem Prozessor zur Steuerung des Zugangs zu einer Mehrzahl von Datenspeicherplatten
AU653670B2 (en) * 1992-03-10 1994-10-06 Data General Corporation Improvements for high availability disk arrays
US5469566A (en) * 1992-03-12 1995-11-21 Emc Corporation Flexible parity generation circuit for intermittently generating a parity for a plurality of data channels in a redundant array of storage units
US5708668A (en) * 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
US5335235A (en) * 1992-07-07 1994-08-02 Digital Equipment Corporation FIFO based parity generator
JP2888401B2 (ja) * 1992-08-03 1999-05-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 冗長ディスクドライブアレイに対する同期方法
US5315602A (en) * 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives
EP0612015A1 (de) * 1993-02-16 1994-08-24 International Business Machines Corporation Verbesserte Speicherplattenanordnung mit besonderen Paritätsgruppen für Datenblöcke mit hoher Aktualisierungsfrequenz
US5522050A (en) * 1993-05-28 1996-05-28 International Business Machines Corporation Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
US5963962A (en) 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
EP1003103B1 (de) 1993-06-03 2008-10-01 Network Appliance, Inc. Verfahren und Vorrichtung zum Beschreiben beliebiger Bereiche eines Dateisystems
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
WO1994029795A1 (en) 1993-06-04 1994-12-22 Network Appliance Corporation A method for providing parity in a raid sub-system using a non-volatile memory
US5390327A (en) * 1993-06-29 1995-02-14 Digital Equipment Corporation Method for on-line reorganization of the data on a RAID-4 or RAID-5 array in the absence of one disk and the on-line restoration of a replacement disk
US5572711A (en) 1993-09-28 1996-11-05 Bull Hn Information Systems Inc. Mechanism for linking together the files of emulated and host system for access by emulated system users
US5689701A (en) 1994-12-14 1997-11-18 International Business Machines Corporation System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax
US5617568A (en) 1994-12-14 1997-04-01 International Business Machines Corporation System and method for supporting file attributes on a distributed file system without native support therefor
US5761669A (en) 1995-06-06 1998-06-02 Microsoft Corporation Controlling access to objects on multiple operating systems
US5603051A (en) * 1995-06-06 1997-02-11 Hewlett-Packard Company Input/output processor with a local memory providing shared resources for a plurality of input/output interfaces on an I/O bus
US5675782A (en) 1995-06-06 1997-10-07 Microsoft Corporation Controlling access to objects on multiple operating systems
US5729705A (en) * 1995-07-24 1998-03-17 Symbios Logic Inc. Method and apparatus for enhancing throughput of disk array data transfers in a controller
US5668958A (en) 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US5737744A (en) * 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US5742752A (en) * 1995-12-29 1998-04-21 Symbios Logic Inc. Method for performing a RAID stripe write operation using a drive XOR command set
US5737523A (en) 1996-03-04 1998-04-07 Sun Microsystems, Inc. Methods and apparatus for providing dynamic network file system client authentication
US5825877A (en) 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
JP2956607B2 (ja) 1996-09-17 1999-10-04 日本電気株式会社 携帯型無線機
DE19646155C1 (de) 1996-11-08 1997-12-11 Siemens Nixdorf Inf Syst Lagebestimmung von Peripherieeinheiten
US6161165A (en) * 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly
US5915087A (en) 1996-12-12 1999-06-22 Secure Computing Corporation Transparent security proxy for unreliable message exchange protocols
US5931935A (en) 1997-04-15 1999-08-03 Microsoft Corporation File system primitive allowing reprocessing of I/O requests by multiple drivers in a layered driver I/O system
US5876278A (en) 1997-05-29 1999-03-02 Cheng; Henry Cooling device
US6101585A (en) 1997-11-04 2000-08-08 Adaptec, Inc. Mechanism for incremental backup of on-line files
US5890959A (en) 1998-03-31 1999-04-06 Digital Equipment Corporation High efficiency blower system with integral backflow preventor

Also Published As

Publication number Publication date
WO1994029795A1 (en) 1994-12-22
EP0701715A4 (de) 1999-11-17
JP2007184011A (ja) 2007-07-19
HK1028281A1 (en) 2001-02-09
EP1031928B1 (de) 2005-05-18
US5948110A (en) 1999-09-07
EP1031928A3 (de) 2000-11-15
US20030037281A1 (en) 2003-02-20
JP4283859B2 (ja) 2009-06-24
EP1031928A2 (de) 2000-08-30
JP2008251034A (ja) 2008-10-16
US6480969B1 (en) 2002-11-12
EP0701715A1 (de) 1996-03-20
US6988219B2 (en) 2006-01-17
DE69434381D1 (de) 2005-06-23
JPH08511368A (ja) 1996-11-26
JP4408939B2 (ja) 2010-02-03

Similar Documents

Publication Publication Date Title
DE69434381T2 (de) Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
DE60304194T2 (de) Verfahren und vorrichtung zur tolerierung von mehreren abhängigen oder zwei beliebigen fehlern in einer speicherplattenanordnung
DE69533570T2 (de) Verfahren und System zum Erkennen von Datenverlust in einem hierarchischen Datenspeichersystem
DE69632219T2 (de) Speicherplattenanordnungssystem
DE69727083T2 (de) Überprüfungssystem um die integrität der parität einer speicherplattenmatrix aufrechtzuerhalten
DE69937768T2 (de) Externe Speichervorrichtung und Verfahren zur Datensicherung
DE19581103C2 (de) Verfahren und Vorrichtung zur Echtzeit-Rekonstruktion zerstörter Daten in einem Speichersystem mit redundanter Anordnung
DE102013210642B4 (de) Vorrichtung zum Wiederherstellen von Redundanz
DE69631106T2 (de) On-line-Rekonfiguration einer Speicherplattenanordnung
DE60006031T2 (de) Speicherfehlerkorrektur mit einem redundanten geschnittenen Speicher und Standard ECC Mechanismus
DE112010003345B4 (de) Datenspeichersystem und Verfahren für das Betreiben eines Datenspeichersystems
DE19723909B4 (de) Verfahren zum Verbessern der Fehlerfestigkeit und Leistungsfähigkeit eines RAID-Untersystems
US6393516B2 (en) System and method for storage media group parity protection
DE69629444T2 (de) Datenverarbeitungsgerät und Verfahren zur Ersetzung von ausgefallenen Speichereinheiten
DE102005012358B4 (de) Datenschutz unter Verwendung von Daten, die in Schnappschüsse verteilt sind
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
DE102015002918A1 (de) Fehlerkorrektur mit On-Demand-Paritätssektoren in magnetischen Datenspeichergeräten
DE112007002175T5 (de) Optimierte Rekonstruktion und Rückkopiemethodik für ein ausgefallenes Laufwerk bei Anwesenheit einer globalen Hot Spare Platte
DE19720721C2 (de) Speichersystem
US20050283654A1 (en) Method and apparatus for decreasing failed disk reconstruction time in a raid data storage system
DE102021127286A1 (de) Benachrichtigung über den abschluss einer schreibanforderung als reaktion auf die teilweise härtung von schreibdaten
DE2823457C2 (de) Schaltungsanordnung zur Fehlerüberwachung eines Speichers einer digitalen Rechenanlage
DE69822819T2 (de) Verfahren zur überwachung von unvollständigen schreibaufträgen in einer speicherplattenanordnung, und system zur ausführung dieses verfahrens
DE112021000794T5 (de) Präventives zwischenspeichern für auslagerung eines ganzen stride
DE4392143C1 (de) Platten-Array-Vorrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition