DE112011100623T5 - Read-Other-Protokoll zur Aufrechterhaltung der Paritätskohärenz in einem Writeback-Datenspeichersystem mit verteilter Redundanz - Google Patents

Read-Other-Protokoll zur Aufrechterhaltung der Paritätskohärenz in einem Writeback-Datenspeichersystem mit verteilter Redundanz Download PDF

Info

Publication number
DE112011100623T5
DE112011100623T5 DE112011100623T DE112011100623T DE112011100623T5 DE 112011100623 T5 DE112011100623 T5 DE 112011100623T5 DE 112011100623 T DE112011100623 T DE 112011100623T DE 112011100623 T DE112011100623 T DE 112011100623T DE 112011100623 T5 DE112011100623 T5 DE 112011100623T5
Authority
DE
Germany
Prior art keywords
parity
data
node
nodes
primary data
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.)
Granted
Application number
DE112011100623T
Other languages
English (en)
Other versions
DE112011100623B4 (de
Inventor
James Lee Hafner
Tarun Thukar
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.)
Western Digital Technologies Inc
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112011100623T5 publication Critical patent/DE112011100623T5/de
Application granted granted Critical
Publication of DE112011100623B4 publication Critical patent/DE112011100623B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • 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/1019Fast writes, i.e. signaling the host that a write is done before data is written to disk
    • 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/1028Distributed, i.e. distributed RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Die Zuverlässigkeit der Datenspeicherung wird in einem verteilten Writeback-Datenspeichersystem, das mehrere Knoten enthält, gesichert. Jeder Knoten umfasst einen Prozessor und ein Array aus fehlerunabhängigen Datenspeichervorrichtungen Informationen werden als eine Menge von Stripes gespeichert, wobei jeder Stripe eine Sammlung aus wenigstens einem Datenstrip und zugeordneten Paritätsstrips enthält, wobei die Stripes über einen primären Datenknoten und mehrere entsprechende Paritätsknoten verteilt sind. Ein Read-Other-Paritätsaktualisierungsprotokoll sichert die Paritätskohärenz. Der primäre Datenknoten für jeden Datenstrip steuert die Paritätskohärenz bei den entsprechenden Paritätsknoten unabhängig von anderen Datenknoten, indem relevante Paritätsstrips für den primären Datenknoten kohärent gehalten werden. Ein Paritätswert wird anhand von Daten bestimmt, die von einer Differenz zwischen neuen Daten und vorhanden Daten verschieden sind. Ein neuer Paritätswert basiert auf neuen Daten und anhängigen Daten, wobei abhängige Daten in Bezug auf einen Datenwert andere Daten, die in einem entsprechenden Paritätswert codiert sind, umfassen.

Description

  • Gebiet der Erfindung
  • Die Erfindung bezieht sich im Allgemeinen auf die Sicherung der Datenintegrität. Die vorliegende Erfindung bezieht sich insbesondere auf die Paritätskohärenz in einer Datenspeichereinrichtung.
  • Hintergrund der Erfindung
  • In Informationstechnologie-Systemen (IT-Systemen) werden Daten häufig mit Redundanz gespeichert, um sie gegen Komponentenausfälle zu schützen, die einen Datenverlust zur Folge haben. Eine derartige Datenredundanz kann durch einfache Datenspiegelungstechnologien oder über Löschcodierungstechniken geschaffen werden. Löschcodes sind die Mittel, durch die Speichersysteme zuverlässig gemacht werden. Bei der Löschcodierung wird eine Datenredundanz durch das Berechnen von Funktionen der Benutzerdaten wie etwa Parität (Exklusiv-ODER, XOR) oder andere komplexere Funktionen wie etwa Reed-Solomon-Codierung ermöglicht. Eine Stripe-Konfiguration einer Redundanten Anordnung unabhängiger Festplatten (RAID) gruppiert effektiv die Kapazität von allen Platten mit Ausnahme einer Platte der Plattenlaufwerke in einer Plattenanordnung (Array) und schreibt die Parität (XOR) dieser Kapazität auf das verbleibende Plattenlaufwerk (oder über mehrere Laufwerke). Wenn ein Fehler vorhanden ist, werden die Daten, die sich auf dem fehlerhaften Laufwerk befinden, unter Verwendung von Daten von den restlichen Laufwerken rekonstruiert
  • Wenn Daten durch eine Host-Einheit aktualisiert werden, müssen die Redundanzdaten (Parität) ebenfalls atomar aktualisiert werden, um bei Bedarf eine Konsistenz von Daten und Parität für eine Datenrekonstruktion oder Wiederherstellung zu sichern. In den meisten Fällen können derartige Aktualisierungen zeitaufwändig sein, da sie gewöhnlich viele Zugriffe auf Speichervorrichtungen beinhalten. Um diesen Effekt zu mindern, kann ein Redundanz-System eine Writeback- oder ”Fast-Write”-Fähigkeit verwenden, bei der eine oder mehrere Kopien von neuen Host-Schreibdaten (d. h. Host-Daten und eine oder mehrere Kopien hiervon) in unabhängigen Cache-Speicher-Komponenten des Systems gespeichert bzw. in diese geschrieben werden. Das Schreiben wird bei Beendigung an den Host bestätigt und die Paritätsaktualisierungen werden auf einen besser geeigneten Zeitpunkt verzögert (z. B. auf den Auslagerungszeitpunkt von neuen Schreibdaten).
  • In monolithischen Systemen (z. B. eine Steuereinheit mit zwei redundanten Prozessoren, bei der auf alle Speicherplatten von beiden Prozessoren zugegriffen werden kann) kann eine Aktualisierung der atomaren Parität durch einen der Prozessoren bei einer vollständigen Kenntnis von Ereignissen während des Prozesses einfacher verwaltet werden. Die Wiederherstellung nach einem Fehler oder einer Unterbrechung ist vereinfacht. Jedoch in einem Datenspeichersystem mit verteilter Redundanz mit einer Sammlung von lose verbundenen Verarbeitungsknoten, die nicht die gleichen Platten gemeinsam verwenden, gibt es viele weitere Komponenten, weniger gemeinsam genutzte Erkenntnisse und viele weitere Fehlerzustände und Ereignisse. Demzufolge ist das Erreichen einer Aktualisierung der atomaren Parität schwieriger. ”Verteilt” bedeutet, dass es sich um eine Sammlung von Knoten handelt. ”Redundant” bedeutet, dass Löschcodierung vorhanden sein muss. Wenn in einem System mit durchgängigem Schreiben (write-thru) (ohne Fast-Write) eine Paritätsaktualisierung vor einer Bestätigung des Schreibens an den Host fehlschlägt, misslingt das Schreiben und die Wiederherstellung wird durch den Host gesteuert. Bei einem Speichersystem mit verteilter Redundanz, das Fast-Write verwendet, werden jedoch die Host-Daten durch das Speichersystem mit verteilter Redundanz festgeschrieben und müssen zu jedem späteren Zeitpunkt zuverlässig zur Verfügung stehen. Demzufolge muss eine Aktualisierung der atomaren Parität in dem Speichersystem mit verteilter Redundanz intern verwaltet werden.
  • US6983396B2 offenbart eine gebrückte Steuereinheit zum Vermindern des Aufwands der Cache-Kohärenz-Verarbeitung an jeder von einer Vielzahl von primären Steuereinheiten und eine Vergrößerung des Gesamtdurchsatzes des Systems. Die gebrückte Steuereinheit verbindet mit einem doppelten aktiven Paar von hostseitigen Steuereinheiten und den Bussen des Sicherungs-Plattenlaufwerks. Die dritte Steuereinheit ermöglicht eine Verdoppelung der Anzahl von Backend-Bussen, vermindert den Aufwand der Cache-Kohärenz-Verarbeitung an jeder primären hostseitigen Steuereinheit und verdoppelt den Gesamtdurchsatz.
  • US5627990 offenbart ein Verfahren, das die unnötige Duplizierung von Daten in dem unteren Subsystem des Cache-Speichereinzugs (SCD) und dem oberen Cache-Speicher der Speicher-Steuereinheit (SC) vermindert, wodurch eine höhere effektive Cache-Speicher-Trefferrate möglich ist, die eine höhere Leistungsfähigkeit des Gesamt-Speichersubsystems zur Folge hat.
  • US6542960B1 offenbart ein System und ein Verfahren zum Aktualisieren der Parität basierend auf der Sperre und Freigabe eines Speicher-Stripe in einer RAID-Implementierung, bei der der Stripe einen Paritätsblock enthält. Der Stripe ist gesperrt, um ein Kollidieren von E/A-Operationen zu verhindern, die daran ausgeführt werden, während eine gegenwärtige E/A-Operation in Bezug auf den Stripe abläuft.
  • US6446220B1 offenbart ein System zum Aktualisieren von Daten. Eine erste Verarbeitungseinheit empfängt eine Datenaktualisierung für einen Datenblock in einer ersten Speichervorrichtung. Paritätsdaten für den Datenblock werden in einer zweiten Speichervorrichtung gehalten. Eine Paritätsgruppe umfasst den Datenblock und die Paritätsdaten. Nach dem Feststellen, dass die erste Verarbeitungseinheit den Zugriff auf die Paritätsgruppe, die den Datenblock zum Aktualisieren enthält, nicht steuert, sendet die erste Verarbeitungseinheit eine Nachricht an eine zweite Verarbeitungseinheit, die den Zugang zu der Paritätsgruppe steuert, wobei sie die Steuerung des Zuggriffs auf die Paritätsgruppe fordert. Die erste Verarbeitungseinheit bestimmt neue Paritätsdaten aus der Datenaktualisierung, den Daten in dem Datenblock in der ersten Speichervorrichtung und den Paritätsdaten in der zweiten Speichervorrichtung. Die erste Verarbeitungseinheit schreibt dann die Datenaktualisierung in den Datenblock in der ersten Speichervorrichtung und die neuen Paritätsdaten in die zweite Speichervorrichtung.
  • US20080109616A1 offenbart ein Verfahren, ein System und ein Computerprogrammprodukt zum Optimieren von E/A-Operationen, die durch einen Speicherserver ausgeführt werden, der für mehrere Clients betrieben wird, um auf Daten in mehreren Speichervorrichtungen (Platten) zuzugreifen. Ausführungsformen der vorliegenden Erfindung eliminieren die Notwendigkeit für ausgewählte Leseoperationen, um neue Daten in physische Datenblöcke zu schreiben, durch das Setzen der physischen Datenblöcke, in die neue Daten geschrieben werden, auf null. Außerdem ist die Notwendigkeit zum Lesen der alten Parität, um eine neue Parität zu berechnen, beseitigt. Stattdessen wird eine neue Parität aus den Daten, die geschrieben werden sollen, ohne die Notwendigkeit der alten Parität berechnet, oder der Speicherserver sendet einen Befehl an eine Platte, die die Parität speichert. Ein Modul, das in der Platte, die die Parität speichert, implementiert ist, führt den Befehl aus, ohne dass die alte Parität durch den Speicherserver gelesen wird.
  • Kurzzusammenfassung
  • Die Zuverlässigkeit der Datenspeicherung wird in einem verteilten Writeback-Datenspeichersystem mit mehreren Knoten, wobei jeder Knoten ein Array aus fehlerunabhängigen Datenspeichervorrichtungen umfasst, gesichert. In einer Ausführungsform werden Informationen als eine Menge von Stripes gespeichert, wobei jeder Stripe eine Sammlung von Datenstrips und zugeordneten Paritätsstrips umfasst, wobei die Stripes über mehrere entsprechende Datenknoten und mehrere entsprechende Paritätsknoten verteilt sind. Für jeden Stripe sichert der Datenknoten den zugeordneten Datenstrip, der eine erste Kopie von Daten hält, und ein Paritätsknoten sichert einen Paritätsstrip, der eine Parität für die Sammlung von Datenstrips hält, wobei die Paritätskohärenz gesichert wird.
  • Ein Read-Other(RO)-Paritätsaktualisierungsprotokoll wird zum Sichern einer Paritätskohärenz ausgeführt, wobei ein primärer Datenknoten die Paritätskohärenz bei seinen entsprechenden Paritätsknoten unabhängig von anderen Datenknoten steuert, um seine relevanten Paritätsstrips kohärent zu halten. Das Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls enthält ferner das Ermitteln eines Paritätswerts anhand von Daten, die von einer Differenz zwischen neuen Daten und vorhandenen Daten verschieden sind, sodass ein neuer Paritätswert anhand neuer Daten und abhängiger Daten berechnet wird, wobei abhängige Daten in Bezug auf einen Datenwert andere Daten, die in einem entsprechenden Paritätswert codiert sind, umfassen.
  • Eine weitere Ausführungsform umfasst ein verteiltes Writeback-Datenspeichersystem mit mehreren Knoten, wobei jeder Knoten ein Array aus fehlerunabhängigen Datenspeichervorrichtungen umfasst. Die Knoten sind eingerichtet zum Speichern von Informationen als eine Menge von Stripes, wobei jeder Stripe eine Sammlung aus wenigstens einem Datenstrip und zugeordneten Paritätsstrips enthält, wobei die Stripes über einen primären Datenknoten und mehrere entsprechende Paritätsknoten verteilt sind. Der primäre Datenknoten für jeden Datenstrip ist zum Sichern des Datenstrip, der eine erste Kopie von Daten hält, konfiguriert, und jeder Paritätsknoten ist zum Sichern eines Paritätsstrip, der eine Parität für die Datenstrips hält, konfiguriert.
  • Der primäre Datenknoten ist ferner zum Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls zum Sichern einer Paritätskohärenz konfiguriert, das das Steuern der Paritätskohärenz bei den entsprechenden Paritätsknoten unabhängig von anderen Datenknoten enthält, indem seine relevanten Paritätsstripes kohärent gehalten werden. Das Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls enthält ferner das Ermitteln eines Paritätswerts anhand von Daten, die von einer Differenz zwischen neuen Daten und vorhandenen Daten verschieden sind, sodass ein neuer Paritätswert anhand von neuen Daten und abhängigen Daten berechnet wird, wobei abhängige Daten in Bezug auf einen Datenwert andere Daten, die in einem entsprechenden Paritätswert codiert sind, umfassen.
  • Eine weitere Ausführungsform umfasst ein Computerprogrammprodukt zur Aufrechterhaltung von Zuverlässigkeit einer Datenspeicherung in einem verteilten Writeback-Datenspeichersystem mit mehreren Knoten, wobei jeder Knoten ein Array aus fehlerunabhängigen Datenspeichervorrichtungen umfasst. Das Computerprogrammprodukt umfasst ein computerlesbares Speichermedium mit einem computernutzbaren Programmcode, der damit ausgeführt wird, wobei der computernutzbare Programmcode computernutzbaren Programmcode umfasst, der konfiguriert ist, um Informationen als eine Menge von Stripes zu speichern, wobei jeder Stripe eine Sammlung aus wenigstens einem Datenstrip und zugeordneten Paritätsstrips, enthält, wobei die Stripes über einen primären Datenknoten und mehrere entsprechende Paritätsknoten verteilt sind. Der computernutzbare Programmcode umfasst ferner computernutzbaren Programmcode, der für den primären Datenknoten für jeden Datenstrip konfiguriert ist, um den Datenstrip, der eine erste Kopie von Daten hält, zu sichern, und jeder Paritätsknoten sichert einen Paritätsstrip, der eine Parität für die Datenstrips hält.
  • Der computernutzbare Programmcode umfasst ferner computernutzbaren Programmcode, der zum Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls zum Sichern einer Paritätskohärenz konfiguriert ist, mit dem primären Datenknoten, der eine Paritätskohärenz bei den entsprechenden Paritätsknoten unabhängig von anderen Datenknoten steuert, indem seine relevanten Paritätsstrips kohärent gehalten werden. Der computernutzbare Programmcode umfasst ferner computernutzbaren Programmcode, der zur Ermittlung eines Paritätswerts anhand von Daten, die von der Differenz zwischen neuen Daten und vorhandenen Daten verschieden sind, konfiguriert ist, sodass ein neuer Paritätswert anhand von neuen Daten und abhängigen Daten berechnet wird, wobei abhängige Daten in Bezug auf einen Datenwert andere Daten, die in einem entsprechenden Paritätswert codiert sind, umfassen.
  • Kurzbeschreibung der Zeichnungen
  • Bevorzugte Ausführungsformen der vorliegenden Erfindung werden nun lediglich beispielhaft unter Bezugnahme auf die folgenden Zeichnungen beschrieben, in denen:
  • 1 ein beispielhaftes Speichersystem mit verteilter Redundanz zeigt;
  • 2 ein Blockschaubild eines. Systems für ein Read-Other(RO)-Protokoll zum Sichern der Paritätskohärenz in einem Writeback-Speichersystem mit verteilter Redundanz zeigt;
  • 3 einen Ablaufplan eines Prozesses mit RO-Protokoll zum Sichern der Paritätskohärenz in einem Writeback-Datenspeichersystem mit verteilter Redundanz zeigt;
  • 4 eine beispielhafte Ausführungsform eines Datenparitätslayouts für ein verteiltes Datenspeichersystem, das einen RAID6-Löschcode implementiert, auf den das RO-Protokoll anwendbar ist;
  • 5 eine beispielhafte Ereignisfolge in einem Prozess mit RO-Protokoll zum Sichern der Paritätskohärenz in einem verteilten Writeback-Datenspeichersystem, das einen RAID6-Löschcode implementiert, zeigt;
  • 6 eine beispielhafte Ausführungsform des Datenparitätslayouts für ein verteiltes Datenspeichersystem, das den Weaver-Löschcode implementiert, auf den das RO-Protokoll anwendbar ist, zeigt; und
  • 7 eine beispielhafte Ereignisfolge in einem Prozessor mit RO-Protokoll zum Sichern der Paritätskohärenz in einem verteilten Writeback-Datenspeichersystem, das Weaver-Löschcodedaten implementiert, zeigt.
  • Genaue Beschreibung der bevorzugten Ausführungsformen
  • Die folgende Beschreibung erfolgt für den Zweck der Erläuterung der allgemeinen Prinzipien der Erfindung und ist nicht vorgesehen, um die hier beanspruchten erfinderischen Konzepte einzuschränken. Ferner können bestimmte Merkmale, die hier beschrieben sind, in Kombination mit anderen beschriebenen Merkmalen in jeder der verschiedenen möglichen Kombinationen und Permutationen verwendet werden. Falls hier nicht speziell in anderer Weise definiert sollten allen Ausdrücken die breitestmögliche Interpretation gegeben werden ebenso wie Bedeutungen, die aus der Beschreibung folgen sowie Bedeutungen, die durch einen Fachmann verstanden werden und/oder in Wörterbüchern, Abhandlungen usw. definiert sind. Die Beschreibung kann verschiedene bevorzugte Ausführungsformen offenbaren, die eine Datenredundanz in Informationstechnologiesystemen (IT-Systemen) gewährleisten. Während die folgende Beschreibung zur Klarheit und um die Erfindung in einen Kontext zu stellen in Bezug auf solche Systeme erfolgt, sollte berücksichtigt werden, dass die hier gewonnenen Erkenntnisse bei allen Typen von Systemen, Vorrichtungen und Anwendungen eine breite Verwendungsmöglichkeit haben können.
  • Die meisten verteilten Speichersysteme führen entweder am Host oder Client lediglich durchgängiges Schreiben (Write-Through) aus oder koordinieren Paritätsberechnungen. Das Koordinieren von Paritätsberechnungen ermöglicht die Wiederherstellung und Koordination in einer Weise ähnlich einem Write-Through-System. Das durchgängige Schreiben und Koordinieren von Paritätsberechnungen haben einen ähnlichen Latenzzeit-Aufwand, da mehr Arbeit ausgeführt wird, bevor das Schreiben zu der Anwendung vollständig abgeschlossen ist. Durch eine Verbesserung bei der Reduzierung der Komplexität der Paritätsaktualisierung werden daher die Leistung und Zuverlässigkeit des verteilten Speichersystems direkt verbessert.
  • Ein Read-Other(RO)-Protokoll zum Sichern der Paritätskohärenz in einem Writeback-Datenspeichersystem mit verteilter Redundanz wird bereitgestellt. In einer Ausführungsform verwendet das RO-Protokoll ein datengesteuertes RO-Paritätsaktualisierungsprotokoll mit Fast-Write, um die Verarbeitung von Paritätsaktualisierungen, die über Knoten verteilt sind, zu verbessern und trotzdem Client-Garantien für eine ausgezeichnete Zuverlässigkeit und Einfachheit des Systementwurfs einzuhalten.
  • Die folgende Terminologie wird bereitgestellt, um das Verständnis der nachfolgenden Beschreibung zu unterstützen.
    Knoten ein Computer- und Plattengehäuse mit einem Modul der verteilten Redundanz, Prozessor, Speicher, Platten, Stromversorgung usw. in einem Datenspeichersystem.
    Primäre Platte eine Platte in einem Knoten, die eine erste Kopie von Host-Daten enthält.
    Primärer Datenknoten ein Knoten, der die primäre Platte gemeinsam mit anderen Platten enthält.
    Benutzerdaten Daten, die durch einen Host oder Client für einen möglichen späteren Abruf in ein Speichersystem geschrieben werden.
    Parität Datenredundanz, die durch ein Schema berechnet wird, um verlorene Benutzerdaten wiederherzustellen.
    Strip ein Stück (Block) aus Benutzerdaten oder Parität.
    Stripe eine Sammlung von Datenstrips und Paritätsstrips, die durch Paritätsberechnungen verbunden sind (ein Beispiel ist in Fig. 1 gezeigt, die im Folgenden beschrieben wird).
    Paritätsknoten ein Knoten, der einen der Paritätsdatenstrips für eine Sammlung von Datenstrips in einem Stripe enthält.
    RO Read-Other-Algorithmus zum Berechnen der Parität.
    Abhängige Daten die abhängigen Daten sind in Bezug auf einen Datenwert (z. B. Datenstrip) die anderen Daten (z. B. andere Datenstrips), die in einem entsprechenden Paritätswert (z. B. einem Paritätsstrip) codiert sind.
    Steuereinrichtung ein primärer Datenknoten mit neuen Daten in seinem Cache-Speicher, der das Paritätsaktualisierungsprotokoll steuert oder beginnt.
  • Benutzerdaten werden als eine Sammlung von Stripes gespeichert, wobei jeder Stripe eine Sammlung von Datenstrips und zugeordneten Paritätsstrips umfasst, die über mehrere entsprechende Daten enthaltende Knoten und mehrere entsprechende Parität enthaltende Knoten verteilt sind. Für jeden Stripe sichert der Daten enthaltende Knoten den zugeordneten Datenstrip, der eine erste Kopie der Daten enthält, und ein Parität enthaltender Knoten sichert einen Paritätsstrip, der eine Parität für die Sammlung von Datenstrips enthält, wobei eine Paritätskohärenz gesichert wird. Vorzugsweise basiert jede Parität, die berechnet wird, auf einer anderen Berechnungsformel. In einem beispielhaften RAID-Stripe sind n + 1 Knoten erforderlich, um die Daten von n unabhängigen Knoten zu speichern.
  • 1 zeigt eine Stripe-Konfiguration eines Speichersystems mit verteilter Redundanz mit einem Array von Knoten (d. h. N0, ..., N4), wobei jeder Knoten mehrere Plattenlaufwerke (d. h. HDD0, ..., HDD4) aufweist, die die Kapazität von allen außer einem Knoten effektiv gruppiert und die Parität P (z. B. XOR) dieser Kapazität auf restliche Knoten oder über mehrere Knoten (wie gezeigt) schreibt. Zum Beispiel sind die Datenstrips D0, ..., D3 in HDD0 der Knoten N0, ..., bzw. N3 für Benutzerdaten, und ein Paritätsstrip P0-3 in HDD0 des Knotens N4 ist für entsprechende Paritätsdaten (z. B. XOR von D0, ..., D3). Die Datenstrips D0, ..., D3 und der Paritätsstrip P0-3 bilden einen Stripe. Das gezeigte Ausbreiten der Paritätsdaten über die Knoten ermöglicht das Ausbreiten der Task zum Lesen der Paritätsdaten über mehrere Knoten im Gegensatz zu lediglich einem Knoten. Das Schreiben in einen Knoten in einer Stripe-Konfiguration erfordert, dass ein oder mehrere neue Paritäten für diese neuen Daten berechnet werden und die neuen Paritäten über die alten Paritäten in jedem der Knoten, die eine Parität halten, geschrieben werden. In diesem Beispiel sind in Bezug auf einen Datenwert (z. B. ein Datenstrip D0) die abhängigen Daten die anderen Daten (z. B. andere Datenstrips D1, D2, D3), die in einem Paritätswert codiert sind (z. B. Paritätsstrip P0-3). Es gibt keine Einschränkung, dass Informationen auf einer Platte nur Daten oder nur Paritätsangaben sind. Andere Ausführungsformen können Platten in einem Knoten aufweisen, die primäre Daten für einen Stripe und Paritätsdaten für einen anderen Stripe enthalten.
  • Gemäß dem datengesteuerten RO-Paritätsaktualisierungsprotokoll wirkt jeder primäre Datenknoten im Allgemeinen unabhängig von anderen Datenknoten, sogar dann, wenn es den gleichen Stripe betrifft, um seine relevanten Paritätsstrips kohärent und korrekt zu halten. In 1 z. B. besitzt der primäre Datenknoten N0 den Datenstrip D0 auf der primären Platte HDD0 und steuert die Knoten N4 wegen Kohärenz und Zuverlässigkeit seiner Daten und Parität in Bezug auf den Rest des Stripe, der durch D0, ..., D3, P0-3 gebildet ist.
  • 2 zeigt ein Writeback-Datenspeichersystem 10 mit verteilter Redundanz, das ein datengesteuertes RO-Paritätsaktualisierungsprotokoll gemäß einer Ausführungsform der Erfindung implementiert. Das System 10 wird verwendet zum Speichern von Daten von einem Hostsystem 11 und/oder einem Clientsystem 12. Das System 10 enthält mehrere Knoten 13. Jeder Knoten umfasst einen Prozessor 14, einen Speicher 15, einen Datenmanager mit einem Modul 16 der verteilten Redundanz und ein Array aus Speichervorrichtungen wie etwa Festplattenlaufwerken 17 (z. B. HDD0, ..., HDDn). In einer Implementierung umfasst das Modul 16 der verteilten Redundanz Programmcode für die Ausführung durch den Prozessor. In einer anderen Implementierung umfasst das Modul der verteilten Redundanz Firmware.
  • Das Modul 16 der verteilten Redundanz implementiert in jedem Knoten das datengesteuerte RO-Paritätsaktualisierungsprotokoll zum Sichern der Paritätskohärenz in dem Datenspeichersystem 10, das es enthält. Die Paritätsaktualisierung wird in dem System 10 ausgeführt, das ein Fast-Write-(Writeback-)Verhalten zu einem Zeitpunkt nach der Beendigung aller Fast-Write-Operationen verwendet. Die RO-Paritätsaktualisierung berechnet eine neue Parität lediglich aus Daten (d. h. neuen Daten am primären Datenknoten und/oder paritätsintegrierten Daten von abhängigen Datenknoten), ohne eine Differenz (Delta) zwischen neuen Daten und vorhandenen Daten zu berechnen. Jeder Paritätsknoten der primären Datenknoten sendet Leseanforderungsnachrichten an die anderen Datenknoten nach ihren abhängigen Daten und berechnet eine neue Parität aus den abhängigen Daten, die er empfängt, und den neuen Daten des primären Datenknotens.
  • Im Allgemeinen ist jeder Knoten 13, der eine primäre Platte für einen Strip besitzt, für die Steuerung der Kohärenz und Zuverlässigkeit seiner Daten oder Parität in Bezug auf den Rest des Stripe verantwortlich. Das ist anders als bei einem Datenspeichersystem, bei dem ein Knoten für die Kohärenz entweder auf globaler Ebene oder auf Grundlage jedes einzelnen Stripe verantwortlich ist. Da gemäß dem hier beschriebenen datengesteuertes RO-Paritätsaktualisierungsprotokoll jeder primäre Datenknoten im Allgemeinen unabhängig von anderen Datenknoten wirkt, wenn er seine relevanten Paritätsstrips kohärent und korrekt hält, ist die explizite Gesamtkoordination zwischen Knoten des gleichen Stripe vermindert und eine Koordinierung erfolgt durch weniger explizite Mittel, wie etwa eine Protokollserialisierung (wird später beschrieben).
  • Für die beispielhaften Implementierungen, die hier beschrieben sind, ist das Speichersystem 10 mit verteilter Redundanz (2) auf zwei Speichervorrichtungsausfälle (entweder Platte oder Knoten) fehlertolerant. Ein Fachmann erkennt, dass eine Verallgemeinerung auf eine höhere Fehlertoleranz im Umfang der Erfindung liegt. Jeder Datenstrip ist in zwei Paritätsstrips codiert. Das ist auf mehr als zwei Paritätsstrips für Systeme mit höherer Fehlertoleranz erweiterungsfähig.
  • Das datengesteuerte RO-Paritätsaktualisierungsprotokoll ermöglicht, dass ein Datenkoten 13 (entweder im Speicher oder auf einer Platte) wenigstens zwei Kopien von Daten für einen Strip (neue Fast-Write-Daten und Daten mit integrierter Parität) führt. Das datengesteuerte RO-Paritätsaktualisierungsprotokoll ist datengesteuert, da es durch einen primären Datenknoten für seine Paritätsknoten ausgelöst wird. Jeder Knoten 13 ist ein primärer Datenknoten für bestimmte Daten und ein Paritätsknoten für bestimmte andere Daten, wobei jeder dieser Knoten in der Lage sein muss, jede der Funktionen des Protokolls (Steuerungseinrichtung, erste Parität, zweite Parität usw.) auszuführen. Das Paritätsaktualisierungsprotokoll folgt einem weitergeleiteten oder verketteten Nachrichtenprotokoll zwischen den Teilnehmern (d. h. von dem primären Datenknoten durch jeden seiner Paritätsknoten in einer speziellen Reihenfolge, wobei Antworten der umgekehrten Reihenfolge folgen). Das Paritätsaktualisierungsprotokoll ist in jedem der Knoten 13 in 2 implementiert. Jeder Knoten 13 dient als ein primärer Datenknoten für bestimmte Daten und dient als ein Paritätsknoten für bestimmte andere Daten, wobei jeder Knoten in der Lage sein muss, jede der Funktionen des Protokolls (Steuerungseinrichtung, erste Parität, zweite Parität usw.) auszuführen. Ein Daten besitzender Knoten löst ein Paritätsdatenaktualisierungsprotokoll in dem verteilten Speichersystem 10 aus, und verwendet Fast-Write-Fähigkeiten, um Paritätsdaten zu berechnen, die verwendet werden, um verlorene Daten wiederherzustellen. Das Paritätsdatenaktualisierungsprotokoll enthält:
    • a. ein Nachrichtenweiterleitungsprotokoll.
    • b. zwei Phasen: eine Einrichtungs/Sperrphase und eine Festschreib/Freigabephase.
    • c. ein RO-Unterprotokoll für neue Paritätsberechnungen in jedem Paritätsknoten.
    • d. eine spezielle Paritätsknoten-Weiterleitungsreihenfolge für jeden der primären Datenknoten.
  • Das RO-Unterprotokoll dient zur Berechnung einer neuen Parität, die verminderte Ressourcen erfordert (speziell Platten-E/A-Operationen), insbesondere dann, wenn die Anzahl von ”anderen” Leseoperationen wesentlich kleiner ist als für eine Alternative unter Verwendung des Unterprotokolls Lesen-Modifizieren-Schreiben gefordert (z. B. drei Fehler bei einem zwei Fehler tolerierenden Löschcode). Eine Implementierung des RO-Unterprotokolls ist gut geeignet für Löschcodes auf kurzen Stripes (zwei Beispiele werden später angegeben). Die Fast-Write-Daten werden zu allen Paritätsknoten gespiegelt, die Kopien dieser Daten codieren (wenn das nicht der Fall ist, erreicht eine einfache Modifikation an dem Protokoll diese Spiegelung in dem ersten Schritt).
  • 3 zeigt einen Ablaufplan eines Prozesses 20, der eine Ausführungsform des RO-Paritätsdatenaktualisierungsprotokolls mit einem primären Datenknoten, der einen Datenstrip hält, und entsprechenden mehreren (z. B. zwei) Paritätsknoten, die Paritätsstrips für diese Datenstrips hält, zeigt. Der Prozess 20 enthält Folgendes:
  • Block 21: In einer Einrichtungsphase sendet der primäre Datenknoten eine Nachricht Einrichtungs- und Sperranforderung an seinen ”ersten Paritätsknoten” (gemäß einer speziellen Reihenfolge), wobei der erste Paritätsknoten diese Anforderung an einen ”zweiten Paritätsknoten” weiterleitet.
  • Block 22: Jeder Paritätsknoten des primären Datenknotens sendet Leseanforderungs-Nachrichten an die anderen Datenknoten für ihre abhängigen Daten und berechnet eine neue Parität aus den abhängigen Daten, die er empfängt, und den Fast-Write-Daten (d. h. neue Daten) des primären Datenknotens (eine Differenz zwischen neuen und vorhandenen Daten wird nicht berechnet).
  • Block 23: Wenn der zweite Paritätsknoten seine neue Parität ermittelt hat, sendet der zweite Paritätsknoten eine Nachricht Bestätigungsantwort (ACK) zurück zu dem ersten Paritätsknoten, die ”bereit” angibt. Wenn der erste Paritätsknoten ACK von dem zweiten Paritätsknoten empfängt und seine neue Parität ebenfalls ermittelt hat, sendet der erste Paritätsknoten ACK an den primären Datenknoten, das ”bereit” angibt. Das beendet die Einrichtungsphase.
  • Block 24: In einer Festschreib/Freigabephase sendet der primäre Datenknoten eine Festschreibe-Nachricht an den ersten Paritätsknoten, die an den zweiten Paritätsknoten weitergeleitet wird.
  • Block 25: Der zweite Paritätsknoten ”schreibt” seinen neuen Paritätswert ”fest”, gibt seine Parität für eine Aktualisierung durch einen anderen primären Datenknoten frei und sendet eine ACK zurück zu dem ersten Paritätsknoten, wodurch ”erledigt” angezeigt wird. Festschreiben bedeutet Markieren der Arbeitskopie der Parität als den ”paritätsintegrierten Wert” und Verwerfen des vorherigen alten Werts. Der ”paritätsintegrierte Wert” der Parität ist der Wert der Parität, der die paritätsintegrierten Versionen sämtlicher Daten, die er repräsentiert, enthält (daraus berechnet ist). Der erste Paritätsknoten schreibt seine neue Parität fest, gibt seine Parität für eine Aktualisierung durch einen anderen primären Datenknoten frei und sendet eine ACK zurück zu dem primären Datenknoten, wodurch ”erledigt” angezeigt wird. Der primäre Datenknoten gibt beim Empfang der ACK des ersten Paritätsknotens seine neuen Daten für die Aktualisierung frei, markiert seine neuen Daten als paritätsintegriert und macht seine alte Kopie ungültig. Dadurch wird das RO-Paritätsaktualisierungsprotokoll beendet.
  • Die Nachrichtenübertragung kann über eine Datenübertragungsleitung, einen Host, einen Bus, der die Knoten verbindet, usw. durch Implementieren eines Nachrichtenweiterleitungsprotokolls erfolgen. Wenn ein Knoten, der kein abhängiger Datenknoten ist und Teilnehmer an einem RO-Paritätsaktualisierungsprotokoll (d. h. der primäre Datenknoten, der erste Paritätsknoten oder der zweite Paritätsknoten) ist, während der Einrichtungsphase ausfällt, löst der niedrigste fortbestehende Knoten in der Weiterleitungsfolge eine Abbruchsequenz mit den fortbestehenden Knoten aus. Wenn ein Knoten während der Festschreibphase ausfällt, startet der niedrigste fortbestehende Knoten in der Weiterleitungsfolge die Festschreibsequenz mit den fortbestehenden Knoten neu. Wenn während jeder Phase zwei Knoten ausfallen, bricht der einzelne fortbestehende Knoten selbst ab oder führt selbst ein Festschreiben aus. Eine Abbruchsequenz ist eine Weiterleitungsnachrichtenkette ähnlich zu der Festschreib/Sperrungsnachrichtenkette, die bewirkt, dass jeder fortbestehende Knoten seinen Zustand auf jenen vor dem Beginn des Paritätsaktualisierungsprotokolls zurücksetzt. Im Einzelnen werden Sperrungen aufgehoben und es wird keine neue Parität festgeschrieben und keine neuen Daten werden als paritätsintegriert markiert.
  • Die spezielle Nachrichtenweiterleitungsreihenfolge der Paritätsknoten für jeden primären Datenknoten und die Sperr/Freigabeschritte werden so eingerichtet, dass dann, wenn das Protokoll durch zwei oder mehr primäre Datenknoten, die einen oder mehr Paritätsknoten gemeinsam nutzen, gleichzeitig ausgelöst wird, das Protokoll nicht gesperrt und blockiert ist. Wenn ein Paritätsknoten, dessen Parität während eines RO-Paritätsaktualisierungsprotokolls von einem primären Datenknoten gesperrt ist, eine erste Nachricht des Paritätsaktualisierungsprotokolls von einem anderen primären Datenknoten empfängt, kann der Paritätsknoten entweder die zweite Paritätsaktualisierungsanforderung (durch eine Antwort ”Abbruch/erneuter Versuche später”) zurückweisen oder kann die zweite Nachricht bis zur Beendigung seines Freigabeschritts für das erste Paritätsaktualisierungsprotokoll halten, wobei er an diesem Zeitpunkt mit dem zweiten Paritätsaktualisierungsprotokoll fortsetzen kann.
  • Wenn ein abhängiger Datenknoten auf eine Anforderung von einem Paritätsknoten nach abhängigen Daten nicht antwortet, ist der Paritätsknoten möglicherweise nicht in der Lage, die Berechnung seines aktuellen Paritätswerts abzuschließen. In dieser Situation bestätigt der Paritätsknoten nicht mit ”Bereit” in seiner Antwort während der Einrichtungsphase. Er antwortet stattdessen mit einer Benachrichtigung ”Fehler”. Eine derartige Benachrichtigung Fehler wird zu dem primären Datenknoten weitergeleitet; in Reaktion darauf löst der primäre Datenknoten eine Nachrichtenkette ”Abbruch” (anstelle der Kette ”Festschreiben”) aus, die bewirkt, dass das Protokoll den Systemzustand auf den Zustand vor dem Beginn des Protokolls zurücksetzt und alle Sperrungen aufhebt und sämtliche Arbeitsdaten verwirft. Das ist gleichbedeutend mit einer Abbruchsequenz, die durch einen Knoten nach einem Fehler während des Protokolls (z. B. Ausfall eines Knotens oder Fehler beim Lesen von Daten von der Platte usw.) ausgelöst wird.
  • Ausführungsformen der Erfindung stellen ein datengesteuertes Protokoll sowie Sperrung/Weiterleitung/Wiederherstellung bereit. Die expliziten Nutzlasten und Löschcode-Berechnungseigenschaften können variieren, wie ein Fachmann anerkennen wird.
  • Ein Wiederherstellungsprotokoll wird durch eine Nachfolger-Steuereinrichtung gesteuert (d. h. den niedrigsten fortbestehenden Knoten in der Weiterleitungsfolge). Der primäre Datenknoten ist die anfängliche Steuereinrichtung. Wenn die Steuereinrichtung ausfällt, übernimmt der nächste Knoten in der Weiterleitungskette diese Rolle. Die Rolle der Steuereinrichtung besteht darin, das RO-Paritätsaktualisierungsprotokoll zu beenden, indem es gezwungen wird, über die Festschreibphase voranzuschreiten oder indem es gezwungen wird, über eine explizite Abbruchphase zurückgesetzt zu werden.
  • Nach einem Ausfall übernimmt der fortbestehende Paritätsknoten, der dem primären Datenknoten in der Weiterleitungsnachrichtenreihenfolge am nächsten ist (und darin enthalten ist, falls er fortbesteht), die Rolle einer Wiederherstellungs-Steuereinrichtung und beendet das Protokoll mit den restlichen fortbestehenden Paritätsknoten oder bricht es ab.
  • Wie angemerkt ist jeder primäre Datenknoten in der Lage, (entweder im Speicher oder auf der Platte oder beides) wenigstens zwei Versionen der Daten für einen Strip zu führen. Die erste Kopie ist die Fast-Write-Kopie, die neue Daten umfasst, die durch einen Host oder einen Client in das Speichersystem geschrieben wurden, jedoch noch nicht in die Paritätsstrips integriert wurden. Die zweite Kopie ist die paritätsintegrierte Kopie, die in die mathematischen Beziehungen, die die Paritätswerte definieren, einbezogen wurde. Fast-Write-Versionen werden in die paritätsintegrierte Version bei Beendigung des Paritätsaktualisierungsprotokolls in allen relevanten Paritätsknoten überführt (die paritätsintegrierte Vorversion kann ebenfalls verworfen werden).
  • In ähnlicher Weise führt jeder Paritätsknoten eine Version seines Paritätsstripwerts, der (über die mathematische Beziehung, die diesen Paritätswert definiert) den aktuellen paritätsintegrierten Wert für jeden der Datenstrips, die zu diesem Paritätsstrip berechnet wurden, enthält. Jeder Paritätsknoten verwaltet außerdem eine Arbeitskopie, die als ein Zwischenwert während des Paritätsaktualisierungsprotokolls berechnet wird. Am Ende des Paritätsaktualisierungsprotokolls (wie durch jeden Paritätsknoten beobachtet wird) setzt der Paritätsknoten die Arbeitskopie in den paritätsintegrierten Wert um und verwirft den vorherigen paritätsintegrierten Wert. Er kann außerdem alle Fast-Write-Daten und alle abhängigen Daten, die zu diesem Zeitpunkt in der Berechnung verwendet werden, verwerfen.
  • Für jeden primären Datenknoten gibt es eine definierte geordnete Beziehung seiner Paritätsknoten in der Abfolge. Wenn z. B. ein primärer Datenknoten zwei Paritätsknoten P0 und P1 aufweist, kann die geordnete Beziehung P0 < P1 oder P1 < P0 lauten. Daher weist jeder primäre Datenknoten einen ersten Paritätsknoten und einen zweiten Paritätsknoten auf. Die definierte geordnete Beziehung kann für alle oder einige der primären Datenknoten gleich sein (z. B. wenn die primären Datenknoten die gleichen Paritätsknoten gemeinsam nutzen). Die geordnete Beziehung kann für jeden primären Datenknoten unterschiedlich sein, (z. B. wenn jeder primäre Datenknoten ein anderes Paar von Paritätsknoten im Vergleich mit einem anderen Paritätsknoten aufweist). Diese Menge von geordneten Beziehungen (eine für jeden primären Datenknoten) ist für den gesamten Stripe festgelegt, um einen Sperr- oder Blockierzustand unter gleichzeitig ausgelösten RO-Paritätsaktualisierungsprotokollen zu vermeiden. Die Reihenfolge ist abhängig von dem speziellen Löschcode, der verwendet wird.
  • Wie angemerkt beinhaltet das Paritätsaktualisierungsprotokoll eine Einrichtungs/Sperrphase und eine Festschreibphase. In einer Implementierung wurden die Fast-Write-Daten für einen primären Datenknoten während des Fast-Write-Prozesses zu den betroffenen Paritätsknoten gespiegelt (andernfalls werden die Fast-Write-Daten in dem ersten nachfolgenden Schritt als Nutzlast in den ersten Nachrichten gesendet). Die Einrichtungsphase läuft wie folgt ab. Erstens sperrt der primäre Datenknoten seine Fast-Write-Daten gegen eine weitere Aktualisierung. Der primäre Datenknoten sendet dann eine Vorbereitungsnachricht und Sperren (”Prepare&Lock”) an den ersten Paritätsknoten ohne Nutzlast (mit der oben genannten Ausnahme). In der Einrichtungsphase fordern die Paritätsknoten die abhängigen Daten von abhängigen Datenknoten und berechnen eine Parität direkt (anstelle aus einer Differenz und der alten Parität).
  • Dann unternimmt der erste Paritätsknoten drei Aktionen. Erstens sperrt er seinen paritätsintegrierten Wert gegen eine Aktualisierung durch einen anderen primären Datenknoten (lediglich ein derartiges Protokoll kann gleichzeitig ablaufen). Zweitens leitet der erste Paritätsknoten die Nachricht ”Prepare&Lock” (ohne Datennutzlast) zu dem zweiten Paritätsknoten weiter. Drittens sendet der erste Paritätsknoten eine Anforderung an die abhängigen Datenknoten (abhängig in Bezug auf den primären Datenknoten, der dieses Protokoll auslöst), die ihre paritätsintegrierte Kopie ihrer Daten anfordert. Beim Empfang der angeforderten paritätsintegrierten Informationen berechnet der erste Paritätsknoten einen Arbeits-Paritätswert als die mathematische Kombination des Fast-Write-Werts des Datenwerts des primären Datenknotens und der paritätsintegrierten abhängigen Datenwerte (ohne den aktuellen paritätsintegrierten Wert zu zerstören oder zu nutzen). Die Kombination wird bestimmt durch die mathematische Formel (z. B. Reed-Solomon-Codierung), durch die der Paritätswert berechnet wird. Diese beiden letzten Aktionen können parallel oder nacheinander erfolgen.
  • Beim Empfang der Nachricht von dem ersten Paritätsknoten sperrt der zweite Paritätsknoten seinen paritätsintegrierten Wert gegen eine weitere Aktualisierung durch einen anderen primären Datenknoten, sendet Leseanforderungen an seine abhängigen Datenknoten und beim Empfang von Antworten von den abhängigen Datenknoten, berechnet der zweite Paritätsknoten außerdem seinen neuen Arbeits-Paritätswert durch die geeignete mathematische Kombination des Datenwerts des primären Datenknotens und der paritätsintegrierten abhängigen Datenwerte (die abhängigen Datenwerte für jeden Paritätsknoten können die gleichen oder verschieden sein). Wenn das beendet ist, sendet der zweite Paritätsknoten eine ACK-Antwort ”Bereit” an den ersten Paritätsknoten. Wenn der erste Paritätsknoten seine Tasks beendet und die ACK-Antwort ”Bereit” empfangen hat, leitet der erste Paritätsknoten die ACK-Antwort ”Bereit” wieder zu dem primären Datenknoten. Der Empfang der ACK-Antwort ”Bereit” an dem primären Datenknoten beendet die Sperr/Einrichtungsphase.
  • In einer Festschreibphase sendet der primäre Datenknoten eine Nachricht ”Festschreiben”-Anforderung an den ersten Paritätsknoten, der seinerseits die Anforderung zu dem zweiten Paritätsknoten weiterleitet. Beim Empfang der Anforderung wandelt der zweite Paritätsknoten seinen Arbeits-Paritätswert in seinen paritätsintegrierten Wert um und antwortet dem ersten Paritätsknoten mit einer ACK-Antwort ”Erledigt”. Der zweite Paritätsknoten gibt außerdem seinen paritätsintegrierten Wert für eine Aktualisierung frei. Der erste Paritätsknoten wandelt beim Empfang der ACK-Antwort ”Erledigt” seinen Arbeits-Paritätswert in den paritätsintegrierten Wert um und gibt ihn ebenfalls frei. Der zweite Paritätsknoten sendet dann eine abschließende ACK-Antwort ”Erledigt” an den primären Datenknoten. Der primäre Datenknoten wandelt seine Fast-Write-Version der Daten in seine paritätsintegrierte Version um und gibt sie frei (wodurch ihm ermöglicht wird, neue Fast-Write-Daten aufzunehmen). Das beendet die Festschreib/Freigabephase und das Paritätsaktualisierungsprotokoll.
  • Es gibt zwei Klassen von Knotenfehlern: jene, die in dem RO-Paritätsaktualisierungsprotokoll direkt beteiligt sind (primärer Datenknoten und seine Paritätsknoten) und jene, die untergeordnet sind (die abhängigen Datenknoten). Wenn untergeordnete Knoten ausfallen, nachdem sie angeforderte Daten an die Paritätsknoten zurückgegeben haben, muss keine Aktion unternommen werden. Wenn die untergeordneten Knoten vor dem Zurückgeben angeforderter Daten ausfallen, kann der anfordernde Paritätsknoten seine Einrichtungsphase nicht beenden, wobei der Paritätsknoten während der Einrichtungsphase eine Angabe ”Fehler” zurückgibt (gefolgt von einer Abbruchphase durch den Steuerungsknoten).
  • Wenn ein oder zwei teilnehmende Haupt-Paritätsknoten in dem Paritätsaktualisierungsprotokoll entweder vollständig ausfallen oder ausfallen, weil sie nicht mehr die Funktion des primären Datenknotens oder des ersten oder zweiten Paritätsknotens während des Paritätsaktualisierungsprotokolls ausführen können (ein Ausfall anderer Knoten hat keinen Einfluss auf das Paritätsaktualisierungsprotokoll), bewältigt ein Nachfolger-Steuerungsknoten die Wiederherstellung bei den fortbestehenden Knoten. Während der Einrichtungs/Sperrphase (”Prepare&Lock”) bewirkt ein Knotenfehler ein Rücksetzen in den anfänglichen Zustand, wobei der Nachfolger-Steuerungsknoten eine weitergeleitete Abbruch-Sequenz bei den fortbestehenden Knoten auslöst. Wenn z. B. der erste Paritätsknoten ausfällt, ist der primäre Datenknoten der Nachfolger-Steuerungsknoten und sendet einen Abbruch an den zweiten Paritätsknoten. Wenn der zweite Paritätsknoten ausfällt, ist der primäre Datenknoten wiederum der Nachfolger-Steuerungsknoten und sendet einen Abbruch an den ersten Paritätsknoten. Wenn der primäre Datenknoten ausfällt, ist der erste Paritätsknoten der Nachfolger-Steuerungsknoten und löst eine Abbruch-Sequenz bei dem zweiten Paritätsknoten aus. Der Nachfolger-Steuerungsknoten ist der fortbestehende Knoten, der dem primären Datenknoten in der Weiterleitungsreihenfolge am nächsten ist (oder diesen möglicherweise enthält). In ähnlicher Weise bewirkt während der Festschreibphase ein Knotenfehler eine aktualisierende Wiederherstellung (roll forward) des Protokolls. Der Nachfolger-Steuerungsknoten (wie oben definiert) startet die Festschreibsequenz neu. Wenn lediglich ein Knoten fortbesteht, führt er eine Wiederherstellung (Abbruch in der Einrichtungs/Sperrphase) oder ein Festschreiben (in der Festschreibephase) autonom aus. Ein Fachmann erkennt, dass eine Verallgemeinerung auf eine höhere Fehlertoleranz im Umfang der Erfindung liegt.
  • Nach einem Knotenfehler ist es möglich, dass ein fortbestehender Knoten (speziell ein nachgelagerter Knoten) die anfängliche Nachricht, die das Protokoll beginnt, nicht empfangen hat. Daher kann er keinen Kontext für die Abbruchnachricht, die er empfängt, aufweisen. Das ist akzeptabel, da es angibt, dass sich der Knoten im vorgesehenen Zustand befindet. In ähnlicher Weise kann dann, wenn ein Knotenfehler während der Sperrphase auftritt, eine zweite Festschreibnachricht an dem nachgelagerten Knoten eintreffen. Das ist wiederum akzeptabel, da der Knoten das Festschreiben bereits während der Sperrphase beendet haben wird und sich in dem gewünschten Zustand befindet.
  • In Bezug auf eine Wechselwirkung zwischen Instanzen des Paritätsaktualisierungsprotokolls können an dem primären Datenknoten während des Paritätsaktualisierungsprotokolls keine neuen Fast-Write-Daten in die Fast-Write-Version, die zum Berechnen des Differenzwerts verwendet wird, integriert werden. Es gibt alternative Ausführungsformen. Erstens kann ein zusätzlicher Pufferraum genutzt werden, um andere Fast-Write-Daten für den Strip zu halten, wobei tatsächlich ein dritter Pufferraum für Fast-Write-Daten vorhanden ist, die nicht an dem Paritätsaktualisierungsprotokoll beteiligt sind. Zweitens muss die Sperre an der Fast-Write-Version lediglich am Beginn der Sperrphase eingestellt werden. Um das zu realisieren kann dann, wenn neue Fast-Write-Daten an dem primären Datenknoten während der Einrichtungs/Sperrphase eintreffen, der primäre Datenknoten anstelle der Beendigung des Protokolls mit der Festschreibphase das Protokoll mit einer expliziten Abbruchphase abbrechen. Das ist ähnlich zu der Festschreibphase bei der Nachrichtenabwicklung und den Antworten, aber die Abbruchanweisung informiert die Paritätsknoten darüber., ihren Arbeits-Paritätswert zu verwerfen und ihn nicht in den paritätsintegrierten Wert umzusetzen (das Protokoll wird in den anfänglichen Zustand zurückgesetzt).
  • Wenn ein Paritätsknoten (erster oder zweiter) eine Paritätsaktualisierungsanforderung (”Prepare&Lock”) von einem zweiten primären Datenknoten während der Verarbeitung eines Paritätsaktualisierungsprotokolls von einem ersten primären Datenknoten empfängt, kann der Paritätsknoten entweder die Antwort auf die neue Anforderung verzögern, bis das erste Paritätsaktualisierungsprotokoll abgeschlossen ist, oder die zweite Anforderung zurückweisen, wodurch angezeigt wird, dass ein Paritätsaktualisierungsprotokoll abläuft. Der zweite primäre Datenknoten kann das Protokoll zu einem späteren Zeitpunkt erneut versuchen. Die spezifische Reihenfolge der Paritätsknoten für jeden primären Datenknoten verhindert eine Blockierung im Verzögerungsfall und eine Sperre im Zurückweisungsfall. In jedem Fall wird das erste Paritätsaktualisierungsprotokoll in der Lage sein, einen Abschluss zu erreichen.
  • Das Paritätsaktualisierungsprotokoll kann auf eine höhere Fehlertoleranz erweitert werden. Wenn ein Datenstrip in drei oder mehr Paritätswerte in drei oder mehr Paritätsknoten codiert ist, ordnet das Paritätsaktualisierungsprotokoll wieder alle Paritätsknoten in einer speziellen Weise. Das Protokoll wird dann in jeder der Einrichtungs/Sperrphase und der Festschreibphasen von dem primären Datenknoten an alle Paritätsknoten gemäß der speziellen Reihenfolge für diesen primären Datenknoten weitergeleitet. Wenn ein oder mehrere Knoten während der Protokolle ausfallen, steuert der fortbestehende Nachfolger-Knoten (definiert durch den Knoten, der dem primären Datenknoten am nächsten ist oder diesen möglicherweise enthält) die Beendigung des Protokolls (d. h. Abbruch während der Einrichtungs/Sperrphase und Festschreiben während der Festschreibphase).
  • Zwei beispielhafte Implementierungen von Operationen Lesen-Modifizieren-Schreiben zum Sichern der Paritätskohärenz werden im Folgenden beschrieben.
  • RAID6
  • 4 zeigt ein beispielhaftes Datenspeichersystem 30 mit verteilter Redundanz, das Daten- und Paritätsbeziehungen für den RAID6-Löschcode an drei Datenknoten (N0 bis N2) und zwei Paritätsknoten N3, N4 mit der Fehlertoleranz zwei veranschaulicht. RAID6 stellt ein Speichersystem bereit mit einer Strip-Menge und einer zweifach verteilten Parität mit einer Fehlertoleranz von zwei Plattenlaufwerkfehlern (das Speichersystem kann den Betrieb fortsetzen, wenn ein oder zwei Plattenlaufwerke ausfallen). Die abhängigen Datenknoten für jeden Paritätsknoten sind die gleichen, da sowohl P als auch Q aus D0, D1 und D2 berechnet werden.
  • Das RO-Paritätsaktualisierungsprotokoll ist mit diesem RAID6-Löschcode nützlich, wenn die Anzahl der Datenknoten zwei oder drei beträgt. 4 zeigt drei Datenstrips D0 bis D2. Gemäß einer Ausführungsform der Erfindung wird eine P-Parität mit einer mathematischen Formel (z. B. Exklusiv-ODER) der drei Datenstrips D0 bis D2 berechnet. Des Weiteren wird eine Q-Parität für die drei Datenstrips D0 bis D2 durch eine andere mathematische Formel (z. B. Reed-Solomon-Codierung) berechnet. Andere mathematische Formeln können außerdem verwendet werden. Bei diesem Löschcode gibt es drei primäre Datenknoten und zwei Paritätsknoten. Die Weiterleitungsreihenfolge für jeden primären Datenknoten ist die gleiche: P < Q bedeutet, P kommt vor Q in der Weiterleitungsreihenfolge (die umgekehrte Reihenfolge Q < P ist ebenfalls möglich). Es kann Variationen geben, bei denen die Reihenfolge für einige primäre Datenknoten P < Q und für andere Q < P lautet. Eine gemeinsame Reihenfolge (z. B. P < Q) ist ausreichend, um eine Blockierung oder Sperre zu verhindern.
  • 5 zeigt eine Ereignissequenz 40 (von oben nach unten) für das Paritätsaktualisierungsprotokoll, das gemäß einer Ausführungsform der Erfindung in 4 durch das System 30 implementiert ist, wobei der primäre Datenknoten N0 das Paritätsaktualisierungsprotokoll auslöst. Der Ausdruck {d0'} gibt Fast-Write-Daten an. In diesem Beispiel werden Fast-Write-Daten an drei unterschiedlichen Knoten gespiegelt. Der Ausdruck QOR repräsentiert eine mathematische Formel, die verwendet wird, um den Q-Paritätswert zu berechnen oder zu aktualisieren. Die Knoten N1 und N2 sind untergeordnete Knoten, die abhängige Lesedaten bereitstellen. Diese Leseanforderung für die abhängigen Daten kommt unabhängig von beiden Paritätsknoten N3 und N4, und unter Verwendung des Cache-Speichers wird an jedem der beiden Knoten N1 und N2 lediglich eine Plattenleseoperation benötigt.
  • Die Ausdrücke [d0], [d1] und [d2] repräsentieren Datenversionen, die in die Parität, die durch [p0-2] und [q0-2] repräsentiert wird, integriert sind. Die Ausdrücke p0-2' repräsentieren die Arbeitskopie der neuen Parität, die am Paritätsknoten P geführt wird. In ähnlicher Weise repräsentieren die Ausdrücke q0-2' die Arbeitskopie der neuen Parität, die am Paritätsknoten Q geführt wird. DiskRead[d1] und DiskRead[d2] repräsentieren jeweils die Operation zum Lesen des entsprechenden paritätsintegrierten Datenstrip von der Platte. Die Ausdrücke Read[d1] und Read[d2] repräsentieren eine Nachrichtenanforderung von einem Paritätsknoten an einen entsprechenden abhängigen Datenknoten, die paritätsintegrierte Kopie der abhängigen Daten zu senden. Die Ausdrücke Reply[d1] und Reply[d2] sind die Rückgabenachrichten mit Nutzlast, die die entsprechenden abhängigen Daten enthält. Der Ausdruck Prep&Lock gibt eine Nachricht zwischen zwei Knoten an, die eine Sperre an dem Paritätsstrip fordert.
  • Die Ausdrücke lock[d0'], lock[p0-2], lock[q0-2], unlock[d0'], unlock[p0-2'] und unlock[q0-2'] repräsentieren die Aktionen zum Sperren bzw. Freigeben der angegebenen Daten oder des Paritätsstrip. Die Ausdrücke p0-2' = XOR(d0', d1, d2) und q0-2' = QOR(d0', d1, d2) repräsentieren die mathematische Beziehung, wobei p0-2' aus d0', d1 und d2 bzw. q0-2' aus d0', d1 und d2 berechnet wird. Der Ausdruck Ready (Bereit) gibt eine (Gut)-ACK auf die Prep&Lock-Anforderung an; der Ausdruck Done (Erledigt) gibt eine (Gut)-ACK auf die Anforderungsnachricht „Festschreiben” an.
  • Eine alternative Implementierung, die den Netzwerkverkehr verringert, kann folgendermaßen implementiert werden. Bevor der Paritätsknoten N3 eine ”Prep&Lock”-Anforderung zu dem Paritätsknoten N4 weiterleitet, gibt der Paritätsknoten N3 zunächst Leseanforderungen an die Knoten N1 und N2 für abhängige Daten aus. Der Paritätsknoten N3 berechnet dann den neuen Arbeitswert der Q-Parität (im Auftrag des Paritätsknotens N4) sowie seinen eigenen Arbeitswert. Dann leitet der Paritätsknoten N3 die ”Prep&Lock”-Anforderungsnachricht an den Paritätsknoten N4 mit einer Nutzlast, die den Arbeitswert der Q-Parität enthält, weiter. Dann führt der Paritätsknoten N4 eine Sperre aus und antwortet dem Paritätsknoten N3 sofort mit einer ACK-Nachricht, die ”Bereit” (Ready) angibt. Der Paritätsknoten N3 leitet dann die ACK zum primären Datenknoten N0 zurück. Das hat einen geringeren Netzwerkverkehr zur Folge, der Zustand an Ende der Einrichtungsphase bleibt jedoch der gleiche wie zuvor.
  • 5 repräsentiert ein Schaubild der Ereignis-Sequenz, wobei jede vertikale Linie einen Knoten in dem Speichersystem repräsentiert, der Daten in einem RAID6-Stripe mit 3 Datenstrips und Paritäten P und Q (RAID6(3 + P + Q)) hält und für diese verantwortlich ist. Andere Knoten in dem Speichersystem, die diesen Stripe nicht betreffen, sind nicht dargestellt. Die vertikalen Balken N0, N1 und N2 repräsentieren Knoten, die jeweils einen der drei Datenstrips in dem Stripe halten. Die mit P bzw. Q bezeichneten vertikalen Balken repräsentieren Knoten, die den P-Paritätswert bzw. den Q-Paritätswert für den Stripe halten. Unter den Bezeichnungen befinden sich ein oder zwei Zeichenausdrücke. Der Ausdruck [d0] repräsentiert die paritätsintegrierte Version der Daten für Strip 0, die im Knoten N0 gespeichert sind. In ähnlicher Weise repräsentieren die Ausdrücke [d1], [d2], [p0-2] und [q0-2] die paritätsintegrierten Versionen der Datenstrips d1 und d2 und den P-Paritätsstrip p0-2 (berechnet aus den paritätsintegrierten Daten d0, d1, d2) bzw. den Q-Paritätsstripe q0-2 (ebenfalls berechnet aus den paritätsintegrierten Daten d0, d1, d2). Die Ausdrücke {d0'} unter N0, P und Q repräsentieren neue Fast-Write-Daten für Strip 0, die in den drei Knoten N0, P und Q nachgebildet und noch nicht in die Paritätswerte integriert wurden.
  • In 5 repräsentieren Pfeile Kommunikationsnachrichten, die von dem Knoten am Ende des Pfeils an den Knoten am Kopf des Pfeils gesendet werden. Dicke Pfeile repräsentieren Nachrichten, die Daten (allgemeiner umfangreiche Nutzlasten) enthalten und dünne Pfeile repräsentieren Steuerungsnachrichten oder Antworten, die keine umfangreichen Nutzlasten aufweisen. Die gestrichelten Linien durch die Mitte repräsentieren einen Übergang zwischen zwei Phasen des Protokolls. In der ersten Phase (”Einrichtungsphase”) wird eine Unterbrechung in dem Protokoll durch ein Zurücksetzen (roll back) des Protokolls behandelt. In der zweiten Phase (”Festschreibphase”) wird eine Unterbrechung durch eine aktualisierende Wiederherstellung (roll forward) des Protokolls behandelt. Die Kennzeichnung an der Unterseite gibt die ”Weiterleitungsregel” in Ausführungsformen der Erfindung für die RAID6-Version des Protokolls an, wie auch der Vorsatz ”N0 löst aus, N0 ® P ® Q” (d. h. ein Datenknoten löst das Protokoll durch die erste Nachricht an P aus, der an Q weiterleitet (Antworten folgen dem umgekehrten Weg)). Die Knoten N1 und N2 sind untergeordnete Knoten, die lediglich Lesedaten für das Protokollbereitstellen. Der Ablauf der Zeit ist in 5 von oben nach unten dargestellt. Die relative Größe der zeitlichen Lücken ist nicht unbedingt im Zeitmaßstab. Sie repräsentieren lediglich eine zeitliche Reihenfolge.
  • Das Protokoll wird durch den Knoten N0 ausgelöst und läuft folgendermaßen ab. In der ersten Phase (Einrichtung) sperrt N0 die Version {d0'} der Daten des Strip 0 (”lock[d0']”) gegen eine weitere Aktualisierung (z. B. durch einen neue Host-Schreiboperation). Das dient zum Garantieren, dass an dem Wert d0' keine Änderung erfolgt bis das Protokoll das Integrieren des gegenwärtigen Werts d0' in die Parität abschließt. Eine Variante des Protokolls kann diese Anforderung lockern. Sie kann {d0'} als ”in Einrichtung für Paritätsintegration” markieren. Wenn eine neue Schreiboperation während der Einrichtungsphase eintrifft, kann das Protokoll sicher abgebrochen (zurückgesetzt) werden. Die absolute Blockierung von {d0'} ist lediglich während der Festschreibphase erforderlich.
  • Nachdem lock[d0'] eingestellt ist, sendet N0 eine Nachricht (”Prep&Lock”) an den Paritätsknoten P. Die Nachricht gibt an: (a) Beginn einer Einrichtung zur Paritätsintegration von {d0'} und (b) Sperren der Parität [p0-2], sodass kein anderer Knoten mit diesem Protokoll ablaufen kann. In dieser anfänglichen Nachricht werden keine umfangreichen Daten gesendet. Der Knoten P führt dann drei Aktionen aus: er sperrt [p0-2] wie angewiesen, er leitet die Nachricht an den Knoten Q weiter und er sendet Leseanforderungen (”Read[d1]” und ”Read[d2]”), die eine Kopie ihrer paritätsintegrierten Versionen ihrer Strip-Daten, anfordern, an die untergeordneten Knoten N1 und N2. Beim Empfang der Nachricht ”Prep&Lock” von P führt der Knoten Q die folgenden Aktionen analog zu jenen von P aus. Der Knoten Q sperrt [q0-2] gegen eine Aktualisierung und sendet Leseanforderungsnachrichten an die untergeordneten Knoten N1 und N2 für ihre paritätsintegrierten Daten. Der Sperrschritt in Q ist nicht wesentlich, wenn die Weiterleitungsregel des Protokolls die Nachricht stets über P sendet, da die Sperre bei P das Eintreffen aller widersprüchlichen Nachrichten bei Q ausschließt (z. B. in 7 ist das nicht der Fall).
  • Wenn Q alle angeforderten Leseantworten empfangen hat, berechnet er einen neuen Wert q0-2' aus dem neuen Wert d0' und den empfangenen Werten d1 und d2 unter Verwendung der QOR-Funktion für den Q-Paritätswert. An diesem Punkt sendet Q die Antwort ”Bereit” (Ready) zum Knoten P. Wenn in ähnlicher Weise P alle seine angeforderten Leseantworten empfangen hat, berechnet er einen neuen Wert p0-2' aus dem neuen Wert d0' und den empfangenen Werten d1 und d2 unter Verwendung der einfachen XOR-Funktion. Nach Beendigung dieser Berechnung und dem Empfangen der ”Bereit”-Antwort von Q sendet der Knoten P eine ”Bereit”-Antwort an den veranlassenden Datenknoten N0. Beim Empfang dieser Antwort von P beendet N0 seinen Teil in der Einrichtungsphase und die Einrichtungsphase ist beendet.
  • Die Festschreibphase beginnt mit einer Nachricht ”Festschreiben” (Commit) von N0 an P, der sie an Q weiterleitet. Beim Eintreffen bei Q schreibt Q die berechnete Kopie q0-2' als die ”integrierte” Kopie fest (wandelt sie um), gibt ihren Paritätswert frei (ermöglicht, dass andere Aktualisierungen auftreten) und sendet die Antwortnachricht ”Erledigt” (Done) zurück an P. Q hat nun seine Rolle in dem Protokoll beendet. P führt beim Empfang der Antwort ”Erledigt” von Q die analogen Aktionen aus: Festschreiben (Umwandeln) der berechneten Kopie p0-2' als die ”integrierte” Kopie, Freigeben ihres Paritätswerts (ermöglicht andere Paritätsaktualisierungsprotokolle von anderen Knoten) und antwortet N0 mit der ”Erledigt”-Nachricht. Schließlich schreibt N0 beim Empfang seiner Antwort ”Erledigt” von P seine Kopie d0' als die ”integrierte” Kopie fest und gibt d0' frei, wodurch ermöglicht wird, dass neue Aktualisierungen an den gleichen Adressenort geschrieben werden. Das beendet die Festschreibphase (und schließt außerdem das Protokoll ab).
  • Zwei Varianten dieses Protokolls können verwendet werden, um die Anforderung an die Netzwerkbandbreite in der Einrichtungsphase zu vermindern. In der ersten Variante leitet P die Nachricht ”Prep&Lock” an Q weiter und Q sperrt seine Parität q0-2 und antwortet mit ”Lock-In-Place”. Q gibt keine Lesebefehle für Daten von N1 und N2 aus. Wenn P die Lesedaten von N1 und N2 empfängt, berechnet P die beiden Werte p0-2' und q0-2' (anstelle von Q). Dann sendet P den berechneten Wert q0-2' an Q, der mit einer ”Bereit”-Nachricht antwortet. In der zweiten Variante leitet P die Anforderung ”Prep&Lock” nicht direkt weiter. Er wartet stattdessen auf die Lesedaten von N1 und N2 und berechnet die Werte von p0-2' und q0-2' (wieder anstelle von Q). P hängt dann die Daten q0-2' an die Nachricht ”Prep&Lock” an, die er nun an Q weiterleitet. Q antwortet wie zuvor mit einer Nachricht ”Bereit” (ohne die Notwendigkeit, Leseanforderungen an N1 und N2 zu senden). An diesem Punkt ist der Zustand von P und Q identisch mit dem Zustand in 5 unmittelbar vor dem Senden der ”Bereit”-Antwort von P an N0. Der Rest des Protokolls wird in der oben beschriebenen Weise beendet. Diese beiden Varianten verringern die Anforderungen an Netzwerkbandbreite: lediglich eine umfangreiche Nachricht wird an Q gesendet (der berechnete Wert von q0-2') anstelle von zwei umfangreichen Nachrichten ([d1] und [d2]). Für breitere RAID6-Stripes gibt es in diesem Varianten trotzdem lediglich eine umfangreiche Nachricht an Q, jedoch zusätzliche Leseantwort-Nachrichten von anderen untergeordneten Knoten.
  • WEAVER
  • 6 zeigt ein beispielhaftes Datenspeichersystem 50 mit verteilter Redundanz, das Datenstripes D0 bis D3 und die Parität (p23, P03, P01, P12) für den Weaver-Code an vier Knoten (N0 bis N3) mit einer Fehlertoleranz zwei veranschaulicht. Zu Entwurfsmerkmalen von Weaver-Codes gehören: (a) Anordnung von Daten- und Paritätsblöcken in dem gleichen Strip, (b) teilweise begrenzte Parität, und (c) Ausgeglichenheit und Symmetrie. Diese Codes sind im Allgemeinen nicht in Bezug auf maximale Distanz trennbar (MDS), besitzen jedoch eine optimale Speichereffektivität unter allen Codes mit teilweise beschränkter Parität. Weaver-Codes sind beschrieben in James Lee Hafner, ”WEAVER Codes: Highly Fault Tolerant Erasure Codes for Storage Systems”, veröffentlicht auf http://www.usenix.org/events/fast05/tech/full papers/hafner weaver/hafner we aver.pdf, Dezember 2005. Dieser Löschcode ist nützlich bei dem RO-Paritätsaktualisierungsprotokoll, da jeder Paritätswert als der XOR-Wert (Exklusiv-ODER) aus lediglich zwei Datenwerten berechnet wird.
  • In 6 führt jeder Knoten drei Aufgaben in diesem Löschcode aus. Jeder Knoten ist ein primärer Datenknoten und jeder Knoten ist außerdem ein Paritätsknoten für zwei weitere primäre Datenknoten. In diesem Löschcode weist jeder Datenknoten zwei Paritätsknoten auf, mit denen er sich koordinieren muss.
  • Die zwei Paritätsknoten sind für jeden primären Datenknoten unterschiedlich. Die Reihenfolge des ersten und zweiten Paritätsknotens für jeden primären Datenknoten wird in Bezug auf die durch die Knoten gehaltene Parität lexikografisch ausgeführt. Demzufolge gilt N2 < N1 < N3 < N0, da N0 die Parität P01 hält, N1 die Parität P03 hält, N3 die Parität P12 hält und N0 die Parität P23 hält. Jeder Datenknoten sendet seine erste Nachricht des Paritätsaktualisierungsprotokolls an den Knoten mit niedrigster Parität in dieser Folge, der die Parität für diesen Datenknoten aufweist, und der Knoten mit niedrigster Parität leitet die Protokollnachricht an den Knoten mit nächstniedriger Parität weiter, der eine Parität für diese Daten aufweist. Es ergibt sich speziell der folgende Nachrichtenverkehr:
    N0 sendet Nachricht an N2, der sie an N1 weiterleitet,
    N1 sendet Nachricht an N2, der sie an N3 weiterleitet,
    N2 sendet Nachricht an N3, der sie an N0 weiterleitet,
    N3 sendet Nachricht an N1, der sie an N0 weiterleitet.
  • Die Knoten abhängiger Daten für jeden Paritätsknoten sind unterschiedlich. P01 wird aus D0 und D1 berechnet, und P03 wird aus D0 und D3 berechnet. Daher sind für P01 (im Knoten N2) in Bezug auf D0 die abhängigen Daten D1, und für P03 (im Knoten N1) sind D3 die abhängigen Daten für D0. Das heißt, jeder Paritätsknoten sieht einen anderen Teil der abhängigen Daten für D0.
  • 7 zeigt eine Ereignissequenz 60 (von oben nach unten) für das Paritätsaktualisierungsprotokoll, das durch das System 50 von 6 gemäß einer Ausführungsform der Erfindung implementiert ist, wobei der Knoten N0 das Protokoll auslöst. Der Ausdruck {d0'} gibt Fast-Write-Daten an. In diesem Beispiel werden die Fast-Write-Daten in drei verschiedenen Knoten gespiegelt.
  • 7 repräsentiert eine Ausführungsform der Erfindung für den WEAVER-Code (tolerant in Bezug auf zwei Fehler in 4 Knoten). Die Struktur von 7 ist jener von 5 ähnlich. Die vertikalen Balken repräsentieren Knoten in dem System, in diesem Fall gibt es jedoch lediglich 4 Knoten, die mit N0, N1, N2 und N3 bezeichnet sind. Die zeitliche Reihenfolge ist von oben nach unten dargestellt, Pfeile geben Nachrichten an, wobei Doppelpfeile umfangreiche Nachrichten (mit Nutzlast) angeben und einfache Pfeile Steuernachrichten (ohne Nutzlast) angeben. Bei diesem Code trägt jeder Knoten eine Verantwortung sowohl für eine Datenknotenfunktion als auch für eine Paritätsknotenfunktion. In Analogie zu 5 spielt N2 die Rolle von P und N2 spielt die Rolle von Q für den Datenknoten N0. N2 und N1 halten Paritätswerte (p01 bzw. p03), zu denen die Daten d0 berechnet werden. Die Weiterleitungsregel für N0 lautet N0 ® N2 ® N1. Wie in 7 unten angegeben ist die Weiterleitungsregel für jeden Datenknoten unterschiedlich (das steht im Gegensatz zu RAID6 von 5, wo die Reihenfolge für jeden Datenknoten stets gleich ist). Der Knoten N1 sendet z. B. seine Nachrichten des Paritätsaktualisierungsprotokolls zuerst an N2 und dann an N3. Eine Ausführungsform der Regel ist durch eine lexikografischen Reihenfolge von Knoten durch die Paritätsbezeichnungen definiert. Weitere Ausführungsformen sind möglich, solange es keine Zyklen gibt.
  • Unter den Knotenkennzeichnungen stehen Zeichen, die paritätsintegrierte Versionen von Daten und Parität repräsentieren. Am Knoten N0 gibt z. B. [d0, p23] an, dass N0 als der primäre Eigentümer für Daten auf dem Strip0 und außerdem als Paritätseigentümer für die Parität p23 = XOR(d2, d3) verantwortlich ist. Die Klammern ([]) geben an, dass diese beiden Werte die paritätsintegrierten Werte sind. In ähnlicher Weise repräsentieren die Ausdrücke [d1, p03] für N1, [d2, p01] für N2 und [d3, p12] für N3 die paritätsintegrierten Werte von d1, d2 und d3 und die Paritätswerte p03 = XOR(d0, d3), p01 = XOR(d0, d1) und p12 = XOR(d1, d2). Die Ausdrücke {d0'} unter den Kennzeichnungen für N0, N1 und N2 geben an, dass jeder von diesen Knoten eine neue Version von Daten für Strip 0 (d0') hält, die noch nicht paritätsintegriert ist.
  • Der restliche Teil der Beschreibung des Sequenzschaubilds von 7 ist jenem von 5 ähnlich, wenn P durch N2 und Q durch N1, p0-2 durch p01 und q0-2 durch p03 sowie QOR durch das einfache XOR ersetzt werden. Es gibt lediglich zwei bedeutende Unterschiede: (a) es gibt lediglich eine Leseanforderung eines untergeordneten Knotens, die für jeden Paritätsknoten erforderlich ist, und (b) einige Nachrichten können zur Effizienz zusammengelegt werden. Das wird in der folgenden Beschreibung zur weiteren Klarheit genauer beschrieben.
  • Wie in 5 löst der Knoten NO das Protokoll aus, um seine Parität zu aktualisieren, indem zuerst seine Kopie {d0'} gegen eine Aktualisierung gesperrt wird. Er sendet dann die Anforderung ”Prep&Lock” zu seinem ersten Paritätsknoten N2 (der p01 hält). Der Knoten N2 sperrt seine Parität gegen eine Aktualisierung und leitet die Nachricht ”Prep&Lock” zu dem zweiten Paritätsknoten in der Weiterleitungsreihenfolge von N0 weiter (wobei N1 p03 hält). Um eine bessere Effektivität zu ermöglichen, nimmt N2 in der Nachricht ”Prep&Lock” eine Leseanforderung für die untergeordneten Daten auf, die er von N1 benötigt, und zwar ”Read[d1]”, eine Leseanforderung für die paritätsintegrierte Version der Daten d1 von N1 (das kann durch separate Nachrichten ausgeführt werden). Beim Empfang dieser Nachricht unternimmt der Knoten N1 drei Aktionen (wobei die Reihenfolge unwichtig ist): (a) er sperrt seine Parität p03 gegen eine Aktualisierung, (b) er führt eine Plattenleseoperation (”DiskRead[d1]”) aus und (c) er sendet eine Leseanforderung (”Read[d3]”) an seinen untergeordneten Knoten N3. Der Knoten N3 liest die Daten [d3] von der Platte und sendet die Daten daraufhin zurück zum Anforderer N1. Beim Empfang berechnet N1 seinen neuen Paritätswert p03' aus den neuen Daten d0' und den empfangenen Daten d3. Der Knoten N1 sendet eine Antwort an den Knoten N2, um die anfängliche Nachricht ”Prep&Lock + Read[d1]” auszulösen, die anzeigt, dass er sowohl ”Bereit” ist (die Einrichtung von p03' beendet hat) als auch die umfangreichen Daten d1 enthält, die in dem Leseabschnitt der Nachricht angefordert wurden (wenn als separate Nachricht gesendet, kann diese zweifache Antwort als separate Antworten ausgeführt werden). Nach dem Berechnen seines neuen Paritätswerts p01' aus den neuen Daten d0' und den empfangenen Daten [d1] sendet der Knoten N2 die Antwort ”Bereit” zurück zum anfänglichen Anforderer N0. Das beendet die Einrichtungsphase des Protokolls. Die Festschreibphase des Protokolls ist mit jener identisch, die oben für 5 beschrieben wurde, wenn P durch N2, Q durch N1, p0-2' durch p01' und q0-2' durch p03' ersetzt werden.
  • Die nicht zyklische Reihenfolge von 7 hält die Bedingungen ein, um eine Blockierung oder Sperre zu verhindern (wodurch ermöglicht ist, dass wenigstens ein von zwei gleichzeitig ablaufenden Paritätsaktualisierungsprotokollen ablaufen kann, unabhängig davon, ob das andere zurückgewiesen wird oder pausiert).
  • Nochmals in den 4 und 6 weisen im Gegensatz zu dem RAID6-Beispiel von 4 die Knoten N1 und N2 (die die Parität für Daten im Knoten N0 halten) für die Weaver-Implementierung in 6 unterschiedliche Anforderungen für abhängige Daten auf. Zusätzlich fordert der Knoten N2 abhängige Daten des Knotens N1 (Knoten N1 fordert abhängige Daten des Knotens N3). Des Weiteren wird in 7 eine Leseanforderung für abhängige Daten vom Knoten N2 an den Knoten N1 mit der Anforderung ”Prepare&Lock” zusammengelegt. Das stellt keine Forderung dar, es minimiert jedoch den Nachrichten-Overhead auf Kosten der Serialisierung der Leseanforderungen für abhängige Daten. In einer alternativen Implementierung kann der Knoten N2 lediglich die Anforderung ”Prepare&Lock” an den Knoten N1 weiterleiten. Dann kann jeder der Knoten N1 und N2 gleichzeitig seine eigenen Leseanforderungen für abhängige Daten ausgeben. Wenn der Knoten N1 die Leseantwort empfängt und seinen Arbeits-Paritätswert berechnet, kann er auf die Anforderung ”Prepare&Lock” vom Knoten N2 mit einer ACK-Nachricht antworten, die ”Bereit” angibt. Wenn der Knoten N2 sowohl die Antwort ”Bereit” als auch die abhängige Leseantwort vom Knoten N1 empfangen hat und auch seinen Arbeits-Paritätswert berechnet hat, kann der Knoten N2 dem Knoten N0 mit einer ACK-Nachricht, die ”Bereit” angibt, antworten, wodurch die Einrichtungsphase des RO-Paritätsaktualisierungsprotokolls beendet wird.
  • In den Ausdrücken [d0, p23], [d1, p03], [d2, p01] und [d3, p12] repräsentieren die Teilausdrücke d0, d1, d2 und d3 Datenversionen, die in ihre entsprechenden Paritätsversionen integriert sind. Die Teilausdrücke p23, p03, p01 und p12 sind eine Parität, die integrierte Parität für die Daten mit der angegebenen Nummernbezeichnung (somit ist p01 die integrierte Parität für d0 und d1). Der Ausdruck p03' repräsentiert die Arbeitskopie der neuen Parität, die im Knoten N1 gesichert wird, der den primären Datenknoten für d1 und den zweiten Paritätsknoten für d0 und den ersten Paritätsknoten für N3 darstellt.
  • In ähnlicher Weise repräsentiert der Ausdruck p01' die Arbeitskopie der neuen Parität, die im Knoten N2 gesichert wird (der primäre Datenknoten für d2 und der erste Paritätsknoten sowohl für d0 als auch für d1). Die Ausdrücke Read[d1] und Read[d3] repräsentieren eine Nachrichtenanforderung von einem Paritätsknoten an den entsprechenden abhängigen Datenknoten, die paritätsintegrierte Kopie der abhängigen Daten zu senden. Die Ausdrücke Reply[d1] und Reply[d3] sind die Rückgabenachrichten mit Nutzlast, die die entsprechenden abhängigen Daten enthält. DiskRead[d1] und DiskRead[d3] repräsentieren jeweils die Operation des Lesens des entsprechenden paritätsintegrierten Datenstrip von der Platte. Der Ausdruck Prep&Lock gibt eine Nachricht zwischen zwei Knoten an, die eine Sperre an den betroffenen Daten oder an dem Datenstrip fordert.
  • Die Ausdrücke lock[d0'], lock[p03], lock[p01], unlock[d0'], unlock[p03'] und unlock[p01'] repräsentieren die Aktionen des Sperrens bzw. Freigebens der angegebenen Daten oder des Paritätsstrip. Die Ausdrücke p03' = XOR(d0', d3) und p01' = XOR(d0', d1) repräsentieren die mathematische Beziehung, durch die p03' aus d0' und d3 bzw. p01' aus d0' und d1 berechnet werden. Das Pfeildiagramm von 7 unten gibt die Weiterleitungsreihenfolge für jeden primären Datenknoten an seinen ersten und zweiten Paritätsknoten an. Der Ausdruck Bereit gibt eine (Gut)-ACK auf die Anforderung Prep&Lock an; der Ausdruck Erledigt gibt eine (Gut)-ACK auf die Anforderungsnachricht „Festschreiben” an.
  • Ein datengesteuertes RO-Protokoll zur Paritätsaktualisierung in einem Speichersystem mit verteilter Redundanz mit Fast-Write stellt daher die folgenden Merkmale bereit. Die Paritätsreihenfolge für jeden primären Datenknoten verhindert, dass zwei RO-Paritätsaktualisierungsprotokolle, die an einem Paritätsknoten überlappen, gleichzeitig ablaufen, während ein Fortschritt an wenigstens einem der Paritätsprotokolle möglich ist. In einem Beispiel blockiert ein auslösender primärer Datenknoten anfangs Paritätsaktualisierungsprotokolle für drei Knoten (sich selbst und zwei weitere). Eine erste Nachricht von dem auslösenden Knoten ist an einen Knoten in der Protokollkette der restlichen Knoten gerichtet. Die erste Gruppe von Nachrichten (d. h. die erste Gruppe von Weiterleitungsnachrichten der Einrichtungs- und Sperrphase (nicht die ACK-Antworten)), die einen Schnittpunktknoten erreichen, dominieren, während die anderen Nachrichten in der ersten Phase verzögert oder zurückgewiesen werden (d. h. Einrichtungs- und Sperrphase). Zwei RO-Paritätsaktualisierungsprotokolle, die in keinem Paritätsknoten überlappen, können simultan (gleichzeitig) ablaufen. Beim Vorhandensein eines Fehlers während eines RO-Paritätsaktualisierungsprotokolls in der Einrichtungsphase wird das RO-Paritätsaktualisierungsprotokoll zurückgesetzt, wobei der Nachfolger-Knoten in der Weiterleitungsreihenfolge das Protokoll in dieser Phase schnell abbricht (sämtliche Ergebnisse werden verworfen und es erfolgt ein neuer Versuch, nachdem alle Knoten stabilisiert wurden). Ferner wird das Protokoll in der Festschreibphase im Allgemeinen aktualisierend wiederhergestellt, wobei der Nachfolger-Knoten in der Weiterleitungsreihenfolge das Festschreibprotokoll erneut steuert, um eine Konsistenz unter den fortbestehenden Knoten sicherzustellen.
  • Das RO-Paritätsaktualisierungsprotokoll ist anwendbar auf Löschcodes, die eine Fehlertoleranz von zwei oder mehr aufweisen, vorausgesetzt, dass die Paritätsreihenfolge für jeden primären Datenknoten in geeigneter Weise definiert ist. Da es wie angemerkt in dem RO-Paritätsaktualisierungsprotokoll zwei Typen von Knoten gibt (d. h. aktive Teilnehmerknoten und untergeordnete Knoten) führt ein Ausfall eines untergeordneten Knotens während des Betriebs eines entsprechenden RO-Protokolls zu einem sofortigen Rücksetzen. Das ist der Fall, da das RO-Protokoll infolge von nicht verfügbaren Daten von einem untergeordneten Knoten nicht beendet werden kann. Ein Ausfall eines aktiven Teilnehmerknotens hat entweder ein Zurücksetzen (während der Einrichtungsphase) oder eine aktualisierende Wiederherstellung (während der Festschreibphase) zur Folge.
  • Das RO-Paritätsaktualisierungsprotokoll erfordert keine Wechselwirkung oder Kenntnis oder Wiederherstellung des Zustands eines Knotens, der ausgefallen ist und während des Protokolls ersetzt wurde. Die fortbestehenden Knoten des ursprünglichen Protokolls sind die einzigen Knoten bei der Beendigung (oder beim Rücksetzen oder bei der aktualisierenden Wiederherstellung) des Protokolls.
  • Die Anzahl von Fast-Write-Kopien von neuen Daten, die in dem Speichersystem geführt werden, oder dort, wo sie geführt werden, ist nicht wesentlich, da die Kopien nicht in den Paritätsknoten gehalten werden müssen. Wenn eine oder mehrere Fast-Write-Kopien neuer Daten in einem oder mehreren der Paritätsknoten für diese Daten gehalten werden, können diese Kopie verworfen werden, nachdem das Paritätsaktualisierungsprotokoll an einem Paritätsknoten beendet wurde. Wenn eine oder mehrere Fast-Write-Kopien neuer Daten an anderer Stelle in dem Speichersystem gehalten werden, ermöglicht eine explizite Nachricht ”Verwerfbar” von dem primären Datenknoten an die Fast-Write-Halteeinrichtungen eine Freigabe der Ressourcen, die für diese Kopien verwendet werden. Wenn die Fast-Write-Kopien neuer Daten nicht an jedem Paritätsknoten gehalten werden, kann eine Nachricht Prepare&Lock von einem Knoten, der diese Kopie hält, die neuen Daten in seiner Nutzlast enthalten, wodurch diese Kopie an einen Paritätsknoten bereitgestellt wird, der die neuen Fast-Write-Daten nicht hält.
  • Wie einem Fachmann bekannt können die oben erwähnten beispielhaften Architekturen, die oben gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung beschrieben wurden, auf viele Arten implementiert werden, wie etwa als Programmanweisungen zur Ausführung durch einen Prozessor, Softwaremodule, Mikrocode, Computerprogrammprodukt auf computerlesbaren Medien, logische Schaltkreise, anwendungsspezifische integrierte Schaltkreise, Firmware usw. Die Ausführungsformen der Erfindung können die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform oder einer Ausführungsform, die sowohl Hardware- als auch Softwareelemente enthält, annehmen. In einer bevorzugten Ausführungsform ist die Erfindung in Software implementiert, die Firmware, residente Software, Mikrocode usw. enthält, jedoch nicht darauf beschränkt ist.
  • Des Weiteren können Ausführungsformen der Erfindung die Form eines Computerprogrammprodukts annehmen, auf das von einem computernutzbaren oder computerlesbaren Medium zugegriffen werden kann, das Programmcode zur Verwendung durch einen oder in Verbindung mit einem Computer, einer Verarbeitungseinrichtung oder einem Befehlsausführungssystem bereitstellt. Für die Zwecke dieser Beschreibung kann ein computernutzbares oder computerlesbares Medium jede Vorrichtung sein, die das Programm enthalten, speichern, übertragen oder transportieren kann für eine Verwendung durch das oder in Verbindung mit dem Befehlsausführungssystem, der Vorrichtung oder Einheit. Das Medium kann elektronisch, magnetisch, optisch oder ein Halbleitersystem (oder Vorrichtung oder Einheit) sein. Zu Beispielen eines computerlesbaren Mediums gehören ein Halbleiter- oder Festkörperspeicher, Magnetband, eine entnehmbare Computerdiskette, ein RAM, ein Nur-Lese-Speicher (ROM), eine starre Magnetplatte, eine optische Platte usw., sind jedoch nicht darauf beschränkt. Zu gegenwärtigen Beispielen optischer Platten gehören Nur-Lese-Plattenspeicher (CD-ROM), Lese/Schreib-Kompaktdisk (CD-R/W) und DVD.
  • E/A-Einheiten (dazu gehören Tastaturen, Anzeigen, Zeigeeinrichtungen usw., sind jedoch nicht darauf beschränkt) können entweder direkt oder über zwischengeschaltete Steuereinheiten mit dem System verbunden sein.
  • Netzwerkadapter können außerdem mit dem System verbunden sein, um zu ermöglichen, dass das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder fernen Druckern oder Speichereinheiten über zwischengeschaltete private oder öffentliche Netzwerke verbunden wird. Modems, Kabelmodems und Ethernet-Karten sind lediglich einige der gegenwärtig verfügbaren Typen von Netzwerkadaptern. In der obigen Beschreibung sind zahlreiche spezifische Einzelheiten dargestellt. Es sollte jedoch klar sein, dass Ausführungsformen der Erfindung ohne diese spezifischen Einzelheiten realisiert werden können. Es können z. B. allgemein bekannte gleichwertige Komponenten und Elemente anstelle von jenen, die hier beschrieben sind, eingesetzt werden, und in ähnlicher Weise können allgemein bekannte gleichwertige Techniken anstelle der bestimmten Techniken, die offengelegt wurden, eingesetzt werden. In anderen Fällen wurden allgemein bekannte Strukturen und Techniken nicht genau gezeigt, um beim Verständnis dieser Beschreibung eine Verwirrung zu vermeiden.
  • Die Begriffe ”Computerprogrammmedium”, ”computernutzbares Medium”, ”computerlesbares Medium” und ”Computerprogrammprodukt” werden verwendet, um Medien allgemein zu bezeichnen wie etwa Hauptspeicher, Sekundärspeicher, ein entnehmbares Speicherlaufwerk, eine Festplatte, die in einem Festplattenlaufwerk installiert ist, und Signale. Diese Computerprogrammprodukte sind Mittel zum Bereitstellen von Software für das Computersystem. Das computerlesbare Medium ermöglicht dem Computer, Daten, Anweisungen, Nachrichten oder Nachrichtenpakete sowie andere computerlesbare Informationen von dem computerlesbaren Medium zu lesen. Zu dem computerlesbaren Medium können z. B. nichtflüchtige Speicher, wie etwa eine Diskette, ROM, Flash-Speicher, Plattenlaufwerkspeicher, eine CD-ROM und andere permanente Speichereinrichtungen gehören. Es ist z. B. nützlich für den Transport von Informationen wie etwa Daten und Computeranweisungen zwischen Computersystemen.
  • Des Weiteren kann das computerlesbare Medium computerlesbare Informationen umfassen in einem vergänglichem Medium wie etwa eine Netzwerkverbindung und/oder eine Netzwerkschnittstelle, einschließlich eines leitungsgestützten Netzwerks oder eines drahtlosen Netzwerks, die ermöglichen, dass ein Computer derartige computerlesbare Informationen liest. Computerprogramme (auch als Computersteuerlogik bezeichnet) werden im Hauptspeicher und/oder Sekundärspeicher gespeichert. Computerprogramme können auch über eine Datenübertragungsschnittstelle empfangen werden. Wenn derartige Computerprogramme ausgeführt werden, ermöglichen sie, dass das Computersystem die hier erläuterten Merkmale der vorliegenden Erfindung ausführt. Wenn die Computerprogramme ausgeführt werden, ermöglichen sie insbesondere, dass der Prozessor oder der Mehrkern-Prozessor die Merkmale des Computersystems ausführt. Demzufolge stellen derartige Computerprogramme Steuereinheiten des Computersystems dar.
  • Der hier verwendete Begriff ”computerlesbares Medium” bezeichnet im Allgemeinen jedes Medium, das an der Bereitstellung von Anweisungen an einen Prozessor zur Ausführung beteiligt ist. Ein derartiges Medium kann viele Formen annehmen, dazu gehören nichtflüchtige Medien, flüchtige Medien und Übertragungsmedien, ohne darauf beschränkt zu sein. Zu nichtflüchtigen Medien gehören z. B. optische und magnetische Platten. Zu flüchtigen Medien gehören dynamische Speicher. Zu übertragungsmedien gehören Koaxialkabel, Kupferleitungen und Lichtleitfaseroptik, einschließlich der Leitungen, die ein Bus umfasst. übertragungsmedien können außerdem die Form von Schall- oder Lichtwellen haben wie jene, die während Funkwellen- und Infrarot-Datenübertragungen erzeugt werden.
  • Zu üblichen Formen von computerlesbaren Medien gehören z. B. Disketten, eine flexible Platte, eine Festplatte, Magnetband, oder jedes andere magnetische Medium, ein CD-ROM, jedes andere optische Medium, Stanzkarten, Papierband, jedes andere physische Medium mit Lochmustern, ein RAM, ein PROM, ein EPROM, ein Flash-EPROM, jeder andere Speicherchip oder ein Steckmodul, eine Trägerwelle, die nachfolgend beschrieben wird, oder jedes andere Medium, von dem ein Computer lesen kann.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Operation von möglichen Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt, der eine oder mehrere ausführbare Anweisungen zum Implementieren der spezifizierten logischen Funktion(en) umfasst, repräsentieren. Es sollte außerdem angemerkt werden, dass in alternativen Implementierungen die Funktionen, die in dem Block angegeben sind, in anderen als der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können manchmal in Abhängigkeit von der beteiligten Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block der Darstellung der Blockschaubilder und/oder des Ablaufplans durch Systeme mit spezieller zweckgebundener Hardware, die die spezifizierten Funktionen oder Wirkungen ausführen, oder durch Kombinationen aus spezieller zweckgebundener Hardware und Computeranweisungen implementiert sein kann.
  • Die hier verwendete Terminologie dient lediglich dem Zweck der Beschreibung bestimmter Ausführungsformen und ist nicht vorgesehen, um die Erfindung zu beschränken. Es ist vorgesehen, dass die hier verwendeten Singularformen ”ein” und ”der, die, das” ebenso die Pluralformen enthalten, falls im Kontext nicht anders deutlich angegeben. Es ist ferner klar, dass die in dieser Beschreibung verwendeten Begriffe ”umfasst” und/oder ”umfassend” das Vorhandensein von genannten Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht das Vorhandensein oder das Hinzufügen eines oder mehrerer weiterer Merkmale, ganzer Zahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen hiervon ausschließen.
  • Die entsprechenden Strukturen, Materialien, Wirkungen und Ersetzungen aller Mittel oder Schritte plus Funktionselemente in den nachfolgenden Ansprüchen sollen jede Struktur, jedes Material oder jede Wirkung zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen, die speziell beansprucht sind, enthalten. Die Beschreibung der vorliegenden Erfindung wurde für den Zweck der Veranschaulichung und Beschreibung präsentiert, es ist jedoch nicht vorgesehen, dass sie für die Erfindung in der offenbarten Form erschöpfend oder einschränkend ist. Viele Modifikationen und Variationen werden für einen Fachmann offensichtlich sein, ohne vom Umfang der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erklären und um andere Fachleute zu befähigen, die Erfindung zu verstehen, da verschiedene Ausführungsformen mit verschiedenen Modifikationen für den bestimmten vorgesehen Verwendungszweck geeignet sind.
  • Obwohl bestimmte beispielhafte Ausführungsformen beschrieben und in den beigefügten Zeichnungen gezeigt wurden, sollte klar sein, dass derartige Ausführungsformen für die umfangreiche Erfindung lediglich erläuternd und nicht einschränkend sind und dass diese Erfindung nicht auf die speziellen Konstruktionen und Anordnungen, die gezeigt und beschrieben wurden, beschränkt ist, da verschiedene weitere Modifikationen für einen Fachmann offensichtlich sind.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 6983396 B2 [0005]
    • US 5627990 [0006]
    • US 6542960 B1 [0007]
    • US 6446220 B1 [0008]
    • US 20080109616 A1 [0009]
  • Zitierte Nicht-Patentliteratur
    • http://www.usenix.org/events/fast05/tech/full papers/hafner weaver/hafner we aver.pdf, Dezember 2005 [0076]

Claims (20)

  1. Verfahren zum Aufrechterhaltung von Zuverlässigkeit einer Datenspeicherung in einem verteilten Writeback-Datenspeichersystem, das mehrere Knoten enthält, wobei jeder Knoten ein Array aus fehlerunabhängigen Datenspeichervorrichtungen aufweist, wobei das Verfahren Folgendes aufweist: Speichern von Informationen als eine Menge von Stripes, wobei jeder Stripe eine Sammlung aus wenigstens einem Datenstrip und zugeordneten Paritätsstrips enthält, wobei die Stripes über einen primären Datenknoten und mehrere entsprechende Paritätsknoten verteilt sind; wobei der primäre Datenknoten für jeden Datenstrip, der den Datenstrip sichert, eine erste Kopie von Daten hält, und jeder Paritätsknoten, der einen Paritätsstrip sichert, eine Parität für die Datenstrips hält; und Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls zum Sichern einer Paritätskohärenz, wobei der primäre Datenknoten die Paritätskohärenz bei den entsprechenden Paritätsknoten unabhängig von anderen Datenknoten steuert, um die relevanten Paritätsstrips für den primären Datenknoten kohärent zu halten; und wobei das Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls ferner ein Ermitteln eines Paritätswerts anhand von Daten, die von einer Differenz zwischen neuen Daten und vorhandenen Daten verschieden sind, umfasst, sodass eine neue Parität anhand von neuen Daten und abhängigen Daten berechnet wird, wobei abhängige Daten in Bezug auf einen Datenwert andere Daten einschließen, die in einem entsprechenden Paritätswert codiert sind.
  2. Verfahren nach Anspruch 1, wobei: jede Parität anhand einer anderen Paritätsberechnungsformel berechnet wird; und Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls ferner ein Ermitteln einer Parität aufweist, indem: in einer Einrichtungsphase: der primäre Datenknoten eine Vorbereitungsnachricht an einen ersten Paritätsknoten sendet, wobei jeder Paritätsknoten die Vorbereitungsnachricht in einer im Voraus definierten Sequenz an einen nächsten Paritätsknoten weiterleitet; jeder Paritätsknoten Anforderungsnachrichten an die anderen Datenknoten für ihre abhängigen Daten sendet und eine neue Parität aus empfangenen abhängigen Daten und den neuen Daten in dem primären Datenknoten und/oder den paritätsintegrierten Daten von abhängigen Datenknoten berechnet; beginnend von dem letzten Paritätsknoten in der Sequenz jeder Paritätsknoten eine Bestätigungsnachricht an einen unmittelbar vorhergehenden Paritätsknoten in der Sequenz sendet; und der erste Paritätsknoten eine Bestätigungsnachricht an den primären Datenknoten sendet, wodurch eine Beendigung der Einrichtungsphase angezeigt wird.
  3. Verfahren nach Anspruch 2, wobei das Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls ferner Folgendes Vorbereitungsnachricht: in einer Festschreibphase: der primäre Datenknoten eine Festschreibe-Nachricht an den ersten Paritätsknoten sendet, wobei jeder Paritätsknoten die Festschreibe-Nachricht an einen nächsten Paritätsknoten in einer im Voraus definierten Sequenz sendet; jeder Paritätsknoten seine neu berechneten Paritätswerte festschreibt; beginnend vom letzten Paritätsknoten in der Sequenz jeder Paritätsknoten eine Bestätigungsnachricht an einen unmittelbar vorhergehenden Paritätsknoten in der Sequenz sendet; und der erste Paritätsknoten eine Bestätigungsnachricht an den primären Datenknoten sendet, wodurch die Beendigung der Festschreibphase angezeigt wird.
  4. Verfahren nach Anspruch 3, ferner aufweisend: der primäre Datenknoten führt wenigstens zwei Versionen der Daten für einen Strip, eine Fast-Write-Version und eine paritätsintegrierte Version, wobei die Fast-Write-Kopie durch einen Host oder Client in ein verteiltes Writeback-Datenspeichersystem geschrieben und nicht in einen Paritäts-Strip integriert wurde und wobei die paritätsintegrierte Kopie in einen Prozess zum Definieren eines Paritätswerts eingebunden wurde; und Überführen der Fast-Write-Version in die paritätsintegrierte Version bei Beendigung eines Paritätsaktualisierungsprotokolls an allen relevanten Paritätsknoten, wodurch die vorherige paritätsintegrierte Version verworfen wird.
  5. Verfahren nach Anspruch 4, das ferner in jedem Paritätsknoten aufweist: Sichern einer Arbeitsversion seines Paritätsstrip-Werts, der einen aktuellen paritätsintegrierten Wert für jeden der Datenstrips enthält, die zu diesem Paritätsstrip berechnet wurden; und aus der Sicht jedes Paritätsknotens wandelt am Ende der Paritätsaktualisierung der Paritätsknoten die Arbeitsversion in den paritätsintegrierten Wert um und verwirft den vorherigen paritätsintegrierten Wert.
  6. Verfahren nach Anspruch 1, ferner aufweisend: während der Einrichtungsphase steuert bei einem Knotenfehler der niedrigste fortbestehende Knoten in der Weiterleitungssequenz eine, Abbruchsequenz für das Read-Other-Paritätsaktualisierungsprotokoll; und während der Festschreibphase steuert bei einem Knotenfehler der niedrigste fortbestehende Knoten in der Weiterleitungssequenz einen Neustart der Festschreibphase für das Read-Other-Paritätsaktualisierungsprotokoll.
  7. Verfahren nach Anspruch 1, ferner aufweisend: Das Speichern von Informationen weist ferner ein Speichern von Informationen als eine Menge von Stripes auf, wobei jeder Stripe eine Sammlung mehrerer Datenstrips und zugeordneter Paritätsstrips enthält, wobei die Stripes über mehrere entsprechende primäre Datenknoten und mehrere entsprechende Paritätsknoten verteilt sind; der primäre Datenknoten für jeden Datenstrip, der den Datenstrip sichert, eine erste Kopie von Daten hält, und jeder Paritätsknoten, der einen Paritätsstrip sichert, eine Parität für die mehreren Datenstrips hält; Speichern von Informationen als mehrere Stripes, wobei jeder Stripe eine Sammlung eines Datenstrip und zugeordneter Paritätsstrips enthält, die über einen primären Datenknoten und mehrere entsprechende Paritätsknoten verteilt sind; Bereitstellen einer speziellen Weiterleitungsreihenfolge für Paritätsknotennachrichten für jeden primären Datenknoten und entsprechende Paritätsknoten; und jeder primäre Datenknoten steuert die Paritätskohärenz bei seinen entsprechenden Paritätsknoten, unabhängig von anderen Datenknoten, indem relevante Paritätsstrips für den primären Datenknoten kohärent gehalten werden.
  8. Verteiltes Writeback-Datenspeichersystem zur Aufrechterhaltung von Zuverlässigkeit einer Datenspeicherung, das Folgendes umfasst: mehrere Knoten, wobei jeder Knoten ein Array aus fehlerunabhängigen Datenspeichervorrichtungen umfasst; wobei die Knoten zum Speichern von Informationen als eine Menge von Stripes konfiguriert ist, wobei jeder Stripe eine Sammlung von wenigstens einem Datenstrip und zugeordneten Paritätsstrips enthält, wobei die Stripes über einen primären Datenknoten und mehrere entsprechende Paritätsknoten verteilt sind, wobei der primäre Datenknoten für jeden Datenstrip zum Sichern des Datenstrip, der eine erste Kopie von Daten hält, konfiguriert ist und jeder Paritätsknoten zum Sichern eines Paritätsstrip, der eine Parität für die Datenstrips hält, konfiguriert ist; wobei der primäre Datenknoten ferner konfiguriert ist, um ein Read-Other-Paritätsaktualisierungsprotokoll zum Sichern einer Paritätskohärenz auszuführen, das das Steuern der Paritätskohärenz bei den entsprechenden Paritätsknoten, unabhängig von anderen Datenknoten enthält, um relevante Paritätsstrips für den primären Datenknoten kohärent zu halten; und wobei das Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls ferner ein Ermitteln eines Paritätswerts anhand von Daten, die von einer Differenz zwischen neuen Daten und abhängigen Daten verschieden sind, umfasst, sodass ein neuer Paritätswert anhand von neuen Daten und abhängigen Daten berechnet wird, wobei abhängige Daten in Bezug auf einen Datenwert andere Daten, die in einem entsprechenden Paritätswert codiert sind, einschließen.
  9. System nach Anspruch 8 wobei: jeder Paritätswert anhand von unterschiedlichen Paritätsberechnungsformeln berechnet wird; und in einer Einrichtungsphase: der primäre Datenknoten eine Vorbereitungsnachricht an einen ersten Paritätsknoten sendet, wobei jeder Paritätsknoten die Vorbereitungsnachricht an einen nächsten Paritätsknoten in einer im Voraus definierten Sequenz weiterleitet; jeder Paritätsknoten Anforderungsnachrichten an die anderen Datenknoten für ihre abhängigen Daten sendet und eine neue Parität aus empfangenen abhängigen Daten und den neuen Daten in dem primären Datenknoten und/oder den paritätsintegrierten Daten von abhängigen Datenknoten berechnet; beginnend am letzten Paritätsknoten in der Sequenz jeder Paritätsknoten eine Bestätigungsnachricht an einen unmittelbar vorhergehenden Paritätsknoten in der Sequenz sendet; und der erste Paritätsknoten eine Bestätigungsnachricht an den primären Datenknoten sendet, wodurch eine Beendigung der Einrichtungsphase angezeigt wird.
  10. System nach Anspruch 9, wobei: in einer Festschreibphase: der primäre Datenknoten eine Festschreibe-Nachricht an den ersten Paritätsknoten sendet, wobei jeder Paritätsknoten die Festschreibe-Nachricht an einen nächsten Paritätsknoten in einer im Voraus definierten Sequenz weiterleitet; jeder Paritätsknoten seine neu berechneten Paritätswerte festschreibt; beginnend von dem letzten Paritätsknoten in der Sequenz jeder Paritätsknoten eine Bestätigungsnachricht an einen unmittelbar vorhergehenden Paritätsknoten in der Sequenz sendet; und der erste Paritätsknoten eine Bestätigungsnachricht an den primären Datenknoten sendet, wodurch eine Beendigung der Festschreibphase angezeigt wird.
  11. System nach Anspruch 10, wobei: der primäre Datenknoten wenigstens zwei Versionen der Daten für einen Strip, eine Fast-Write-Version und eine paritätsintegrierte Version, führt, wobei die Fast-Write-Kopie durch einen Host oder Client in das verteilte Writeback-Datenspeichersystem geschrieben wurde und nicht in einen. Paritätsstrip integriert ist und wobei die paritätsintegrierte Kopie in einen Prozess zum Definieren eines Paritätswerts einbezogen wurde.
  12. System nach Anspruch 11, wobei jeder Paritätsknoten ferner für Folgendes konfiguriert ist: Führen einer Arbeitsversion seines Paritätsstripwerts, der einen gegenwärtigen paritätsintegrierten Wert für jeden der Datenstrips, die in diesen Paritätsstrip berechnet wurden, umfasst; und aus Sicht jedes Paritätsknotens am Ende der Paritätsaktualisierung der Paritätsknoten die Arbeitsversion in den paritätsintegrierten Wert umwandelt und den vorherigen paritätsintegrierten Wert verwirft.
  13. System nach Anspruch 8, wobei: bei einem Knotenfehler während der Einrichtungsphase der niedrigste fortbestehende Knoten in der Weiterleitungssequenz eine Abbruchsequenz für das Read-Other-Paritätsaktualisierungsprotokoll steuert; und bei einem Knotenfehler während der Festschreibphase der niedrigste fortbestehende Knoten in der Weiterleitungssequenz einen Neustart der Festschreibphase für das Read-Other-Paritätsaktualisierungsprotokoll steuert.
  14. System nach Anspruch 8, wobei: die Knoten zum Speichern von Informationen als mehrere Stripes konfiguriert sind, wobei jeder Stripe eine Sammlung aus einem Datenstrip und zugeordneten Paritätsstrips enthält, wobei die Stripes über einen primären Datenknoten und mehrere entsprechende Paritätsknoten verteilt sind; eine spezifizierte Weiterleitungsreihenfolge für Paritätsknotennachrichten für jeden primären Datenknoten und entsprechende Paritätsknoten gesichert wird; und jeder primäre Datenknoten zum Steuern einer Paritätskohärenz bei seinen entsprechenden Paritätsknoten unabhängig von anderen Datenknoten konfiguriert ist, indem relevante Paritätsstrips für den primären Datenknoten kohärent gehalten werden.
  15. Computerprogrammprodukt zur Aufrechterhaltung von Zuverlässigkeit einer Datenspeicherung in einem verteilten Writeback-Datenspeichersystem, das mehrere Knoten enthält, wobei jeder Knoten ein Array aus fehlerunabhängigen Datenspeichervorrichtungen aufweist, wobei das Computerprogrammprodukt Folgendes aufweist: ein computerlesbares Speichermedium mit computernutzbarem Programmcode, der darin enthalten ist, wobei der computernutzbare Programmcode Folgendes umfasst: computernutzbaren Programmcode, der konfiguriert ist zum Speichern von Informationen als eine Menge von Stripes, wobei jeder Stripe eine Sammlung aus wenigstens einem Datenstrip und zugeordneten Paritätsstrips enthält, wobei die Stripes über einen primären Datenknoten und mehrere entsprechende Paritätsknoten verteilt sind; computernutzbaren Programmcode, der für den primären Datenknoten für jeden Datenstrip konfiguriert ist, um den Datenstrip, der eine erste Kopie von Daten hält, zu sichern und wobei jeder Paritätsknoten einen Paritätsstrip sichert, der eine Parität für die Datenstrips hält; und computernutzbaren Programmcode, der konfiguriert ist zum Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls zum Sichern einer Paritätskohärenz, wobei der primäre Datenknoten die Paritätskohärenz bei den entsprechenden Paritätsknoten unabhängig von anderen Datenknoten steuert, indem relevante Paritätsstrips für den primären Datenknoten kohärent gehalten werden, wobei das Ausführen eines Read-Other-Paritätsaktualisierungsprotokolls ferner ein Ermitteln eines Paritätswerts anhand von Daten, die von einer Differenz zwischen neuen Daten und abhängigen Daten verschieden sind, umfasst, sodass ein neuer Paritätswert anhand von neuen Daten und abhängigen Daten berechnet wird, wobei abhängige Daten in Bezug auf einen Datenwert andere Daten einschließen, die in einem entsprechenden Paritätswert codiert sind.
  16. Computerprogrammprodukt nach Anspruch 15, das ferner umfasst: computernutzbaren Programmcode, der zum Berechnen jeder Parität anhand einer unterschiedlichen Paritätsberechnungsformel konfiguriert ist, wobei in einer Einrichtungsphase: der primäre Datenknoten eine Vorbereitungsnachricht an einen ersten Paritätsknoten sendet, wobei jeder Paritätsknoten die Vorbereitungsnachricht an einen nächsten Paritätsknoten in einer im Voraus definierten Sequenz weiterleitet; jeder Paritätsknoten Anforderungsnachrichten an die anderen Datenknoten für ihre abhängigen Daten sendet und eine neue Parität aus empfangenen abhängigen Daten und aus den neuen Daten in dem primären Datenknoten und/oder paritätsintegrierten Daten von den abhängigen Datenknoten berechnet; beginnend von dem letzten Paritätsknoten in der Sequenz jeder Paritätsknoten eine Bestätigungsnachricht an einen unmittelbar vorhergehenden Paritätsknoten in der Sequenz sendet; und der erste Paritätsknoten eine Bestätigungsnachricht an den primären Datenknoten sendet, wodurch eine Beendigung der Einrichtungsphase angezeigt wird.
  17. Computerprogrammprodukt nach Anspruch 16, das ferner Folgendes aufweist: computernutzbaren Programmcode, der konfiguriert ist, damit in einer Festschreibphase: der primäre Datenknoten eine Festschreibe-Nachricht an den ersten Paritätsknoten sendet, wobei jeder Paritätsknoten die Festschreibe-Nachricht an einen nächsten Paritätsknoten in einer im Voraus definierten Sequenz weiterleitet; jeder Paritätsknoten seinen neu berechneten Paritätswert festschreibt; beginnend am letzten Paritätsknoten in der Sequenz jeder Paritätsknoten eine Bestätigungsnachricht an einen unmittelbar vorhergehenden Paritätsknoten in der Sequenz sendet; und der erste Paritätsknoten eine Bestätigungsnachricht an den primären Datenknoten sendet, wodurch eine Beendigung der Festschreibphase angezeigt wird.
  18. Computerprogrammprodukt nach Anspruch 17, das ferner Folgendes aufweist: computernutzbaren Programmcode, der für den primären Datenknoten konfiguriert ist, um wenigstens zwei Versionen der Daten für einen Strip zu führen, eine Fast-Write-Version und eine paritätsintegrierte Version, wobei die Fast-Write-Kopie durch einen Host oder Client in ein verteiltes Writeback-Datenspeichersystem geschrieben wurde und nicht in einen Datenstrip integriert ist, und wobei die paritätsintegrierte Kopie in einen Prozess zum Definieren eines Paritätswerts einbezogen wurde; computernutzbaren Programmcode, der konfiguriert ist zum Überführen der Fast-Write-Version in die paritätsintegrierte Version bei Beendigung eines Paritätsaktualisierungsprotokolls an allen relevanten Paritätsknoten, wodurch die vorherige paritätsintegrierte Version verworfen wird; computernutzbaren Programmcode, der für jeden Paritätsknoten konfiguriert ist, zum: Sichern einer Arbeitsversion seines Paritätsstripwerts, der einen gegenwärtigen paritätsintegrierten Wert für jeden der Datenstrips, die in diesen Paritätsstrip umgerechnet wurden; und aus Sicht jedes Paritätsknotens am Ende der Paritätsaktualisierung Umwandeln der Arbeitsversion in den paritätsintegrierten Wert und Verwerfen des vorherigen paritätsintegrierten Werts.
  19. Computerprogrammprodukt nach Anspruch 15, das ferner Folgendes aufweist: computernutzbaren Programmcode, der konfiguriert ist, damit während der Einrichtungsphase bei einem Knotenfehler der niedrigste fortbestehende Knoten in der Weiterleitungssequenz eine Abbruchsequenz für das Read-Other-Paritätsaktualisierungsprotokoll steuert; und computernutzbaren Programmcode, der konfiguriert ist, damit während der Festschreibphase bei einem Knotenfehler der niedrigste fortbestehende Knoten in der Weiterleitungssequenz einen Neustart der Festschreibphase für das Read-Other-Paritätsaktualisierungsprotokoll steuert.
  20. Computerprogrammprodukt nach Anspruch 15, das ferner Folgendes aufweist: computernutzbaren Programmcode, der zum Speichern von Informationen als mehrere Stripes konfiguriert ist, wobei jeder Stripe eine Sammlung aus einem Datenstrip und zugeordneten Paritätsstrips enthält, wobei die Stripes über einen primären Datenknoten und mehrere entsprechende Paritätsknoten verteilt ist; computernutzbaren Programmcode, der konfiguriert ist zum Bereitstellen einer spezifizierten Weiterleitungsreihenfolge einer Paritätsknotennachricht für jeden primären Datenknoten und entsprechende Paritätsknoten; und computernutzbaren Programmcode, der konfiguriert ist, damit jeder primäre Datenknoten eine Paritätskohärenz mit seinen entsprechenden Paritätsknoten unabhängig von anderen Datenknoten steuert, indem relevante Paritätsstrips für den primären Datenknoten kohärent gehalten werden.
DE112011100623.3T 2010-02-22 2011-02-22 Read-Other-Protokoll zur Aufrechterhaltung der Paritätskohärenz in einem Writeback-Datenspeichersystem mit verteilter Redundanz Active DE112011100623B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/710,162 US8103904B2 (en) 2010-02-22 2010-02-22 Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US12/710,162 2010-02-22
PCT/EP2011/052572 WO2011101482A1 (en) 2010-02-22 2011-02-22 Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system

Publications (2)

Publication Number Publication Date
DE112011100623T5 true DE112011100623T5 (de) 2013-01-24
DE112011100623B4 DE112011100623B4 (de) 2017-01-26

Family

ID=43640534

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011100623.3T Active DE112011100623B4 (de) 2010-02-22 2011-02-22 Read-Other-Protokoll zur Aufrechterhaltung der Paritätskohärenz in einem Writeback-Datenspeichersystem mit verteilter Redundanz

Country Status (5)

Country Link
US (1) US8103904B2 (de)
CN (1) CN102696017B (de)
DE (1) DE112011100623B4 (de)
GB (1) GB2490400B (de)
WO (1) WO2011101482A1 (de)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8006175B2 (en) * 2007-10-29 2011-08-23 Microsoft Corporation Calculation of spreadsheet data
US8392813B2 (en) * 2009-12-22 2013-03-05 Intel Corporation Redundant file system
US8583866B2 (en) * 2010-02-22 2013-11-12 International Business Machines Corporation Full-stripe-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US8386841B1 (en) * 2010-07-21 2013-02-26 Symantec Corporation Systems and methods for improving redundant storage fault tolerance
US8433685B2 (en) * 2010-08-18 2013-04-30 Hewlett-Packard Development Company, L.P. Method and system for parity-page distribution among nodes of a multi-node data-storage system
US8776186B2 (en) * 2011-10-04 2014-07-08 Cleversafe, Inc. Obtaining a signed certificate for a dispersed storage network
US9426517B2 (en) 2012-06-08 2016-08-23 Ntt Docomo, Inc. Method and apparatus for low delay access to key-value based storage systems using FEC techniques
US9100330B1 (en) * 2012-07-13 2015-08-04 Emc Corporation Introduction of read delay or write delay in servers of a geographically distributed data processing system so that clients read up-to-date data
JP6301318B2 (ja) * 2012-12-28 2018-03-28 華為技術有限公司Huawei Technologies Co.,Ltd. 分散ストレージシステムのためのキャッシュ処理方法、ノード及びコンピュータ可読媒体
US9423981B2 (en) 2013-04-16 2016-08-23 International Business Machines Corporation Logical region allocation with immediate availability
US9104332B2 (en) 2013-04-16 2015-08-11 International Business Machines Corporation Managing metadata and data for a logical volume in a distributed and declustered system
US9298398B2 (en) 2013-04-16 2016-03-29 International Business Machines Corporation Fine-grained control of data placement
US9298617B2 (en) 2013-04-16 2016-03-29 International Business Machines Corporation Parallel destaging with replicated cache pinning
US9619404B2 (en) 2013-04-16 2017-04-11 International Business Machines Corporation Backup cache with immediate availability
US9104597B2 (en) * 2013-04-16 2015-08-11 International Business Machines Corporation Destaging cache data using a distributed freezer
US9329938B2 (en) 2013-04-16 2016-05-03 International Business Machines Corporation Essential metadata replication
US20140351634A1 (en) * 2013-05-22 2014-11-27 Brahim Bakayoko Transparent Parity-Based Recovery System and Method for Storage Devices
EP2863566B1 (de) 2013-10-18 2020-09-02 Université de Nantes Verfahren zur Rekonstruktion eines Datenblocks und Vorrichtung zur Verwendung davon
JP6201674B2 (ja) * 2013-11-20 2017-09-27 富士通株式会社 ストレージ制御装置,プログラム及び制御方法
CN103631669B (zh) * 2013-12-03 2016-06-22 中国科学院微电子研究所 一种纠错sram的回写方法
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US8850108B1 (en) * 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) * 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
WO2016051512A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
EP3079079B8 (de) * 2015-04-07 2022-04-27 Huawei Technologies Co., Ltd. Verfahren, vorrichtung und datenstruktur zum kopieren von werten einer tabelle einer datenbank
CN105095013B (zh) * 2015-06-04 2017-11-21 华为技术有限公司 数据存储方法、恢复方法、相关装置以及系统
WO2017061891A1 (en) * 2015-10-09 2017-04-13 Huawei Technologies Co., Ltd. Coding for distributed storage system
CN107219997B (zh) * 2016-03-21 2020-08-18 阿里巴巴集团控股有限公司 一种用于验证数据一致性的方法及装置
US10547681B2 (en) 2016-06-30 2020-01-28 Purdue Research Foundation Functional caching in erasure coded storage
EP3264658A1 (de) * 2016-06-30 2018-01-03 Kamstrup A/S Radiofrequenz-kommunikationssystem und verfahren
CN106227464B (zh) * 2016-07-14 2019-03-15 中国科学院计算技术研究所 一种双层冗余存储系统及其数据写入、读取及恢复方法
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
CN106708651B (zh) * 2016-11-16 2020-09-11 北京三快在线科技有限公司 基于纠删码的部分写入方法及装置、存储介质、设备
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
CN108628539B (zh) * 2017-03-17 2021-03-26 杭州海康威视数字技术股份有限公司 数据存储、分散、重构、回收方法、装置及数据处理系统
CN108572883B (zh) * 2017-04-19 2021-06-18 北京金山云网络技术有限公司 一种数据正确性校验方法及装置
US10705911B2 (en) * 2017-04-24 2020-07-07 Hewlett Packard Enterprise Development Lp Storing data in a distributed storage system
WO2019049224A1 (ja) * 2017-09-06 2019-03-14 株式会社日立製作所 分散ストレージシステム及び分散記憶制御方法
CN111666043A (zh) * 2017-11-03 2020-09-15 华为技术有限公司 一种数据存储方法及设备
CN108255429B (zh) * 2018-01-10 2021-07-02 郑州云海信息技术有限公司 一种写操作控制方法、系统、装置及计算机可读存储介质
CN109634771A (zh) * 2018-10-31 2019-04-16 华为技术有限公司 一种数据保护方法、装置及系统
JP2020154587A (ja) * 2019-03-19 2020-09-24 株式会社日立製作所 計算機システム及びデータ管理方法
CN111786743A (zh) * 2019-04-04 2020-10-16 华为技术有限公司 一种数据传输的方法和装置
CN111949434B (zh) * 2019-05-17 2022-06-14 华为技术有限公司 磁盘冗余阵列raid管理方法、raid控制器和系统
US11287988B2 (en) * 2020-04-03 2022-03-29 Dell Products L.P. Autonomous raid data storage device locking system
CN111625601B (zh) * 2020-05-27 2023-03-14 北京火山引擎科技有限公司 一种数据写入方法、装置、计算机设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627990A (en) 1994-06-20 1997-05-06 International Business Machines Corporation Management system for a hierarchical data cache employing preemptive cache track demotion and restaging to adapt to access patterns
US6446220B1 (en) 1998-08-04 2002-09-03 International Business Machines Corporation Updating data and parity data with and without read caches
US6542960B1 (en) 1999-12-16 2003-04-01 Adaptec, Inc. System and method for parity caching based on stripe locking in raid data storage
US6983396B2 (en) 2002-02-15 2006-01-03 International Business Machines Corporation Apparatus for reducing the overhead of cache coherency processing on each primary controller and increasing the overall throughput of the system
US20080109616A1 (en) 2006-10-31 2008-05-08 Taylor James A System and method for optimizing write operations in storage systems

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916605A (en) * 1984-03-27 1990-04-10 International Business Machines Corporation Fast write operations
US6874101B2 (en) 1991-01-31 2005-03-29 Hitachi, Ltd. Storage unit subsystem
US5388108A (en) 1992-10-23 1995-02-07 Ncr Corporation Delayed initiation of read-modify-write parity operations in a raid level 5 disk array
JP3270959B2 (ja) 1993-10-05 2002-04-02 株式会社日立製作所 ディスクアレイ装置におけるパリティ格納方法およびディスクアレイ装置
US5720025A (en) 1996-01-18 1998-02-17 Hewlett-Packard Company Frequently-redundant array of independent disks
US6353895B1 (en) 1998-02-19 2002-03-05 Adaptec, Inc. RAID architecture with two-drive fault tolerance
US6223323B1 (en) * 1998-07-17 2001-04-24 Ncr Corporation Method for storing parity information in a disk array storage system
US6446237B1 (en) 1998-08-04 2002-09-03 International Business Machines Corporation Updating and reading data and parity blocks in a shared disk system
US6427212B1 (en) 1998-11-13 2002-07-30 Tricord Systems, Inc. Data fault tolerance software apparatus and method
US6298415B1 (en) * 1999-02-19 2001-10-02 International Business Machines Corporation Method and system for minimizing writes and reducing parity updates in a raid system
US6725392B1 (en) 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
US6553511B1 (en) 2000-05-17 2003-04-22 Lsi Logic Corporation Mass storage data integrity-assuring technique utilizing sequence and revision number metadata
US6732290B1 (en) 2000-11-22 2004-05-04 Mti Technology Corporation Recovery system for raid write
US6950901B2 (en) * 2001-01-05 2005-09-27 International Business Machines Corporation Method and apparatus for supporting parity protection in a RAID clustered environment
EP1366420B1 (de) * 2001-03-07 2014-07-16 Oracle International Corporation Diskrete schreibvorgänge in einem verteilten system mit gemeinsam benutzter platte
US6718444B1 (en) 2001-12-20 2004-04-06 Advanced Micro Devices, Inc. Read-modify-write for partial writes in a memory controller
US7640484B2 (en) * 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US20030225899A1 (en) 2002-05-28 2003-12-04 Murphy Walter Vincent Enhancing system performance using a network-based multi-processing technique
US6993676B2 (en) 2002-06-12 2006-01-31 Sun Microsystems, Inc. Method and apparatus for fast initialization of redundant arrays of storage devices
US6898668B2 (en) 2002-06-24 2005-05-24 Hewlett-Packard Development Company, L.P. System and method for reorganizing data in a raid storage system
US7509645B2 (en) * 2002-10-17 2009-03-24 Intel Corporation Methods and apparatus for load balancing storage nodes in a distributed network attached storage system
US6928515B2 (en) 2002-11-09 2005-08-09 International Business Machines Corporation Integrated sector format-error correction code system and method for efficient writing in a disk array system
US7159150B2 (en) 2002-12-31 2007-01-02 International Business Machines Corporation Distributed storage system capable of restoring data in case of a storage failure
US6970987B1 (en) 2003-01-27 2005-11-29 Hewlett-Packard Development Company, L.P. Method for storing data in a geographically-diverse data-storing system providing cross-site redundancy
DE10317650A1 (de) * 2003-04-17 2004-11-04 Robert Bosch Gmbh Programmgesteuerte Einheit und Verfahren
US7149847B2 (en) 2003-06-26 2006-12-12 Adaptec, Inc. RAID 6 disk array architectures
US7206991B2 (en) 2003-10-15 2007-04-17 Lsi Logic Corporation Method, apparatus and program for migrating between striped storage and parity striped storage
DE10350590A1 (de) 2003-10-30 2005-06-16 Ruprecht-Karls-Universität Heidelberg Verfahren und Vorrichtung zum Sichern von Daten bei mehreren unabhängigen Schreib-Lese-Speichern
US7093157B2 (en) 2004-06-17 2006-08-15 International Business Machines Corporation Method and system for autonomic protection against data strip loss
US7516354B2 (en) 2004-08-25 2009-04-07 International Business Machines Corporation Storing parity information for data recovery
US7353423B2 (en) * 2004-09-24 2008-04-01 International Business Machines Corporation System and method for improving the performance of operations requiring parity reads in a storage array system
US7490270B2 (en) 2004-11-09 2009-02-10 Dell Products L.P. Method, system, and software for rebuilding a storage drive
US7143308B2 (en) 2005-01-14 2006-11-28 Charlie Tseng Apparatus, system, and method for differential rebuilding of a reactivated offline RAID member disk
JP4435705B2 (ja) 2005-03-14 2010-03-24 富士通株式会社 記憶装置、その制御方法及びプログラム
WO2007012920A1 (en) 2005-07-27 2007-02-01 Adaptec, Inc. Method and system for improving the performance of reed-solomon parity operations in redundant array of inexpensive disks
JP4410178B2 (ja) 2005-09-22 2010-02-03 富士通株式会社 Raid装置におけるライトバック方法
US7653829B2 (en) 2005-12-08 2010-01-26 Electronics And Telecommunications Research Institute Method of data placement and control in block-divided distributed parity disk array
US20080040553A1 (en) 2006-08-11 2008-02-14 Ash Kevin J Method and system for grouping tracks for destaging on raid arrays
JP2008140387A (ja) * 2006-11-22 2008-06-19 Quantum Corp クラスタ化されたストレージネットワーク
US8495417B2 (en) 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627990A (en) 1994-06-20 1997-05-06 International Business Machines Corporation Management system for a hierarchical data cache employing preemptive cache track demotion and restaging to adapt to access patterns
US6446220B1 (en) 1998-08-04 2002-09-03 International Business Machines Corporation Updating data and parity data with and without read caches
US6542960B1 (en) 1999-12-16 2003-04-01 Adaptec, Inc. System and method for parity caching based on stripe locking in raid data storage
US6983396B2 (en) 2002-02-15 2006-01-03 International Business Machines Corporation Apparatus for reducing the overhead of cache coherency processing on each primary controller and increasing the overall throughput of the system
US20080109616A1 (en) 2006-10-31 2008-05-08 Taylor James A System and method for optimizing write operations in storage systems

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
http://www.usenix.org/events/fast05/tech/full papers/hafner weaver/hafner we aver.pdf, Dezember 2005

