DE112005002481T5 - Rekonfigurierung einer redundanten Datenspeicherung - Google Patents

Rekonfigurierung einer redundanten Datenspeicherung Download PDF

Info

Publication number
DE112005002481T5
DE112005002481T5 DE112005002481T DE112005002481T DE112005002481T5 DE 112005002481 T5 DE112005002481 T5 DE 112005002481T5 DE 112005002481 T DE112005002481 T DE 112005002481T DE 112005002481 T DE112005002481 T DE 112005002481T DE 112005002481 T5 DE112005002481 T5 DE 112005002481T5
Authority
DE
Germany
Prior art keywords
group
data
segment
quorum
devices
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.)
Withdrawn
Application number
DE112005002481T
Other languages
English (en)
Inventor
Yasushi Mountain View Saito
Svend Mountain View Frolund
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE112005002481T5 publication Critical patent/DE112005002481T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1004Adaptive RAID, i.e. RAID system adapts to changing circumstances, e.g. RAID1 becomes RAID5 as disks fill up

Abstract

Ein Verfahren zum Rekonfigurieren eines redundanten Datenspeicherungssystems 100, das folgende Schritte umfasst:
redundantes Speichern einer Mehrzahl von Datensegmenten durch eine erste Gruppe von Speicherungsvorrichtungen 102, wobei zumindest ein Quorum von Speicherungsvorrichtungen 102 der ersten Gruppe jeweils zumindest einen Teil jedes Datensegments oder von redundanten Daten speichert;
Bilden einer zweiten Gruppen von Speicherungsvorrichtungen 102, wobei die zweite Gruppe eine andere Angehörigenzusammensetzung aufweist als die erste Gruppe;
Identifizieren eines Datensegments aus der Mehrzahl, für das keine einheitliche Version durch zumindest ein Quorum der zweiten Gruppe gespeichert ist; und
Schreiben zumindest eines Teils des identifizierten Datensegments oder der redundanten Daten in zumindest eine der Speicherungsvorrichtungen 102 der zweiten Gruppe, wodurch zumindest ein Quorum der zweiten Gruppe eine einheitliche Version des identifizierten Datensegments speichert.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf das Gebiet der Datenspeicherung und insbesondere auf eine fehlertolerante Datenreplikation.
  • Hintergrund der Erfindung
  • Datenspeicherungssysteme der Unternehmensklasse unterscheiden sich von Speicherungssystemen der Verbraucherklasse vorwiegend bezüglich ihrer Anforderungen an die Zuverlässigkeit. Beispielsweise besteht ein Merkmal, das bei Speicherungssystemen der Unternehmensklasse häufig gewünscht wird, darin, dass das Speicherungssystem unter allen Umständen, die gerade noch keine vollständige Katastrophe darstellen, keine Daten verlieren sollte und nicht aufhören sollte, Daten zu liefern. Um diese Anforderungen zu erfüllen, sind derartige Speicherungssysteme allgemein aus kundenspezifischen, sehr zuverlässigen, während des Betriebs umschichtfähigen Hardwarekomponenten aufgebaut. Ihre Software, einschließlich des Betriebssystems, ist üblicherweise von Grund auf gebaut. Das Entwerfen und Herstellen der Hardwarekomponenten ist zeitaufwändig und teuer, und in Kombination mit relativ geringen Herstellungsvolumina ist dies ein Hauptfaktor bei den üblicherweise hohen Preisen derartiger Speicherungssysteme. Ein weiterer Nachteil derartiger Systeme ist die mangelnde Skalierbarkeit eines einzelnen Systems. Die Kunden leisten üblicherweise eine hohe Vorabzahlung für auch nur eine minimale Plattenarraykonfiguration, jedoch kann ein einzelnes System nur eine begrenzte Kapazität und Leistungsfähigkeit unterstützen. Es kann sein, dass die Kunden diese Grenzen überschreiten, was zu Systemen führt, die eine schlechte Leistungsfähigkeit aufweisen, oder was dazu führt, dass mehrere Systeme gekauft werden müssen, wobei beide diese Punkte die Verwaltungskosten erhöhen.
  • Es wurde bereits vorgeschlagen, die Fehlertoleranz von serienmäßig gefertigten oder Roh-Speicherungssystemkomponenten durch die Verwendung einer Datenreplikation oder Löschcodierung zu erhöhen. Jedoch erfordert diese Lösung eine koordinierte Funktionsweise der redundanten Komponenten und eine Synchronisation der replizierten Daten.
  • Somit werden verbesserte Techniken für Speicherungsumgebungen benötigt, bei denen redundante Bauelemente geliefert werden oder bei denen Daten repliziert werden. Die vorliegende Erfindung ist auf dieses Ziel ausgerichtet.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung liefert Techniken zur Rekonfigurierung einer redundanten Datenspeicherung. Bei einem Ausführungsbeispiel wird ein Verfahren zum Rekonfigurieren eines Redundant-Datenspeicherungssystems geliefert. Eine Mehrzahl von Datensegmenten werden durch eine erste Gruppe von Speicherungsvorrichtungen redundant gespeichert. Zumindest eine Mindestanzahl bzw. ein Quorum von Speicherungsvorrichtungen der ersten Gruppe speichern jeweils zumindest einen Teil jedes Datensegments oder von redundanten Daten. Es wird eine zweite Gruppe von Speicherungsvorrichtungen gebildet, wobei die zweite Gruppe eine sich von der ersten Gruppe unterscheidende Angehörigenzusammensetzung aufweist. Ein Datensegment wird aus der Mehrzahl, für die eine einheitliche Version nicht durch zumindest ein Quorum der zweiten Gruppe gespeichert wird, identifiziert. Zumindest ein Teil des identifizierten Datensegments oder der redundanten Daten wird in zumindest eine der Speicherungsvor richtungen der zweiten Gruppe geschrieben. Dadurch speichert zumindest ein Quorum der zweiten Gruppe eine einheitliche Version des identifizierten Datensegments.
  • Bei einem anderen Ausführungsbeispiel wird ein Datensegment auf redundante Weise durch eine erste Gruppe von Speicherungsvorrichtungen gespeichert. Zumindest ein Quorum von Speicherungsvorrichtungen der ersten Gruppe speichert jeweils zumindest einen Teil des Datensegments oder der redundanten Daten. Es wird eine zweite Gruppe von Speicherungsvorrichtungen gebildet, wobei die zweite Gruppe eine andere Angehörigenzusammensetzung aufweist als die erste Gruppe. Es wird zumindest ein Angehöriger der zweiten Gruppe identifiziert, der nicht zumindest einen Teil des Datensegments oder redundanter Daten aufweist, der mit Daten, die durch andere Angehörige der zweiten Gruppe gespeichert sind, übereinstimmt. Zumindest ein Teil des Datensegments oder der redundanten Daten wird in den zumindest einen Angehörigen der zweiten Gruppe geschrieben.
  • Bei einem wieder anderen Ausführungsbeispiel wird ein Datensegment auf redundante Weise durch eine erste Gruppe von Speicherungssystemen gespeichert, wobei zumindest ein Quorum von Speicherungssystemen der ersten Gruppe jeweils zumindest einen Teil des Datensegments oder der redundanten Daten speichert. Es wird eine zweite Gruppe von Speicherungssystemen gebildet, wobei die zweite Gruppe eine andere Angehörigenzusammensetzung aufweist als die erste Gruppe. Falls nicht jedes Quorum der ersten Gruppe der Speicherungssysteme ein Quorum der zweiten Gruppe ist, wird zumindest ein Teil des Datensegments oder der redundanten Daten in zumindest eine der Speicherungsvorrichtungen der zweiten Gruppe geschrieben. Wenn dagegen jedes Quorum der ersten Gruppe der Speicherungssysteme ein Quorum der zweiten Gruppe ist, wird das Schreiben übersprungen.
  • Die Daten können repliziert oder löschcodiert werden. Somit können die redundanten Daten replizierte Daten oder Pari tätsdaten sein. Ein computerlesbares Medium, das einen Computercode umfasst, kann jegliches der hierin offenbarten Verfahren implementieren. Diese und andere Ausführungsbeispiele der Erfindung werden hierin ausführlicher erörtert.
  • Kurze Beschreibung der Zeichnungen
  • 1 veranschaulicht ein exemplarisches Speicherungssystem, das mehrere redundante Speicherungsvorrichtungsknoten gemäß einem Ausführungsbeispiel der vorliegenden Erfindung umfasst;
  • 2 veranschaulicht eine exemplarische Speicherungsvorrichtung zur Verwendung bei dem Speicherungssystem der 1 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 3 veranschaulicht ein exemplarisches Flussdiagramm eines Verfahrens zum Rekonfigurieren eines Datenspeicherungssystems gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 4 veranschaulicht ein exemplarisches Flussdiagramm eines Verfahrens zum Bilden einer neuen Gruppe von Speicherungsvorrichtungen gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 5 veranschaulicht ein exemplarisches Flussdiagramm eines Verfahrens zum Gewährleisten, dass zumindest ein Quorum einer Gruppe von Speicherungsvorrichtungen kollektiv eine einheitliche Version von replizierten Daten gemäß einem Ausführungsbeispiel der vorliegenden Erfindung speichert; und
  • 6 veranschaulicht ein exemplarisches Flussdiagramm eines Verfahrens zum Gewährleisten, dass zumin dest ein Quorum einer Gruppe von Speicherungsvorrichtungen eine einheitliche Version von löschcodierten Daten gemäß einem Ausführungsbeispiel der vorliegenden Erfindung kollektiv speichert.
  • Ausführliche Beschreibung eines bevorzugten Ausführungsbeispiels
  • Die vorliegende Erfindung sieht eine Rekonfiguration von Speicherungsumgebungen vor; bei der redundante Vorrichtungen bereitgestellt werden oder bei der Daten auf redundante Weise gespeichert werden. Man erwartet, dass eine Mehrzahl von Speicherungsvorrichtungen Zuverlässigkeit und Leistungsfähigkeit von Speicherungssystemen einer Unternehmensklasse, jedoch bei niedrigeren Kosten und mit einer besseren Skalierbarkeit, liefert. Jede Speicherungsvorrichtung kann aus Rohkomponenten aufgebaut sein. Funktionsweisen der Speicherungsvorrichtungen können auf dezentralisierte Weise koordiniert werden.
  • Aus der Perspektive von Anwendungen, die Speicherungsdienste erfordern, wird eine einzelne, in hohem Umfang verfügbare Kopie der Daten präsentiert, obwohl die Daten auf redundante Weise gespeichert werden. Es sind Techniken zum Berücksichtigen von Ausfällen und anderen Verhaltensweisen, z.B. einer Stilllegung einer Vorrichtung oder eines Neustartens einer Vorrichtung nach einem Ausfall, vorgesehen, auf eine Weise, die für Anwendungen, die Speicherungsdienste benötigen, im Wesentlichen transparent ist.
  • 1 veranschaulicht ein exemplarisches Speicherungssystem 100, das mehrere Speicherungsvorrichtungen 102 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung aufweist. Die Speicherungsvorrichtungen 102 kommunizieren über ein Kommunikationsmedium 104, z.B. ein Netzwerk (z.B. unter Verwendung eines entfernten Direktspeicherzugriffs (RDMA – Remote Direct Memory Access) über Ethernet) miteinander.
  • Ein oder mehr Clients 106 (z.B. Server) greifen über ein Kommunikationsmedium 108 zum Zugreifen auf Daten, die in dem Speicherungssystem 100 gespeichert sind, durch ein Durchführen von Lese- und Schreibvorgängen auf das Speicherungssystem 100 zu. Das Kommunikationsmedium 108 kann durch direkte oder Netzwerkverbindungen unter Verwendung von z.B. iSCSI über Ethernet, Fibre Channel, SCSI oder Serielle-Angeschlossene-SCSI-Protokolle (Serial Attached SCSI protocols) implementiert sein. Obwohl die Kommunikationsmedien 104 und 108 in der Darstellung getrennt gezeigt sind, können sie miteinander kombiniert oder miteinander verbunden sein. Die Clients 106 können eine Anwendungssoftware (z.B. E-Mail- oder Datenbankanwendung), die Daten erzeugt und/oder einen Zugriff auf die Daten erfordert, ausführen.
  • 2 veranschaulicht eine exemplarische Speicherungsvorrichtung 102 zur Verwendung bei dem Speicherungssystem 100 der 1 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Wie in 2 gezeigt ist, kann die Speicherungsvorrichtung 102 eine Netzwerkschnittstelle 110, eine Zentralverarbeitungseinheit (CPU – central processing unit) 112, eine Massenspeicherung 114, z.B. eine oder mehr Festplatten, und einen Speicher 116, der vorzugsweise nicht-flüchtig (z.B. NV-RAM) ist, umfassen. Die Schnittstelle 110 befähigt die Speicherungsvorrichtung 102, mit anderen Vorrichtungen 102 des Speicherungssystems 100 und mit außerhalb des Speicherungssystems 100 befindlichen Vorrichtungen, z.B. den Servern 106, zu kommunizieren. Die CPU 112 steuert allgemein den Betrieb der Speicherungsvorrichtung 102. Der Speicher 116 fungiert allgemein als Cache-Speicher zum vorübergehenden Speichern von Daten, die in die Massenspeicherung 114 geschrieben werden sollen, und von Daten, die aus der Massenspeicherung 114 gelesen werden. Der Speicher 116 kann auch Zeitstempel und andere Informationen, die den Daten zugeordnet sind, speichern, wie hierin ausführlicher erörtert wird.
  • Vorzugsweise besteht jede Speicherungsvorrichtung 102 aus einer serienmäßig gefertigten oder Roh-Hardware, um die Kosten zu minimieren. Jedoch ist es nicht notwendig, dass jede Speicherungsvorrichtung 102 mit den anderen identisch ist. Beispielsweise können sie aus ungleichartigen Teilen bestehen und können sich in Bezug auf ihre Leistungsfähigkeit und/oder Speicherungskapazität unterscheiden.
  • Um eine Fehlertoleranz zu liefern, werden Daten auf redundante Weise in dem Speicherungssystem gespeichert. Beispielsweise können Daten in dem Speicherungssystem 100 repliziert werden. Bei einem Ausführungsbeispiel werden Daten in Segmente einer feststehenden Größe unterteilt. Für jedes Datensegment sind zumindest zwei verschiedene Speicherungsvorrichtungen 102 in dem System 100 zum Speichern von Nachbildungen der Daten ausersehen, wobei die Anzahl ausersehener gespeicherter Vorrichtungen und somit die Anzahl von Nachbildungen als „M" gegeben ist. Für einen Schreibvorgang wird ein neuer Wert für ein Segment bei einer Mehrzahl der ausersehenen Vorrichtungen 102 gespeichert (zumindest zwei Vorrichtungen 102, falls M zwei oder drei beträgt). Für einen Lesevorgang wird der in einer Mehrzahl der ausersehenen Vorrichtungen gespeicherte Wert entdeckt und zurückgegeben. Die Gruppe von Vorrichtungen, die zum Speichern eines bestimmten Datensegments ausersehen sind, wird hierin als Segmentgruppe bezeichnet. Um also im Fall von replizierten Daten zuverlässige und nachprüfbare Lese- und Schreibvorgänge zu gewährleisten, muss eine Mehrzahl der Vorrichtungen in der Segmentgruppe am Verarbeiten einer Anforderung teilnehmen, damit die Anforderung erfolgreich abgeschlossen wird. In Bezug auf replizierte Daten werden die Begriffe „Quorum" und „Mehrzahl" hierin austauschbar verwendet. Außerdem werden die Begriffe Daten-„Segment" und Daten-„Block" in Bezug auf replizierte Daten hierin austauschbar verwendet.
  • Als weiteres Beispiel eines redundanten Speicherns von Daten können Daten gemäß einer Löschcodierung gespeichert werden. Beispielsweise kann eine m, n Reed-Solomon-Löschcodierung verwendet werden, wobei m und n beide positive Ganzzahlen sind, so dass m < n. In diesem Fall kann ein Datensegment in Blöcke unterteilt werden, die über eine Gruppe von Vorrichtungen hinweg, die zum Speichern der Daten ausersehen sind, streifig sind. Ein Löschcodieren speichert m Datenblöcke und p Paritätsblöcke über einen Satz von n Speicherungsvorrichtungen hinweg, wobei n = m + p. Für jeden Satz von m Datenblöcken, der über einen Satz von m Speicherungsvorrichtungen streifig ist, wird ein Satz von p Paritätsblöcken in einem Satz von p Speicherungsvorrichtungen gespeichert. Eine Löschcodierungstechnik für das Array unabhängiger Speicherungsvorrichtungen verwendet einen Quorum-Lösungsansatz, um zu gewährleisten, dass zuverlässige und überprüfbare Lese- und Schreibvorgänge erfolgen. Der Quorum-Lösungsansatz erfordert eine Beteiligung von zumindest einem Quorum der n Vorrichtungen am Verarbeiten einer Anforderung, damit die Anforderung erfolgreich abgeschlossen wird. Das Quorum beträgt zumindest m + p/2 der Vorrichtungen, falls p geradzahlig ist, und m + (p + 1)/2, falls p ungeradzahlig ist. Aus den Datenblöcken, die die Quorumsbedingung erfüllen, können beliebige m der Daten- oder Paritätsblöcke zum Rekonstruieren der m Datenblöcke verwendet werden.
  • Zum Koordinieren von Handlungen unter den ausersehenen Speicherungsvorrichtungen 102 werden Zeitstempel verwendet. Bei einem Ausführungsbeispiel gibt ein Zeitstempel, der jedem Daten- oder Paritätsblock an jeder Speicherungsvorrichtung zugeordnet ist, die Zeit an, zu der der Datenblock zuletzt aktualisiert (d.h. beschrieben) wurde. Außerdem wird eine Aufzeichnung jeglicher anstehender Aktualisierungen jedes der Blöcke aufrechterhalten. Diese Aufzeichnung kann einen anderen Zeitstempel umfassen, der jedem Daten- oder Paritätsblock zugeordnet ist und der einen anstehenden Schreibvorgang angibt. Eine Aktualisierung steht an, wenn ein Schreibvorgang eingeleitet wurde, jedoch noch nicht abgeschlossen ist. Somit können für jeden Block von Daten an jeder Speicherungsvorrichtung zwei Zeitstempel aufrechterhalten werden. Die durch eine Speicherungsvorrichtung gespeicherten Zeitstempel sind für diese Speicherungsvorrichtung spezifisch.
  • Zum Erzeugen der Zeitstempel umfasst jede Speicherungsvorrichtung 102 einen Takt. Dieser Takt kann entweder ein logischer Takt sein, der die inhärente teilweise Reihenfolge von Ereignissen in dem System 100 reflektiert, oder er kann ein Echtzeittakt sein, der „Wanduhr"-Zeit an jeder Vorrichtung reflektiert. Jeder Zeitstempel weist vorzugsweise auch einen zugeordneten Identifizierer auf, der für jede Vorrichtung 102 spezifisch ist, um in der Lage zu sein, zwischen andernfalls identischen Zeitstempeln zu unterscheiden. Beispielsweise kann jeder Zeitstempel einen Acht-Byte-Wert umfassen, der die aktuelle Zeit angibt, und einen Vier-Byte-Identifizierer, der für jede Vorrichtung 102 spezifisch ist. Falls Echtzeittakte verwendet werden, sind diese Takte vorzugsweise über die Speicherungsvorrichtungen 102 hinweg synchronisiert, damit sie ungefähr dieselbe Zeit aufweisen, obwohl sie nicht genau synchronisiert sein müssen. Eine Synchronisierung der Takte kann dadurch ausgeführt werden, dass die Speicherungsvorrichtungen 102 anhand einer zentralisierten Anwendung (z.B. an einem oder mehreren der Server 106), die Nachrichten an die Vorrichtungen 102 sendet, Nachrichten miteinander austauschen.
  • Insbesondere speichert jede Speicherungsvorrichtung 102, die zum Speichern eines bestimmten Datenblockes ausersehen ist, einen Wert für den Datenblock, hierin als „val" gegeben. Außerdem speichert jede Speicherungsvorrichtung für den Datenblock zwei Zeitstempel, als „valTS" und „ordTS" gegeben. Der Zeitstempel valTS gibt die Zeit an, zu der der Datenwert zuletzt an der Speicherungsvorrichtung aktualisiert wurde. Der Zeitstempel ordTS gibt die Zeit an, zu der der letzte Schreibvorgang empfangen wurde. Falls ein Schreibvorgang in die Daten an der Speicherungsvorrichtung eingeleitet, jedoch nicht abgeschlossen wurde, ist der Zeitstempel ordTS für die Daten neuer als der Zeitstempel valTS. Andernfalls, falls keine derartigen anstehenden Schreibvorgänge vorliegen, ist der Zeitstempel valTS größer als der oder gleich dem Zeitstempel ordTS.
  • Bei einem Ausführungsbeispiel kann jegliche Vorrichtung eine Lese- oder Schreibanforderung von einer Anwendung empfangen und kann als Koordinator zum Bedienen der Anforderung agieren. Ein Schreibvorgang wird für replizierte Daten und für löschcodierte Daten in zwei Phasen durchgeführt. In der ersten Phase aktualisiert ein Quorum der Vorrichtungen in einer Segmentgruppe ihre ordTS-Zeitstempel, um dem Segment gegenüber eine neue laufende Aktualisierung anzuzeigen. In der zweiten Phase aktualisiert ein Quorum der Vorrichtungen der Segmentgruppe ihren Datenwert, val, und ihren valTS-Zeitstempel. Für den Schreibvorgang für löschcodierte Daten können die Vorrichtungen in einer Segmentgruppe auch den aktualisierten Wert ihrer Daten- oder Paritätsblöcke protokollieren, ohne die alten Werte zu überschreiben, bis in einer optionalen dritten Phase eine Bestätigung empfangen wird, dass ein Quorum der Vorrichtungen in der Segmentgruppe ihre neuen Werte gespeichert hat.
  • In einer Phase, in der ein Quorum der Vorrichtungen in der Segmentgruppe ihre Zeitstempel, valTS und ordTS, und ihren Wert, val, an den Koordinator zurückgibt, kann eine Leseanforderung durchgeführt werden. Die Anforderung ist erfolgreich, wenn die Zeitstempel ordTS und valTS, die durch das Quorum von Vorrichtungen zurückgegeben werden, alle identisch sind. Andernfalls wird während eines Lesevorgangs ein unvollständiger vergangener Schreibvorgang erfasst, und es wird ein Wiederherstellungsvorgang durchgeführt. Bei einem Ausführungsbeispiel des Wiederherstellungsvorgangs für replizierte Daten wird der Datenwert, val, mit dem jüngsten Zeitstempel in einem Quorum in der Segmentgruppe entdeckt und wird an zumindest einer Mehrzahl der Vorrichtungen in der Segmentgruppe gespeichert. Bei einem Ausführungsbeispiel des Wiederherstellungsvorgangs für löschcodierte Da ten werden die Protokolle für die Segmentgruppe untersucht, um das jüngste Segment zu finden, für das ausreichend Daten zur Verfügung stehen, um das Segment vollständig zu rekonstruieren. Dieses Segment wird anschließend in zumindest ein Quorum in der Segmentgruppe geschrieben.
  • Lese-, Schreib- und Wiederherstellungsvorgänge, für die replizierte Daten verwendet werden können, sind in der US-Patentanmeldung Nr. 10/440,548, die am 16. Mai 2003 eingereicht wurde und den Titel „Read, Write and Recovery Operations for Replicated Data" trägt und deren gesamter Inhalt durch Bezugnahme in das vorliegende Dokument aufgenommen ist, beschrieben. Lese-, Schreib- und Wiederherstellungsvorgänge, die für löschcodierte Daten verwendet werden können, sind in der US-Patentanmeldung Nr. 10/693,758, die am 23. Oktober 2003 eingereicht wurde und den Titel „Methods of Reading and Writing Data" trägt und deren gesamter Inhalt durch Bezugnahme in das vorliegende Dokument aufgenommen ist, beschrieben.
  • Wenn eine Speicherungsvorrichtung 102 ausfällt, sich nach einem Ausfall wieder erholt, außer Betrieb genommen wird, zu dem System 100 hinzugefügt wird, auf Grund eines Netzwerkausfalls unzugänglich ist, oder wenn bestimmt wird, dass eine Speicherungsvorrichtung 102 einen beständigen Spitzenlastpunkt erfährt, weisen diese Bedingungen auf die Notwendigkeit einer Veränderung jeglicher Segmentgruppe hin, von der die betroffene Speicherungsvorrichtung 102 ein Angehöriger ist. Gemäß einem Ausführungsbeispiel der Erfindung wird eine derartige Segmentgruppe rekonfiguriert, um eine andere Quorumsanforderung aufzuweisen. Obwohl die oben beschriebenen Lese-, Schreib- und Wiederherstellungsvorgänge eine Maskierung von Ausfällen oder langsamen Speicherungsvorrichtungen ermöglichen, ermöglichen Veränderungen der Angehörigenzusammensetzung der Segmentgruppen und eine begleitende Rekonfigurierung, dass das System einer größeren Anzahl von Ausfällen standhält, als dies andernfalls möglich wäre, wenn die Quorumsanforderungen feststehend blieben.
  • 3 veranschaulicht ein exemplarisches Flussdiagramm eines Verfahrens 300 zum Rekonfigurieren eines Datenspeicherungssystems gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Das Verfahren 300 rekonfiguriert eine Segmentgruppe dahin gehend, eine Änderung der Angehörigenzusammensetzung der Gruppe widerzuspiegeln, und gewährleistet, dass die Daten nach der Änderung durch die Gruppe einheitlich gespeichert werden. Dies ermöglicht, dass die Quorumsanforderung zum Durchführen von Datentransaktionen durch eine Segmentgruppe auf der Basis der neuen Angehörigenzusammensetzung verändert wird. Man betrachte beispielsweise ein Ausführungsbeispiel, bei dem eine Segmentgruppe für replizierte Daten fünf Angehörige aufweist, wobei in diesem Fall zumindest drei der Vorrichtungen 102 benötigt werden, um eine Mehrzahl zum Durchführen von Lese- und Schreibvorgängen zu bilden. Wenn das System jedoch auf geeignete Weise für eine Angehörigenzusammensetzung von drei rekonfiguriert wird, dann werden lediglich zwei der Vorrichtungen 102 benötigt, um eine Mehrzahl zum Durchführen von Lese- und Schreibvorgängen zu bilden. Somit ist das System durch Rekonfigurieren der Segmentgruppe in der Lage, mehr Ausfälle zu tolerieren als dies ohne die Rekonfigurierung der Fall wäre.
  • Die Einheitlichkeit der nach der Änderung durch die Gruppe gespeicherten Daten wird benötigt, damit die neue Gruppe Lese- und Schreibanforderungen, die nach der Änderung der Angehörigenzusammensetzung empfangen werden, zuverlässig und überprüfbar bedient. Replizierte Daten sind einheitlich, wenn die durch unterschiedliche Speicherungsvorrichtungen gespeicherten Versionen identisch sind. Replizierte Daten sind uneinheitlich, wenn eine Aktualisierung an einer Version der Daten und nicht an einer anderen Version aufgetreten ist, so dass die Versionen nicht mehr identisch sind. Löschcodierte Daten sind einheitlich, wenn Daten- o der Paritätsblöcke von derselben Version eines Segments abgeleitet sind. Löschcodierte Daten sind uneinheitlich, wenn eine Aktualisierung an einem Datenblock oder an Paritätsinformationen für ein Segment aufgetreten ist, jedoch keine entsprechende Aktualisierung an einem anderen Datenblock oder an anderen Paritätsinformationen für dasselbe Segment vorgenommen wurde. Wie hierin ausführlicher erläutert wird, kann die Einheitlichkeit einer redundant gespeicherten Version eines Datensegments ermittelt werden, indem Zeitstempel untersucht werden, die Aktualisierungen des Datensegments zugeordnet sind, die an den Speicherungsvorrichtungen vorgenommen wurden, die dahin gehend zugewiesen sind, das Datensegment zu speichern.
  • Die Änderung der Angehörigenzusammensetzung für eine Segmentgruppe wird hierin dahin gehend bezeichnet, dass sie von einer „vorherigen" oder „ersten" Angehörigenzusammensetzung zu einer „neuen" oder „zweiten" Angehörigenzusammensetzung erfolgt. Das Verfahren 300 wird durch ein redundantes Datenspeicherungssystem wie z.B. das System 100 der 1 durchgeführt und kann für jede Segmentgruppe unabhängig ablaufen.
  • Bei einem Schritt 302 werden redundante Daten durch eine vorherige Gruppe gespeichert. Zumindest ein Quorum der Speicherungsvorrichtungen dieser Gruppe speichert jeweils zumindest einen Teil eines Datensegments oder redundanter Daten. Im Fall von replizierten Daten bedeutet dies beispielsweise, dass zumindest eine Mehrzahl der Speicherungsvorrichtungen in dieser Gruppe Nachbildungen der Daten (d.h. Daten oder eine redundante Kopie der Daten) speichert; und in dem Fall von löschcodierten Daten speichert zumindest ein Quorum der Speicherungsvorrichtungen in dieser Gruppe jeweils einen Datenblock oder redundante Paritätsdaten.
  • Bei einem Schritt 304 wird eine neue Gruppe gebildet. Eine neue Segmentgruppenangehörigenzusammensetzung wird übli cherweise dann gebildet, wenn eine Änderung der Angehörigenzusammensetzung einer bestimmten „vorherigen" Gruppe erfolgt. Beispielsweise kann ein Systemadministrator bestimmen, dass eine Speicherungsvorrichtung ausgefallen ist, und dass nicht erwartet wird, dass sie sich erholt, oder er kann bestimmen, dass eine neue Speicherungsvorrichtung hinzugefügt wird. Als weiteres Beispiel kann eine bestimmte Speicherungsvorrichtung der Gruppe den Ausfall einer anderen Speicherungsvorrichtung der Gruppe erfassen, wenn es die Speicherungsvorrichtung fortgesetzt versäumt, auf Nachrichten, die durch die bestimmte Speicherungsvorrichtung über einen Zeitraum hinweg gesendet werden, zu reagieren. Als wieder anderes Beispiel kann eine bestimmte Speicherungsvorrichtung der Gruppe die Wiederherstellung einer zuvor ausgefallenen Vorrichtung der Gruppe erfassen, wenn die bestimmte Speicherungsvorrichtung eine Nachricht von der zuvor ausgefallenen Vorrichtung empfängt.
  • Eine Bestimmte der Speicherungsvorrichtungen der Segmentgruppe kann im Schritt 304 eine Bildung einer neuen Gruppe einleiten. Diese Vorrichtung kann durch den Systemadministrator ausersehen sein oder kann eine Änderung der Angehörigenzusammensetzung der vorherigen Gruppe erfasst haben.
  • 4 veranschaulicht ein exemplarisches Flussdiagramm eines Verfahrens 400 zum Bilden einer neuen Gruppe von Speicherungsvorrichtungen gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. In einem Schritt 402 sendet die initiierende Vorrichtung eine Rundsendenachricht an potentielle Angehörige der neuen Gruppe. Jede Segmentgruppe kann durch eine eindeutige Segmentgruppenidentifizierung identifiziert sein. Für jedes Datensegment dient eine Anzahl von Vorrichtungen als potentielle Angehörige der Segmentgruppe, obwohl die Angehörigen der Segmentgruppe zu einer beliebigen Zeit einen Teilsatz der potentiellen Angehörigen umfassen können. Jede Speicherungsvorrichtung speichert vorzugsweise eine Aufzeichnung der Segmentgruppen, von denen sie potentiell eine Angehörige werden kann, und eine Aufzeich nung der Identifizierungen anderer Vorrichtungen, die potentielle Angehörige sind. Die im Schritt 302 gesendete Rundsendenachricht identifiziert vorzugsweise die jeweilige Segmentgruppe unter Verwendung der Segmentgruppenidentifizierung und wird an alle potentiellen Angehörigen der Segmentgruppe gesendet.
  • Die potentiellen Angehörigen, die die Rundsendenachricht empfangen und die funktionstüchtig sind, senden eine Antwortnachricht an die initiierende Vorrichtung. Die initiierende Vorrichtung kann eine Antwort von manchen oder allen Vorrichtungen, an die die Rundsendenachricht gesendet wurde, empfangen.
  • Bei einem Schritt 404 schlägt die initiierende Vorrichtung eine in Frage kommende Gruppe bzw. Kandidatengruppe auf der Basis von Antworten an ihre rundgesendete Nachricht vor. Die Kandidatengruppe, die bei Schritt 404 vorgeschlagen wird, umfasst vorzugsweise alle Vorrichtungen, von denen die initiierende Vorrichtung eine Antwort empfing. Falls alle Vorrichtungen die Rundsendenachricht empfangen und antworten, dann umfasst die Kandidatengruppe vorzugsweise alle Vorrichtungen. Falls jedoch einige der Vorrichtungen innerhalb eines vorbestimmten Zeitraums antworten, dann umfasst die Kandidatengruppe lediglich diese Vorrichtungen. Alternativ dazu können für die Kandidatengruppe weniger als alle der antwortenden Vorrichtungen ausgewählt werden, statt dass alle antwortenden Vorrichtungen in der Kandidatengruppe enthalten sind. Dies kann vorteilhaft sein, wenn mehr potentielle Gruppenangehörige vorliegen als benötigt werden, um die Daten sicher und zuverlässig zu speichern. Die initiierende Vorrichtung schlägt die Kandidatengruppe vor, indem sie eine Nachricht, die die Angehörigenzusammensetzung der Kandidatengruppe identifiziert, an alle Angehörigen der Kandidatengruppe sendet.
  • Jede Vorrichtung, die die Nachricht empfängt, die die Kandidatengruppe vorschlägt, bestimmt, ob die Kandidatengruppe zumindest ein Quorum der vorherigen Gruppe umfasst, bevor sie die Kandidatengruppe akzeptiert. Außerdem unterhält jede Speicherungsvorrichtung vorzugsweise eine Liste von unklaren Kandidatengruppen, zu denen die vorgeschlagene Kandidatengruppe hinzugefügt wird. Eine unklare Kandidatengruppe ist eine, die vorgeschlagen, jedoch nicht akzeptiert wurde. Jede Vorrichtung bestimmt außerdem, ob die Kandidatengruppe zumindest eine Mehrzahl etwaiger vorheriger unklarer Kandidatengruppen umfasst, bevor sie die Kandidatengruppe akzeptiert. Wenn die Kandidatengruppe also zumindest ein Quorum der vorherigen Gruppe umfasst und zumindest eine Mehrzahl etwaiger vorheriger unklarer Kandidatengruppen umfasst, dann wird die Kandidatengruppe akzeptiert. Dieses Nachverfolgen der vorherigen unklaren Kandidatengruppen trägt dazu bei, zu verhindern, dass zwei nicht zusammenhängende Gruppen von Speicherungsvorrichtungen dahin gehend zugewiesen werden, ein einzelnes Datensegment zu speichern. Jede Vorrichtung, die eine Kandidatengruppe akzeptiert, antwortet der initiierenden Vorrichtung, dass sie die Kandidatengruppe akzeptiert.
  • Bei Schritt 406 sendet die initiierende Vorrichtung, nachdem die initiierende Vorrichtung eine Antwort von jedem Angehörigen einer akzeptierten Kandidatengruppe empfangen hat, eine Nachricht an jede zugehörige Vorrichtung, wobei sie dieselbe informiert, dass die Kandidatengruppe akzeptiert wurde und somit die neue Gruppe für das jeweilige Datensegment ist. Ansprechend darauf kann jeder Angehörige seine Liste von unklaren Kandidatengruppen für das Datensegment löschen oder verwerfen. Falls nicht alle Angehörigen der Kandidatengruppe mit einer Akzeptanz der Kandidatengruppe reagieren, kann die initiierende Vorrichtung das Verfahren erneut starten, wobei bei Schritt 402 oder bei Schritt 404 begonnen wird. Falls die initiierende Vorrichtung ausfällt, während sie das Verfahren 400 betreibt, erfasst eine andere Vorrichtung den Ausfall und beginnt dieses Verfahren von neuem.
  • Infolge des Verfahrens 400 hat jede Vorrichtung der neuen Gruppe der Angehörigenzusammensetzung der neuen Gruppe zugestimmt und dieselbe aufgezeichnet. An diesem Punkt haben die Vorrichtungen immer noch auch eine Aufzeichnung der Angehörigenzusammensetzung der vorherigen Gruppe. Somit unterhält jede Speicherungsvorrichtung eine Liste der Segmentgruppen, von denen sie eine aktive Angehörige ist.
  • Gemäß einem Ausführungsbeispiel der Erfindung können während des Verfahrens 400 eine oder mehr Zeugenvorrichtungen verwendet werden. Vorzugsweise ist jeder Segmentgruppe eine Zeugenvorrichtung zugewiesen, obwohl zusätzliche Zeugen zugewiesen werden können. Jede Zeugenvorrichtung nimmt an den Nachrichtsaustauschvorgängen für das Verfahren 400 teil, speichert jedoch keinen Teil des Datensegments. Somit empfangen die Zeugenvorrichtungen die im Schritt 402 rundgesendete Nachricht und antworten. Außerdem empfangen die Zeugenvorrichtungen die im Schritt 404 vorgeschlagene Angehörigenzusammensetzung der Kandidatengruppe und bestimmen, ob sie die Kandidaten-Angehörigenzusammensetzung annehmen. Die Zeugenvorrichtungen pflegen außerdem eine Liste vorheriger unklarer Angehörigenzusammensetzungen von Kandidatengruppen, um zu bestimmen, ob sie die Angehörigenzusammensetzung einer Kandidatengruppe akzeptieren. Durch Erhöhen der Anzahl von Vorrichtungen, die an dem Verfahren 400 beteiligt sind, wird die Zuverlässigkeit der Angehörigenzusammensetzungsauswahl erhöht. Die Miteinbeziehung von Zeugenvorrichtungen ist am sinnvollsten, wenn eine geringe Anzahl anderer Vorrichtungen an dem Verfahren beteiligt sind. Insbesondere wenn eine vorherige Segmentangehörigenzusammensetzung lediglich zwei Angehörige aufweist und die Segmentgruppenübergänge zu einer neuen Gruppenangehörigenzusammensetzung lediglich einen Angehörigen aufweisen, kann bzw. können eine oder mehr Zeugenvorrichtungen eine die Entscheidung bringende Wahl treffen, um zu ermöglichen, dass eine Kandidatengruppenangehörigenzusammensetzung einer Vorrichtung erzeugt werden kann, obwohl eine Vorrichtung nicht eine Mehrzahl der zwei Vorrichtungen der vorherigen Gruppenangehörigenzusammensetzung ist.
  • Nachdem die neue Gruppenangehörigenzusammensetzung von Speicherungsvorrichtungen für eine Segmentgruppe gebildet wurde, wird ein Versuch unternommen, die Vorherige-Angehörigenzusammensetzungsgruppe zu beseitigen, so dass zukünftige Anforderungen nur durch ein Kontaktieren eines Quorums der neuen Angehörigenzusammensetzungsgruppe abschließen können. Bevor die vorherige Gruppe beseitigt werden kann, muss die Segmentgruppe jedoch synchronisiert werden. Eine Synchronisation erfordert, dass eine einheitliche Version des Segments für Lese- und Schreibzugriffe der neuen Gruppe zur Verfügung gestellt wird. Man betrachte beispielsweise ein Ausführungsbeispiel, bei dem eine vorherige Gruppenangehörigenzusammensetzung von Speicherungsvorrichtungen 102 fünf Angehörige A, B, C, D und E aufweist, und dass A, B und C eine Mehrzahl bilden, die eine einheitliche Version replizierter Daten aufweist (D und E verpassten die jüngsten Schreibvorgänge, somit sind ihre Daten nicht mehr aktuell). Man nehme an, dass anschließend eine neue Gruppenangehörigenzusammensetzung gebildet wird, die lediglich die Vorrichtungen C, D und E umfasst. In diesem Fall muss zumindest eine Mehrzahl der neuen Gruppe eine einheitliche Version der Daten speichern, obwohl vorzugsweise alle in der neuen Gruppe eine einheitliche Version der Daten speichern. Demgemäß muss zumindest entweder D oder E, und vorzugsweise beide, mit der jüngsten Version der Daten aktualisiert werden, um zu gewährleisten, dass zumindest eine Mehrzahl der neuen Gruppe einheitliche Versionen der Daten speichert.
  • Unter Bezugnahme auf 3 wird somit in einem Schritt 306 die Einheitlichkeit der redundanten Daten gewährleistet, nachdem im Schritt 304 die neue Gruppenangehörigenzusammensetzung gebildet wurde. Dies wird hierin als Datensynchronisation bezeichnet und wird bewerkstelligt, indem gewährleistet wird, dass zumindest eine Mehrzahl der neuen Gruppe (im Fall von redundanten Daten) oder ein Quorum der neuen Gruppe (im Fall von löschcodierten Daten) die redundanten Daten einheitlich speichert.
  • 5 veranschaulicht ein exemplarisches Flussdiagramm eines Verfahrens 500 zum Gewährleisten, dass zumindest eine Mehrzahl von Speicherungsvorrichtungen replizierte Daten einheitlich speichert. In einem Schritt 502 sendet eine bestimmte Vorrichtung eine Nachricht an jede Vorrichtung in der vorherigen Gruppe. Die bestimmte Vorrichtung, die die Abfragenachricht sendet, ist ein Koordinator für den Synchronisationsvorgang und ist vorzugsweise dieselbe Vorrichtung, die die Bildung einer neuen Gruppenangehörigenzusammensetzung im Schritt 304 der 3 initiiert.
  • Die Abfragenachricht identifiziert einen bestimmten Datenblock und weist jede Vorrichtung, die die Nachricht empfängt, an, ihren aktuellen Wert für die Daten, val, und ihre zugeordneten zwei Zeitstempel valTS und ordTS zurückzusenden. Wie erwähnt wurde, identifizieren die valTS-Zeitstempel die zuletzt aktualisierte Version der Daten, und der ordTS-Zeitstempel identifiziert jegliche eingeleiteten, jedoch nicht abgeschlossenen Schreibvorgänge in die Daten. Die ordTS-Zeitstempel werden zum Zweck einer künftigen Verwendung beim Wiederherstellen des jüngsten ordTS-Zeitstempels zu der neuen Gruppe gesammelt, falls zur Zeit der Rekonfiguration ein anstehender, nicht abgeschlossener Schreibvorgang vorlag. Andernfalls, wenn kein anstehender Schreibvorgang vorlag, ist der jüngste ordTS-Zeitstempel der Mehrzahl derselbe wie der jüngste valTS-Zeitstempel.
  • Bei Schritt 504 wartet der Koordinator, bis er Antworten von zumindest einer Mehrzahl der Vorrichtungen der vorherigen Gruppenangehörigenzusammensetzung empfängt. Bei einem Schritt 506 wird die zuletzt aktualisierte Version der Daten aus den Antworten ausgewählt. Die zuletzt aktualisierte Version der Daten wird durch die Zeitstempel und insbesondere dadurch, dass sie den höchsten Wert für valTS auf weist, identifiziert. Dadurch, dass gewartet wird, bis eine Mehrzahl der Vorrichtungen der vorherigen Gruppe im Schritt 504 reagiert, gewährleistet das Verfahren, dass die ausgewählte Version der Daten die Version für den jüngsten erfolgreichen Schreibvorgang ist.
  • Bei Schritt 508 sendet der Koordinator eine Schreibnachricht an Speicherungsvorrichtungen der neuen Gruppenangehörigenzusammensetzung. Diese Schreibnachricht identifiziert den jeweiligen Datenblock und umfasst den jüngsten Wert für den Block und die jüngsten valTS- und ordTS-Zeitstempel für den Block, die aus der vorherigen Gruppe erhalten wurden. Die Schreibnachricht kann an jede Speicherungsvorrichtung der neuen Gruppe gesendet werden, obwohl die Schreibnachricht vorzugsweise nicht an Speicherungsvorrichtungen der neuen Gruppe gesendet wird, von denen bestimmt wird, dass sie bereits die jüngste Version der Daten haben. Dies kann aus den bei Schritt 504 empfangenen Antworten ermittelt werden. Außerdem können alle oder kann zumindest ein Quorum der Speicherungsvorrichtungen in der neuen Gruppe unter bestimmten Umständen bereits eine einheitliche Version der Daten aufweisen. Somit müssen im Schritt 508 keine Schreibnachrichten gesendet werden. Wenn beispielsweise jede Vorrichtung der vorherigen Gruppe die jüngste Version der Daten speichert, und die neue Gruppe ein Teilsatz der vorherigen Gruppe ist, dann müssen keine Schreibnachrichten an die neue Gruppe gesendet werden.
  • Ansprechend auf diese Schreibnachricht vergleicht jede Vorrichtung, die die Nachricht empfängt, den in der Schreibnachricht empfangenen Zeitstempel ordTS mit ihrem aktuellen Wert des Zeitstempels ordTS für den Datenblock. Falls der in der Schreibnachricht empfangene ordTS-Zeitstempel jünger ist als der aktuelle Wert des Zeitstempels ordTS für den Datenblock, dann ersetzt die Vorrichtung ihren aktuellen Wert des Zeitstempels ordTS durch den Wert des Zeitstempels ordTS, der in der Schreibnachricht empfangen wurde. Andern falls behält die Vorrichtung ihren aktuellen Wert des ordTS-Zeitstempels bei.
  • Außerdem vergleicht jede Vorrichtung, die die Nachricht empfängt, den Zeitstempel valTS, der in der Schreibnachricht empfangen wurde, mit ihrem aktuellen Wert des Zeitstempels valTS für den Datenblock. Falls der in der Schreibnachricht empfangene Zeitstempel valTS jünger ist als der aktuelle Wert des Zeitstempels valTS für den Datenblock, dann ersetzt die Vorrichtung ihren aktuellen Wert des Zeitstempels valTS durch den Wert des Zeitstempels valTS, der in der Schreibnachricht empfangen wurde, und ersetzt außerdem ihren aktuellen Wert für den Datenblock durch den Wert für den Datenblock, der in der Schreibnachricht empfangen wurde. Andernfalls behält die Vorrichtung ihre aktuellen Werte des Zeitstempels valTS und des Datenblocks bei. Falls die Vorrichtung zuvor noch keine Version des Datenblocks gespeichert hat, speichert sie einfach den jüngsten Wert des Blocks zusammen mit den jüngsten Zeitstempeln valTS und ordTS für den Block, die in der Schreibnachricht empfangen werden.
  • Bei Schritt 510 wartet der Koordinator, bis zumindest eine Mehrzahl der Speicherungsvorrichtungen in der neuen Gruppenangehörigenzusammensetzung entweder geantwortet haben, dass sie erfolgreich auf die Schreibnachricht reagiert haben oder dass andererseits bestimmt wurde, dass sie bereits eine einheitliche Version der Daten haben. Dieser Umstand gibt an, dass der Synchronisationsprozess erfolgreich war, und somit ist die neue Gruppe nun bereit, auf Lese- und Schreibanforderungen an den Datenblock zu reagieren. Der Initiator kann dann eine Nachricht an die Angehörigen der vorherigen Gruppe senden, um sie zu informieren, dass sie die vorherige Gruppenangehörigenzusammensetzung aus ihren Angehörigenzusammensetzungsaufzeichnungen entfernen können oder die vorherige Gruppe auf andere Weise deaktivieren können. Falls eine Mehrzahl im Schritt 510 keine einheitliche Version der Daten hat, weist dies auf ein Versagen des Synchronisationsprozess hin, wobei das Verfahren 500 in diesem Fall erneut versucht werden kann, oder dies kann darauf hinweisen, dass eine andere, neue Gruppenangehörigenzusammensetzung gebildet werden muss, wobei in diesem Fall das Verfahren 300 erneut durchgeführt werden kann. Bei einem anderen Ausführungsbeispiel kann eine Synchronisation nur dann als erfolgreich angesehen werden, wenn bestimmt wurde, dass alle Vorrichtungen bereits eine einheitliche Version der Daten aufweisen.
  • 6 veranschaulicht ein exemplarisches Flussdiagramm eines Verfahrens 600 zum Gewährleisten, dass zumindest ein Quorum von Speicherungsvorrichtungen löschcodierte Daten auf einheitliche Weise speichert. Für löschcodierte Daten speichern die Vorrichtungen in der Segmentgruppe jeweils einen bestimmten Datenblock, der zu einem bestimmten Datensegment gehört, oder einen redundanten Paritätsblock für das Segment. Bei einem Schritt 602 sendet eine bestimmte Vorrichtung eine Abfragenachricht an jede Vorrichtung in der vorherigen Gruppe. Die jeweilige Vorrichtung, die die Abfragenachricht sendet, ist ein Koordinator für den Synchronisationsprozess und ist vorzugsweise dieselbe Vorrichtung, die die Bildung einer neuen Gruppenangehörigenzusammensetzung im Schritt 304 der 3 initiiert.
  • Die Abfragenachricht identifiziert ein bestimmtes Datensegment oder einen bestimmten Block und weist jede Vorrichtung, die die Nachricht empfängt, an, ihren aktuellen Wert für die Daten (die ein Datenblock oder Parität sein können), val, und ihre zwei Zeitstempel valTS und ordTS zurückzugeben. Wie im Fall von redundant gespeicherten Daten werden die ordTS-Zeitstempel zur zukünftigen Verwendung beim Wiederherstellen des jüngsten ordTS-Zeitstempels zu der neuen Gruppe gesammelt, falls zur Zeit der Rekonfigurierung ein anstehender nicht-abgeschlossener Schreibvorgangs vorlag.
  • Bei Schritt 604 wartet der Koordinator, bis er Antworten von zumindest einem Quorum der Vorrichtungen der vorherigen Gruppenangehörigenzusammensetzung empfängt. Bei einem Schritt 606, wenn angenommen wird, dass das Quorum der Vorrichtungen den jüngsten valTS-Zeitstempel melden, decodiert der Koordinator die empfangenen Datenwerte, um den Wert jegliches Datenblocks oder Paritätsblocks, der zu dem Datensegment gehört, der jedoch aktualisiert werden muss, zu bestimmen. Dort, wo die vorherige Gruppe und die neue Gruppe dieselbe Zahl von Angehörigen aufweisen, beinhaltet dies allgemein ein Speichern der entsprechenden Daten an jeglicher Vorrichtung, die zu der Gruppe hinzugefügt wurde. Dort, wo die vorherige Gruppe und die neue Gruppe eine unterschiedliche Zahl von Angehörigen aufweisen, kann dies ein erneutes Berechnen der Löschcodierung und möglicherweise ein Rekonfigurieren eines gesamten Datenvolumens umfassen. Beispielsweise kann das Datensegment in eine unterschiedliche Anzahl von Datenblöcken unterteilt sein, oder es kann eine unterschiedliche Anzahl von Paritätsblöcken verwendet werden.
  • Bei Schritt 608 sendet der Koordinator eine Schreibnachricht an Speicherungsvorrichtungen der neuen Gruppenangehörigenzusammensetzung. Da jede Vorrichtung der neuen Gruppe einen Datenblock oder eine Datenparität speichert, der bzw. die einen anderen Wert val aufweist als der durch die anderen Vorrichtungen der neuen Gruppe gespeicherte, sind jegliche Schreibnachrichten, die im Schritt 608 gesendet werden, für eine Vorrichtung der neuen Gruppe spezifisch und umfassen den Datenblock oder Paritätswert, der der Vorrichtung zugewiesen ist. Die Schreibnachrichten können auch die jüngsten valTS- und ordTS-Zeitstempel für das Segment umfassen, die aus der vorherigen Gruppe erhalten wurden. Eine entsprechende Schreibnachricht kann an jede Speicherungsvorrichtung der neuen Gruppe gesendet werden, obwohl die Schreibnachricht vorzugsweise nicht an Speicherungsvorrichtungen der neuen Gruppe gesendet wird, von denen bestimmt wird, dass sie die jüngste Version ihres Datenblocks oder ihrer Parität bereits aufweisen. Dies kann aus den im Schritt 604 empfangenen Antworten ermittelt werden. Unter bestimmten Umständen können alle oder kann zumindest ein Quorum der Speicherungsvorrichtungen in der vorherigen Gruppe bereits eine einheitliche Version der Daten aufweisen. In diesem Fall müssen im Schritt 608 keine Schreibnachrichten gesendet werden.
  • Ansprechend auf diese Schreibnachricht vergleicht jede Vorrichtung, die die Nachricht empfängt, den in der Schreibnachricht empfangenen Zeitstempel ordTS mit ihrem aktuellen Wert des Zeitstempels ordTS für den Datenblock oder die Parität. Falls der in der Schreibnachricht empfangene ordTS-Zeitstempel jünger ist als der aktuelle Wert des Zeitstempels ordTS für die Daten, dann ersetzt die Vorrichtung ihren aktuellen Wert des Zeitstempels ordTS durch den Wert des in der Schreibnachricht empfangenen Zeitstempels ordTS. Andernfalls behält die Vorrichtung ihren aktuellen Wert des ordTS-Zeitstempels bei.
  • Außerdem vergleicht jede Vorrichtung, die die Nachricht empfängt, den in der Schreibnachricht empfangenen Zeitstempel valTS mit ihrem aktuellen Wert des Zeitstempels valTS für den Datenblock oder die Parität. Falls der valTS-Zeitstempel nicht in dem durch die Vorrichtung aufrechterhaltenen Protokoll ist, fügt die Vorrichtung zu ihrem Protokoll den Zeitstempel valTS und den Wert für den Datenblock oder die Parität, der in der Schreibnachricht empfangen wird, hinzu. Andernfalls behält die Vorrichtung ihren aktuellen Inhalt des Protokolls bei. Falls die Vorrichtung nicht zuvor eine Version des Datenblocks oder der Parität gespeichert hat, speichert sie einfach den jüngsten Wert des Blocks zusammen mit den jüngsten Zeitstempeln valTS und ordTS, die in der Schreibnachricht empfangen werden.
  • Bei Schritt 610 wartet der Koordinator, bis ein Quorum der Speicherungsvorrichtungen in der neuen Gruppenangehörigenzusammensetzung entweder geantwortet haben, dass sie er folgreich auf die Schreibnachricht reagiert haben, oder dass andernfalls bestimmt wurde, dass sie bereits eine einheitliche Version des entsprechenden Datenblocks oder der entsprechenden Parität aufweisen. Dieser Umstand weist darauf hin, dass der Synchronisationsprozess erfolgreich war und dass die neue Gruppe somit nun bereit ist, auf Lese- und Schreibanforderungen an das Datensegment anzusprechen. Der Initiator kann dann eine Nachricht an die Angehörigen der vorherigen Gruppenangehörigenzusammensetzung senden, um sie zu informieren, dass sie die vorherige Gruppe aus ihren Angehörigenzusammensetzungsaufzeichnungen entfernen oder andernfalls die vorherige Gruppe deaktivieren können. Falls ein Quorum im Schritt 610 keine einheitliche Version des Segments aufweist, weist es auf ein Versagen des Synchronisationsprozesses hin, wobei das Verfahren 600 in diesem Fall erneut versucht werden kann, oder es kann darauf hinweisen, dass eine andere, neue Gruppenangehörigenzusammensetzung gebildet werden muss, wobei in diesem Fall das Verfahren 300 erneut durchgeführt werden kann. Bei einem anderen Ausführungsbeispiel wird eine Synchronisation eventuell nur dann als erfolgreich angesehen, wenn bestimmt wurde, dass alle Vorrichtungen bereits eine einheitliche Version der Daten aufweisen.
  • Während das Synchronisationsverfahren 500 oder 600 durchgeführt wird und bis die Gruppe deaktiviert ist, sind sowohl die vorherige Gruppe als auch die neue Gruppe zum Speichern des jeweiligen Datensegments ausersehen. Somit müssen jegliche in der Zwischenzeit durchgeführte Lese- oder Schreibvorgänge mit einem Quorum der vorherigen Gruppe und mit einem Quorum der neuen Gruppe durchgeführt werden.
  • Wenn eine Vorrichtung, die als Koordinator für die Synchronisation fungiert, während des Synchronisationsprozesses einen Ausfall erfährt, kann eine andere Vorrichtung den Prozess übernehmen. Jedoch werden Blöcke, die synchronisiert wurden, vorzugsweise nicht erneut synchronisiert.
  • Die Verfahren 500 und 600 sind für ein einziges Datensegment ausreichend. Jedoch kann eine Segmentgruppe mehrere Datensegmente speichern. Somit kann eine Änderung der Gruppenangehörigenzusammensetzung die Synchronisation von mehreren Datensegmenten erfordern. Demgemäß kann das Verfahren 500 oder 600 für jedes Datensegment, das durch die vorherige Gruppe gespeichert wurde, durchgeführt werden.
  • Wie erwähnt wurde, speichert jede Speicherungsvorrichtung Zeitstempel für jeden Datenblock, den sie speichert. Die Zeitstempel können in einer Tabelle an jeder Vorrichtung gespeichert werden, in der auch die Segmentgruppenidentifizierung für die Daten gespeichert ist. Somit kann die Vorrichtung, die die Datensynchronisation für eine neue Gruppenangehörigenzusammensetzung initiiert, ihre eigene Zeitstempeltabelle überprüfen, um alle Datenblöcke oder Segmente, die der jeweiligen Segmentgruppenidentifizierung zugeordnet sind, zu identifizieren. Das Verfahren 500 oder 600 kann anschließend für jeden Datenblock oder jedes Segment ausgeführt werden.
  • Jedoch müssen unter manchen Umständen nicht alle Datensegmente, die einer Segmentgruppe zugewiesen sind, infolge der Änderung der Gruppenangehörigenzusammensetzung aktualisiert werden. Beispielsweise kann eine einheitliche Version eines bestimmten Datensegments vor einem Durchführen des Verfahrens 500 oder 600 bereits durch die gesamte Vorrichtungsgruppe in dem Segment gespeichert werden. Somit können derartige Datensegmente identifiziert werden, um zu vermeiden, dass sie unnötigerweise aktualisiert werden müssen. Dies kann beispielsweise dadurch bewerkstelligt werden, dass ein Datensegment identifiziert wird, für das durch ein Quorum keine einheitliche Version gespeichert wird, wie bei Schritt 508 oder 608. Wie oben in Bezug auf Schritte 508 und 608 erläutert wurde, müssen für ein derartiges Segment keine Schreibnachrichten gesendet werden.
  • Bei einem Ausführungsbeispiel werden Zeitstempel für lediglich einen Teil der Daten, die einer Speicherungsvorrichtung zugewiesen sind, in der Zeitstempeltabelle an der Vorrichtung gespeichert, um die Größe der Zeitstempeltabelle zu begrenzen. Für die Lese-, Schreib- und Reparaturvorgänge werden die Zeitstempel verwendet, um gleichzeitige Aktualisierungen der Daten zu vereindeutigen und um Ausfälle zu erfassen und Folgen von Ausfällen zu beheben. Somit können Zeitstempel verworfen werden, nachdem jede Vorrichtung, die einen Block von Daten oder eine Parität hält, eine Aktualisierung bestätigt hat (d.h. wobei valTS = ordTS). Die Vorrichtungen einer Segmentgruppe können die Zeitstempel für einen Datenblock oder eine Parität verwerfen, nachdem alle anderen Angehörigen der Segmentgruppe ihre Daten erfolgreich aktualisiert haben. In diesem Fall behält jede Speicherungsvorrichtung lediglich Zeitstempel für Datenblöcke bei, die gerade aktiv aktualisiert werden.
  • Bei diesem Ausführungsbeispiel kann der Initiator des Datensynchronisationsprozesses für eine neue Gruppenangehörigenzusammensetzung eine Abfragenachricht an die Angehörigen der vorherigen Gruppe senden, die die jeweilige Segmentgruppenidentifizierung umfasst. Jede Speicherungsvorrichtung, die diese Abfragenachricht empfängt, reagiert, indem sie alle Datenblöcke, die der Segmentgruppenidentifizierung zugeordnet sind und die in ihrer Zeitstempeltabelle enthalten sind, identifiziert. Dies sind Blöcke, die derzeit einer Aktualisierung unterzogen werden oder für die zuvor eine fehlgeschlagene Aktualisierung auftrat. Diese Blöcke können durch jede Vorrichtung identifiziert werden, die die Abfragenachricht empfängt, die eine Liste von Blockzahlen an den Initiator sendet. Der Initiator identifiziert dann die zu synchronisierenden Datenblöcke, indem er die Vereinigung aller in den Antworten empfangenen Blöcke nimmt. Man erwartet, dass dieser Satz von Blöcken lediglich diejenigen Datenblöcke umfasst, die synchronisiert werden müssen. Der Segmentgruppe zugeordnete Datenblöcke, die in der Liste nicht erscheinen, müssen nicht synchronisiert werden, da alle Vorrichtungen in der vorherigen Gruppenangehörigenzusammensetzung eine aktuelle und einheitliche Version speichern. Außerdem umfassen diese Vorrichtungen ein Quorum der neuen Gruppenangehörigenzusammensetzung, da Schritt 304 des Verfahrens 300 erfordert, dass die neue Gruppenangehörigenzusammensetzung ein Quorum bzw. eine Mindestanzahl der vorherigen Gruppenangehörigenzusammensetzung umfasst. Dies ist eine andere Möglichkeit, ein Datensegment zu identifizieren, für das eine einheitliche Version nicht durch ein Quorum gespeichert ist.
  • Bei einem Ausführungsbeispiel kann jeder Schreibvorgang eine optionale dritte Phase umfassen, die jede Speicherungsvorrichtung von der Liste anderer Vorrichtungen in der Segmentgruppe benachrichtigt, die den neuen Datenblockwert (oder Paritätswert) erfolgreich speicherten. Diese Vorrichtungen werden für einen vorherigen Schreibvorgang an dem Segment als „reagierender Satz" bezeichnet. Der reagierende Satz kann in jeder Vorrichtung in Verbindung mit ihrer Zeitstempeltabelle gespeichert werden und kann dazu verwendet werden, zwischen denjenigen Blöcken, die synchronisiert werden müssen, bevor die vorherige Gruppenangehörigenzusammensetzung verworfen wird, und denjenigen, die bis zu einem späteren Zeitpunkt warten können, zu unterscheiden. Insbesondere reagiert eine Speicherungsvorrichtung ansprechend auf die Abfragenachricht (im Schritt 504 oder 604 gesendet), indem sie ein Segment als ein Segment identifiziert, das synchronisiert werden muss, falls der reagierende Satz kein Quorum der neuen Gruppenangehörigenzusammensetzung ist. Die auf diese Weise identifizierten Blöcke können unter Verwendung des Verfahrens 500 oder 600 aktualisiert werden. Andernfalls kann die Speicherungsvorrichtung reagieren, indem sie einen Block als einen Block identifiziert, für den eine Aktualisierung optional ist, wenn der reagierende Satz ein Quorum der neuen Gruppenangehörigenzusammensetzung ist, jedoch geringer ist als die gesamte neue Gruppe. Dies ist eine wieder andere Möglichkeit, ein Daten segment zu identifizieren, für das eine einheitliche Version nicht durch ein Quorum gespeichert ist.
  • Unter bestimmten Umständen kann die Synchronisation für eine neue Segmentgruppe gänzlich übersprungen werden. Bei einem Ausführungsbeispiel wird die Synchronisierung übersprungen, falls jedes Quorum einer vorherigen Segmentgruppe ein Supersatz eines Quorums in der neuen Segmentgruppe ist. Dieser Umstand wird als Quorumseinschränkungsumstand bezeichnet. Dies ist der Fall für replizierte Daten, wenn die vorherige Gruppenangehörigenzusammensetzung eine geradzahlige Anzahl von Vorrichtungen aufweist und die neue Gruppenangehörigenzusammensetzung eine Vorrichtung weniger aufweist, da jede Mehrzahl der vorherigen Gruppe auch eine Mehrzahl der neuen Gruppe ist. Die Quorumseinschränkung kann auch im Fall von löschcodierten Daten auftreten. Somit führt der Initiator des Rekonfigurationsverfahrens 300 bei einem Ausführungsbeispiel den Schritt 306 durch, indem er bestimmt, ob der Quorumseinschränkungsumstand gilt, und falls dies der Fall ist, wird das Synchronisationsverfahren 500 oder 600 nicht durchgeführt.
  • Wie erwähnt wurde, wird eine Synchronisation eventuell nur dann als erfolgreich erachtet (in den Schritten 510 und 610), wenn bestätigt ist, dass ein Quorum der neuen Gruppe eine einheitliche Version der Daten (oder Parität) speichert. Ferner kann die Synchronisation für Segmente übersprungen werden, von denen bestätigt ist, dass sie eine einheitliche Version der Daten (oder Parität) durch den Quorumseinschränkungsumstand speichern. Außerdem können manche Daten als Daten identifiziert werden (in den Schritten 504 und 604), für die eine Synchronisation optional ist. In jeglichen dieser Fälle weisen manche der Vorrichtungen der neuen Gruppenangehörigenzusammensetzung eventuell keine einheitliche Version der Daten auf (obwohl zumindest ein Quorum eine einheitliche Version aufweist). Bei einem Ausführungsbeispiel werden alle Vorrichtungen in der neuen Gruppe dazu gebracht, eine einheitliche Version der Daten zu speichern. Somit werden bei einem Ausführungsbeispiel, bei dem die Synchronisation für einen bestimmten Datenblock abgeschlossen oder übersprungen wird und manche der Vorrichtungen keine einheitliche Version der Daten speichern, an diesen Vorrichtungen schließlich Aktualisierungsvorgänge durchgeführt, so dass diese Daten letztlich auf den aktuellen Stand gebracht werden. Dies kann relativ langsam bewerkstelligt werden, nachdem die vorherige Gruppenangehörigenzusammensetzung verworfen wurde, im Hintergrund anderer Vorgänge.
  • Obwohl das Vorstehende in Bezugnahme auf bestimmte Ausführungsbeispiele der Erfindung angeführt wurde, werden Fachleute auf dem Fachgebiet erkennen, dass Änderungen dieser Ausführungsbeispiele vorgenommen werden können, ohne von den Prinzipien und der Wesensart der Erfindung, deren Schutzumfang durch die folgenden Patentansprüche definiert ist, abzuweichen.
  • Zusammenfassung
  • Bei einem Ausführungsbeispiel ist ein Verfahren zum Rekonfigurieren eines redundanten Datenspeicherungssystems 100 vorgesehen. Eine Mehrzahl von Datensegmenten wird durch eine erste Gruppe von Speicherungsvorrichtungen 102 redundant gespeichert, wobei zumindest ein Quorum von Speicherungsvorrichtungen 102 der ersten Gruppe jeweils zumindest einen Teil jedes Datensegments oder von redundanten Daten speichert. Es wird eine zweite Gruppe von Speicherungsvorrichtungen 102 gebildet, wobei die zweite Gruppe eine andere Angehörigenzusammensetzung aufweist als die erste Gruppe. Aus der Mehrzahl wird ein Datensegment identifiziert, für das durch zumindest ein Quorum der zweiten Gruppe keine einheitliche Version gespeichert ist. Zumindest ein Teil des identifizierten Datensegments oder der redundanten Daten wird in zumindest eine der Speicherungsvorrichtungen der zweiten Gruppe geschrieben, wodurch zumindest ein Quorum der zweiten Gruppe eine einheitliche Version des identifizierten Datensegments speichert.

Claims (12)

  1. Ein Verfahren zum Rekonfigurieren eines redundanten Datenspeicherungssystems 100, das folgende Schritte umfasst: redundantes Speichern einer Mehrzahl von Datensegmenten durch eine erste Gruppe von Speicherungsvorrichtungen 102, wobei zumindest ein Quorum von Speicherungsvorrichtungen 102 der ersten Gruppe jeweils zumindest einen Teil jedes Datensegments oder von redundanten Daten speichert; Bilden einer zweiten Gruppen von Speicherungsvorrichtungen 102, wobei die zweite Gruppe eine andere Angehörigenzusammensetzung aufweist als die erste Gruppe; Identifizieren eines Datensegments aus der Mehrzahl, für das keine einheitliche Version durch zumindest ein Quorum der zweiten Gruppe gespeichert ist; und Schreiben zumindest eines Teils des identifizierten Datensegments oder der redundanten Daten in zumindest eine der Speicherungsvorrichtungen 102 der zweiten Gruppe, wodurch zumindest ein Quorum der zweiten Gruppe eine einheitliche Version des identifizierten Datensegments speichert.
  2. Das Verfahren gemäß Anspruch 1, bei dem das identifizierte Datensegment löschcodiert wird.
  3. Das Verfahren gemäß Anspruch 1, bei dem das identifizierte Datensegment repliziert wird.
  4. Das Verfahren gemäß Anspruch 1, bei dem das Identifizieren durchgeführt wird, indem Zeitstempel untersucht werden, die an den Speicherungsvorrichtungen 102 der zweiten Gruppe gespeichert sind.
  5. Das Verfahren gemäß Anspruch 1, bei dem das Identifizieren durchgeführt wird, indem eine Abfragenachricht an eine Speicherungsvorrichtung 102 der zweiten Gruppe gesendet wird, die reagiert, indem sie das Segment identifiziert, falls ein reagierender Satz für einen vorherigen Schreibvorgang an dem Segment kein Quorum der zweiten Gruppe ist.
  6. Das Verfahren gemäß Anspruch 1, bei dem, falls weniger als alle Vorrichtungen 102 in der zweiten Gruppe eine einheitliche Version des identifizierten Datensegments nach dem Schreiben speichern, ein oder mehrere zusätzliche Schreibvorgänge durchgeführt werden, bis alle Vorrichtungen 102 in der zweiten Gruppe eine einheitliche Version speichern.
  7. Das Verfahren gemäß Anspruch 1, bei dem das Bilden der zweiten Gruppe folgende Schritte umfasst: Berechnen einer Kandidatengruppe von Speicherungsvorrichtungen 102 durch eine Bestimmte der Speicherungsvorrichtungen 102; und Senden von Nachrichten von der bestimmten Speicherungsvorrichtung 102 an Angehörige der Kandidatengruppe zum Vorschlagen der Kandidatengruppe und Empfangen von Nachrichten von Angehörigen der Kandidatengruppe, die die Kandidatengruppe als die zweite Gruppe annehmen.
  8. Das Verfahren gemäß Anspruch 1, bei dem eine oder mehrere Zeugenvorrichtungen 102, die keine Angehörige der zweiten Gruppe sind, an dem Bilden der zweiten Gruppe beteiligt sind.
  9. Das Verfahren gemäß Anspruch 8, bei dem das Bilden der zweiten Gruppe folgende Schritte umfasst: Berechnen einer Kandidatengruppe von Speicherungsvorrichtungen 102 durch eine Bestimmte der Speicherungsvorrichtungen 102; und Senden von Nachrichten von der bestimmten Speicherungsvorrichtung 102 an Angehörige der Kandidatengruppe und an die eine oder die mehreren Zeugenvorrichtungen 102 zum Vorschlagen der Kandidatengruppe und Empfangen von Nachrichten von Angehörigen der Kandidatengruppe und von einer oder mehreren der Zeugenvorrichtungen 102, die die Kandidatengruppe als die zweite Gruppe annehmen.
  10. Das Verfahren gemäß Anspruch 1, bei dem die zweite Gruppe zumindest ein Quorum der ersten Gruppe umfasst.
  11. Das Verfahren gemäß Anspruch 1, bei dem die zweite Gruppe ansprechend auf eine Änderung der Angehörigenzusammensetzung der ersten Gruppe gebildet wird.
  12. Ein computerlesbares Medium, das einen Computercode zum Implementieren eines Verfahrens zum Rekonfigurieren eines redundanten Datenspeicherungssystems 100 umfasst, wobei das Verfahren folgende Schritte umfasst: redundantes Speichern einer Mehrzahl von Datensegmenten durch eine erste Gruppe von Speicherungsvorrichtungen 102, wobei zumindest ein Quorum von Speicherungsvorrichtungen 102 der ersten Gruppe jeweils zumindest einen Teil jedes Datensegments oder von redundanten Daten speichert; Bilden einer zweiten Gruppen von Speicherungsvorrichtungen 102, wobei die zweite Gruppe eine andere Angehörigenzusammensetzung aufweist als die erste Gruppe; Identifizieren eines Datensegments aus der Mehrzahl, für das keine einheitliche Version durch zumindest ein Quorum der zweiten Gruppe gespeichert ist; und Schreiben zumindest eines Teils des identifizierten Datensegments oder der redundanten Daten in zumindest eine der Speicherungsvorrichtungen 102 der zweiten Gruppe, wodurch zumindest ein Quorum der zweiten Gruppe eine einheitliche Version des identifizierten Datensegments speichert.
DE112005002481T 2004-10-08 2005-10-05 Rekonfigurierung einer redundanten Datenspeicherung Withdrawn DE112005002481T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/961,570 2004-10-08
US10/961,570 US20060080574A1 (en) 2004-10-08 2004-10-08 Redundant data storage reconfiguration
PCT/US2005/036134 WO2006042107A2 (en) 2004-10-08 2005-10-05 Redundant data storage reconfiguration

Publications (1)

Publication Number Publication Date
DE112005002481T5 true DE112005002481T5 (de) 2007-08-30

Family

ID=36146780

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005002481T Withdrawn DE112005002481T5 (de) 2004-10-08 2005-10-05 Rekonfigurierung einer redundanten Datenspeicherung

Country Status (5)

Country Link
US (1) US20060080574A1 (de)
JP (1) JP2008516343A (de)
DE (1) DE112005002481T5 (de)
GB (1) GB2432696B (de)
WO (1) WO2006042107A2 (de)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101375284B (zh) 2004-10-25 2012-02-22 安全第一公司 安全数据分析方法和系统
AU2006350252B2 (en) 2005-11-18 2010-10-14 Security First Corporation Secure data parser method and system
US20080010513A1 (en) * 2006-06-27 2008-01-10 International Business Machines Corporation Controlling computer storage systems
US8949614B1 (en) * 2008-04-18 2015-02-03 Netapp, Inc. Highly efficient guarantee of data consistency
US9727473B2 (en) * 2008-09-30 2017-08-08 Intel Corporation Methods to communicate a timestamp to a storage system
US8443062B2 (en) * 2008-10-23 2013-05-14 Microsoft Corporation Quorum based transactionally consistent membership management in distributed storage systems
SE533007C2 (sv) 2008-10-24 2010-06-08 Ilt Productions Ab Distribuerad datalagring
US10783121B2 (en) * 2008-12-22 2020-09-22 Ctera Networks, Ltd. Techniques for optimizing data flows in hybrid cloud storage systems
JP5387757B2 (ja) * 2010-03-05 2014-01-15 日本電気株式会社 並列データ処理システム、並列データ処理方法及びプログラム
EP2712149B1 (de) * 2010-04-23 2019-10-30 Compuverde AB Verteilte datenspeicherung
US8650365B2 (en) 2011-09-02 2014-02-11 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US8997124B2 (en) 2011-09-02 2015-03-31 Compuverde Ab Method for updating data in a distributed data storage system
US8769138B2 (en) 2011-09-02 2014-07-01 Compuverde Ab Method for data retrieval from a distributed data storage system
US9021053B2 (en) 2011-09-02 2015-04-28 Compuverde Ab Method and device for writing data to a data storage system comprising a plurality of data storage nodes
US8645978B2 (en) 2011-09-02 2014-02-04 Compuverde Ab Method for data maintenance
US9626378B2 (en) 2011-09-02 2017-04-18 Compuverde Ab Method for handling requests in a storage system and a storage node for a storage system
US9069827B1 (en) * 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
US20140075170A1 (en) * 2012-09-12 2014-03-13 International Business Machines Corporation Automated firmware voting to enable multi-enclosure federated systems
US9098447B1 (en) * 2013-05-20 2015-08-04 Amazon Technologies, Inc. Recovery of corrupted erasure-coded data files
US9098446B1 (en) * 2013-05-20 2015-08-04 Amazon Technologies, Inc. Recovery of corrupted erasure-coded data files
US9158927B1 (en) 2013-06-24 2015-10-13 Amazon Technologies, Inc. Cross-region recovery of encrypted, erasure-encoded data
US10216949B1 (en) * 2013-09-20 2019-02-26 Amazon Technologies, Inc. Dynamic quorum membership changes
US9489252B1 (en) 2013-11-08 2016-11-08 Amazon Technologies, Inc. File recovery using diverse erasure encoded fragments
US10685037B2 (en) * 2013-12-18 2020-06-16 Amazon Technology, Inc. Volume cohorts in object-redundant storage systems
US9753807B1 (en) 2014-06-17 2017-09-05 Amazon Technologies, Inc. Generation and verification of erasure encoded fragments
US9552254B1 (en) 2014-09-29 2017-01-24 Amazon Technologies, Inc. Verification of erasure encoded fragments
US9489254B1 (en) 2014-09-29 2016-11-08 Amazon Technologies, Inc. Verification of erasure encoded fragments
US11423004B2 (en) 2015-04-17 2022-08-23 Netapp Inc. Granular replication of volume subsets
US10977128B1 (en) 2015-06-16 2021-04-13 Amazon Technologies, Inc. Adaptive data loss mitigation for redundancy coding systems
US9998150B1 (en) 2015-06-16 2018-06-12 Amazon Technologies, Inc. Layered data redundancy coding techniques for layer-local data recovery
US10298259B1 (en) 2015-06-16 2019-05-21 Amazon Technologies, Inc. Multi-layered data redundancy coding techniques
US10270475B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Layered redundancy coding for encoded parity data
US10270476B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Failure mode-sensitive layered redundancy coding techniques
US9998539B1 (en) 2015-07-01 2018-06-12 Amazon Technologies, Inc. Non-parity in grid encoded data storage systems
US10198311B1 (en) 2015-07-01 2019-02-05 Amazon Technologies, Inc. Cross-datacenter validation of grid encoded data storage systems
US10089176B1 (en) 2015-07-01 2018-10-02 Amazon Technologies, Inc. Incremental updates of grid encoded data storage systems
US10394762B1 (en) 2015-07-01 2019-08-27 Amazon Technologies, Inc. Determining data redundancy in grid encoded data storage systems
US9904589B1 (en) * 2015-07-01 2018-02-27 Amazon Technologies, Inc. Incremental media size extension for grid encoded data storage systems
US10108819B1 (en) 2015-07-01 2018-10-23 Amazon Technologies, Inc. Cross-datacenter extension of grid encoded data storage systems
US9959167B1 (en) 2015-07-01 2018-05-01 Amazon Technologies, Inc. Rebundling grid encoded data storage systems
US10162704B1 (en) 2015-07-01 2018-12-25 Amazon Technologies, Inc. Grid encoded data storage systems for efficient data repair
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US9940474B1 (en) * 2015-09-29 2018-04-10 Amazon Technologies, Inc. Techniques and systems for data segregation in data storage systems
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US10642813B1 (en) 2015-12-14 2020-05-05 Amazon Technologies, Inc. Techniques and systems for storage and processing of operational data
US10248793B1 (en) 2015-12-16 2019-04-02 Amazon Technologies, Inc. Techniques and systems for durable encryption and deletion in data storage systems
US10180912B1 (en) 2015-12-17 2019-01-15 Amazon Technologies, Inc. Techniques and systems for data segregation in redundancy coded data storage systems
US10102065B1 (en) 2015-12-17 2018-10-16 Amazon Technologies, Inc. Localized failure mode decorrelation in redundancy encoded data storage systems
US10235402B1 (en) 2015-12-17 2019-03-19 Amazon Technologies, Inc. Techniques for combining grid-encoded data storage systems
US10127105B1 (en) 2015-12-17 2018-11-13 Amazon Technologies, Inc. Techniques for extending grids in data storage systems
US10324790B1 (en) 2015-12-17 2019-06-18 Amazon Technologies, Inc. Flexible data storage device mapping for data storage systems
US10592336B1 (en) 2016-03-24 2020-03-17 Amazon Technologies, Inc. Layered indexing for asynchronous retrieval of redundancy coded data
US10678664B1 (en) 2016-03-28 2020-06-09 Amazon Technologies, Inc. Hybridized storage operation for redundancy coded data storage systems
US10061668B1 (en) 2016-03-28 2018-08-28 Amazon Technologies, Inc. Local storage clustering for redundancy coded data storage system
US10366062B1 (en) 2016-03-28 2019-07-30 Amazon Technologies, Inc. Cycled clustering for redundancy coded data storage systems
US11137980B1 (en) 2016-09-27 2021-10-05 Amazon Technologies, Inc. Monotonic time-based data storage
US11281624B1 (en) 2016-09-28 2022-03-22 Amazon Technologies, Inc. Client-based batching of data payload
US10496327B1 (en) 2016-09-28 2019-12-03 Amazon Technologies, Inc. Command parallelization for data storage systems
US10437790B1 (en) 2016-09-28 2019-10-08 Amazon Technologies, Inc. Contextual optimization for data storage systems
US10810157B1 (en) 2016-09-28 2020-10-20 Amazon Technologies, Inc. Command aggregation for data storage operations
US11204895B1 (en) 2016-09-28 2021-12-21 Amazon Technologies, Inc. Data payload clustering for data storage systems
US10657097B1 (en) 2016-09-28 2020-05-19 Amazon Technologies, Inc. Data payload aggregation for data storage systems
US10614239B2 (en) 2016-09-30 2020-04-07 Amazon Technologies, Inc. Immutable cryptographically secured ledger-backed databases
US10296764B1 (en) 2016-11-18 2019-05-21 Amazon Technologies, Inc. Verifiable cryptographically secured ledgers for human resource systems
US11269888B1 (en) 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
CN109558458B (zh) * 2018-12-30 2021-08-03 贝壳找房(北京)科技有限公司 数据同步方法、配置平台、交易平台及数据同步系统
US11308100B2 (en) 2019-06-25 2022-04-19 Amazon Technologies, Inc. Dynamically assigning queries to secondary query processing resources

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5233618A (en) * 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
JP3059467B2 (ja) * 1990-07-17 2000-07-04 シャープ株式会社 ファイル管理装置
DE69231873T2 (de) * 1992-01-08 2002-04-04 Emc Corp Verfahren zur Synchronisierung von reservierten Bereichen in einer redundanten Speicheranordnung
US5740465A (en) * 1992-04-08 1998-04-14 Hitachi, Ltd. Array disk controller for grouping host commands into a single virtual host command
US5913215A (en) * 1996-04-09 1999-06-15 Seymour I. Rubinstein Browse by prompted keyword phrases with an improved method for obtaining an initial document set
US6490693B1 (en) * 1999-08-31 2002-12-03 International Business Machines Corporation Dynamic reconfiguration of a quorum group of processors in a distributed computing system
US6973556B2 (en) * 2000-06-19 2005-12-06 Storage Technology Corporation Data element including metadata that includes data management information for managing the data element
JP3832223B2 (ja) * 2000-09-26 2006-10-11 株式会社日立製作所 ディスクアレイのディスク障害復旧方法
EP1204027A2 (de) * 2000-11-02 2002-05-08 Matsushita Electric Industrial Co., Ltd. On-line Wiederherstellungsverfahren und -gerät
US6763436B2 (en) * 2002-01-29 2004-07-13 Lucent Technologies Inc. Redundant data storage and data recovery system
JP2004126716A (ja) * 2002-09-30 2004-04-22 Fujitsu Ltd 広域分散ストレージシステムを利用したデータ格納方法、その方法をコンピュータに実現させるプログラム、記録媒体、及び広域分散ストレージシステムにおける制御装置
US7469316B2 (en) * 2003-02-10 2008-12-23 Intel Corporation Buffered writes and memory page control
US7284088B2 (en) * 2003-10-23 2007-10-16 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
US7310703B2 (en) * 2003-10-23 2007-12-18 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
US7725655B2 (en) * 2006-02-16 2010-05-25 Hewlett-Packard Development Company, L.P. Method of operating distributed storage system in which data is read from replicated caches and stored as erasure-coded data
US7761663B2 (en) * 2006-02-16 2010-07-20 Hewlett-Packard Development Company, L.P. Operating a replicated cache that includes receiving confirmation that a flush operation was initiated
US7376805B2 (en) * 2006-04-21 2008-05-20 Hewlett-Packard Development Company, L.P. Distributed storage array
US7743276B2 (en) * 2006-09-27 2010-06-22 Hewlett-Packard Development Company, L.P. Sufficient free space for redundancy recovery within a distributed data-storage system

Also Published As

Publication number Publication date
US20060080574A1 (en) 2006-04-13
GB0705446D0 (en) 2007-05-02
JP2008516343A (ja) 2008-05-15
GB2432696B (en) 2008-12-31
GB2432696A (en) 2007-05-30
WO2006042107A2 (en) 2006-04-20
WO2006042107A3 (en) 2006-12-28

Similar Documents

Publication Publication Date Title
DE112005002481T5 (de) Rekonfigurierung einer redundanten Datenspeicherung
DE60018872T2 (de) System und Methode für das Löschen von Datenbank-Aktualisierungsbilddateien nach Abschluss der dazugehörigen Transaktionen
DE60317383T2 (de) Datenwiederherstellungsvorrichtung unter Verwendung von Journaldaten und Identifikationsinformation
DE60312746T2 (de) Wiederherstellung nach fehlern in datenverarbeitungsanlagen
DE69923621T2 (de) Verfahren und Vorrichtung zu korrekten und vollständigen Übertragungen in einem fehlertoleranten verteilten Datenbanksystem
DE60213867T2 (de) Vorrichtung zur verwaltung von datenreplikation
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE602004005344T2 (de) Verfahren, system und programm zur handhabung eines failover zu einem fernspeicherort
DE602004006404T2 (de) Flashback-datenbank
US7788303B2 (en) Systems and methods for distributed system scanning
DE602005000972T2 (de) Speichersystem und Datenverarbeitungssystem
DE102008015662B4 (de) Beseitigung von Daten
DE69917333T2 (de) Übertragung einer Ressource von einem ersten Zwischenspeicher an einen zweiten Zwischenspeicher
DE10134492B4 (de) Ausfallübernahme des Dateimanagementsystems in einem Rechnercluster
DE602004008808T2 (de) Verfahren und vorrichtung zur durchführung von operationen an gewählten daten in einem speicherbereich
DE602005001041T2 (de) Speicherauszugssystem
DE60318687T2 (de) Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz
DE602005002532T2 (de) Cluster-datenbank mit ferndatenspiegelung
DE602005004166T2 (de) Vorrichtung, system und verfahren zur reinitialisierung einer serialisierung von dateisystemen
DE10123067B4 (de) Synchrone Vervielfältigung von Transaktionen in einem verteilten System
DE602005000819T2 (de) Aufrechterhaltung der konsistenz einer fernkopie unter verwendung von virtualisierung
DE202019005483U1 (de) Datenreplikation und Datenausfallsicherung in Datenbanksystemen
DE202015009267U1 (de) Priorisierung von Datenrekonstruktion in verteilten Speichersystemen
DE60313468T2 (de) Speicherdienste und -systeme
DE10393771T5 (de) Schnelle Datensicherungsspeicherung und schnelle Datenwiederherstellung (FBSRD)

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee