-
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.