Also Published As

Publication number Publication date
CN102696017A (zh) 2012-09-26
GB2490400B (en) 2018-07-11
GB201206650D0 (en) 2012-05-30
GB2490400A (en) 2012-10-31
WO2011101482A1 (en) 2011-08-25
US20110208996A1 (en) 2011-08-25
DE112011100623B4 (de) 2017-01-26
CN102696017B (zh) 2014-12-17
US8103904B2 (en) 2012-01-24

Similar Documents

Publication Publication Date Title
DE112011100623B4 (de) Read-Other-Protokoll zur Aufrechterhaltung der Paritätskohärenz in einem Writeback-Datenspeichersystem mit verteilter Redundanz
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE102013101863A1 (de) Hochverfügbares Hauptspeicher-Datenbanksystem, Arbeitsverfahren und deren Verwendungen
DE60312746T2 (de) Wiederherstellung nach fehlern in datenverarbeitungsanlagen
DE60020978T2 (de) Hierarchische datensicherung- und wiederauffindungssystem
DE602005003490T2 (de) Verteiltes System mit Quorumredundanz und Verfahren dafür
DE602005004120T2 (de) System und verfahren zur übernahme von partnerbetriebsmitteln in verbindung mit coredump
DE602004005344T2 (de) Verfahren, system und programm zur handhabung eines failover zu einem fernspeicherort
DE60318687T2 (de) Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz
DE69724834T2 (de) System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher
DE60018872T2 (de) System und Methode für das Löschen von Datenbank-Aktualisierungsbilddateien nach Abschluss der dazugehörigen Transaktionen
DE602005002532T2 (de) Cluster-datenbank mit ferndatenspiegelung
DE112010003372T5 (de) Paketspiegelung zwischen primären und sekundären virtualisierten Software-Abbildern für verbesserte Systemausfallumschaltungsleistung
DE102013210642B4 (de) Vorrichtung zum Wiederherstellen von Redundanz
DE202019005483U1 (de) Datenreplikation und Datenausfallsicherung in Datenbanksystemen
EP1959639B1 (de) Ausfallsicheres System zum Verwalten von Client-Server-Kommunikation
DE112011104471T5 (de) Verfahren zur Failover-Verwaltung von virtuellen Maschinen und System zum Unterstützen desselben
DE10123067B4 (de) Synchrone Vervielfältigung von Transaktionen in einem verteilten System
DE112005002481T5 (de) Rekonfigurierung einer redundanten Datenspeicherung
DE102004027672A1 (de) Speicherplattenarraysystem
DE69913375T2 (de) Anzeige eines fehlers in einem transaktionsverarbeitungssystem
DE10124482A1 (de) Fehlertolerante Systemressource mit niedriger Latenzzeit, mit übergeordneter Protokollierung von Systemressourcentransaktionen und serverübergreifend gespiegelter Protokollierung von übergeordneten Systemressourcentransaktionen
DE10112941A1 (de) System und Verfahren für das parallele Lesen von primären und sekundären Sicherungen zur Wiederherstellung mehrerer gemeinsam benutzter Datenbankdateien
DE112012004216T5 (de) Nachrichtenabgleich während einer Wiederherstellung nach einem Systemausfall
DE112012001267T5 (de) Verfahren, Systeme und Computerprogrammprodukte zur abgestimmten Notfallwiederherstellung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D., US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, N.Y., US

Owner name: HGST NETHERLANDS B.V., NL

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, N.Y., US

R082 Change of representative

Representative=s name: DEHNS GERMANY, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D., US

Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: DEHNS GERMANY, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE