DE60318687T2 - Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz - Google Patents

Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz Download PDF

Info

Publication number
DE60318687T2
DE60318687T2 DE60318687T DE60318687T DE60318687T2 DE 60318687 T2 DE60318687 T2 DE 60318687T2 DE 60318687 T DE60318687 T DE 60318687T DE 60318687 T DE60318687 T DE 60318687T DE 60318687 T2 DE60318687 T2 DE 60318687T2
Authority
DE
Germany
Prior art keywords
storage device
storage
bitmap
write
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60318687T
Other languages
English (en)
Other versions
DE60318687D1 (de
Inventor
Glenn A. Upton TREMBLAY
Paul A. Grafton LEVEILLE
Charles H. Lincoln KAMAN
Gairy Boxborough GRANNUM
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.)
Marathon Technologies Corp
Original Assignee
Marathon Technologies Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Marathon Technologies Corp filed Critical Marathon Technologies Corp
Publication of DE60318687D1 publication Critical patent/DE60318687D1/de
Application granted granted Critical
Publication of DE60318687T2 publication Critical patent/DE60318687T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2074Asynchronous techniques

Description

  • TECHNISCHES GEBIET
  • Diese Erfindung betrifft Verfahren zum Erzeugen einer gespiegelten Kopie einer Festplatte oder einer anderen Speicherungseinrichtung.
  • HINTERGRUND
  • Bei vielen Computersystemen wird ein Maß an Fehlertoleranz vorgesehen, indem identische Daten auf jeder von mehreren Speicherungseinrichtungen gespeichert werden. Speicherungseinrichtungen mit identischen Daten werden als gespiegelte Einrichtungen bezeichnet und werden als zu einem Spiegelsatz gehörend betrachtet. Wenn eine gespiegelte Einrichtung in einem Spiegelsatz ausfällt oder anderweitig unzugänglich wird, sorgt die andere gespiegelte Einrichtung bzw. sorgen die anderen gespiegelten Einrichtungen weiterhin für Zugriff auf die Daten.
  • Um identische Daten auf jeder Einrichtung in einem Spiegelsatz zu unterhalten, muss jede Einrichtung jede Anforderung zum Speichern von Daten auf dem Spiegelsatz (d. h. jede Schreibanforderung) empfangen und verarbeiten. Eine Einrichtung in einem Spiegelsatz weicht von anderen Einrichtungen im Spiegelsatz ab, wenn die Einrichtung nicht in der Lage ist, solche Schreibanforderungen zu verarbeiten. Wenn Mitglieder eines Spiegelsatzes voneinander abweichen, kann eine Spiegelsatzkopie ausgeführt werden, um Daten von einer gespiegelten Einrichtung auf eine andere gespiegelte Einrichtung zu kopieren. Bei einer Vorgehensweise zum Unterhalten einer Spiegelsatzkopie wird das Computersystem ausgeschaltet und alle Daten werden von einer gespiegelten Einrichtung auf die andere gespiegelte Einrichtung kopiert.
  • US-Patent US6260125 offenbart ein asynchrones Plattenspiegelungssystem für den Einsatz in einem vernetzten Computersystem. Das Plattenspiegelungssystem umfasst ein erstes Speicherungsvolumen, das angeschlossen ist, um Schreibanforderungen vom Computersystem zu empfangen; eine Schreibwarteschlange, die angeschlossen ist, um ebenfalls die an das erste Speicherungsvolumen gerichteten Schreibanforderungen zu empfangen; und ein zweites Speicherungsvolumen, das an die Schreibwarteschlange angeschlossen ist, um die Schreibanforderungen zu empfangen. Die Schreibwarteschlange ist wirksam, die Zeit des Empfangs der Schreibanforderungen durch das zweite Speichervolumen zu verzögern. Schreibanforderungen gelangen in einer First-in-first-out-Reihenfolge (FIFO) durch die Schreibwarteschlange, die mehrere seriell miteinander verbundene Schreibpuffer umfasst. Eine Protokolldatei, die dazu angeschlossen ist, die verzögerten Schreibanforderungen von der Schreibwarteschlange zu empfangen, ist ebenfalls im Plattenspiegelungssystem enthalten, um für die protokollbasierte Spiegelrekonstruktion und die Ausführung einer Fixpunktroutine mit den gespiegelten Volumen zu sorgen.
  • Das dem Anmelder übertragene US-Patent 5,787,485 beschreibt und beansprucht ein Verfahren des Ausführens einer Spiegelsatzkopie von einer ersten Speicherungseinrichtung zu einer zweiten Speicherungseinrichtung, wobei Schreibanforderungen bei der ersten Speicherungseinrichtung empfangen und verarbeitet werden. Jede der Schreibanforderungen wird durch eine Referenzmarke identifiziert. Als Reaktion auf eine Spiegel-Leseanforderung werden Spiegeldaten von der ersten Speicherungseinrichtung gelesen und zur zweiten Speicherungsvorrichtung geschickt, zusammen mit Informationen, die jede Schreibanforderung bezeichnen, die von der zweiten Speicherungseinrichtung verarbeitet werden kann. Die zur zweiten Speicherungseinrichtung geschickten Spiegeldaten werden in die zweite Speicherungseinrichtung geschrieben, die dann Schreibanforderungen gemäß der Bezeichnungsinformationen verarbeitet.
  • US-Patent 6,338,126 offenbart ein Absturzrettungssystem, das ein Primärcomputersystem und ein Sicherungscomputersystem nutzt. Jede Schreibanforderung wird an jedes Computersystem geschickt, wobei die Schreibanforderung an einen Verzögerungspuffer und eine Speicherwarteschlange des Primärcomputersystems und an eine Speicherwarteschlange des Sicherungscomputersystems geschickt wird. Der Sicherungscomputer überträgt eine Quittierung an den Primärcomputer, um dem Empfang der Schreibanforderung zu bestätigen, wonach die Schreibanforderung im Verzögerungspuffer des Primärcomputers ausgeführt wird. Der Sicherungscomputer führt die Schreibanforderung zu einer beliebigen Zeit aus. Falls einer der Computer abschaltet, werden die Schreibanforderungen in der Speicherwarteschlange des anderen Computers gesammelt.
  • ZUSAMMENFASSUNG
  • Die Erfindung ist im Einzelnen in den angehängten unabhängigen Patentansprüchen 1 und 32 definiert.
  • In einem allgemeinen Aspekt wird eine gespiegelte Kopie einer ersten Speicherungseinrichtung bei einer zweiten Speicherungseinrichtung in einem Computersystem unterhalten. Die erste Speicherungseinrichtung enthält einen assoziierten Controller und die zweite Speicherungseinrichtung enthält einen assoziierten Controller, flüchtige Speicherung und nichtflüchtige Speicherung. Bei den Speicherungseinrichtungen empfangene Schreibanforderungen werden verarbeitet. Eine Commit-Synchronisierungs-Nachricht wird an die zweite Speicherungseinrichtung gesendet, zusammen mit Informationen, die eine Schreibanforderung bezeichnen, und der Controller der zweiten Speicherungseinrichtung bestätigt nach dem Empfangen der Commit-Synchronisierungs-Nachricht, dass die mit der bezeichneten Schreibanforderung assoziierten Daten in die nichtflüchtige Speicherung der zweiten Speicherungseinrichtung geschrieben wurden.
  • Umsetzungen können eines oder mehrere der folgenden Merkmale enthalten. Beispielsweise kann der Controller der zweiten Speicherungseinrichtung bestätigen, dass Daten, die mit allen Schreibanforderungen assoziiert sind, die der bezeichneten Schreibanforderung vorausgegangen sind, in die nichtflüchtige Speicherung der zweiten Speicherungseinrichtung geschrieben wurden. Alternativ kann der Controller der zweiten Speicherungseinrichtung die bezeichnete Schreibanforderung verarbeiten und kann bestätigen, dass Daten, die mit der bezeichneten Schreibanforderung und mit vorausgehenden Schreibanforderungen assoziiert sind, in die nichtflüchtige Speicherung der zweiten Speicherungseinrichtung geschrieben wurden. Der Controller der zweiten Speicherungseinrichtung kann eine erfolgreiche Cache-Leerung der flüchtigen Speicherung der zweiten Speicherungseinrichtung bestätigen.
  • Mit der Commit-Synchronisierungs-Nachricht gesendete Informationen enthalten eine Referenzmarke, die eine Schreibanforderung identifiziert, die von der ersten Speicherungseinrichtung verarbeitet wurde oder zu verarbeiten ist. Die Referenzmarke wird sequenziell relativ zu Referenzmarken zugeordnet, die anderen Schreibanforderungen zugeordnet sind. Alle bei der zweiten Speicherungseinrichtung empfangenen Schreibanforderungen können sequenziell verarbeitet werden, bevor die von der Referenzmarke in der Commit-Synchronisierungs-Nachricht identifizierte Schreibanforderung verarbeitet wird.
  • Die identifizierten Speicherungsgebiete, die von den Schreibanforderungen betroffen sind, können beispielsweise in einer ersten Bitmap akkumuliert werden. Nach dem Senden der Commit-Synchronisierungs-Nachricht können neu identifizierte Speicherungsgebieten in einer zweiten Bitmap akkumuliert werden. Nachdem der Controller der zweiten Speicherungseinrichtung bestätigt, dass Daten in den verarbeiteten Schreibanforderungen in nichtflüchtige Speicherung der zweiten Speicherungseinrichtung geschrieben wurden, kann eine Statusnachricht an die erste Speicherungseinrichtung gesendet werden, um anzuzeigen, dass die Schreibdaten erfolgreich in die nichtflüchtige Speicherung geschrieben wurden. Nach dem Empfang der Statusnachricht, die anzeigt, dass die Schreibdaten erfolgreich geschrieben wurden, kann die erste Bitmap gelöscht werden und die zweite Bitmap kann als die erste Bitmap bezeichnet werden.
  • Nach einer Periode, in der die zweite Speicherungseinrichtung unverfügbar war, kann der Inhalt der ersten Bitmap in eine Rettungsbitmap kopiert werden, die dann verwendet wird, um die Speicherungsgebiete der ersten Speicherungseinrichtung zu identifizieren, die von der ersten Speicherungseinrichtung zur zweiten Speicherungseinrichtung kopiert werden sollen. Die identifizierten Speicherungsgebieten der ersten Speicherungseinrichtung können zur zweiten Speicherungseinrichtung kopiert werden und neu empfangene Schreibanforderungen können bei der zweiten Speicherungseinrichtung in einer dritten Bitmap akkumuliert werden.
  • Die zweite Speicherungseinrichtung kann eines oder mehrere der Merkmale und Funktionen ausführen, wie sie vorangehend anhand der ersten Speicherungseinrichtung beschrieben wurden und die erste Speicherungseinrichtung kann eines oder mehrere der Merkmale ausführen, die vorangehend anhand der zweiten Speicherungsvorrichtung beschrieben wurden.
  • In einem weiteren allgemeinen Aspekt umfasst das Unterhalten einer gespiegelten Kopie einer ersten Speicherungseinrichtung bei einer zweiten Speicherungseinrichtung in einem Computersystem das Empfangen von Schreibanforderungen bei einer ersten Speicherungseinrichtung, die einen assoziierten Controller, flüchtige Speicherung und nichtflüchtige Speicherung enthält; das Verarbeiten der bei der ersten Speicherungseinrichtung empfangenen Schreibanforderungen; das Empfangen von Schreibanforderungen bei einer zweiten Speicherungseinrichtung, die einen assoziierten Controller, flüchtige Speicherung und nichtflüchtige Speicherung enthält; und das Verarbeiten der bei der zweiten Speicherungseinrichtung empfangenen Schreibanforderungen. Nachdem er festgestellt hat, dass die zweite Speicherungseinrichtung kurz davor ist, in eine Periode einzutreten, in der die zweite Speicherungseinrichtung nicht in der Lage sein wird, Schreibanforderungen zu verarbeiten, sendet der Controller der ersten Speicherungseinrichtung eine Commit-Synchronisierungs-Nachricht an die zweite Speicherungseinrichtung, zusammen mit Informationen, die eine Schreibanforderung bezeichnen, und der Controller der zweiten Speicherungseinrichtung bestätigt nach dem Empfangen der Commit-Synchronisierungs-Nachricht, dass mit der bezeichneten Schreibanforderung assoziierte Daten in die nichtflüchtige Speicherung der zweiten Speicherungseinrichtung geschrieben wurden. Nach dem Senden der Commit-Synchronisierungs-Nachricht akkumuliert der Controller der ersten Speicherungseinrichtung von neuen Schreibanforderungen betroffene Speicherungsgebiete in einer Bitmap. Wenn die zweite Speicherungseinrichtung wieder in der Lage ist, Schreibanforderungen zu verarbeiten, verwendet der Controller der ersten Speicherungseinrichtung die Bitmap, um die Speicherungsregionen der ersten Speicherungseinrichtung zu identifizieren, die von der ersten Speicherungseinrichtung zur zweiten Speicherungseinrichtung kopiert werden sollen und kopiert den Inhalt der identifizierten Gebiete der ersten Speicherungseinrichtung zur zweiten Speicherungseinrichtung.
  • Umsetzungen der vorangehend erörterten Techniken können ein Verfahren oder einen Prozess, eine Vorrichtung oder ein System oder Computersoftware auf einem computerzugänglichen Medium umfassen.
  • Die Einzelheiten der einen oder mehreren Umsetzungen sind in den beiliegenden Zeichnungen und in der nachfolgenden Beschreibung aufgeführt. Weitere Merkmale und Vorteile werden aus den Beschreibungen und Zeichnungen und aus den Patentansprüchen offensichtlich.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm eines gespiegelten Festplattensystems.
  • 2 ist ein Ablaufdiagramm eines Verfahrens zum Überwachen von Unterschieden zwischen gespiegelten Platten.
  • 3 ist ein Ablaufdiagramm eines Verfahrens zum Retten der Synchronisierung eines gespiegelten Plattensatzes, der abweichend geworden ist.
  • 4 ist ein Ablaufdiagramm, das ein periodisches Synchronisierungsverfahren veranschaulicht, wie es von einem Master-Ein-/Ausgabe-Controller ausgeführt wird.
  • 5 ist ein Ablaufdiagramm, das ein periodisches Synchronisierungsverfahren veranschaulicht, wie es von einem Slave-Ein-/Ausgabe-Controller ausgeführt wird.
  • 6 ist ein Ablaufdiagramm zum Wiederherstellen einer gespiegelten Platte mit abweichenden Daten zu einer gespiegelten Kopie mit identischen Daten.
  • 7 ist ein Ablaufdiagramm, das eine periodisches Synchronisierung veranschaulicht, die während eines Rettungsverfahrens ausgeführt wird.
  • Gleiche Bezugszeichen in den verschiedenen Zeichnungen kennzeichnen gleiche Elemente.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 zeigt ein Blockdiagramm eines Spiegelsatzes 100, der eine erste Datenspeicherungseinrichtung 105 und eine zweiten Datenspeicherungseinrichtung 110 umfasst. In der Umsetzung von 1 handelt es sich bei den Datenspeicherungseinrichtungen um Plattenlaufwerke. In anderen Umsetzungen kann es sich bei den Datenspeicherungseinrichtungen um Gruppen von Plattenlaufwerken oder andere Speicherungseinrichtungen handeln.
  • Um die Beschreibung zu erleichtern, wird eine der Platten als Master-Platte bezeichnet und dient als primäre Datenspeicherungseinrichtung, während die andere Platte als Slave-Platte bezeichnet wird und als redundante Sicherung dient. Wenn beide Platten aktiv sind und die selben Daten enthalten, kann der Master- bzw. Slave-Status den beiden Platten zufällig zugewiesen werden. Zu Zwecken der nachfolgend beschriebenen Synchronisierungsverfahren unterhalten Umsetzungen mit zwei Platten tatsächlich zwei Master-Slave-Beziehungen, wobei jede Platte in einer Beziehung als Master dient und in der anderen als Slave. In 1 ist die Platte 105 als Master-Platte bezeichnet, während die Platte 110 als Slave-Platte bezeichnet ist.
  • Ein erster E/A-("Ein-/Ausgabe") Controller 115 ist mit der ersten Platte 105 assoziiert und ein zweiter E/A-Controller 120 ist mit der zweiten Platte 110 assoziiert. Die E/A-Controller 115, 120 steuern das Lesen und Schreiben von Daten auf den Platten.
  • Ein Client 125, bei dem es sich beispielsweise um einen Prozessor handeln kann, sendet die selben Schreibanforderungen 130 an beide E/A-Controller. Jede Schreibanforderung enthält Daten. Darüber hinaus ist mit jeder Schreibanforderung eine Referenzmarke, wie beispielsweise eine sequenzielle Referenznummer, assoziiert. Die E/A-Controller schreiben die Daten von den Schreibanforderungen auf ihre jeweilige Platte, so dass unter normalen Bedingungen beide Platten identische Daten enthalten. Typischerweise verarbeitet jeder E/A-Controller die Schreibanforderungen in der selben Reihenfolge. Um dies zu erreichen, verarbeiten die E/A-Controller die Schreibanforderungen in der Reihenfolge der Referenzmarken, was bedeutet, dass die E/A-Controller die Schreibanforderungen nicht in der selben Reihenfolge empfangen müssen.
  • Der Client 125 sendet außerdem Leseanforderungen 135 an die E/A-Controller. In einer Umsetzung reagiert, wenn beide Platten die selben Daten enthalten, nur die Master-Platte auf die Leseanforderungen 135. In anderen Umsetzungen können die Slave-Platte oder beide Platten reagieren. Wenn die Master-Platte ausfällt oder unzugänglich wird, wird die Slave-Platte neu als Master-Platte bezeichnet und liefert weiterhin Daten an den Client 125. Wenn also die Platte 105 ausfallen würde, würde die Platte 110 zur Master-Platte.
  • Eine Platte im Spiegelsatz 100 enthält von denen ihres Peers abweichende Daten, wenn die Platte während einer gewissen Zeitperiode nicht in der Lage ist, Schreibanforderungen zu verarbeiten. Wenn beispielsweise die Slave-Platte für eine Zeitperiode außer Betrieb wäre, würden sich die Daten der Slave-Platte von den Daten der Master-Platte unterscheiden. Wenn die Platten in einem Spiegelsatz abweichend werden, kann eine Spiegelsatzkopie implementiert werden, um Daten von der Platte mit den "guten" Daten zu der Platte mit abweichenden Daten zu kopieren. Bei einigen größeren Speicherungseinrichtungen kann dieses Verfahren eine lange Zeit in Anspruch nehmen, während der das Niveau der Fehlertoleranz des Systems reduziert ist, da die gespiegelten Platten nicht identische Daten enthalten.
  • Um das Niveau der Fehlertoleranz eines Systems zu verbessern, kann die Länge der benötigten Zeit zum Wiederherstellen der gespiegelten Platten zu einem Zustand, in dem beide Platten identische Daten enthalten (was als Rettung bezeichnet werden kann), verkürzt werden, indem von der Platte mit "guten" Daten nur Abschnitte von Daten kopiert werden, die nicht auf der Platte mit abweichenden Daten gespeichert wurden. Dieses Verfahren des Kopierens von nur Abschnitten der Platte kann als Inkremental-Divergenz-Kopieren oder Delta-Kopieren bezeichnet werden (wobei sich Delta auf die Änderungen bezieht, die an einer Platte vorgenommen wurden und an einer anderen Platte nicht).
  • Im Allgemeinen kann Inkremental-Divergenz-Kopieren erreicht werden, indem Slave-Änderungen an einer oder mehreren gespiegelten Platten vorgenommen werden, so dass nach einer Periode der Nichtverfügbarkeit eine gespiegelte Platte mit abweichenden Daten wiederhergestellt werden kann, indem von der Platte mit "guten" Daten nur die Daten kopiert werden, die nicht auf der gespiegelten Platte mit abweichenden Daten gespeichert wurden. Das Überwachen von Änderungen, die an einer gespiegelten Platte vorgenommen wurde, erfordert allgemein das Verfolgen der Änderungen, die nach einem Zeitpunkt erfolgt sind, an dem bekannt ist, dass beide gespiegelten Platten im gespiegelten Satz identische Daten enthalten, wobei zu diesem Zeitpunkt die gespiegelten Platten als synchronisiert bezeichnet werden können.
  • Die Überwachung von Änderungen, die nach einem Punkt der Synchronisierung an einer gespiegelten Platte vorgenommen wurden, kann problematisch sein, wenn ein System, Subsystem oder Prozessor eine Schreibanforderung als abgeschlossen aufzeichnet, wenn die Daten in einen flüchtigen Platten-Cache geschrieben wurde, aber die Daten noch nicht in die nichtflüchtige Speicherung der gespiegelten Platte geschrieben wurden. Dieses Problem kann von besonderer Bedeutung sein, wenn die gespiegelten Daten in Streifen auf mehr als einer Platte angeordnet sind, beispielsweise unter Verwendung von RAID-("Redundant Array of Inexpensive Disks") Techniken, da die Zeitperiode ab der Platzierung der Schreibanforderung in den Platten-Cache bis dann, wenn alle Daten in die nichtflüchtige Plattenspeicherung geschrieben wurden, infolge der verlängerten Zeit, die zum Schreiben auf mehr als eine RAID-Platte erforderlich ist, erheblich sein kann.
  • Die Wirksamkeit des Inkremental-Divergenz-Kopierens kann verbessert werden, indem die Daten auf den Spiegelplatten periodisch bis zu einer bestimmten Schreibanforderungs-Referenzmarke synchronisiert werden (z. B. wo jede Platte identische Daten enthält), indem der Platten-Cache geleert wird und die Daten im Cache in der Plattenspeicherung festgeschrieben werden. Das Leeren des Platten-Caches stellt sicher, dass alle verarbeiteten Schreibanforderungen in nichtflüchtiger Plattenspeicherung gespeichert wurden.
  • Jeder E/A-Controller 115, 120 im Spiegelsatz 100 verfolgt die Schreibanforderungen 130, die an die jeweilige Platte des E/A-Controllers gemacht werden, indem er die an der Platte vorgenommenen Änderungen in einer Bitmap 155, 156 akkumuliert. Die Bitmap 155, 156 ist eine Datenstruktur, die eines oder mehrere Bits verwendet, um anzuzeigen, ob jedes Gebiet einer Platte von einer Schreibanforderung 130 betroffen wurde. Die Bitmap in dieser Umsetzung wird auf der Platte gespeichert. Andere Umsetzungen können die Bitmap in flüchtigem Speicher speichern, bis das System abgeschaltet wird oder können die Bitmap in nichtflüchtiger Speicherung speichern, die nicht im Spiegelsatz enthalten ist. Der von der Bitmap vorgesehene Grad der Abstraktion (oder die Granularität) beruht auf der Größe des von einem Bit repräsentierten Speichergebiets. Jedes Bit repräsentiert typischerweise wesentlich mehr Daten als von einer einzigen Schreibanforderung in ein entsprechendes Speicherungsgebiet geschrieben werden. Hier kann die Bitmap 155, 156 als Plattenänderungs-Bitmap bezeichnet werden.
  • Die Bitmap und die Platte können durch einen eindeutigen Identifikator assoziiert sein. Der eindeutige Identifikator kann beispielsweise einen Plattenidentifikator enthalten, der die Instanz des Client 125 identifiziert, für den die Bitmap und die Platte gelten. Die Assoziation der Bitmap und der Platte kann sicherstellen, dass die veränderten Plattengebiete zur korrekten Platte kopiert werden. Beispielsweise ist die Assoziation einer bestimmten Bitmap mit einer bestimmten Platte oder einem bestimmten Datensatz auf einer Platte wichtig, wenn der Spiegelsatz eine entnehmbare Platte enthält (d. h. eine Platte, die herausgenommen werden kann, ohne die Computergehäuseeinheit zu öffnen).
  • Ein E/A-Controller, der als Master-E/A-Controller bezeichnet werden kann sendet periodisch eine Commit-Synchronisierungs-Nachricht 160 an den anderen E/A-Controller, der als Slave-E/A-Controller bezeichnet werden kann. Wie gezeigt und nachfolgend beschrieben, ist der erste E/A-Controller 115 der Master-E/A-Controller und der zweite E/A-Controller 120 ist der Slave-E/A-Controller. Es ist jedoch wichtig, zu beachten, dass in der Beziehung, in der die Platte 110 der Master und die Platte 105 der Slave ist, der zweite E/A-Controller 120 gleichzeitig als Master-E/A-Controller dient (und der erste E/A-Controller gleichzeitig als Slave-E/A-Controller dient).
  • Die Commit-Synchronisierungs-Nachricht 160 identifiziert eine Schreibanforderungs-Referenzmarke, bis zu der die Daten auf den gespiegelten Platten synchronisiert werden sollen. Der erste E/A-Controller 115 erstellt eine Sicherungskopie 165 der Plattenänderungs-Bitmap 155, um die Rettung zu ermöglichen, falls während des Synchronisierungsverfahrens ein Ausfall stattfindet und beginnt eine neue Plattenänderungs-Bitmap für die Verwendung im nächsten Synchronisierungsschritt, um alle nachfolgenden Schreibvorgänge zu akkumulieren.
  • Wenn der zweite E/A-Controller 120 die vom ersten E/A-Controller 115 gesendete Commit-Synchronisierungs-Nachricht empfängt, bestimmt der zweite E/A-Controller 120, ob der zweite E/A-Controller die in der Commit-Synchronisierungs-Nachricht identifizierte Schreibanforderung und alle vorausgegangenen Schreibanforderungen bereits verarbeitet hat. Falls nicht, wartet der zweite E/A-Controller, bis er diese Schreibanforderung und alle vorausgegangenen Schreibanforderungen verarbeitet hat, bevor er die Synchronisierung auslöst.
  • Sobald der zweite E/A-Controller 120 die in der Commit-Synchronisierungs-Nachricht identifizierte Schreibanforderung und alle vorausgegangenen Schreibanforderungen verarbeitet hat, oder falls der zweite E/A-Controller die Schreibanforderung und alle vorausgegangenen Schreibanforderungen bereits verarbeitet hatte, als die Commit-Synchronisierungs-Nachricht empfangen wurde, leert der zweite E/A-Controller seinen Platten-Controller-Cache, um die verarbeiteten Schreibanforderungen in nichtflüchtiger Plattenspeicherung festzuschreiben. Wenn die Cache-Leerung erfolgreich ist, sendet der zweite E/A-Controller 120 eine Bestätigungsnachricht 170 an den ersten E/A-Controller 115. Wenn er die Bestätigung empfängt, dass Leerung und Synchronisierung erfolgreich waren, löscht der erste E/A-Controller 115 die Sicherungskopie 165 seiner Plattenänderungs-Bitmap. Falls die Synchronisierung misslingt oder falls der erste E/A-Controller 115 innerhalb einer vorherbestimmten Zeit keine Bestätigung empfängt, kombiniert der erste E/A-Controller 115 die Bitmap 155 und die Sicherung 165 (typischerweise durch ODER-Verknüpfung) und verwendet die kombinierte Bitmap bei Wiederherstellen der zweiten Platte 110.
  • Ein Inkremental-Divergenz-Kopierverfahren, das nur von einem bestimmten Punkt an einer Platte vorgenommene Änderungen akkumuliert, kann ausgelöst werden, wenn ein Plattenausfall erkannt wird (und akkumuliert so nur Änderungen, die während einer Periode der Nichtverfügbarkeit vorgenommen werden) oder kann verwendet werden, wann immer das System aktiv ist (und akkumuliert so Änderungen, die zu jeder Zeit während des Systemsbetriebs am Spiegelsatz vorgenommen werden). Wenn Änderungen nur während der Periode der Nichtverfügbarkeit akkumuliert werden, muss die Periode der Nichtverfügbarkeit mit einer Platten-Controller-Cache-Leerung für die Platte beginnen, die unverfügbar wird (was durch ein Verfahren geschehen kann, wenn die Platte unverfügbar wird, das als "sanfte Abschaltung" bezeichnet wird), damit das Inkremental-Divergenz-Kopierverfahren wirksam die Platte wiederherstellen kann, nachdem sie verfügbar wird.
  • Bei einer weiteren Umsetzung können Änderungen durch Löschen bestimmter Schreibanforderungen in der Plattenänderungs-Bitmap akkumuliert werden, statt dass begonnen wird, Plattenänderungen zu akkumulieren, die nach einem Synchronisierungspunkt in einer anderen Plattenänderungs-Bitmap vorgenommen wurden. Dadurch kann die Rettungszeit verkürzt werden.
  • Beide E/A-Controller 115, 120 im Spiegelsatz 100 können das Commit-Synchronisierungs-Verfahren auslösen, um sicherzustellen, dass bis zu einer bestimmten Schreibanforderungs-Referenzmarke beide Platten die selben Daten enthalten. Nach einer Periode der Nichtverfügbarkeit kann die gespiegelte Platte mit abweichenden Daten zu einer Spiegelkopie, die identische Daten speichert, wiederhergestellt werden, indem nur die Plattenregionen kopiert werden, die seit der letzten Synchronisierung geändert wurden.
  • Bei einer Umsetzung kann ein Datum (oder ein Datum und eine Uhrzeit) mit einem bestimmten Datum, das auf einer der gespiegelten Platten gesetzt ist, assoziiert sein. Das kann von Vorteil sein, wenn Schreibanforderungs-Referenzmarken nicht unbedingt eindeutig sind. Beispielsweise ist eine Schreibanforderungs-Referenzmarke möglicherweise nicht eindeutig, wenn es sich bei der Referenzmarke um eine sequenzielle Nummer handelt, die bei irgend einem festen Wert neu beginnt (z. B. eins), wenn das den Client steuernde Betriebssystem zurückgesetzt wird. Solche Schreibanforderungen können eindeutig identifiziert werden, indem ein Datum (oder ein Datum und eine Uhrzeit) mit dem Datensatz assoziiert wird, das gesetzt wird, wenn der Platten-Cache der den Datensatz speichernden Platte geleert wird. Wenn der Client neu gestartet wird, kann alternativ oder zusätzlich einem Spiegelsatz eine neue Instanznummer gegeben werden, um die Unterscheidung nicht eindeutiger Schreibanforderungs-Referenzmarken zu erleichtern. Andere eindeutige Identifikatoren können, einzeln oder in Kombination, einen Client-Identifikator, einen Spiegelsatzidentifikator und einen Datensatzidentifikator umfassen.
  • Obwohl 1 für veranschaulichende Zwecke zwei Platten als Spiegeleinrichtungen zum Speichern der gespiegelten Datensätze nutzt, sind die Vorteile des Inkremental-Divergenz-Kopierens nicht auf diese bestimmte Umsetzung beschränkt und sind ebenso auf andere Umsetzungen mit anderen Zahlen oder Typen von Speicherungsvorrichtung, einschließlich RAID-Technik anwendbar. Beispielsweise können andere Umsetzungen drei oder mehr Platten spiegeln oder können mehrere Exemplifizierungen einer gespiegelten Platte vorsehen (z. B. können vier Platten verwendet werden, um zwei gespiegelte Sätze für die selbe Platte vorzusehen).
  • Wie in 2 zu sehen, verwendet ein Verfahren 200 Inkremental-Divergenz-Verfolgung, um die Wiederherstellung der Synchronisierung für einen gespiegelten Plattensatz vorzubereiten, der während einer Periode, in der eine Platte des gespiegelten Plattensatzes durch eine sanfte Abschaltung unverfügbar wurde, abweichend geworden ist. Die Umsetzung eines gespiegelten Plattensatzes in 2 hat zwei Plattenspeicherungseinrichtungen, die jeweils durch einen getrennten E/A-Controller gesteuert werden. Jeder E/A-Controller empfängt die selben Schreibanforderungen von einem Prozessor und verarbeitet die empfangenen Schreibanforderungen in sequenzieller Reihenfolge. Mit jeder Schreibanforderung ist eine Referenzmarke assoziiert, die beim Sequenzialisieren der Schreibanforderungen verwendet wird. Eine weitere Umsetzung kann verfolgen, ob eine bestimmte Schreibanforderung verarbeitet (oder abgeschlossen) wurde oder nicht. Dadurch wird zugelassen, dass Anforderungen in beliebiger Reihenfolge (d. h. nicht sequenziell) verarbeitet werden. Wenn beide Platten aktiv sind, enthalten die Platten jeweils die selben Daten.
  • Das Verfahren 200 wird ausgelöst, wenn eine Feststellung erfolgt, dass eine der Platten in eine Periode der Nichtverfügbarkeit eintreten wird (Schritt 205). Wenn diese Feststellung erfolgt, wird der E/A-Controller für die Platte, die unverfügbar wird, angewiesen, Schreibanforderungen, die vom E/A-Controller verarbeitet wurden, in nichtflüchtiger Speicherung festzuschreiben (Schritt 210). Die unverfügbar werdende Platte kann als Slave-Platte bezeichnet werden und die aktive Platte kann als Master-Platte bezeichnet werden und die assoziierten E/A-Controller können als Slave-E/A-Controller und Master-E/A-Controller bezeichnet werden. Der Master-E/A-Controller beginnt, an der Master-Platte vorgenommene Änderungen in einer Plattenänderungs-Bitmap zu akkumulieren (Schritt 220), empfängt und verarbeitet weiterhin Schreibanforderungen (Schritt 225) und aktualisiert die Plattenänderungs-Bitmap, um jede aus den verarbeiteten Schreibanforderungen resultierende Änderung an der Master-Platte zu reflektieren (Schritt 230). Jedes Bit in der Plattenänderungs-Bitmap repräsentiert ein Gebiet der Master-Platte. Andere Umsetzungen können die Menge des von jedem Bit in der Plattenänderungs-Bitmap repräsentierten Speicherplatzes auf der Platte variieren.
  • Der Master-E/A-Controller überwacht außerdem weiterhin den Status der Slave-Platte (Schritt 235). Wenn die Slave-Platte verfügbar wird und begonnen hat, neue Schreibanforderungen zu verarbeiten, beginnt der Master-E/A-Controller ein Rettungsverfahren 300, wie nachfolgend anhand von 3 beschrieben (Schritt 240).
  • Wie in 3 zu sehen, werden im Rettungsverfahren 300 Abschnitte der Master-Platte gemäß Angabe in der Plattenänderungs-Bitmap zur Slave-Platte kopiert. Das Rettungsverfahren findet als Hintergrundverfahren statt, das aktiv ist, während der Spiegelsatz weiterhin neue Schreibanforderungen verarbeitet. Das Rettungsverfahren 300 beginnt, wenn der Master-E/A-Controller eine Sicherungskopie der Plattenänderungs-Bitmap macht und die Originalversion der Plattenänderungs-Bitmap als Rettungs-Bitmap bezeichnet (Schritt 310). Der Master-E/A-Controller beginnt außerdem eine neue Plattenänderungs-Bitmap, um alle nachfolgenden Änderungen der Master-Platte zu akkumulieren (Schritt 320). Die Sicherungskopie der Plattenänderungs-Bitmap und die neue Plattenänderungs-Bitmap ermöglichen die Rettung, falls ein Ausfall während des Rettungsverfahrens stattfindet.
  • Der Master-E/A-Controller prüft jedes Bit in der Rettungs-Bitmap (Schritt 330) und stellt fest, ob das Bit anzeigt, dass das entsprechende Gebiet der Master-Platte verändert wurde (Schritt 340). Falls nicht, prüft der Master-E/A-Controller dann das nächste Bit in der Rettungs-Bitmap (Schritt 345). Wenn das Bit anzeigt, dass das Gebiet der Master-Platte verändert wurde, bestimmt der Master-E/A-Controller, ob nachfolgende Schreibanforderungen das entsprechende Gebiet der Slave-Platte verändert haben (Schritt 345).
  • Wenn nachfolgende Schreibanforderungen das entsprechende Gebiet der Slave-Platte verändert haben, kopiert der Master-E/A-Controller nur den Abschnitt von dem Gebiet der Master-Platte, der dem Abschnitt des Gebiets der Slave-Platte entspricht, der nicht durch eine nachfolgende Schreibanforderung verändert wurde (Schritt 350). Der Master-E/A-Controller kann den Abschnitt identifizieren, der nicht verändert wurde, indem er den Slave-E/A-Controller eine Liste von Schreibanforderungen führen lässt, die während des Rettungsverfahrens von der Slave-Platte verarbeitet wurden, wobei jeder Eintrag in der Liste den tatsächlichen Speicherabschnitt identifiziert, der verändert wurde. Alternativ kann der Slave-E/A-Controller eine Plattenänderungs-Bitmap mit feinerer Granularität unterhalten, so dass jedes Bit der Bitmap dem kleinsten Abschnitt der Platte entspricht, den eine Schreibanforderung verändern darf. Um Platz zu sparen, kann der Slave-E/A-Controller eine Bitmap mit veränderlicher Granularität unterhalten, so dass eine Bitmap mit feinerer Granularität nur für veränderte Abschnitte der Platte unterhalten wird.
  • Wenn keine nachfolgenden Änderungen an dem Gebiet der Slave-Platte vorgenommen wurden, kopiert der Master-E/A-Controller das gesamte Gebiet der Master-Platte zur Slave-Platte (Schritt 355).
  • Der Master-E/A-Controller verändert den Abschnitt der Daten, der kopiert wird, um eine potenzielle Ineffizienz beim Schreiben von Daten zu vermeiden, die von einer nachfolgenden Schreibanforderung überschrieben werden (Schritte 345355). Wenn beispielsweise eine Schreibanforderung WR-102 einen Abschnitt der im Plattengebiet 12 gespeicherten Daten verändert und eine Schreibanforderung WR-155 außerdem in einem anderen Abschnitt des Plattengebiets 12 gespeicherte Daten verändert, kann das Verfahren zum Schreiben von Daten in das Plattengebiet 12 nur die Abschnitte der Region 12 verändern, die für jede Schreibanforderung benötigt werden.
  • Außerdem oder alternativ kann der Slave-E/A-Controller den Abschnitt der Daten verändern, der kopiert wird. Wenn beispielsweise der Slave-E/A-Controller eine neue Schreibanforderung empfangen hat, die das selbe Plattengebiet verändert, das durch die von der Master-Platte kopierten Daten aktualisiert werden soll, kann der Slave-E/A-Controller den Abschnitt der Daten verändern, der von der Master-Platte kopiert wird.
  • Nach dem Kopieren des Gebiets der Master-Platte (bzw. eines Abschnitts desselben) zur Slave-Platte bestimmt der Master-E/A-Controller, ob mehr Bits in der Rettungs-Bitmap geprüft werden müssen (Schritt 360) und falls ja, prüft er das nächste Bit (Schritt 330).
  • Die Rettung ist abgeschlossen, wenn der Master-E/A-Controller feststellt, dass alle Bits in der Rettungs-Bitmap geprüft wurden. Nach dem Abschluss kann der Master-E/A-Controller optional eine Synchronisierung auslösen, die den Slave-Platten-Cache leert (Schritt 370), um die kopierten Daten auf der Slave-Platte festzuschreiben. Wenn der Master E/A-Controller feststellt, dass eine nachfolgende Synchronisierung oder Leerung nicht erfolgreich ist (Schritt 375), kombiniert der Master-E/A-Controller die Sicherungskopie der Plattenänderungs-Bitmap mit der neuen Plattenänderungs-Bitmap (typischerweise durch ODER-Verknüpfung) (Schritt 380) und wiederholt das Rettungsverfahren 300 unter Verwendung der kombinierten Plattenänderungs-Bitmap. Wenn die Slave-E/A-Controller-Synchronisierung und Slave-Platten-Controller-Leerung erfolgreich sind, löscht der Master-E/A-Controller die Sicherungsplattenänderungs-Bitmap (Schritt 390).
  • Obwohl die unter Verweis auf 2 erörterte Umsetzung den Grad der Granularität beim Kopieren von Plattengebieten von der Master-Platte zur Slave-Platte verändert, kann eine andere Umsetzung jedes Mal das gesamte veränderte Gebiet kopieren, ungeachtet dessen, ob ein Abschnitt des Gebiets von einer nachfolgenden Schreibanforderung verändert werden wird. Die Umsetzung von 3 verarbeitet die Rettungs-Bitmap während der Rettung, so dass sie kein zweites Mal verwendet werden kann. Um eine Rettung bei einem Ausfall während des Rettungsverfahrens zu ermöglichen, wird vor dem Verarbeiten der Bits eine Sicherungskopie der Plattenänderungs-Bitmap erstellt (Schritt 310). Eine weitere Umsetzung zerstört die Rettungs-Bitmap während der Rettung nicht und kann von einem Ausfall während des Rettungsverfahrens gerettet werden, indem die Rettungs-Bitmap selbst verwendet wird. Diese Umsetzung erstellt vor dem Verarbeiten von Bits keine Kopie der Plattenänderungs-Bitmap (Schritt 310). Eine alternative Umsetzung verwendet keine neue Plattenänderungs-Bitmap zum Akkumulieren von Master-Plattenänderungen, die vorgenommen wurden, nachdem die Slave-Platte zur Verfügbarkeit zurückgekehrt ist, aber bevor das Rettungsverfahren erfolgreich abgeschlossen wurde.
  • Wie in 46 zu sehen, kann ein Inkremental-Divergenz-Kopierverfahren jedes Mal aktiv sein, wenn der Spiegelsatz genutzt wird. Die Umsetzung eines gespiegelten Satzes in 46 hat zwei Plattenspeicherungseinrichtungen und zwei E/A-Controller, die Schreibanforderungen in der anhand von 2 beschriebenen Weise empfangen.
  • Jeder E/A-Controller verfolgt die an die Platte des E/A-Controllers gestellten Schreibanforderungen durch Akkumulieren der an der Platte vorgenommen Änderungen in einer Plattenänderungs-Bitmap. Ein E/A-Controller (der Master-E/A-Controller genannt wird) sendet periodisch eine Commit-Synchronisierungs-Nachricht an den anderen E/A-Controller (der Slave-E/A-Controller genannt wird), um ein periodisches Synchronisierungsverfahren zu starten. 4 zeigt ein periodisches Synchronisierungsverfahren, das von einem Master-E/A-Controller ausgeführt wird. 5 zeigt ein periodisches Synchronisierungsverfahren, das von einem Slave-E/A-Controller ausgeführt wird. 6 zeigt ein Verfahren zum Wiederherstellen einer gespiegelten Platte mit abweichenden Daten zu einer Spiegelkopie mit identischen Daten.
  • Wie in 4 zu sehen, löst ein Master-E/A-Controller ein Verfahren 400 aus, um eine periodisch Synchronisierung mit einem Slave-E/A-Controller auszuführen. Das Verfahren 400 beginnt, wenn ein Master-E/A-Controller Schreibanforderungen vom Prozessor empfängt und verarbeitet (Schritt 410) und an der Master-Platte vorgenommene Änderungen in einer Plattenänderungs-Bitmap akkumuliert (Schritt 415). Der Master-E/A-Controller stellt fest, ob der Spiegelsatz synchronisiert werden soll oder nicht (Schritt 420). Der Master-E/A-Controller kann eine Commit-Synchronisierungs-Anforderung stellen, beispielsweise nachdem eine vorgegebene Zeitperiode seit der letzten Synchronisierung verstrichen ist, nachdem eine vorgegebene Zahl von Schreibanforderungen seit der letzten Synchronisierung verarbeitet wurden oder nach einem festen Prozentsatz inkrementeller Divergenz zwischen zwei gespiegelten Platten. Bei der Bestimmung, wann eine Synchronisierung angefordert wird, kann die Häufigkeit der Synchronisierung (die die Systemleistung verringern kann, da das Leeren des Platten-Cache die Verarbeitung aller Schreibanforderungen während der Zeit anhält, in der der Platten-Cache in nichtflüchtige Speicherung geschrieben wird) gegen die Menge von Daten abgewogen werden, die zwischen den gespiegelten Platten nicht synchronisiert sind (was eine längere Zeit zum Ausführen des inkremental-divergenten Kopierens zum Wiederherstellen identischer Daten für den Spiegelsatz erfordern kann).
  • Wenn der Master-E/A-Controller feststellt, dass der Spiegelsatz synchronisiert werden sollte, sendet der Master-E/A-Controller eine Commit-Synchronisierungs-Nachricht an den Slave-E/A-Controller (Schritt 430). Die Commit-Synchronisierungs-Nachricht identifiziert eine Schreibanforderungs-Referenzmarke, bis zu der die Daten auf den gespiegelten Platten synchronisiert werden sollen. Der Master-E/A-Controller erstellt eine Sicherungskopie der Plattenänderungs-Bitmap (Schritt 435), um die Rettung zu ermöglichen, falls während des Synchronisierungsverfahrens ein Ausfall stattfindet und beginnt eine neue Plattenänderungs-Bitmap für die Verwendung im nächsten Synchronisierungsschritt, um Plattenänderungen zu akkumulieren, die ab diesem Punkt an der Platte des Master-E/A-Controllers vorgenommen wurden (Schritt 440). Der Master-E/A-Controller empfängt und verarbeitet weiterhin Schreibanforderungen vom Prozessor (Schritt 445) und aktualisiert die neue Plattenänderungs-Bitmap, um jede Änderung der Master-Platte zu reflektieren (Schritt 450).
  • Bei Empfang einer Bestätigung, dass die Cache-Leerung durch den Slave-E/A-Controller und die Synchronisierung erfolgreich waren (Schritt 455), löscht der Master-B/A-Controller die Sicherungs-Plattenänderungs-Bitmap (Schritt 460) und das Synchronisierungsverfahren endet.
  • Alternativ kann der Master E/A-Controller feststellen, dass die Synchronisierung misslungen ist (Schritt 455), da beispielsweise der Master-E/A-Controller innerhalb einer vorherbestimmten Zeit keine Bestätigungsnachricht vom Slave-E/A-Controller empfangen hat oder der Master-E/A-Controller eine Nachricht empfangen hat, dass die Synchronisierung misslungen ist. In diesem Fall kombiniert der Master-E/A-Controller die Sicherungs-Plattenänderungs-Bitmap und die neue Plattenänderungs-Bitmap (typischerweise durch ODER-Verknüpfung) (Schritt 470) und löst, wenn er feststellt, dass der Slave-E/A-Controller und dessen assoziierte Platte funktionsfähig sind, das unter Verweis auf 3 beschriebene Rettungsverfahren 300 aus, unter Verwendung der kombinierten Plattenänderungs-Bitmap zum Angeben, welche Plattengebiete von der Master-Platte zur Slave-Platte kopiert werden sollen (Schritt 475).
  • Wie in 5 zu sehen, beginnt ein Verfahren 500, wenn ein Slave-E/A-Controller eine Commit-Synchronisierungs-Nachricht empfängt, die eine Schreibanforderungs-Referenzmarke identifiziert, bis zu der die Daten auf den gespiegelten Platten zu synchronisieren sind (Schritt 510). Der Slave-E/A-Controller bestimmt, ob der Slave-E/A-Controller die in der Commit-Synchronisierungs-Nachricht identifizierte Schreibanforderung und alle vorausgegangenen Schreibanforderungen bereits verarbeitet hat (Schritt 520). Falls nicht, wartet der Slave-E/A-Controller, bis er diese Schreibanforderung und alle vorausgegangenen Schreibanforderungen verarbeitet hat, bevor er die Synchronisierung auslöst.
  • Sobald der Slave-E/A-Controller die in der Commit-Synchronisierungs-Nachricht identifizierte Schreibanforderung und alle vorausgegangenen Schreibanforderungen verarbeitet hat, oder falls der Slave-E/A-Controller die Schreibanforderung und alle vorausgegangenen Schreibanforderungen bereits verarbeitet hatte, als die Commit-Synchronisierungs-Nachricht empfangen wurde, leert der Slave-Platten-Controller seinen Cache, um die verarbeiteten Schreibanforderungen in nichtflüchtiger Plattenspeicherung festzuschreiben (Schritt 530) und bestimmt, ob die Cache-Leerung erfolgreich war (Schritt 540). Wenn die Cache-Leerung erfolgreich war, sendet der Slave-E/A-Controller eine Bestätigungsnachricht an den Master-E/A-Controller (Schritt 550). Wenn die Cache-Leerung nicht erfolgreich war, sendet der Slave-E/A-Controller eine Fehlernachricht an den Master-E/A-Controller (Schritt 560). Nach dem Senden der entsprechenden Nachricht an den Master-E/A-Controller beendet der Slave-E/A-Controller das Verfahren 500.
  • 6 zeigt ein Verfahren 600 zum Wiederherstellen einer gespiegelten Platte mit abweichenden Daten zu einer gespiegelten Kopie, die identische Daten speichert. Die folgende Beschreibung geht davon aus, dass eine der Platten (die Slave-Platte) in einem gespiegelten Satz zuvor ausgefallen ist oder anderweitig unverfügbar geworden ist und dass eine Plattenänderungs-Bitmap existiert, die alle, seit dem letzten Mal, dass der gespiegelte Satz synchronisiert wurde, an der verbleibenden aktiven Platte (der Master-Platte) vorgenommenen Änderungen enthält. Das kann beispielsweise erreicht werden, indem die anhand von 45 beschriebenen Verfahren ausgeführt werden.
  • Wenn die Slave-Platte nicht verfügbar ist, empfängt und verarbeitet der Master E/A-Controller weiterhin Schreibanforderungen vom Prozessor (Schritt 610) und akkumuliert weiterhin an der Master-Platte vorgenommene Änderungen in der Plattenänderungs-Bitmap, die die Plattenänderungen verfolgt, die seit der letzten Synchronisierung vorgenommen wurden (schritt 620). Wenn der Master-E/A-Controller feststellt, dass die Slave-Platte wieder funktionsfähig ist und in der Lage ist, mit der Verarbeitung von Schreibanforderungen zu beginnen (Schritt 630), beginnt der Master-E/A-Controller ein Rettungsverfahren 300, wie anhand von 3 beschrieben, wobei die Plattenänderungs-Bitmap verwendet wird, um die Slave-Platte so wiederherzustellen, dass sie Daten enthält, die mit denen der Master-Platte identisch sind (Schritt 640).
  • Das Inkremental-Divergenz-Kopieren, das durch Ausführen der Verfahren 400, 500 und 600 erreicht wird, unterscheidet sich von dem, dass durch Ausführen des Verfahrens 200 erreicht wird. Insbesondere sind die Verfahren 400600 wirksam, während eines unerwarteten Platten- oder Controller-Ausfalls in einer der Platten einen Spiegelplattensatz wiederherzustellen, da die Plattenänderungs-Bitmaps aktualisiert werden, während der Spiegelsatz aktiv ist. Das Verfahren 200 ist nur wirksam zum Wiederherstellen eines Spiegelplattensatzes, wenn ausreichend Warnung vor einer bevorstehenden Periode der Nichtverfügbarkeit einer Platte gegeben wird, so dass eine Platten-Cache-Leerung stattfinden kann und begonnen werden kann, Änderungen an der verbleibenden aktiven Platte in einer Plattenänderungs-Bitmap zu akkumulieren. Da das Verfahren 200 jedoch nur zu bestimmten Zeiten umgesetzt wird, kann es zu deutlich geringeren Verarbeitungs-Gesamtkosten führen als die Verfahren 400600.
  • Wie in 7 zu sehen, umfasst ein Rettungsverfahren 700 das Ausführen periodischer Synchronisierung und Kopierens von Abschnitten der Master-Platte gemäß Angabe durch die Plattenänderungs-Bitmap zur Slave-Platte. Das Rettungsverfahren 700 beginnt, wenn der Master-E/A-Controller eine Sicherungskopie der Plattenänderungs-Bitmap erstellt und die Originalversion der Plattenänderungs-Bitmap als Rettungs-Bitmap bezeichnet (Schritt 710). Der Master-E/A-Controller beginnt außerdem eine neue Plattenänderungs-Bitmap, um alle anschließenden Änderungen der Master-Platte zu akkumulieren (Schritt 720).
  • Wie vorangehend anhand von 3 beschrieben, prüft der Master-E/A-Controller jedes Bit in der Rettungs-Bitmap (Schritt 730) und wenn das Bit angibt, dass das Gebiet der Master-Platte verändert wurde, kopiert die Master-Platte die veränderten Abschnitte der Master-Platte zur Slave-Platte (Schritt 735).
  • Wie vorangehend anhand von 4 beschrieben, löst der Master-E/A-Controller periodisch ein Synchronisierungsverfahren mit dem Slave-E/A-Controller aus. Wenn insbesondere der Master-E/A-Controller feststellt, dass der Spiegelsatz synchronisiert werden sollte (Schritt 740), sendet der Master-E/A-Controller eine Commit-Synchronisierungs-Nachricht an den Slave-E/A-Controller, erstellt eine Sicherungskopie der Plattenänderungs-Bitmap und beginnt eine neue Plattenänderungs-Bitmap, um an der Platte des Master-E/A-Controllers vorgenommene Änderungen ab diesem Punkt zu akkumulieren (Schritt 745).
  • Bei Empfang einer Bestätigung, dass die Cache-Leerung durch den Slave-Platten-Controller und die Synchronisierung erfolgreich waren, (Schritt 750), entfernt der Master-E/A-Controller die Bits aus der Rettungs-Bitmap, die Gebiete auf der Master-Platte anzeigen, die erfolgreich zur Slave-Platte kopiert wurden (Schritt 755). Der Master-E/A-Controller kann dies beispielsweise erreichen, indem er eine Liste der von der Master-Platte während des Rettungsverfahrens verarbeiteten Bits führt und die aufgelisteten Bits aus der Rettungs-Bitmap löscht. Wenn der Master-E/A-Controller jedoch feststellt, dass die Synchronisierung nicht erfolgreich war (Schritt 750), kombiniert der Master-E/A-Controller die Sicherungs-Plattenänderungs-Bitmap und die neue Plattenänderungs-Bitmap (Schritt 760) und löst das Rettungsverfahren 300, wie anhand 3 beschrieben, unter Verwendung der kombinierten Plattenänderungs-Bitmap aus (Schritt 765).
  • Wenn der Master-E/A-Controller festgestellt hat, dass alle Bits in der Rettungs-Bitmap geprüft wurden (Schritt 770), ist das Rettungsverfahren vollständig und die Sicherungs-Plattenänderungs-Bitmap wird gelöscht (Schritt 775). Umsetzungen können ein Verfahren oder einen Prozess, eine Vorrichtung oder ein System oder Computersoftware auf einem Computermedium umfassen. Es versteht sich, dass verschiedene Abwandlungen vorgenommen werden können, ohne vom Umfang der nachfolgenden Patenansprüche abzuweichen.

Claims (41)

  1. Verfahren zum Unterhalten einer gespiegelten Kopie einer ersten Speicherungseinrichtung (105) bei einer zweiten Speicherungseinrichtung (110) in einem Computersystem, wobei das Verfahren Folgendes umfasst: Empfangen von Schreibanforderungen (130) bei einer ersten Speicherungseinrichtung (105), wobei die erste Speicherungseinrichtung (105) einen assoziierten Controller (115) enthält; Verarbeiten der bei der ersten Speicherungseinrichtung (105) empfangenen Schreibanforderungen (130); Empfangen von Schreibanforderungen (130) bei einer zweiten Speicherungseinrichtung (110), wobei die zweite Speicherungseinrichtung (110) einen assoziierten Controller (120), flüchtige Speicherung und nichtflüchtige Speicherung enthält; Verarbeiten der bei der zweiten Speicherungseinrichtung (110) empfangenen Schreibanforderungen (130); Senden einer Commit-Synchronisierungs-Nachricht (160) zusammen mit eine Schreibanforderung (130) bezeichnenden Informationen an die zweite Speicherungseinrichtung (110), wobei es sich bei den mit der Commit-Synchronisierungs-Nachricht (160) gesendeten Informationen um eine Referenzmarke handelt, die eine von der ersten Speicherungseinrichtung (105) verarbeitete Schreibanforderung identifiziert, wobei die Referenzmarken sequenziell Schreibanforderungen (130) zugeordnet sind; und Veranlassen, dass die zweite Speicherungseinrichtung (110) nach dem Empfangen der Commit-Synchronisierungs-Nachricht (160) bestätigt, dass Daten, die mit allen Schreibanforderungen (130) assoziiert sind, die der bezeichneten Schreibanforderung vorausgegangen sind, in die nichtflüchtige Speicherung der zweiten Speicherungseinrichtung (110) geschrieben worden sind und dass Daten, die mit der bezeichneten Schreibanforderung assoziiert sind, die durch die mit der Commit-Synchronisierungs-Nachricht (160) gesendeten Informationen identifiziert ist, in die nichtflüchtige Speicherung der zweiten Speicherungseinrichtung (110) geschrieben worden sind.
  2. Verfahren nach Anspruch 1, weiterhin umfassend zu veranlassen, dass die zweite Speicherungseinrichtung (110) nach dem Empfangen der Commit-Synchronisierungs-Nachricht (160) die bezeichnete Schreibanforderung (130) verarbeitet.
  3. Verfahren nach Anspruch 1 oder 2, weiterhin umfassend zu veranlassen, dass die zweite Speicherungseinrichtung (110) nach dem Empfangen der Commit-Synchronisierungs-Nachricht (160) eine erfolgreiche Cache-Leerung der flüchtigen Speicherung der zweiten Speicherungseinrichtung (110) bestätigt.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verarbeiten der bei der zweiten Speicherungseinrichtung (110) empfangenen Schreibanforderungen weiterhin das Verarbeiten von Schreibanforderungen (130) in sequentieller Reihenfolge nach ihren Referenzmarken derart umfasst, dass alle Schreibanforderungen (130), die vor der von der Referenzmarke in der zweiten Commit-Synchronisierungs-Nachricht (160) identifizierten Schreibanforderung ausgegeben werden, vor der Verarbeitung dieser Schreibanforderung verarbeitet werden.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei jede Speicherungseinrichtung Schreibanforderungen (130) mit der gleichen Sequenz von Referenzmarken empfängt.
  6. Verfahren nach einem der vorhergehenden Ansprüche, weiterhin umfassend das Identifizieren von Speicherungsgebieten, die von Schreibanforderungen (130) betroffen sind, die bei der ersten Speicherungseinrichtung (105) verarbeitet worden sind.
  7. Verfahren nach Anspruch 6, wobei das Identifizieren von Speicherungsgebieten, die von Schreibanforderungen (130) betroffen sind, die bei der ersten Speicherungseinrichtung (105) verarbeitet worden sind, weiterhin das Akkumulieren der identifizierten Speicherungsgebiete in einer ersten Bitmap (155) umfasst.
  8. Verfahren nach Anspruch 7, weiterhin umfassend: Akkumulieren von neu identifizierten Speicherungsgebieten in einer zweiten Bitmap (156) nach dem Senden der Commit-Synchronisierungs-Nachricht (160); Senden einer Statusnachricht an die erste Speicherungseinrichtung (105), die anzeigt, ob die Schreibdaten erfolgreich in die nichtflüchtige Speicherung geschrieben wurden, nachdem die zweite Speicherungseinrichtung (110) bestätigt, dass Daten in den verarbeiteten Schreibanforderungen (130) in eine nichtflüchtige Speicherung der zweiten Speicherungseinrichtung (110) geschrieben worden sind; und Löschen der ersten Bitmap (155) nach dem Empfangen der Statusnachricht, die anzeigt, dass die Schreibdaten erfolgreich geschrieben wurden.
  9. Verfahren nach Anspruch 8, weiterhin umfassend das Kopieren des Inhalts der zweiten Bitmap (156) in die erste Bitmap (155) und Löschen der zweiten Bitmap (156) nach dem Empfangen der Statusnachricht, die anzeigt, dass die Schreibdaten nicht erfolgreich geschrieben wurden.
  10. Verfahren nach Anspruch 8, weiterhin umfassend das Bezeichnen der zweiten Bitmap (156) als der ersten Bitmap (155) nach dem Löschen der ersten Bitmap (155).
  11. Verfahren nach einem der Ansprüche 7 bis 10, weiterhin umfassend, nach einer Periode, wenn die zweite Speicherungseinrichtung (110) nicht in der Lage war, Schreibanforderungen (130) zu verarbeiten: Kopieren des Inhalts der ersten Bitmap (155) in eine Wiederherstellungsbitmap, Verwenden der Wiederherstellungsbitmap zum Identifizieren von Speicherungsgebieten der ersten Speicherungseinrichtung (105), die von der ersten Speicherungseinrichtung (105) zu der zweiten Speicherungseinrichtung (110) kopiert werden sollen, Kopieren der identifizierten Speicherungsgebiete der ersten Speicherungseinrichtung (105) zu der zweiten Speicherungseinrichtung (110) und Akkumulieren neu empfangener Schreibanforderungen (130) an der ersten Speicherungseinrichtung (105) in einer dritten Bitmap (165).
  12. Verfahren nach einem der vorhergehenden Ansprüche, wobei die erste Speicherungseinrichtung (105) eine flüchtige Speicherung und eine nichtflüchtige Speicherung enthält, wobei das Verfahren weiterhin umfasst: Senden einer zweiten Commit-Synchronisierungs-Nachricht (160) zusammen mit Informationen, die eine zweite Schreibanforderung bezeichnen, an die erste Speicherungseinrichtung (105) und Veranlassen, dass die erste Speicherungseinrichtung (105) nach dem Empfangen der zweiten Commit-Synchronisierungs-Nachricht (160) bestätigt, dass mit der bezeichneten zweiten Schreibanforderung assoziierte Daten in die nichtflüchtige Speicherung der ersten Speicherungseinrichtung (105) geschrieben worden sind.
  13. Verfahren nach Anspruch 12, wobei das Veranlassen, dass die erste Speicherungseinrichtung (105) bestätigt, dass mit der bezeichneten zweiten Schreibanforderung assoziierte Daten in die nichtflüchtige Speicherung der ersten Speicherungseinrichtung (105) geschrieben worden sind, umfasst zu veranlassen, dass die erste Speicherungseinrichtung (105) bestätigt, dass Daten, die mit allen Schreibanforderungen (130) assoziiert sind, die der bezeichneten zweiten Schreibanforderung vorausgegangen sind, in die nichtflüchtige Speicherung der ersten Speicherungseinrichtung (105) geschrieben worden sind.
  14. Verfahren nach Anspruch 13, wobei das Veranlassen, dass die erste Speicherungseinrichtung (105) bestätigt, dass mit der bezeichneten zweiten Schreibanforderung assoziierte Daten in die nichtflüchtige Speicherung der ersten Speicherungseinrichtung (105) geschrieben worden sind, umfasst zu veranlassen, dass die erste Speicherungseinrichtung (105) bestätigt, dass Daten, die mit der bezeichneten zweiten Schreibanforderung assoziiert sind, in die nichtflüchtige Speicherung der ersten Speicherungseinrichtung (105) geschrieben worden sind.
  15. Verfahren nach einem der Ansprüche 12 bis 14, weiterhin umfassend zu veranlassen, dass die erste Speicherungseinrichtung (105) nach dem Empfangen der zweiten Commit-Synchronisierungs-Nachricht (160) die bezeichnete zweite Schreibanforderung verarbeitet.
  16. Verfahren nach einem der Ansprüche 12 bis 15, wobei zu veranlassen, dass die erste Speicherungseinrichtung (105) bestätigt, dass die mit der bezeichneten zweiten Schreibanforderung assoziierten Daten in die nichtflüchtige Speicherung der ersten Speicherungseinrichtung (105) geschrieben worden sind, umfasst zu veranlassen, dass die erste Speicherungs einrichtung (105) eine erfolgreiche Cache-Leerung der flüchtigen Speicherung der zweiten Speicherungseinrichtung (110) bestätigt.
  17. Verfahren nach einem der Ansprüche 12 bis 16, wobei es sich bei den mit der zweiten Commit-Synchronisierungs-Nachricht (160) gesendeten Informationen um eine Referenzmarke handelt, die eine von der zweiten Speicherungseinrichtung (110) verarbeitete zweite Schreibanforderung identifiziert.
  18. Verfahren nach Anspruch 17, wobei die Referenzmarken sequenziell Schreibanforderungen (130) zugeordnet werden.
  19. Verfahren nach Anspruch 18, wobei das Verarbeiten der bei der ersten Speicherungseinrichtung (105) empfangenen Schreibanforderungen (130) weiterhin das Verarbeiten von Schreibanforderungen (130) in sequenzieller Reihenfolge nach ihren Referenzmarken derart umfasst, dass alle Schreibanforderungen (130), die vor der von der Referenzmarke in der zweiten Commit-Synchronisierungs-Nachricht (160) identifizierten Schreibanforderung ausgegeben werden, vor der Verarbeitung dieser Schreibanforderung verarbeitet werden.
  20. Verfahren nach Anspruch 18 oder 19, wobei jede Speicherungseinrichtung Schreibanforderungen (130) mit der gleichen Sequenz von Referenzmarken empfängt.
  21. Verfahren nach einem der Ansprüche 12 bis 20, weiterhin umfassend das Identifizieren von Speicherungsgebieten, die von Schreibanforderungen (130) betroffen sind, die bei der zweiten Speicherungseinrichtung (110) verarbeitet worden sind.
  22. Verfahren nach Anspruch 21, wobei das Identifizieren von Speicherungsgebieten, die von Schreibanforderungen (130) betroffen sind, die bei der zweiten Speicherungseinrichtung (110) verarbeitet worden sind, weiterhin das Akkumulieren der identifizierten Speicherungsgebiete in einer vierten Bitmap umfasst.
  23. Verfahren nach Anspruch 22, weiterhin umfassend: Akkumulieren von neu identifizierten Speicherungsgebieten in einer fünften Bitmap nach dem Senden der zweiten Commit- Synchronisierungs-Nachricht (160), Senden einer Statusnachricht an die zweite Speicherungseinrichtung (110), die anzeigt, ob die Schreibdaten erfolgreich in die nichtflüchtige Speicherung geschrieben wurden, nachdem die erste Speicherungseinrichtung (105) bestätigt, dass Daten in den verarbeiteten Schreibanforderungen (130) in eine nichtflüchtige Speicherung der ersten Speicherungseinrichtung (105) geschrieben worden sind, und Löschen der vierten Bitmap nach dem Empfangen der zweiten Statusnachricht, die anzeigt, dass die Schreibdaten erfolgreich geschrieben wurden.
  24. Verfahren nach Anspruch 23, weiterhin umfassend das Kopieren des Inhalts der fünften Bitmap in die vierte Bitmap und Löschen der fünften Bitmap nach dem Empfangen der Statusnachricht, die anzeigt, dass die Schreibdaten nicht erfolgreich geschrieben wurden.
  25. Verfahren nach Anspruch 23, weiterhin umfassend das Bezeichnen der fünften Bitmap als der vierten Bitmap nach dem Löschen der vierten Bitmap.
  26. Verfahren nach Anspruch 22, weiterhin umfassend, nach einer Periode, wenn die erste Speicherungseinrichtung (105) nicht in der Lage war, Schreibanforderungen (130) zu verarbeiten: Kopieren des Inhalts der vierten Bitmap in eine zweite Wiederherstellungsbitmap, Verwenden der zweiten Wiederherstellungsbitmap zum Identifizieren der Speicherungsgebiete der zweiten Speicherungseinrichtung (110), die von der zweiten Speicherungseinrichtung (110) zu der ersten Speicherungseinrichtung (105) kopiert werden sollen, Kopieren der identifizierten Speicherungsgebiete der zweiten Speicherungseinrichtung (110) zu der ersten Speicherungseinrichtung (105) und Akkumulieren neu empfangener Schreibanforderungen (130) bei der ersten Speicherungseinrichtung (105) in einer sechsten Bitmap.
  27. Verfahren nach einem der vorhergehenden Ansprüche, weiterhin umfassend das Assoziieren einer eindeutigen Kennung mit einem bestimmten Datensatz, so dass die Schreibanforderung eindeutig identifiziert ist.
  28. Verfahren nach Anspruch 27, wobei die eindeutige Kennung eine Fallnummer oder ein Datum umfasst.
  29. Verfahren nach Anspruch 1, bei dem die erste Speicherungseinrichtung (105) weiterhin eine flüchtige Speicherung und eine nichtflüchtige Speicherung enthält, wobei das Verfahren umfasst: Senden der Commit-Synchronisierungs-Nachricht zusammen mit eine Schreibanforderung bezeichnenden Informationen an die zweite Speicherungseinrichtung (110) nach dem Bestimmen, dass die zweite Speicherungseinrichtung (110) dabei ist, in eine Periode einzutreten, in der die zweite Speicherungseinrichtung (110) nicht in der Lage sein wird, Schreibanforderungen (130) zu verarbeiten; nach dem Senden der Commit-Synchronisierungs-Nachricht (160) zu veranlassen, dass der Controller (115) der ersten Speicherungseinrichtung (105) Speicherungsgebiete, die von neuen Schreibanforderungen (130) betroffen sind, in einer Bitmap akkumuliert; nachdem die zweite Speicherungseinrichtung (110) in der Lage ist, Schreibanforderungen (130) zu verarbeiten, zu veranlassen, dass der Controller (115) der ersten Speicherungseinrichtung (105) die Bitmap verwendet, um die Speicherungsgebiete der ersten Speicherungseinrichtung (105) zu identifizieren, die von der ersten Speicherungseinrichtung (105) zu der zweiten Speicherungseinrichtung (110) kopiert werden sollen; und Kopieren des Inhalts der identifizierten Gebiete der ersten Speicherungseinrichtung (105) zu der zweiten Speicherungseinrichtung (110).
  30. Verfahren nach Anspruch 1, bei dem die erste Speicherungseinrichtung (105) weiterhin eine flüchtige Speicherung und eine nichtflüchtige Speicherung enthält, wobei das Verfahren umfasst: Veranlassen, dass der Controller (115) der ersten Speicherungseinrichtung (105) von neuen Schreibanforderungen (130) betroffene Speicherungsgebiete in einer ersten Bitmap (155) akkumuliert, Veranlassen, dass der Controller (115) der ersten Speicherungseinrichtung (105) die Commit-Synchronisierungs-Nachricht (160) zusammen mit Informationen, die eine eindeutig identifizierte Schreibanforderung bezeichnen, an die zweite Speicherungseinrichtung (110) sendet; Veranlassen, dass der Controller (120) der zweiten Speicherungseinrichtung (110) nach dem Empfangen der Commit-Synchronisierungs-Nachricht (160) bestätigt, dass mit der bezeichneten Schreibanforderung assoziierte Daten in die nichtflüchtige Speicherung der zweiten Speicherungseinrichtung (110) geschrieben worden sind; nach dem Senden der Commit-Synchronisierungs-Nachricht (160) zu veranlassen, dass der Controller (115) der ersten Speicherungseinrichtung (105) von neuen Schreibanforderungen (130) betroffene Speicherungsgebiete in einer zweiten Bitmap (156) akkumuliert; Senden einer Statusnachricht an die erste Speicherungseinrichtung (105), die anzeigt, ob die Schreibdaten erfolgreich in eine nichtflüchtige Speicherung geschrieben wurden, nachdem der Controller (120) der zweiten Speicherungseinrichtung (110) bestätigt, dass Daten in den verarbeiteten Schreibanforderungen (130) zu einer nichtflüchtigen Speicherung der zweiten Speicherungseinrichtung (110) geschrieben worden sind; Löschen der ersten Bitmap (155) nach dem Empfangen der Statusnachricht, die anzeigt, dass die Schreibdaten erfolgreich geschrieben wurden; Kopieren des Inhalts der zweiten Bitmap (156) in die erste Bitmap (155) und Löschen der zweiten Bitmap (156) nach dem Empfangen der Statusnachricht, die anzeigt, dass die Schreibdaten nicht erfolgreich geschrieben wurden; nachdem die zweite Speicherungseinrichtung (110) in der Lage ist, Schreibanforderungen (130) nach einer Periode zu verarbeiten, in der die zweite Speicherungseinrichtung (110) nicht in der Lage war, Schreibanforderungen (130) zu verarbeiten: Kopieren des Inhalts der zweiten Bitmap (156) in eine Wiederherstellungsbitmap, Verwenden der Wiederherstellungsbitmap zum Identifizieren von Speicherungsgebieten der ersten Speicherungseinrichtung (105), die von der ersten Speicherungseinrichtung (105) zu der zweiten Speicherungseinrichtung (110) kopiert werden sollen, Kopieren des Inhalts der identifizierten Speicherungsgebiete der ersten Speicherungseinrichtung (105) zu der zweiten Speicherungseinrichtung (110) und Veranlassen, dass der Controller (115) der ersten Speicherungseinrichtung (105) von neuen Schreibanforderungen (130) betroffene Speicherungsgebiete in einer dritten Bitmap (165) akkumuliert.
  31. Verfahren nach Anspruch 30, wobei das Kopieren des Inhalts der identifizierten Gebiete der ersten Speicherungseinrichtung (105) zu der zweiten Speicherungseinrichtung (110) Folgendes umfasst: Veranlassen, dass der Controller (115) der ersten Speicherungseinrichtung (105) eine Commit-Synchronisierungs-Nachricht (160) zusammen mit Informationen, die eine eindeutig identifizierte Schreibanforderung bezeichnen, an die zweite Speicherungseinrichtung (110) sendet; Veranlassen, dass der Controller (120) der zweiten Speicherungseinrichtung (110) nach dem Empfangen der Commit-Synchronisierungs-Nachricht (160) bestätigt, dass mit der bezeichneten Schreibanforderung assoziierte Daten in die nichtflüchtige Speicherung der zweiten Speicherungseinrichtung (110) geschrieben worden sind; nach dem Senden der Commit-Synchronisierungs-Nachricht (160) zu veranlassen, dass der Controller (115) der ersten Speicherungseinrichtung (105) Speicherungsgebiete, die von neuen Schreibanforderungen (130) betroffen sind, in einer vierten Bitmap akkumuliert; nachdem die zweite Speicherungseinrichtung (110) bestätigt, dass Daten in den verarbeiteten Schreibanforderungen (130) in eine nichtflüchtige Speicherung der zweiten Speicherungseinrichtung (110) geschrieben worden sind, Senden einer Statusnachricht an die erste Speicherungseinrichtung (105), die anzeigt, ob die Schreibdaten erfolgreich in die nichtflüchtige Speicherung geschrieben wurden; Löschen der dritten Bitmap (165) nach dem Empfangen der Statusnachricht, die anzeigt, dass die Schreibdaten erfolgreich geschrieben wurden; und Kopieren des Inhalts der vierten Bitmap zur dritten Bitmap (165) und Löschen der vierten Bitmap nach dem Empfangen der Statusnachricht, die anzeigt, dass die Schreibdaten nicht erfolgreich geschrieben wurden.
  32. Gespiegeltes Datenspeicherungssystem, umfassend: eine erste Speicherungseinrichtung (105); eine zweite Speicherungseinrichtung (110); einen mit der ersten Speicherungseinrichtung (105) assoziierten ersten Controller (115) und einen mit der zweiten Speicherungseinrichtung (110) assoziierten zweiten Controller (120); wobei: der erste Controller (115) konfiguriert ist: Schreibanforderungen (130) bei einer ersten Speicherungseinrichtung (105) zu empfangen; die bei der ersten Speicherung empfangenen Schreibanforderungen (130) zu verarbeiten und eine Commit-Synchronisierungs-Nachricht (160) zusammen mit Informationen, die eine Schreibanforderung bezeichnen, an die zweite Speicherungseinrichtung (110) zu senden, wobei es sich bei den mit der Commit-Synchronisierungs-Nachricht (160) gesendeten Informationen um eine Referenzmarke handelt, die eine von der ersten Speicherungseinrichtung (105) verarbeitete Schreibanforderung identifiziert, wobei die Referenzmarken sequenziell Schreibanforderungen (130) zugeordnet sind; und der zweite Controller (120) konfiguriert ist: Schreibanforderungen (130) bei einer zweiten Speicherungseinrichtung (110) zu empfangen, wobei die zweite Speicherungseinrichtung (110) flüchtige Speicherung und nichtflüchtige Speicherung enthält; die bei der zweiten Speicherungseinrichtung (110) empfangenen Schreibanforderungen (130) zu verarbeiten und nach dem Empfangen der Commit-Synchronisierungs-Nachricht und Verarbeiten der durch die Informationen in der Commit-Synchronisierungs-Nachricht identifizierten Schreibanforderung zu bestätigen, dass Daten, die mit allen Schreibanforderungen (130) assoziiert sind, die der bezeichneten Schreibanforderung vorausgehen, in die nichtflüchtige Speicherung der zweiten Speicherungseinrichtung (110) geschrieben worden sind und dass Daten, die mit der durch die Informationen in der Commit-Synchronisierungs-Nachricht (160) identifizierten Schreibanforderung assoziiert sind, in die nichtflüchtige Speicherung der zweiten Speicherungseinrichtung (110) geschrieben worden sind.
  33. System nach Anspruch 32, wobei der zweite Controller (120) konfiguriert ist, eine erfolgreiche Cache-Leerung der flüchtigen Speicherung der zweiten Speicherungseinrichtung (110) zu bestätigen.
  34. System nach Anspruch 32 oder 33, wobei der zweite Controller (120) konfiguriert ist, Schreibanforderungen (130) in sequenzieller Reihenfolge nach ihren Referenzmarken zu verarbeiten, so dass alle Schreibanforderungen (130), die vor der durch die Referenzmarke in der Commit-Synchronisierungs-Nachricht (160) identifizierten Schreibanforderung ausgegeben werden, vor der Verarbeitung dieser Schreibanforderung verarbeitet werden.
  35. System nach einem der Ansprüche 32 bis 34, wobei jede Speicherungseinrichtung Schreibanforderungen (130) mit der gleichen Sequenz von Referenzmarken empfängt.
  36. System nach einem der Ansprüche 32 bis 35, wobei der erste Controller (115) weiterhin konfiguriert ist, Speicherungsgebiete zu identifizieren, die von Schreibanforderungen (130) betroffen sind, die bei der ersten Speicherungseinrichtung (105) verarbeitet worden sind.
  37. System nach Anspruch 36, wobei der erste Controller (115) konfiguriert ist, die identifizierten Speicherungsgebiete in einer ersten Bitmap (155) zu akkumulieren.
  38. System nach Anspruch 36 oder 37, wobei der zweite Controller (120) weiterhin konfiguriert ist, nachdem die zweite Speicherungseinrichtung (110) bestätigt, dass Daten in den verarbeiteten Schreibanforderungen (130) in eine nichtflüchtige Speicherung der zweiten Speicherungseinrichtung (110) geschrieben worden sind, eine Statusnachricht an die erste Speicherungseinrichtung (105) zu senden, die anzeigt, ob die Schreibdaten erfolgreich in die nichtflüchtige Speicherung geschrieben wurden, wobei der erste Controller (115) weiterhin konfiguriert ist, nach dem Senden der Commit-Synchronisierungs-Nachricht (160) neu identifizierte Speicherungsgebiete in einer zweiten Bitmap (156) zu akkumulieren und nach dem Empfangen der Statusnachricht, die anzeigt, dass die Schreibdaten erfolgreich geschrieben wurden, die erste Bitmap (155) zu löschen.
  39. System nach Anspruch 38, wobei der erste Controller (115) weiterhin konfiguriert ist, nach dem Empfangen der Statusnachricht, die anzeigt, dass die Schreibdaten nicht erfolgreich geschrieben wurden, den Inhalt der zweiten Bitmap (156) in die erste Bitmap (155) zu kopieren und die zweite Bitmap (156) zu löschen.
  40. System nach Anspruch 37, wobei der erste Controller (115) weiterhin konfiguriert ist, nach einer Periode, wenn die zweite Speicherungseinrichtung (110) nicht in der Lage war, Schreibanforderungen (130) zu verarbeiten: den Inhalt der ersten Bitmap (155) in eine Wiederherstellungsbitmap zu kopieren, die Wiederherstellungsbitmap zum Identifizieren von Speicherungsgebieten der ersten Speicherungseinrichtung (105) zu verwenden, die von der ersten Speicherungseinrichtung (105) zu der zweiten Speicherungseinrichtung (110) kopiert werden sollen, die identifizierten Speicherungsgebiete der ersten Speicherungseinrichtung (105) zu der zweiten Speicherungseinrichtung (110) zu kopieren und neu empfangene Schreibanforderungen (130) bei der ersten Speicherungseinrichtung (105) in einer dritten Bitmap (165) zu akkumulieren.
  41. Computerlesbares Medium oder ausgebreitetes Signal mit darauf verkörpert einem Computerprogramm, das konfiguriert ist, eine gespiegelte Kopie einer ersten Speicherungseinrichtung (105) bei einer zweiten Speicherungseinrichtung (110) in einem Computersystem zu unterhalten, wobei das Medium Codesegmente umfasst, die konfiguriert sind, das Verfahren nach einem der Ansprüche 1 bis 31 durchzuführen, wenn es auf einem Computer ausgeführt wird.
DE60318687T 2002-03-06 2003-03-06 Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz Expired - Lifetime DE60318687T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/090,728 US6728898B2 (en) 2002-03-06 2002-03-06 Producing a mirrored copy using incremental-divergence
US90728 2002-03-06
PCT/US2003/006620 WO2003077128A1 (en) 2002-03-06 2003-03-06 Producing a mirrored copy using incremental-divergence

Publications (2)

Publication Number Publication Date
DE60318687D1 DE60318687D1 (de) 2008-03-06
DE60318687T2 true DE60318687T2 (de) 2009-01-15

Family

ID=27804068

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60318687T Expired - Lifetime DE60318687T2 (de) 2002-03-06 2003-03-06 Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz

Country Status (5)

Country Link
US (1) US6728898B2 (de)
EP (1) EP1481324B1 (de)
JP (1) JP4472995B2 (de)
DE (1) DE60318687T2 (de)
WO (1) WO2003077128A1 (de)

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10115586A1 (de) * 2001-03-29 2002-10-17 Siemens Production & Logistics Verfahren zur Erzeugung von Internetinformationen
US6742138B1 (en) * 2001-06-12 2004-05-25 Emc Corporation Data recovery method and apparatus
US7310743B1 (en) 2001-06-12 2007-12-18 Emc Corporation Data recovery method and apparatus
EP1249744A1 (de) * 2001-08-23 2002-10-16 Siemens Aktiengesellschaft Verfahren zum Herstellen konsistenter Speicherinhalte in redundanten Systemen
US20090259816A1 (en) * 2001-12-26 2009-10-15 Cisco Technology, Inc. Techniques for Improving Mirroring Operations Implemented In Storage Area Networks and Network Based Virtualization
US20090259817A1 (en) * 2001-12-26 2009-10-15 Cisco Technology, Inc. Mirror Consistency Checking Techniques For Storage Area Networks And Network Based Virtualization
US9009427B2 (en) * 2001-12-26 2015-04-14 Cisco Technology, Inc. Mirroring mechanisms for storage area networks and network based virtualization
US7620666B1 (en) 2002-07-29 2009-11-17 Symantec Operating Company Maintaining persistent data change maps for fast data synchronization and restoration
US7096330B1 (en) 2002-07-29 2006-08-22 Veritas Operating Corporation Symmetrical data change tracking
US7058850B2 (en) * 2002-07-31 2006-06-06 Hewlett-Packard Development Company, L.P. Method and system for preventing data loss within disk-array pairs supporting mirrored logical units
US7103796B1 (en) * 2002-09-03 2006-09-05 Veritas Operating Corporation Parallel data change tracking for maintaining mirrored data consistency
US7231409B1 (en) * 2003-03-21 2007-06-12 Network Appliance, Inc. System and method for reallocating blocks in checkpointing bitmap-based file systems
JP4141875B2 (ja) * 2003-03-27 2008-08-27 株式会社日立製作所 リカバリ処理方法及びその実施システム並びにその処理プログラム
US7260739B2 (en) * 2003-05-09 2007-08-21 International Business Machines Corporation Method, apparatus and program storage device for allowing continuous availability of data during volume set failures in a mirrored environment
FR2850182B1 (fr) * 2003-06-10 2006-02-24 Garnier Jean Procede de gestion d'une unite de stockage numerique
US7617369B1 (en) * 2003-06-30 2009-11-10 Symantec Operating Corporation Fast failover with multiple secondary nodes
US7831550B1 (en) * 2003-09-30 2010-11-09 Symantec Operating Corporation Propagating results of a volume-changing operation to replicated nodes
US7200726B1 (en) * 2003-10-24 2007-04-03 Network Appliance, Inc. Method and apparatus for reducing network traffic during mass storage synchronization phase of synchronous data mirroring
US7203796B1 (en) 2003-10-24 2007-04-10 Network Appliance, Inc. Method and apparatus for synchronous data mirroring
US7596672B1 (en) 2003-10-24 2009-09-29 Network Appliance, Inc. Synchronous mirroring including writing image updates to a file
JP2005157712A (ja) 2003-11-26 2005-06-16 Hitachi Ltd リモートコピーネットワーク
JP4319017B2 (ja) * 2003-12-02 2009-08-26 株式会社日立製作所 ストレージシステムの制御方法、ストレージシステム、及び記憶装置
US7136973B2 (en) * 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US20050223122A1 (en) * 2004-03-31 2005-10-06 Brown Mark L Integrated circuit capable of remote data storage
US7707372B1 (en) * 2004-06-30 2010-04-27 Symantec Operating Corporation Updating a change track map based on a mirror recovery map
JP2006252239A (ja) * 2005-03-11 2006-09-21 Fujitsu Ltd ファイル制御装置
US7370235B1 (en) * 2005-09-29 2008-05-06 Emc Corporation System and method for managing and scheduling recovery after a failure in a data storage environment
WO2007047346A2 (en) * 2005-10-14 2007-04-26 Symantec Operating Corporation Technique for timeline compression in a data store
US9009114B1 (en) * 2005-10-31 2015-04-14 Symantec Operating Corporation Version mapped incremental backups
US20070156849A1 (en) * 2005-12-30 2007-07-05 Wolfgang Becker Systems and methods for delivering software upgrades in a provider-tenant environment
US7698284B2 (en) * 2005-12-30 2010-04-13 Sap Ag Systems and methods for deploying a tenant in a provider-tenant environment
US7689593B2 (en) * 2005-12-30 2010-03-30 Sap Ag Systems and methods for accessing a shared space in a provider-tenant environment
US7680825B2 (en) * 2005-12-30 2010-03-16 Sap Ag Systems and methods for generating tenant-specific properties for use in a provider-tenant environment
US7917607B2 (en) * 2005-12-30 2011-03-29 Sap Ag Software management systems and methods, including use of such systems and methods in a provider-tenant environment
US20070156902A1 (en) * 2005-12-30 2007-07-05 Becker Wolfgang A Systems and methods for implementing a tenant space in a provider-tenant environment
US7693851B2 (en) * 2005-12-30 2010-04-06 Sap Ag Systems and methods for implementing a shared space in a provider-tenant environment
US20070156901A1 (en) * 2005-12-30 2007-07-05 Wolfgang Becker Generation and use of table links in a provider-tenant environment
JP2007200085A (ja) * 2006-01-27 2007-08-09 Nec Corp データ複製システムおよびデータ複製方法
JP5050358B2 (ja) * 2006-01-27 2012-10-17 日本電気株式会社 データ複製システムおよびデータ複製方法
US7685371B1 (en) * 2006-04-19 2010-03-23 Nvidia Corporation Hierarchical flush barrier mechanism with deadlock avoidance
US20080028173A1 (en) * 2006-07-26 2008-01-31 Microsoft Corporation Soft media changer
US7500070B2 (en) * 2006-08-23 2009-03-03 Lsi Corporation Methods and apparatus for improved RAID 1 mirror re-synchronization
US20080162536A1 (en) * 2006-12-29 2008-07-03 Becker Wolfgang A Systems and methods for extending shared data structures with tenant content in a provider-tenant environment
US7739348B2 (en) 2006-12-29 2010-06-15 Sap Ag Systems and methods for accessing a shared space in a provider-tenant environment by using middleware
US20080162490A1 (en) * 2006-12-29 2008-07-03 Becker Wolfgang A Methods and systems for automatic registration during deployment of a tenant
US20080162587A1 (en) * 2006-12-29 2008-07-03 Ulrich Auer Server synchronization for maintenance activities
US7933869B2 (en) * 2006-12-29 2011-04-26 Sap Ag Method and system for cloning a tenant database in a multi-tenant system
US8069184B2 (en) * 2006-12-29 2011-11-29 Sap Ag Systems and methods to implement extensibility of tenant content in a provider-tenant environment
US20080162483A1 (en) * 2006-12-29 2008-07-03 Becker Wolfgang A Methods and systems for protecting shared tables against unauthorized overwriting from a tenant space in a mega-tenancy environment
US20080162509A1 (en) * 2006-12-29 2008-07-03 Becker Wolfgang A Methods for updating a tenant space in a mega-tenancy environment
WO2008121873A1 (en) * 2007-03-29 2008-10-09 Vmware, Inc. Synchronization and customization of a clone computer
US8001307B1 (en) 2007-04-27 2011-08-16 Network Appliance, Inc. Apparatus and a method to eliminate deadlock in a bi-directionally mirrored data storage system
US7814361B2 (en) * 2007-10-12 2010-10-12 Dell Products L.P. System and method for synchronizing redundant data in a storage array
US7475280B1 (en) * 2008-02-24 2009-01-06 International Business Machines Corporation Active-active server for high availability of data replication management application
JP4615595B2 (ja) * 2008-12-22 2011-01-19 富士通株式会社 ストレージスイッチ、ストレージシステム、データコピー方法
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8499137B2 (en) * 2010-03-12 2013-07-30 Lsi Corporation Memory manager for a network communications processor architecture
US8656124B2 (en) * 2009-09-01 2014-02-18 International Business Machines Corporation Managing backup relationships in a data storage system
US8224828B2 (en) * 2009-12-22 2012-07-17 Sap Ag Multi-client generic persistence for extension fields
US8688880B2 (en) * 2010-06-23 2014-04-01 International Business Machines Corporation Centralized serialization of requests in a multiprocessor system
US8812445B2 (en) * 2010-09-24 2014-08-19 Hitachi Data Systems Corporation System and method for managing scalability in a distributed database
JP5702652B2 (ja) * 2011-04-05 2015-04-15 日本電信電話株式会社 メモリ同期方法及び運用系の仮想マシン及び待機系の仮想マシン及びメモリ同期プログラム
JP5702651B2 (ja) * 2011-04-05 2015-04-15 日本電信電話株式会社 仮想マシン同期方法及びシステム及び運用系の仮想マシン及びプログラム
US8874680B1 (en) 2011-11-03 2014-10-28 Netapp, Inc. Interconnect delivery process
JP5891890B2 (ja) 2012-03-26 2016-03-23 富士通株式会社 ストレージシステム、ストレージ装置およびデータ復元方法
US10162873B2 (en) 2012-12-21 2018-12-25 Red Hat, Inc. Synchronization of physical disks
US8935502B2 (en) * 2012-12-21 2015-01-13 Red Hat, Inc. Synchronous management of disk flush requests
KR102107123B1 (ko) * 2014-01-28 2020-05-06 현대엠엔소프트 주식회사 내비게이션 자동 업데이트 장치 및 방법
JP6415092B2 (ja) * 2014-04-25 2018-10-31 キヤノン株式会社 ストレージデバイスへのデータの書き込みを禁止する情報処理装置及び方法
EP3218826A4 (de) 2014-11-13 2018-04-11 Virtual Software Systems, Inc. System für host-übergreifende multithread-sitzungsausrichtung
US9626111B1 (en) * 2016-01-07 2017-04-18 International Business Machines Corporation Sequential write of random workload in mirrored performance pool environments
US11310137B2 (en) 2017-02-05 2022-04-19 Veritas Technologies Llc System and method to propagate information across a connected set of entities irrespective of the specific entity type
US10909097B2 (en) 2017-02-05 2021-02-02 Veritas Technologies Llc Method and system for dependency analysis of workloads for orchestration
US10809938B2 (en) * 2018-03-06 2020-10-20 International Business Machines Corporation Synchronized safe data commit scans in multiple data storage systems
CN110413200B (zh) * 2018-04-28 2023-06-09 伊姆西Ip控股有限责任公司 数据同步的方法、设备和计算机程序产品
JP7259537B2 (ja) * 2019-05-16 2023-04-18 オムロン株式会社 情報処理装置
US11853575B1 (en) 2019-06-08 2023-12-26 Veritas Technologies Llc Method and system for data consistency across failure and recovery of infrastructure
US11531604B2 (en) 2020-02-28 2022-12-20 Veritas Technologies Llc Methods and systems for data resynchronization in a replication environment
US11429640B2 (en) 2020-02-28 2022-08-30 Veritas Technologies Llc Methods and systems for data resynchronization in a replication environment
US11928030B2 (en) 2020-03-31 2024-03-12 Veritas Technologies Llc Optimize backup from universal share

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3854026D1 (de) 1987-09-04 1995-07-27 Digital Equipment Corp Fehlertolerantes Rechnersystem mit Fehler-Eingrenzung.
US5295258A (en) 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5390313A (en) 1990-09-24 1995-02-14 Emc Corporation Data storage system with data mirroring and reduced access time data retrieval
US5633999A (en) 1990-11-07 1997-05-27 Nonstop Networks Limited Workstation-implemented data storage re-routing for server fault-tolerance on computer networks
US5487160A (en) 1992-12-04 1996-01-23 At&T Global Information Solutions Company Concurrent image backup for disk storage system
US5623595A (en) 1994-09-26 1997-04-22 Oracle Corporation Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system
US5588110A (en) 1995-05-23 1996-12-24 Symbios Logic Inc. Method for transferring data between two devices that insures data recovery in the event of a fault
US5857208A (en) * 1996-05-31 1999-01-05 Emc Corporation Method and apparatus for performing point in time backup operation in a computer system
US5787485A (en) 1996-09-17 1998-07-28 Marathon Technologies Corporation Producing a mirrored copy using reference labels
US5862314A (en) * 1996-11-01 1999-01-19 Micron Electronics, Inc. System and method for remapping defective memory locations
US6324654B1 (en) * 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
US6260125B1 (en) * 1998-12-09 2001-07-10 Ncr Corporation Asynchronous write queues, reconstruction and check-pointing in disk-mirroring applications
US6338126B1 (en) * 1999-12-06 2002-01-08 Legato Systems, Inc. Crash recovery without complete remirror
US6487636B1 (en) * 2000-04-24 2002-11-26 Hewlett-Packard Co. Method and apparatus for mapping data in a heterogeneous disk array storage system
US6941490B2 (en) * 2000-12-21 2005-09-06 Emc Corporation Dual channel restoration of data between primary and backup servers
US6681339B2 (en) * 2001-01-16 2004-01-20 International Business Machines Corporation System and method for efficient failover/failback techniques for fault-tolerant data storage system

Also Published As

Publication number Publication date
DE60318687D1 (de) 2008-03-06
JP4472995B2 (ja) 2010-06-02
EP1481324A1 (de) 2004-12-01
EP1481324B1 (de) 2008-01-16
EP1481324A4 (de) 2006-09-13
US20030172316A1 (en) 2003-09-11
WO2003077128A1 (en) 2003-09-18
US6728898B2 (en) 2004-04-27
JP2005519408A (ja) 2005-06-30

Similar Documents

Publication Publication Date Title
DE60318687T2 (de) Herstellen einer gespiegelten kopie unter verwendung inkrementeller divergenz
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE69920713T2 (de) Datei-system bild-übertragung
DE69838898T2 (de) Doppelte Plattenspeichersteuerungen
DE112011100534B4 (de) Mehrstufiger Sicherungsprozess
DE69911930T2 (de) Hochverfügbare dateiprozessoren
DE112011100112B4 (de) Pufferspeicher-platte in blitzkopie-kaskade
DE69831944T2 (de) Vorrichtung und verfahren zur sicherung eines plattenspeichersystem
DE69631106T2 (de) On-line-Rekonfiguration einer Speicherplattenanordnung
DE69938378T2 (de) Kopieren von Daten in Speichersystemen
DE60038364T2 (de) Computersystem und Speicherauszugsdatenverwaltungsverfahren
DE602004002216T2 (de) Verfahren, system und programm für eine inkrementelle virtuelle kopie
DE69733076T2 (de) Hochleistungsdatenweg mit sofortigem xor
DE69833815T2 (de) Verbesserter Disk-Log mit verteiltem Schreibsystem
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE602004005344T2 (de) Verfahren, system und programm zur handhabung eines failover zu einem fernspeicherort
DE60018872T2 (de) System und Methode für das Löschen von Datenbank-Aktualisierungsbilddateien nach Abschluss der dazugehörigen Transaktionen
DE69629444T2 (de) Datenverarbeitungsgerät und Verfahren zur Ersetzung von ausgefallenen Speichereinheiten
DE69434381T2 (de) Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
DE69632219T2 (de) Speicherplattenanordnungssystem
DE69817696T2 (de) Warmaustausch von gespiegeltem Nachschreib-Cachespeicher
DE60212125T2 (de) Kopierprozeduren mit verifikation in datennetzwerken
US5644696A (en) Recovering multi-volume data sets during volume recovery
DE4220198A1 (de) Wiederherstellungsprotokollieren bei vorliegen von schnappschuss-dateien durch ordnen des pufferspeicherladens
DE60313468T2 (de) Speicherdienste und -systeme

Legal Events

Date Code Title Description
8364 No opposition during term of opposition