DE112013000465T5 - Verwaltung einer fernen Datenreplikation - Google Patents

Verwaltung einer fernen Datenreplikation Download PDF

Info

Publication number
DE112013000465T5
DE112013000465T5 DE112013000465.8T DE112013000465T DE112013000465T5 DE 112013000465 T5 DE112013000465 T5 DE 112013000465T5 DE 112013000465 T DE112013000465 T DE 112013000465T DE 112013000465 T5 DE112013000465 T5 DE 112013000465T5
Authority
DE
Germany
Prior art keywords
write operation
write
overlapping
index
incomplete
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112013000465.8T
Other languages
English (en)
Other versions
DE112013000465B4 (de
Inventor
c/o IBM United Kingdom Ltd. Wilkinson John Paul
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013000465T5 publication Critical patent/DE112013000465T5/de
Application granted granted Critical
Publication of DE112013000465B4 publication Critical patent/DE112013000465B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/2064Error 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 while ensuring consistency
    • 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/2076Synchronous techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Verschiedene Systeme, Prozesse und Produkte können verwendet werden, um eine ferne Datenreplikation zu verwalten. In bestimmten Ausführungsarten kann ein System, ein Prozess und ein Produkt zum Verwalten einer fernen Datenreplikation die Fähigkeit einschließen, Schreiboperationen von einem externen System zu empfangen, einen geordneten Index für die Schreiboperationen anzufordern und die Schreiboperationen an mindestens ein Speichersystem zu senden. Das System, der Prozess und das Produkt können auch die Fähigkeit einschließen, Schreiboperationen von dem mindestens einen Speichersystem zu empfangen, geordnete Indizes für die Schreiboperationen von dem externen System und dem mindestens einen Speichersystem zu empfangen und die Schreiboperationen auf der Grundlage der Indizes zu speichern.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft Speichersysteme und insbesondere die Verwaltung einer Datenreplikation zwischen Speichersystemen.
  • Es ist üblich, dass man sowohl Lese- als auch Schreibzugriff auf eine synchron replizierte Platte durch mehr als ein Speichersystem an mehreren Standorten benötigt. Die typische Lösung besteht darin, einen einzigen Standort (z. B. ein Speichersystem) zu verwenden, um die Reihenfolge zwischen den Schreiboperationen aufzulösen, die von den verschiedenen Standorten übergeben wurden, und dann die Schreiboperationen auf jedem Replikat zu verarbeiten. Bis die Schreiboperation auf jedem Replikat abgeschlossen worden ist, kann die den Speichersystemen übergebene ursprüngliche Schreiboperation möglicherweise nicht abgeschlossen werden. Das bedeutet, dass die extern sichtbare Schreiblatenz die Summe aus dem Zeitraum ist, den die Übertragung einer Nachricht an den auflösenden Standort, die Übertragung einer Nachricht von dem auflösenden Standort an jedes am weitesten von ihm entfernte Replikat, die Verarbeitung und der Abschluss der Schreiboperation an jedem Replikat und die Übertragung von Nachrichten von jedem Replikat zurück an den Ursprungs-Standort in Anspruch nimmt. Die Übertragung zwischen Standorten kann mehrere Millisekunden in Anspruch nehmen und die Speicherzeit kann mehrere Millisekunden in Anspruch nehmen. Folglich kann die Verarbeitung und der Abschluss einer Schreiboperation einige zehn Millisekunden dauern.
  • KURZDARSTELLUNG
  • In einer Ausführungsart kann ein Prozess zum Verwalten einer fernen Datenreplikation den Empfang von Schreiboperationen von einem externen System, das Anfordern eines geordneten Index für die Schreiboperationen und das Senden der Schreiboperationen an mindestens ein Speichersystem einschließen. Der Prozess kann auch das Empfangen von Schreiboperationen von dem mindestens einen Speichersystem, das Empfangen geordneter Indizes für die Schreiboperationen von dem externen System und dem mindestens einen Speichersystem und das Speichern der Schreiboperationen auf der Grundlage der Indizes einschließen. Der Prozess kann zum Beispiel von einem Prozessor an einem Speichersystem ausgeführt werden.
  • Die Einzelheiten und die Merkmale von verschiedenen Ausführungsarten werden von der folgenden Beschreibung zusammen mit den Zeichnungen vermittelt.
  • KURZE BESCHREIBUNG DER DIVERSEN ANSICHTEN DER ZEICHNUNGEN
  • 1 ist ein Blockschaubild, das ein beispielhaftes System zum Verwalten einer fernen Datenreplikation zeigt.
  • 2 ist ein Ablaufplan, der einen beispielhaften Prozess zum Verwalten einer fernen Datenreplikation zeigt.
  • Die 3A bis 3D stellen einen Ablaufplan dar, der einen weiteren beispielhaften Prozess zum Verwalten einer fernen Datenreplikation zeigt.
  • 4 ist ein Blockschaubild, das ein beispielhaftes Computersystem zum Verwalten einer fernen Datenreplikation zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Das Verwalten einer fernen Datenreplikation lässt sich mit Hilfe von verschiedenen Verfahren erreichen. In bestimmten Ausführungsarten kann das Verwalten einer fernen Datenreplikation von mehreren synchron arbeitenden Speichersystemen durchgeführt werden, die auf einen gemeinsamen Indexgenerator zugreifen, um fortlaufende Indizes für Schreiboperationen zu erhalten, die von den Speichersystemen empfangen werden. Indem die Indizes für die Schreiboperationen verwendet werden, die beispielsweise von externen Serversystemen stammen können, sind die Speichersysteme gegebenenfalls in der Lage, die Schreiboperationen in der richtigen Reihenfolge zu speichern. In bestimmten Ausführungsarten können es die Indizes den Speichersystemen überdies erlauben, mit der Speicherung von Schreiboperationen schon zu beginnen, wenn die Speichersysteme die richtige Reihenfolge noch gar nicht kennen, was die Speicherzeit verringern kann. Darüber hinaus können die Indizes den Speichersystemen gestatten, das Speichern bestimmter Schreiboperationen zu übergehen, wenn die Speichersysteme die Speicheroperationen ohne Berücksichtigung der Reihenfolge gespeichert haben, was die Speicherzeit ebenfalls verringern kann.
  • Wie der Fachmann verstehen wird, können Aspekte der vorliegenden Offenbarung als ein System, ein Verfahren oder ein Computer-Programmprodukt realisiert werden. Folglich können Aspekte der vorliegenden Offenbarung die Form einer ganz in Hardware realisierten Umgebung, einer ganz in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsart annehmen, die Software- und Hardware-Aspekte kombiniert, die hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können. Überdies können Aspekte der vorliegenden Offenbarung die Form eines Computer-Programmprodukts annehmen, das sich auf einem oder mehreren von einem Computer lesbaren Datenträger(n) befindet, auf dem beziehungsweise denen sich von einem Computer lesbarer Programmcode befindet.
  • Jede beliebige Kombination aus einem oder mehreren von einem Computer lesbaren Datenträgern kann verwendet werden. Der von einem Computer lesbare Datenträger kann ein von einem Computer lesbarer Signaldatenträger oder ein von einem Computer lesbares Speichermedium sein. Ein von einem Computer lesbares Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für ein von einem Computer lesbares Speichermedium würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination des Vorstehenden. Im Kontext dieser Offenbarung kann ein von einem Computer lesbares Speichermedium ein physisch greifbares Medium sein, das ein Programm zur Verwendung durch oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
  • Ein von einem Computer lesbarer Signaldatenträger kann ein weitergeleitetes Datensignal mit darin enthaltenem, von einem Computer lesbarem Programmcode, beispielsweise im Basisband oder als Teil einer Trägerwelle, enthalten. Solch ein übertragenes Signal kann eine beliebige einer Vielzahl von Formen einschließlich elektromagnetischer, optischer Formen oder jede beliebige geeignete Kombination dieser Formen, ohne darauf beschränkt zu sein, annehmen. Bei einem von einem Computer lesbaren Signaldatenträger kann es sich um jeden beliebigen von einem Computer lesbaren Datenträger handeln, der kein von einem Computer lesbares Speichermedium ist und der ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit übertragen, weiterleiten oder transportieren kann.
  • Auf einem von einem Computer lesbaren Datenträger enthaltener Programmcode kann mittels eines beliebigen Mediums einschließlich eines drahtlosen Mediums, eines drahtgebundenen Mediums, eines Lichtwellenleiters, eines Kabels, mittels Hochfrequenz (HF) usw., ohne auf diese beschränkt zu sein, oder mittels jeder beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
  • Computer-Programmcode zur Durchführung von Operationen für Aspekte der Offenbarung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen wie zum Beispiel Java, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sein. Die Ausführung des Programmcodes kann komplett auf dem Rechner des Benutzers, teilweise auf dem Rechner des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Rechner des Benutzers und teilweise auf einem fernen Rechner oder komplett auf dem fernen Rechner oder Server erfolgen. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden werden oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Dienstanbieters) hergestellt werden.
  • Aspekte der Offenbarung werden nachstehend mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computer-Programmprodukten gemäß Ausführungsarten beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern mittels Anweisungen eines Computerprogramms realisiert werden können. Diese Anweisungen eines Computerprogramms können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine so zu erzeugen, dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Diese Anweisungen eines Computerprogramms können auch auf einem von einem Computer lesbaren Datenträger gespeichert werden, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem von einem Computer lesbaren Datenträger gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, der Anweisungen enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
  • Die Anweisungen eines Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Computer ausgeführten Prozess so zu erzeugen, dass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • 1 zeigt ein beispielhaftes System 100, das dazu dient, die ferne Datenreplikation zu verwalten. Das System 100 beinhaltet externe Systeme 110, Speichersysteme 120, ein Übertragungsnetzwerk 130 und einen Indexgenerator 140.
  • Bei den externen Systemen 110 kann es sich im Allgemeinen um beliebige Computersysteme handeln, bei denen die Daten gespeichert werden, indem Schreiboperationen auf die Speichersysteme 120 erzeugt werden. Die externen Systeme 110 können zum Beispiel Serversysteme sein, die über Daten verfügen, welche gespeichert werden müssen. Zu beispielhaften Serversystemen gehören Webserver. Wenn es sich bei externen Systemen um Serversysteme handelt, kann jedes der Serversysteme einen oder mehrere Server enthalten, die benachbart oder verteilt sein können.
  • Die externen Systeme 110 tauschen mit den Speichersystemen 120 über Kommunikationsverbindungen 112 Daten aus. Die Kommunikationsverbindungen 112 können zum Beispiel Teil eines lokalen Netzes, eines Weitverkehrsnetzes oder des Internets sein. Die Kommunikationsverbindungen 112 können mit drahtgebundenen (z. B. über Kabel oder Lichtwellenleiter) und/oder drahtlosen (z. B. Hochfrequenz-)Verfahren betrieben werden.
  • Die Speichersysteme 120 speichern Daten für die externen Systeme 110. Die Speichersysteme 120 können zum Beispiel Speicherbereichsnetzwerke (Storage Area Networks), RAID-Arrays, Festplattenlaufwerke, Bandlaufwerke oder eine beliebige andere Einheit zum Speichern von Daten sein. Jedes der Speichersysteme 120 enthält eine Speichersteuereinheit 122 und einen Speicher 124 (z. B. eine Festplatte, ein Band usw.). Die Speichersteuereinheiten 122 sind dafür zuständig, die Daten tatsächlich in den Speicher 124 zu stellen. Darüber hinaus stimmen sich die Speichersteuereinheiten 122 untereinander ab, um sicherzustellen, dass die Schreiboperationen in ein Speichersystem auch auf das andere Speichersystem angewendet werden. Jeder der Speicher 124 enthält ein Replikat eines Datenträgers, wobei die Konsistenz des Replikats zwischen den Speichersystemen 120 gewahrt werden muss. Der Datenträger 125 könnte zum Beispiel eine physische Einheit (z. B. eine Platte) oder eine Darstellung einer physischen Einheit sein.
  • In bestimmten Ausführungsarten können die Speichersysteme 120 für den Datenträger 125 synchron betrieben werden. Wenn eines der externen Systeme 110 eine Schreiboperation an eines der Speichersysteme 120 übergibt, empfängt das externe System keine Nachricht über einen erfolgreichen Abschluss, bis alle Replikate des Datenträgers 125 die Schreiboperation festgeschrieben haben. Synchrone Speichersysteme sind üblicherweise bis zu 100 km voneinander entfernt, doch ist dies keine Voraussetzung für verschiedene Ausführungsarten.
  • Die Speichersysteme 120 sind über das Übertragungsnetzwerk 130 kommunikativ miteinander verbunden. Das Übertragungsnetzwerk 130 kann zum Beispiel ein lokales Netz, ein Weitverkehrsnetz oder das Internet sein. Speichersysteme können mit dem Übertragungsnetzwerk 130 über die Kommunikationsverbindungen 132 verbunden werden, zu denen eine oder mehrere drahtgebundene (z. B. Kabel oder Lichtwellenleiter) oder drahtlose Verbindungen (z. B. Hochfrequenz) gehören können. In bestimmten Ausführungsarten können die externen Systeme 110 mit dem Speichersystem 120 über ein Übertragungsnetzwerk wie das Übertragungsnetzwerk 130 oder über das Übertragungsnetzwerk 130 selbst verbunden sein.
  • Der Indexgenerator 140 dient dazu, im Falle einer Abfrage durch die Speichersysteme 120 einen Folgeindex bereitzustellen. Der Index könnte eine Nummer in eine Folge von Nummern (z. B. einer Reihe von ganzen Zahlen), ein Zeitstempel oder eine beliebige andere Angabe sein, die eine kanonische Reihenfolge für die Anforderungen bereitstellt. Die Folgeindizes können verwendet werden, um kollidierende Schreiboperationen (z. B. diejenigen, die gleichzeitig empfangen werden) aufzulösen und um zuzulassen, dass die Auflösung parallel mit den Schreiboperationen in den Back-End-Speicher ausgeführt wird. Der Indexgenerator 140 könnte zum Beispiel als ein Computerprogramm realisiert werden, das auf einem der Speichersysteme 120, einem der Speichersteuereinheiten 122, einem der externen Systeme 110 oder auf einem anderen Mehrzweckcomputer oder einer zweckgebundenen Einheit mit Zugriff auf das Übertragungsnetzwerk 130 läuft.
  • Man beachte, dass die Speichersysteme 120 über mehrere Datenträger verfügen können, die zwischen ihnen repliziert werden. Wenn das Speichersystem 120a 100 Datenträger hat, die auf 100 Datenträger des Speichersystems 120b repliziert werden, gilt für jedes einzelne individuell das folgende Konzept. Darüber hinaus kann es einen einzigen Indexgenerator oder viele Indexgeneratoren geben, solange für Schreiboperationen auf Replikate eines einzigen Datenträgers ein einziger Folgeindex verwendet wird.
  • In bestimmen Betriebsarten kann, wenn eines der Speichersysteme 120 eine Schreiboperation von dem zugehörigen externen System 110 empfängt, das empfangende Speichersystem die Schreiboperation annehmen, lokale Speicheroperationen starten (z. B. einen Schreib-/Lesekopf an die richtige Stelle bewegen), bis es eine möglicherweise kollidierende Schreiboperation entdeckt, einen Folgeindex von dem Indexgenerator 140 anfordern und die Schreiboperation an die anderen Datenträger 125 senden. Wenn der Indexgenerator die Anforderung empfängt, sendet er einen Folgeindex für die Schreiboperation an beide Speichersysteme 120. Wenn ein Speichersystem 120 den Folgeindex und die Schreibdaten empfangen hat, kann das Speichersystem jedwede Kollisionen gemäß den folgenden Szenarien entdecken und auflösen.
  • Wenn frühere Schreiboperationen noch nicht empfangen worden sind, sollte das Speichersystem auf sie warten (Szenario 1). Wenn alle früheren Schreiboperationen (wie von dem Folgeindex angegeben) empfangen worden sind und sich keine früheren unvollständigen Schreiboperationen mit der Schreiboperation überlappen, kann das Speichersystem mit dem Festschreiben der Schreiboperation beginnen (d. h., Speicheroperationen starten) (Szenario 2). Die Speicheroperationen können zum Beispiel gestartet werden, indem man die Schreiboperation an den physischen Speicher für den zugehörigen Datenträger (z. B. Platte) ausgibt. Wenn die Schreiboperation bereits festgeschrieben worden ist (d. h., der Schreibvorgang ist abgeschlossen), kann eine Erfolgsmeldung an das Ursprungs-Speichersystem 120 zurückgesendet werden, da es keine kollidierenden Schreiboperationen gab.
  • Als überlappende Schreiboperationen werden diejenigen Schreiboperationen bezeichnet, die in denselben Speicherbereich geschrieben werden. Ein Speicherbereich kann zum Beispiel ein Plattenblock, eine logische Blockadresse (IBA), ein Sektor, eine Datei oder eine beliebige andere Zuordnungseinheit von Speicher sein. Man beachte, dass zwei Schreiboperationen nicht in der genau gleichen Gruppe von Bereichen durchgeführt werden müssen, damit sie einander überlappen; Schreiboperationen können sich überlappen, wenn sich zwischen ihnen gemeinsame Bereiche befinden. Auch können sich Schreiboperationen überlappen und von vielen anderen Schreiboperationen überlappt werden. Wenn auf die Beendigung einer überlappenden Schreiboperation gewartet wird, bevor sie auf dem externen System, von dem sie herrührt, abgeschlossen wird, warten die Systeme möglicherweise auf die Beendigung der Schreiboperationen, mit denen die Schreiboperation überlappt, bevor die Schreiboperation wieder zurück auf dem externen System abgeschlossen wird.
  • Eine Schreiboperation ist üblicherweise unvollständig, wenn für die Schreiboperation noch eine weitere Verarbeitung durchgeführt werden muss. Für das Speichersystem beispielsweise, das die Schreiboperation zuerst empfängt, ist die Schreiboperation erst vollständig, wenn sie für eine Meldung an das externe Ursprungs-System bereitsteht (z. B. wurde die Schreiboperation auf dem lokalen physischen Speicher abgeschlossen, eine Nachricht über den Abschluss der Schreiboperation wurde von dem anderen Speichersystem empfangen, und ein Folgeindex wurde von dem Indexgenerator empfangen, so dass festgestellt werden kann, ob es keine früheren überlappenden Schreiboperationen gibt). Für ein Speichersystem, das die Schreiboperation nicht ursprünglich empfangen hat, ist eine Schreiboperation bis zu dem Punkt unvollständig, an dem eine erfolgreiche Schreiboperation wieder zurück auf dem Speichersystem, das die Schreiboperation ursprünglich empfangen hat, abgeschlossen wird.
  • Wenn frühere Schreiboperationen (wie von dem Folgeindex angegeben) empfangen worden sind, welche die Schreiboperation überlappen, und diese immer noch unvollständig sind und die Schreiboperation noch nicht festgeschrieben worden ist, sollte mit der Durchführung der aktuellen Schreiboperation gewartet werden, bis die früheren Schreiboperationen abgeschlossen sind (Szenario 3). Die aktuelle Schreiboperation kann dann so verarbeitet werden, als würde es keine überlappenden, unvollständigen Schreiboperationen geben (Szenario 2). Folglich können die Speichersysteme erkennen, dass es kollidierende Schreiboperationen gibt und diese in der korrekten Reihenfolge verarbeiten.
  • Wenn frühere Schreiboperationen (wie von dem Folgeindex angegeben), welche die Schreiboperation überlappen und immer noch unvollständig sind, empfangen wurden und das Speichersystem bereits damit begonnen hat, die aktuelle Schreiboperation durchzuführen, darf mit der Durchführung der früheren Schreiboperationen noch nicht begonnen worden sein. Das Speichersystem kann dann entscheiden, die früheren Schreiboperationen nicht durchzuführen und eine Erfolgsmeldung für die Schreiboperation und alle früheren überlappenden, unvollständigen Schreiboperationen an das Ursprungs-Speichersystem zurückzusenden, wenn die Durchführung der aktuellen Schreiboperation abgeschlossen ist (Szenario 4). Dies kann vorkommen, da das Speichersystem weiß, dass es kollidierende Schreiboperationen gibt und diese von ihm in der falschen Reihenfolge verarbeitet worden sind. Die Speichersysteme können sich die Tatsache zunutze machen, dass keine der überlappenden, unvollständigen Schreiboperationen bisher auf einem externen System abgeschlossen wurde, so dass es ihnen unbenommen bleibt, die früheren überlappenden, unvollständigen Schreiboperationen logisch rückgängig zu machen, indem sie sie ignorieren und einfach die spätere Schreiboperation durchführen. Wenn sich die früheren Schreiboperationen nur teilweise überlappen, sollte jedweder Teil der früheren Schreiboperationen, welche die aktuelle Schreiboperation nicht überlappen, geschrieben werden, bevor für diese Schreiboperationen eine Erfolgsmeldung zurückgeschickt wird.
  • Das Ursprungs-Speichersystem 120 trägt erwartete Rückmeldungen von den Speichersystemen 120 (sich selbst eingeschlossen) zusammen. Das andere Speichersystem schließt die Schreiboperation dann auf dem zugehörigen externen System 110 ab, wenn alle Speichersysteme melden, dass sie aktualisiert worden sind.
  • 2 zeigt einen beispielhaften Prozess 200, der dazu dient, die ferne Datenreplikation gemäß den Szenarien zu verwalten. Der Prozess 200 ist als ein Prozess gezeigt, der zwei Speichersysteme verwendet – das Speichersystem 120a und das Speichersystem 120b, er sollte aber mit jeder beliebigen Anzahl von Speichersystemen funktionieren. Der Prozess 200 kann für jedes Speichersystem parallel ausgeführt werden.
  • Für den Prozess 200 befinden sich das Speichersystem 120a und das Speichersystem 120b in einer gewissen Entfernung voneinander, wobei die unidirektionale Auslösezeit t ist und der Indexgenerator 140 als näher an dem (möglicherweise einem Teil von dem) Speichersystem 120b liegend gezeigt ist. Der genaue Standort des Indexgenerators ist jedoch nicht von entscheidender Bedeutung.
  • Der Prozess 200 zeigt zwei überlappende Schreiboperationen – die Schreiboperation A und die Schreiboperation B – von den externen Systemen (z. B. Serversystemen), die zum Zeitpunkt 0 an das Speichersystem 120a beziehungsweise an das Speichersystem 120b übergeben werden. Nach dem Empfang der Schreiboperation A beginnt das Speichersystem 120a damit, die Schreiboperation A in seinem Speicher festzuschreiben. Darüber hinaus überträgt das Speichersystem 120a eine Nachricht a, mit der es einen Folgeindex für die Schreiboperation A anfordert, an den Indexgenerator 140, der sich näher am Speichersystem 120b befindet, und eine Nachricht b, die die Daten enthält, welche für die Schreiboperation A geschrieben werden sollen, an das Speichersystem 120b. Ebenso beginnt das Speichersystem 120b mit dem Festschreiben der Schreiboperation B, es sendet eine Nachricht c an das Speichersystem 120a, die die Daten enthält, welche für die Schreiboperation B geschrieben werden sollen, und es sendet eine Nachricht d an den Indexgenerator, mit der es einen Folgeindex für die Schreiboperation B anfordert.
  • Selbst wenn sie zum Zeitpunkt des Empfangs keine überlappenden Schreiboperationen erkennen, schließen das Speichersystem 120a und das Speichersystem 120b die jeweiligen Schreiboperationen erst lokal ab, wenn sie die Folgeindizes von dem Indexgenerator empfangen. Bis die Speichersysteme über einen Folgeindex für eine Schreiboperation verfügen und die Schreiboperationen für die vorherigen Folgeindizes prüfen können, besteht die Möglichkeit, dass sie immer noch eine Schreiboperation für einen früheren Folgeindex empfangen, die sich mit den Schreiboperationen überlappt und eine spezielle Verarbeitung erforderlich macht.
  • Der Indexgenerator empfängt die Nachricht d von dem Speichersystem 120b kurz nach dem Zeitpunkt 0 und erzeugt einen Folgeindex, so dass jedwede Schreiboperationen in dieselben oder in überlappende Bereiche von dem Speichersystem 120a oder aber dem Speichersystem 120b verschiedene Folgeindizes erhalten. Insbesondere besteht die Möglichkeit, dass die überlappende Schreiboperation, die zuerst empfangen wird, einen kleineren Folgeindex erhält. Dies könnte beispielsweise erreicht werden, indem man jede Schreiboperation mit einem ganz speziellen Folgeindex versieht, wobei jede Schreiboperation eine um eins größere Nummer erhält, als diejenige Nummer, die für die vorherige Schreiboperation vergeben wurde. Der Indexgenerator überträgt die Tatsache, dass die Schreiboperation B einen Folgeindex erhalten hat, an jedes Speichersystem 120, wobei dies mit der Nachricht e an das Speichersystem 120a und mit der Nachricht f an das Speichersystem 120b übermittelt wird.
  • Das Speichersystem 120b verfügt nun über die Schreibdaten und den Folgeindex für die Schreiboperation B. Unter der Annahme, dass alle früheren Schreiboperationen empfangen wurden und nicht mit der Schreiboperation B überlappen und dass das Speichersystem 120b bis zu dem Zeitpunkt, zu dem es die Nachricht f empfängt, die den Folgeindex für die Schreiboperation B enthält, die Durchführung der Schreiboperation B abgeschlossen hat, kann das Speichersystem 120b entsprechend dem vorstehenden Szenario 2 arbeiten und eine Erfolgsmeldung für die Schreiboperation an sich selbst zurücksenden. Das Speichersystem 120b kann die gesamte Schreiboperation auf den externen Server jedoch nicht abschließen, da es noch über keine Abschlussnachricht für die Schreiboperation B von dem Speichersystem 120a verfügt.
  • Wenn das Speichersystem 120a die Schreibdaten für die Schreiboperation B in der Nachricht c zum Zeitpunkt t empfängt, erkennt das Speichersystem, dass die Schreiboperationen A und die Schreiboperation B einander überlappen (z. B., indem es die Bereiche vergleicht, in die geschrieben wurde). Das Speichersystem 120a hat jedoch bereits mit der Durchführung der Schreiboperation A begonnen und sie möglicherweise abgeschlossen, so dass das Speichersystem auf das Eintreffen der Folgeindizes für die Schreiboperation A und die Schreiboperation B – in der Nachricht h beziehungsweise in der Nachricht e – wartet, bevor es die Kollision erfolgreich auflösen kann, wie vorstehend im Szenario 3 grob aufgezeigt wurde. Wenn sich die Schreiboperation A und die Schreiboperation B nicht überlappt hätten, könnte das Speichersystem 120a sofort nach dem Empfang der Nachricht c mit der Durchführung der Schreiboperation B beginnen.
  • Der Indexgenerator empfängt die Nachricht a von dem Speichersystem 120a zum Zeitpunkt t und erzeugt einen Folgeindex für die Schreiboperation A, der später berücksichtigt wird als derjenige für die Schreiboperation B. Der Indexgenerator sendet den Folgeindex für die Schreiboperation A als die Nachricht h beziehungsweise die Nachricht g an das Speichersystem 120a und an das Speichersystem 120b.
  • Ebenfalls zum Zeitpunkt t empfängt das Speichersystem 120b die Nachricht b, die die Schreibdaten für die Schreiboperation A enthält, von dem Speichersystem 120a. Wenn das Speichersystem 120b bereits alle Schreiboperationen und Folgeindizes für Schreiboperationen, die zeitlich vor der Schreiboperation B (die wahrscheinlich in unmittelbarer Nähe des Folgeindexgenerators angesiedelt wird) liegen, empfangen hat, weiß es, dass die Schreiboperation A zeitlich nicht vor der Schreiboperation B liegen kann und folglich einen späteren Zeitpunkt aufweisen muss und sofort für einen Schreibvorgang in den Speicher des Speichersystems 120b berücksichtigt werden kann. Das Speichersystem 120b kann diese Schlussfolgerung auch ziehen, wenn es die Folgeindizes überwacht. Wenn das Speichersystem 120b noch nicht alle Schreiboperationen und Folgeindizes bis zur Schreiboperation B empfangen hat, wartet das Speichersystem zuerst auf diese oder auf eine ausdrückliche Bestätigung des Folgeindex der Schreiboperation A. Wie vorstehend im Szenario 3 grob aufgezeigt wurde, wartet das Speichersystem, bis die Schreiboperation B abgeschlossen ist, bevor es mit der Schreiboperation A beginnen kann.
  • Das Speichersystem 120b empfängt die Nachricht g, die den Folgeindex für die Schreiboperation A enthält, von dem Indexgenerator kurze Zeit nach t. Bei Bedarf kann das Speichersystem diesen verwenden, um explizit eine Reihenfolge für die Schreiboperation A und die Schreiboperation B festzulegen. Wenn die Schreiboperation A einen früheren Folgeindex als die Schreiboperation B erhalten hätte, würde das Speichersystem die Schreiboperation A nicht auf dem Speicher des Speichersystems 120b festschreiben, sondern die Schreiboperationen A und die Schreiboperation B auf ihren jeweiligen Ursprungs-Speichersystemen abschließen, sobald die Schreiboperation B auf dem Speichersystem 120b festgeschrieben worden wäre, wie dies mit der Schreiboperation A auf dem Speichersystem 120a geschehen ist. Da die Schreiboperation A jedoch einen späteren Folgeindex hat als die Schreiboperation B, kann das Speichersystem 120b mit dem Festschreiben der Schreiboperation A beginnen, sobald die Schreiboperation B auf dem Speichersystem 120b festgeschrieben worden ist, und die Schreiboperation A und die Schreiboperation B werden auf ihrem jeweiligen Ursprungs-Speichersystem abgeschlossen, sowie ihre jeweilige Festschreibeoperation auf dem Speichersystem 120b beendet ist. Die Nachricht i wird verwendet, um die Schreiboperation A auf dem Speichersystem 120a abzuschließen.
  • Das Speichersystem 120a empfängt die Nachricht e, die den Folgeindex für die Schreiboperation B enthält, kurz nach dem Zeitpunkt t von dem Indexgenerator. Wenn sich die Schreiboperationen A und die Schreiboperation B nicht überlappt hätten, hätte das Speichersystem 120a die Schreiboperation B wieder zurück auf dem Speichersystem 120a abschließen können, sobald es die Schreiboperation B festgeschrieben und die Nachricht e mittels der Nachricht j1 empfangen hätte. Die gesamte Latenzzeit der Schreiboperation B hätte dann ungefähr 2t betragen. Unter den gegebenen Umständen wartet das Speichersystem 120a auf die Nachricht h.
  • Das Speichersystem 120a empfängt die Nachricht h, die den Folgeindex für die Schreiboperation A enthält, von dem Indexgenerator zum Zeitpunkt 2t. Das Speichersystem 120a hat nun mit dem Festschreiben der Schreiboperation A in sein lokales Replikat begonnen und verfügt über die Schreibdaten und die Folgeindizes für die Schreiboperation A und auch die Schreiboperation B. Somit weiß das Speichersystem, dass die Schreiboperation A an zweiter Stelle stand und folglich die Schreiboperation mit in das lokale Replikat festgeschriebenen Daten sein sollte. Unter der Voraussetzung, dass das Speichersystem 120a das Festschreiben der Schreiboperation A in sein lokales Replikat beendet und alle Schreiboperationen mit einem Folgeindex, der kleiner als derjenige der Schreiboperation A ist, empfangen hat, kann es die Aktualisierung des lokalen Replikats für die Schreiboperationen A und auch die Schreiboperation B als abgeschlossen betrachten. Die Abschlussmeldung für die Schreiboperation A wird lokal gespeichert und die Abschlussmeldung für die Schreiboperation B wird mittels der Nachricht j2 gesendet.
  • Das Speichersystem 120a empfängt die Nachricht i, die die Abschlussmeldung für die Schreiboperation A auf dem Speichersystem 120b enthält, von dem Speichersystem 120b kurze Zeit nach 2t. Da das Speichersystem 120a zuvor den Abschluss der Aktualisierung der Schreiboperation A auf dem Speichersystem 120a verzeichnet hat, kann es die gesamte Schreiboperation auf den externen Server mit einer Gesamtlatenzzeit von 2t abschließen.
  • Das Speichersystem 120b empfängt die Nachricht j2, die die Abschlussmeldung für die Schreiboperation B auf dem Speichersystem 120a enthält, von dem Speichersystem 120a zum Zeitpunkt 3t. Da es zuvor den Abschluss der Schreiboperation B auf dem Speichersystem 120b verzeichnet hat, kann das Speichersystem 120b die gesamte Schreiboperation B auf den externen Server mit einer Gesamtlatenzzeit von 3t abschließen.
  • Die größtmögliche extern sichtbare Latenzzeit für eine Schreiboperation sollte 4t betragen, doch ist dies nur möglich, wenn ein System eine Schreiboperation an ein fernes System sendet, das gerade mit der Verarbeitung einer Schreiboperation begonnen hat, welche einen späteren Folgeindex erhalten wird: sie muss eine Zeitspanne von 2t warten, bis die spätere Schreiboperation ihren Folgeindex erhält und beide abgeschlossen werden können. Man beachte, dass diese zusätzliche Verzögerung für überlappende Schreiboperationen gilt, die in der falschen Reihenfolge verarbeitet werden: die anderen Schreiboperationen sollten eine Dauer von 2t haben. Die Lösung im Hintergrundbereich würde immer mindestens 4t in Anspruch nehmen. Wenn man einem Speichersystem überdies erlaubt, mit der Verarbeitung des Speicherinhalts zu beginnen, während es einen Index anfordert, kann die Speicherzeit in bestimmten Fällen ungefähr halbiert werden.
  • Obgleich 1 eine Ausführungsart eines Speichersystems zum Verwalten der fernen Datenreplikation zeigt, können andere Speichersysteme zum Verwalten der fernen Datenreplikation weniger, zusätzliche und/oder eine andere Kombination von Komponenten enthalten. Zum Beispiel könnten die Kommunikationsverbindungen 112 die externen Systeme 110 mit dem Übertragungsnetzwerk 130 verbinden. Folglich könnten die externen Systeme 110, die Speichersysteme 120 und der Indexgenerator 140 über das Übertragungsnetzwerk 130 Daten austauschen. Als ein weiteres Beispiel wurde das System 100 zwar in Bezug auf einen Blockspeicher erörtert, doch könnte es auch für andere Speicherarten (z. B. eine Datei) realisiert werden. Als noch ein Beispiel kann ein System über mehr als zwei Speichersysteme verfügen, die ihre empfangenen Schreiboperationen auf der Grundlage der aufgezeigten Szenarien speichern.
  • Die 3A bis 3D zeigen einen beispielhaften Prozess 300 zum Verwalten einer fernen Datenreplikation. Der Prozess 300 kann zum Beispiel von einem Speichersystem durchgeführt werden, das ähnlich den Speichersystemen für das System 100 ist. Insbesondere könnte jedes Speichersystem entsprechend dem Prozess unabhängig arbeiten.
  • Der Prozess 300 erfordert die Feststellung, ob eine Schreiboperation (die der Erörterung halber mit ”A” bezeichnet wird) von einem externen System empfangen worden ist (Operation 302). Das externe System kann zum Beispiel ein Serversystem sein. Wenn keine Schreiboperation A von einem externen System empfangen wurde, macht es der Prozess 300 erforderlich, dass auf den Empfang einer Schreiboperation A gewartet wird.
  • Sobald eine Schreiboperation A empfangen worden ist, erfordert der Prozess die Feststellung, ob es eine unvollständige Schreiboperation gibt (z. B. von einem externen System oder von einem Speichersystem), die mit der Schreiboperation A überlappt (Operation 304). Eine Schreiboperation kann zum Beispiel unvollständig sein, wenn sie nicht im Speicher am lokalen System abgeschlossen wurde oder wenn sie an einem fernen Speichersystem nicht abgeschlossen wurde. Bezug nehmend auf den Prozess 200 ist die Schreiboperation B beispielsweise vom Zeitpunkt 0 bis zum Zeitpunkt 3t auf dem Speichersystem B unvollständig, die Schreiboperation B ist vom Zeitpunkt t bis zum Zeitpunkt 2t auf dem Speichersystem A unvollständig, die Schreiboperation A ist vom Zeitpunkt 0 bis zum Zeitpunkt 2t auf dem System A unvollständig, und die Schreiboperation A ist vom Zeitpunkt t bis zum Start der Nachricht i auf dem System B unvollständig.
  • Wenn es keine unvollständige, überlappende Schreiboperation gibt, macht es der Prozess 300 erforderlich, dass mit der Verarbeitung des Inhalts des lokalen Speichers für die Schreiboperation A begonnen wird (Operation 306). Der Prozess 300 erfordert dann, dass eine Anforderung für einen Folgeindex für die Schreiboperation A erzeugt wird (Operation 308). Darüber hinaus erfordert der Prozess 300, dass die Anforderung für den Folgeindex erzeugt wird, wenn es keine unvollständige, überlappende Schreiboperation gibt. Die Anforderung für den Folgeindex kann an einen lokalen oder an einen fernen Indexgenerator gesendet werden.
  • Der Prozess 300 erfordert auch, dass die Schreiboperation A an andere Speichersysteme (Operation 310) gesendet und festgestellt wird, ob Schreiboperationen von einem anderen Speichersystem empfangen wurden (Operation 312). Wenn von einem anderen Speichersystem keine Schreiboperation empfangen wurde, erfordert der Prozess 300 die Feststellung, ob ein Folgeindex für die Schreiboperation A empfangen wurde (Operation 318). Wenn für die Schreiboperation A kein Folgeindex empfangen wurde, erfordert der Prozess 300 die nochmalige Prüfung auf eine Schreiboperation von einem anderen Speichersystem (Operation 312).
  • Wenn eine Schreiboperation von einem anderen Speichersystem empfangen wurde, erfordert der Prozess 300 die Feststellung, ob sich die Schreiboperation mit der Schreiboperation A überlappt (Operation 314). Zwei Schreiboperationen können zum Beispiel einen Teil der Schreiboperationen überlappen, die in denselben Bereich auf dem Datenträger geschrieben werden. Wenn sich die Schreiboperationen tatsächlich überlappen, erfordert der Prozess 300 die nochmalige Prüfung, ob der Folgeindex für die Schreiboperation A empfangen wurde (Operation 318). Wenn sich die Schreiboperationen jedoch nicht überlappen, macht es der Prozess 300 erforderlich, dass mit dem Speicherprozess für die andere Schreiboperation begonnen wird (Operation 316) und er macht eine nochmalige Prüfung auf den Folgeindex erforderlich.
  • Sobald ein Folgeindex für die Schreiboperation A empfangen wurde, erfordert der Prozess 300 die Feststellung, ob Folgeindizes für die überlappenden Schreiboperationen empfangen wurden (Operation 320). Wenn die Folgeindizes für überlappende Schreiboperationen nicht empfangen wurden, macht es der Prozess 300 erforderlich, dass auf diese Folgeindizes gewartet wird.
  • Der Prozess 300 erfordert auch die Feststellung, ob eventuell vorhandene Schreiboperationen, die zu früheren Folgeindizes gehören, empfangen wurden (Operation 322). Diese Feststellung kann zum Beispiel getroffen werden, indem der Folgeindex ausgewertet wird, um festzustellen, ob es frühere, nicht empfangene Schreiboperationen gibt. Wenn die Schreiboperationen, die zu früheren Folgeindizes gehören, nicht empfangen wurden, macht es der Prozess 300 erforderlich, dass auf diese Schreiboperationen gewartet wird.
  • Der Prozess 300 macht darüber hinaus die Feststellung erforderlich, ob frühere Schreiboperationen, die sich mit der Schreiboperation A überlappen, unvollständig sind (Operation 324). Wenn keine früheren überlappenden Schreiboperationen unvollständig sind, macht es der Prozess 300 erforderlich, dass die lokale Durchführung der Schreiboperation A beendet wird (Operation 326). Dies kann beispielsweise das lokale Starten der Durchführung der Schreiboperation A, wenn diese Operation beispielsweise nicht gestartet wurde, als die Schreiboperation A empfangen wurde, oder den Abschluss von Schreiboperationen für die Schreiboperation A beinhalten. Überdies ist es in bestimmten Ausführungsarten möglich, dass die Schreiboperation A bis zu diesem Punkt in dem Prozess bereits durchgeführt worden ist.
  • Der Prozess 300 erfordert auch das Zurücksenden einer lokalen Erfolgsmeldung für die Schreiboperation A (Operation 328) und die Feststellung, ob die Schreiboperation A an dem beziehungsweise an den anderen Speichersystem(en) abgeschlossen wurde (Operation 330). Wenn die Schreiboperation A nicht an dem beziehungsweise an den anderen Speichersystem(en) abgeschlossen wurde, macht es der Prozess 300 erforderlich, dass auf den Abschluss der Schreiboperation A an dem beziehungsweise an den anderen Speichersystem(en) gewartet wird.
  • Sobald die Schreiboperation A an dem beziehungsweise an den anderen Speichersystem(en) abgeschlossen wurde, erfordert der Prozess 300 den Abschluss der Schreiboperation A auf dem externen System, von dem die Schreiboperation herrührt (Operation 332). Der Prozess 300 ist dann zu Ende.
  • Kehren wir zur Operation 324 zurück. Wenn gegebenenfalls vorhandene frühere Schreiboperationen, die sich mit der Schreiboperation A überlappen, unvollständig sind, erfordert der Prozess 300 die Feststellung, ob mit der Durchführung der Schreiboperation A begonnen wurde (Operation 336). Wenn mit der Durchführung der Schreiboperation A begonnen wurde, macht es der Prozess 300 erforderlich, dass die lokale Durchführung der Schreiboperation A beendet wird (Operation 344). In bestimmten Situationen ist es möglich, dass die Schreiboperation A bis zu diesem Punkt in dem Prozess bereits durchgeführt worden ist. Nachdem die Schreiboperation A lokal durchgeführt worden ist, erfordert der Prozess 300 das Rücksenden einer lokalen Erfolgsmeldung für die Durchführung der Schreiboperation A (Operation 346).
  • Der Prozess 300 erfordert auch das Rücksenden von Erfolgsmeldungen (ungeachtet dessen, ob lokal oder auf anderen Speichersystemen) für frühere überlappende Schreiboperationen (Operation 348). Diese Schreiboperationen wurden möglicherweise nicht tatsächlich durchgeführt, da aber die Schreiboperation A bereits abgeschlossen wurde und sie diese Schreiboperationen sowieso überschrieben hätte, werden die Schreiboperationen als abgeschlossene Schreiboperationen behandelt.
  • Der Prozess 300 erfordert dann die Feststellung, ob die Schreiboperation A an dem beziehungsweise an den anderen Speichersystem(en) abgeschlossen wurde (Operation 350). Wenn die Schreiboperation A nicht an dem beziehungsweise an den anderen Speichersystem(en) abgeschlossen wurde, macht es der Prozess 300 erforderlich, dass auf den Abschluss der Schreiboperation A an dem beziehungsweise an den anderen Speichersystem(en) gewartet wird. Sobald die Schreiboperation A an dem beziehungsweise an den anderen Speichersystem(en) abgeschlossen wurde, erfordert der Prozess 300 den Abschluss der Schreiboperation A auf dem externen System, von dem die Schreiboperation herrührt (Operation 352). Der Prozess 300 ist dann zu Ende.
  • Kehren wir zur Operation 336 zurück. Wenn nicht mit der Durchführung der Schreiboperation A begonnen wurde, erfordert der Prozess 300 die Feststellung, ob überlappende Schreiboperationen, die gerade gespeichert werden, unvollständig sind (Operation 358). Wenn sich überlappende Schreiboperationen gerade gespeichert werden und unvollständig sind, macht es der Prozess 300 erforderlich, dass auf den lokalen Abschluss dieser Schreiboperationen gewartet wird.
  • Sobald sich überlappende Schreiboperationen, die gerade verarbeitet werden, abgeschlossen sind, erfordert der Prozess 300 die Auswahl der neuesten überlappenden Schreiboperation zur Speicherung (Operation 362). Diese kann zum Beispiel auf der Grundlage des Folgeindex ermittelt werden. Der Prozess 300 erfordert auch die Feststellung, ob die Schreiboperation A ausgewählt wurde (Operation 364). Wenn die Schreiboperation A ausgewählt wurde, macht es der Prozess 300 unter anderem erforderlich, dass die Durchführung der Schreiboperation A lokal beendet wird (Operation 344), eine lokale Erfolgsmeldung für die Schreiboperation A zurückgesendet wird (Operation 346) und eine Erfolgsmeldung für die früheren sich überlappenden Schreiboperationen zurückgesendet wird (Operation 348).
  • Wenn die Schreiboperation A jedoch nicht ausgewählt wurde, erfordert der Prozess 300 die Speicherung der ausgewählten Schreiboperation (Operation 366). Der Prozess 300 erfordert auch die Feststellung, ob die Speicherung für die ausgewählte Schreiboperation abgeschlossen ist (Operation 368). Wenn die Speicherung der ausgewählten Schreiboperation nicht abgeschlossen ist, macht es der Prozess 300 erforderlich, dass gewartet wird, bis die Speicherung abgeschlossen ist.
  • Sobald die Speicherung der ausgewählten Schreiboperation abgeschlossen ist, erfordert der Prozess 300 das Zurücksenden einer lokalen Erfolgsmeldung für die Schreiboperation A (Operation 328) und den Abschluss der Schreiboperation A auf dem externen Ursprungs-System (Operation 332), sobald sie an dem beziehungsweise an den anderen Speichersystem(en) abgeschlossen wurde (Operation 330). Der Prozess 300 ist dann zu Ende.
  • Der Grund dafür, dass auf die Beendigung der Durchführung der überlappenden Schreiboperation gewartet werden soll, bevor die Schreiboperation abgeschlossen wird, besteht darin, dass ein besonderes Augenmerk auf ein korrektes Speicherverhalten gelegt wird. Nehmen wir an, dass ein Speicherplatz aktuell die Daten x enthält und es Schreiboperationen gibt, die sie auf y vom System A und auf z vom System B aktualisieren. Wenn die Schreiboperation, die z enthält, einen späteren Folgeindex hat, auf einem Speichersystem aber zuerst verarbeitet wird, unterlässt es der Prozess 300, y tatsächlich in den physischen Speicher zu schreiben. Wenn der Prozess jedoch eine Abschlussnachricht für die Schreiboperation y an das externe Ursprungs-System sendet, bevor die Durchführung der Schreiboperation z beendet ist, könnte sich dieses externe System zum Beispiel dafür entscheiden, diesen Speicherplatz sofort nochmals zu lesen, um die Daten zu überprüfen, was dazu führen könnte, dass das externe System x anstelle von y oder z auf dem physischen Speicher sieht. Dies kann folglich eine Situation herbeiführen, bei der eine Schreiboperation scheinbar erfolgreich abgeschlossen wurde, die Daten auf dem Datenträger jedoch nicht aktualisiert wurden, was die Erwartungen an die Datenkonsistenz bei Speichersystemen nicht erfüllt. Es ist annehmbar, dass die Daten nach dem Abschluss der Schreiboperation y auf dem externen Ursprungs-System entweder y oder z sind, da es Schreiboperationen gab, die beide Sätze von Daten enthielten, welche gleichzeitig übergeben wurden.
  • Obgleich die 3A bis 3D einen beispielhaften Prozess zum Verwalten einer fernen Datenreplikation zeigen, können weitere Prozesse zum Verwalten einer fernen Datenreplikation weniger, zusätzliche und/oder eine andere Anordnung von Operationen beinhalten. Die Anforderung eines Folgeindex kann zum Beispiel durchgeführt werden, sobald eine Schreibanforderung empfangen wurde. Als ein weiteres Beispiel kann die Feststellung, ob Folgenummern für sich überlappende Schreiboperationen empfangen wurden (Operation 322), stattfinden, nachdem festgestellt wurde, ob mit der Durchführung der Schreiboperation A begonnen wurde (Operation 336). Als ein weiteres Beispiel könnte der Prozess 300 für mehrere Schreiboperationen gleichzeitig durchgeführt werden, die an einem Speichersystem empfangen werden.
  • Zwar zeigen die 3A bis 3D einen Prozess zum Verwalten von Schreiboperationen, die von einem externen System empfangen wurden, doch können überdies auch Schreiboperationen, die von anderen Speichersystemen empfangen werden, ähnlich verwaltet werden, wenn auch mit gewöhnlich weniger Operationen. Wenn ein Speichersystem zum Beispiel eine Schreiboperation von einem anderen Speichersystem empfängt, kann das empfangende Speichersystem feststellen, ob sich die Schreiboperation mit unvollständigen Schreiboperationen überlappt, und mit der Verarbeitung des Inhalts des lokalen Speichers für die Schreiboperation beginnen, wenn es keine überlappenden unvollständigen Schreiboperationen gibt. Das Speichersystem würde jedoch keinen Folgeindex anfordern oder die Schreiboperation an das andere Speichersystem beziehungsweise an die anderen Speichersysteme senden, da das Ursprungs-Speichersystem diese Operationen bereits durchgeführt hat. Der Prozess könnte dann wie im Prozess 300 fortfahren.
  • Eines der Merkmale der beschriebenen Ausführungsart ist, dass sie ein korrektes Verhalten sicherstellt, indem sie den Abschluss von Schreiboperationen auf externen Systemen verhindert, bis die Reihenfolge der Schreiboperationen aufgelöst wurde. Eine alternative Ausführungsart könnte stattdessen Leseoperationen in einen Bereich feststellen, in dem die Reihenfolge der Schreiboperationen bisher nicht aufgelöst wurde, und solche Leseoperationen verzögern, bis die Reihenfolge der Schreiboperationen aufgelöst wurde. Der Prozess 300 könnte dadurch vereinfacht werden, indem die Operation 368 wegfiele. Indem die Schreiboperation A in diesem Fall früher abgeschlossen wird, kann die erkennbare Reaktionsfähigkeit des Systems gesteigert werden und folglich können die externen Systeme ihren Schreibdurchsatz erhöhen.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren zeigen die Architektur, die Funktionalität und die Betriebsweise von Systemen, Verfahren und Computer-Programmprodukten für verschiedene Ausführungsarten der Offenbarung. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Anweisungen zur Durchführung der angegebenen logischen Funktion(en) enthalten kann. Es sei auch angemerkt, dass die in den Blöcken angegebenen Funktionen in manchen alternativen Ausführungsarten mitunter in einer anderen als in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaubilder und/oder der Darstellung in den Ablaufplänen sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in den Ablaufplänen von Systemen, die auf Spezial-Hardware beruhen und die angegebene Funktion oder die angegebenen Vorgänge durchführen, oder von Kombinationen aus Spezial-Hardware und Computer-Anweisungen ausgeführt werden können.
  • 4 zeigt ein beispielhaftes Computersystem 400, das dazu dient, die ferne Datenreplikation zu verwalten. Das System 400 enthält einen Prozessor 410, ein Eingabe-/Ausgabesystem 420 und einen Hauptspeicher 430, die über ein Netzwerk 440 miteinander verbunden sind. Wie gezeigt ist, hat das Computersystem 400 die Funktion einer Speichersteuereinheit, doch könnten andere Computersysteme zum Verwalten einer Datenreplikation eine ähnliche Konfiguration haben.
  • Der Prozessor 410 enthält üblicherweise eine logische Verarbeitungseinheit (z. B. eine arithmetisch-logische Einheit), die Daten unter der Anleitung von Programmanweisungen (z. B. von Software) verarbeitet. Beispielsweise kann der Prozessor 410 ein Mikroprozessor, ein Mikrocontroller oder eine anwendungsspezifische integrierte Schaltung sein. Der Prozessor kann nach den Grundsätzen eines Rechners mit reduziertem Befehlssatz (RISC) oder eines Rechners mit komplexem Befehlssatz (CISC) arbeiten. Im Allgemeinen kann der Prozessor eine beliebige Einheit sein, die Daten logisch verarbeitet.
  • Das Eingabe-/Ausgabesystem 420 kann eine oder mehrere Übertragungsschnittstellen und/oder eine oder mehrere Benutzerschnittstellen enthalten. Eine Übertragungsschnittstelle kann zum Beispiel eine Netzwerkschnittstellenkarte (ungeachtet dessen, ob sie drahtlos oder drahtgebunden ist) oder ein Modem sein. Eine Benutzerschnittstelle könnte zum Beispiel eine Benutzer-Eingabeeinheit (z. B. eine Tastatur, ein Ziffernblock, ein Touchpad, ein Stift, eine Maus oder ein Mikrofon) oder eine Benutzer-Ausgabeeinheit (z. B. ein Monitor, ein Bildschirm oder ein Lautsprecher) sein. Im Allgemeinen kann das Eingabe-/Ausgabesystem 420 eine beliebige Kombination aus Einheiten sein, mittels der ein Computersystem Daten empfangen und ausgeben kann.
  • Der Hauptspeicher 430 kann zum Beispiel einen Direktzugriffspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen Flash-Speicher und/oder einen Plattenspeicher einschließen. Verschiedene Elemente können zu verschiedenen Zeitpunkten in verschiedenen Teilen des Hauptspeichers gespeichert werden. Der Hauptspeicher 430 kann im Allgemeinen eine beliebige Kombination aus Einheiten zur Speicherung von Daten sein.
  • Der Hauptspeicher 430 enthält Anweisungen 432 und Daten 436. Zu den Anweisungen 432 gehören ein Betriebssystem 433 (z. B. Windows, Linux oder Unix) und Anwendungen 434, die ein Datenreplikationsmanager-Programm 435 enthalten. Die Daten 436 beinhalten zu speichernde Schreiboperationen 437 und Folgeindizes 438. Die Schreiboperationen können in einem anderen Speicher als dem Hauptspeicher 430 gespeichert werden. Das heißt, die Schreiboperation kann sich vorübergehend im Hauptspeicher 430 befinden.
  • Das Netzwerk 440 ist für den Austausch von Daten zwischen dem Prozessor 410, dem Eingabe-/Ausgabesystem 420 und dem Hauptspeicher 430 zuständig. Das Netzwerk 440 kann zum Beispiel mehrere verschiedene Arten von Bussen (z. B. serielle und parallele) enthalten.
  • In bestimmten Betriebsarten kann das Computersystem 410 Schreiboperationen 437 und Folgeindizes 438 über das E/A-System 420 empfangen und die richtige Speicherfolge für die Schreiboperationen auf der Grundlage der Folgeindizes festlegen. Wenn die Schreiboperationen von einem externen System herrühren, kann der Prozessor 410 eine Anforderung für einen Folgeindex erzeugen. Die Schreiboperationen müssen jedoch nicht in der Reihenfolge des Folgeindex gespeichert werden. Das heißt, Schreiboperationen können ohne Berücksichtigung der Reihenfolge gespeichert werden. Überdies können einige Schreiboperationen tatsächlich nicht gespeichert werden. Zum Beispiel können sie zugunsten von späteren Schreiboperationen übergangen werden. Der Prozessor 410 kann diese Operationen gemäß den vorstehend erörterten Prozessen und Verfahren durchführen.
  • Die hier verwendete Terminologie dient lediglich dazu, bestimmte Ausführungsarten zu beschreiben, und ist nicht als Einschränkung zu verstehen. Die Singular-Form ”ein”, ”eine” und ”der”, ”die”, ”das” sollen in der hier verwendeten Weise auch die Pluralformen einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Des Weiteren versteht es sich, dass die Begriffe ”aufweist” und/oder ”aufweisend”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen daher aber nicht ausschließen.
  • Die entsprechende Struktur, die entsprechenden Materialien, Vorgänge und Gleichwertiges von allen Mitteln oder Schritten plus Funktionselementen in den nachstehenden Ansprüchen sollen jedwede Struktur, jedwedes Material oder jedweden Vorgang zur Ausführung der Funktion in Kombination mit anderen beanspruchten Elementen, die im Einzelnen beansprucht werden, beinhalten. Die Beschreibung der vorliegenden Ausführungsarten erfolgte zum Zweck der Veranschaulichung und Erläuterung, erhebt jedoch keinen Anspruch auf Vollständigkeit und ist auch nicht als auf die Ausführungsarten in der offenbarten Form beschränkt zu verstehen. Viele Ab- und Veränderungen sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der Offenbarung abzuweichen. Die Ausführungsarten wurden gewählt und beschrieben, um die Grundgedanken der Offenbarung und die praktische Anwendung zu erklären und um anderen Fachleuten das Verständnis der Offenbarung hinsichtlich verschiedener Ausführungsarten mit verschiedenen Änderungen, wie sie für die jeweilige vorgesehene Verwendung geeignet sind, zu ermöglichen.
  • Mehrere Ausführungsarten wurden beschrieben, um die ferne Datenreplikation zu verwalten, und mehrere weitere Ausführungsarten wurden erwähnt oder vorgeschlagen. Ferner erkennt der Fachmann ohne Weiteres, dass eine Vielzahl von Hinzufügungen, Löschungen, Änderungen und Ersetzungen an diesen Ausführungsarten vorgenommen werden kann, während die Verwaltung der fernen Datenreplikation nach wie vor erzielt werden kann. Folglich sollte der Umfang des geschützten Gegenstands auf der Grundlage der folgenden Ansprüche beurteilt werden, die ein oder mehrere Konzepte von einer oder von mehreren Ausführungsarten erfassen können.

Claims (24)

  1. System, aufweisend: einen Indexgenerator, der so ausgelegt ist, dass er eine Vielzahl von Anforderungen empfängt und eine Vielzahl von Antworten für jede Anforderung erzeugt, wobei jede Antwort einen folgegebundenen Index enthält, der auf der Reihenfolge beruht, in der die Anforderung empfangen wurde; mindestens zwei Speichersysteme, die miteinander Daten austauschen, um Schreiboperationen zu speichern, die von einem oder von mehreren externen Systemen synchron empfangen wurden, wobei jedes Speichersystem so ausgelegt ist, dass es: Schreiboperationen von einem externen System empfängt: einen Index von dem Indexgenerator für jede Schreiboperation anfordert; die Schreiboperationen an das mindestens eine andere Speichersystem sendet; Schreiboperationen von dem mindestens einen anderen Speichersystem empfängt; Indizes von dem Indexgenerator für Schreiboperationen von dem mindestens einen anderen Speichersystem empfängt; und die Speicheroperationen von dem externen System und dem mindestens einen anderen Speichersystem auf der Grundlage der geordneten Indizes speichert, die von dem Indexgenerator empfangen wurden.
  2. System nach Anspruch 1, wobei jedes Speichersystem so ausgelegt ist, dass es: feststellt, ob es eine unvollständige überlappende Schreiboperation gibt, wenn eine Schreiboperation an dem Speichersystem empfangen wird; und mit der Speicherung der empfangenen Schreiboperation beginnt, wenn es keine unvollständige überlappende Schreiboperation gibt.
  3. System nach Anspruch 2, wobei jedes Speichersystem so ausgelegt ist, dass es die Speicherung einer überlappenden Schreiboperation, die zu einem früheren Index gehört, übergeht, wenn eine zu einem späteren Index gehörende Speicheroperation bereits schon gespeichert wird.
  4. System nach Anspruch 3, wobei das Speichersystem so ausgelegt ist, dass es einen Abschluss der überlappenden Schreiboperation, die zu dem früheren Index gehört, meldet, nachdem die zu dem späteren Index gehörende Schreiboperation abgeschlossen ist.
  5. System nach Anspruch 1, wobei das Speichersystem so ausgelegt ist, dass es einen Abschluss einer unvollständigen Schreiboperation, die zu einem früheren Index gehört, meldet, während eine überlappende Schreiboperation, die zu einem späteren Index gehört, gerade gespeichert wird.
  6. System nach Anspruch 1, wobei jedes Speichersystem so ausgelegt ist, dass es die Speicherung einer überlappenden Schreiboperation, die zu einem früheren Index gehört, übergeht, wenn eine zu einem späteren Index gehörende Speicheroperation bereits schon gespeichert wird.
  7. System nach Anspruch 1, wobei jedes Speichersystem so ausgelegt ist, dass es: feststellt, ob es eine unvollständige überlappende Schreiboperation gibt, wenn es eine Schreiboperation empfängt; und die Speicherung der empfangenen Schreiboperation anhält, wenn es eine überlappende unvollständige Schreiboperation gibt.
  8. System nach Anspruch 7, wobei jedes Speichersystem so ausgelegt ist, dass es: feststellt, ob der Folgeindex für die empfangene Schreiboperation empfangen wurde; feststellt, ob überlappende Schreiboperationen unvollständig sind; die empfangene Speicheroperation speichert, wenn keine überlappenden Schreiboperationen unvollständig sind; die neueste überlappende unvollständige Schreiboperation auswählt, wenn eine überlappende Schreiboperation unvollständig ist; die ausgewählte Schreiboperation durchführt; und die überlappenden Schreiboperationen als vollständig meldet, nachdem die ausgewählte Schreiboperation vollständig ist.
  9. Verfahren, aufweisend: Empfangen von Schreiboperationen von einem externen System; Anfordern eines geordneten Index für die Schreiboperationen; Senden der Schreiboperationen an mindestens ein Speichersystem; Empfangen von Schreiboperationen von dem mindestens einen Speichersystem; Empfangen von geordneten Indizes für die Schreiboperationen von dem mindestens einen Speichersystem; und Speichern der Speicheroperationen von dem externen System und dem mindestens einen Speichersystem auf der Grundlage der Indizes.
  10. Verfahren nach Anspruch 9, des Weiteren aufweisend: Feststellen, ob es eine unvollständige überlappende Schreiboperation gibt, wenn eine Schreiboperation empfangen wird; und Beginnen mit der Speicherung der empfangenen Schreiboperation, wenn es keine unvollständige überlappende Schreiboperation gibt.
  11. Verfahren nach Anspruch 10, das des Weiteren das Übergehen der Speicherung einer überlappenden Schreiboperation, die zu einem früheren Index gehört, aufweist, wenn eine zu einem späteren Index gehörende Speicheroperation bereits schon gespeichert wird.
  12. Verfahren nach Anspruch 11, das des Weiteren das Melden eines Abschlusses der überlappenden Schreiboperation, die zu dem früheren Index gehört, aufweist, nachdem die zu dem späteren Index gehörende Schreiboperation abgeschlossen ist.
  13. Verfahren nach Anspruch 9, das des Weiteren das Melden eines Abschlusses einer unvollständigen Schreiboperation, die zu einem früheren Index gehört, aufweist, während eine überlappende Schreiboperation, die zu einem späteren Index gehört, gerade gespeichert wird.
  14. Verfahren nach Anspruch 9, das des Weiteren das Übergehen der Speicherung einer überlappenden Schreiboperation, die zu einem früheren Index gehört, aufweist, wenn eine zu einem späteren Index gehörende Speicheroperation bereits schon gespeichert wird.
  15. Verfahren nach Anspruch 9, des Weiteren aufweisend: Feststellen, ob es eine unvollständige überlappende Schreiboperation gibt, wenn eine Schreiboperation empfangen wird; und Anhalten der Speicherung der empfangenen Schreiboperation, wenn es eine überlappende unvollständige Schreiboperation gibt.
  16. Verfahren nach Anspruch 15, des Weiteren aufweisend: Feststellen, ob der Folgeindex für die empfangene Schreiboperation empfangen wurde; Feststellen, ob überlappende Schreiboperationen unvollständig sind; Speichern der empfangenen Speicheroperation, wenn keine überlappenden Schreiboperationen unvollständig sind; Auswählen der neuesten überlappenden unvollständigen Schreiboperation, wenn eine überlappende Schreiboperation unvollständig ist; Speichern der ausgewählten Schreiboperation; und Melden der überlappenden Schreiboperationen als vollständig, nachdem die ausgewählte Schreiboperation vollständig ist.
  17. Computer-Programmprodukt zum Verwalten einer fernen Datenreplikation, wobei das Computer-Programmprodukt aufweist: ein von einem Computer lesbares Speichermedium; erste Programmanweisungen, um festzustellen, ob Schreiboperationen von einem externen System empfangen wurden; zweite Programmanweisungen, um eine Anforderung für einen geordneten Index für jede Schreiboperation zu erzeugen; dritte Programmanweisungen, um die Schreiboperationen an mindestens ein Speichersystem zu senden; vierte Programmanweisungen, um festzustellen, ob Schreiboperationen von dem mindestens einen Speichersystem empfangen wurden; fünfte Programmanweisungen, um festzustellen, ob geordnete Indizes für die Schreiboperationen von dem mindestens einen Speichersystem empfangen wurden; und sechste Programmanweisungen, um die Schreiboperationen von dem externen System und dem mindestens einen Speichersystem auf der Grundlage der Indizes zu speichern; und wobei die Programmanweisungen auf dem von einem Computer lesbaren Speichermedium gespeichert werden.
  18. Computer-Programmprodukt nach Anspruch 17, das des Weiteren siebte Programmanweisungen aufweist, um festzustellen, ob es eine unvollständige überlappende Schreiboperation gibt, wenn eine Schreiboperation empfangen wird, und um mit der Speicherung der empfangenen Schreiboperation zu beginnen, wenn es keine unvollständige überlappende Schreiboperation gibt.
  19. Computer-Programmprodukt nach Anspruch 18, das des Weiteren achte Programmanweisungen aufweist, um die Speicherung einer überlappenden Schreiboperation, die zu einem früheren Index gehört, zu übergehen, wenn eine zu einem späteren Index gehörende Speicheroperation bereits schon gespeichert wird.
  20. Computer-Programmprodukt nach Anspruch 19, das des Weiteren neunte Programmanweisungen aufweist, um einen Abschluss der überlappenden Schreiboperation, die zu dem früheren Index gehört, zu melden, nachdem die zu dem späteren Index gehörende Schreiboperation abgeschlossen ist.
  21. Computer-Programmprodukt nach Anspruch 17, das des Weiteren zehnte Programmanweisungen aufweist, um einen Abschluss einer unvollständigen Schreiboperation, die zu einem früheren Index gehört, zu melden, während eine überlappende Schreiboperation, die zu einem späteren Index gehört, gerade gespeichert wird.
  22. Computer-Programmprodukt nach Anspruch 17, das des Weiteren zehnte Programmanweisungen aufweist, um die Speicherung einer überlappenden Schreiboperation, die zu einem früheren Index gehört, zu übergehen, wenn eine zu einem späteren Index gehörende Speicheroperation bereits schon gespeichert wird.
  23. Computer-Programmprodukt nach Anspruch 17, das des Weiteren elfte Programmanweisungen aufweist, um festzustellen, ob es eine unvollständige überlappende Schreiboperation gibt, wenn eine Schreiboperation empfangen wird, und um die Speicherung der empfangenen Schreiboperation anzuhalten, wenn es eine überlappende unvollständige Schreiboperation gibt.
  24. Computer-Programmprodukt nach Anspruch 23, des Weiteren aufweisend: zwölfte Programmanweisungen, um festzustellen, ob der Folgeindex für die empfangene Schreiboperation empfangen wurde; dreizehnte Programmanweisungen, um festzustellen, ob überlappende Schreiboperationen unvollständig sind; vierzehnte Programmanweisungen, um die empfangene Speicheroperation zu speichern, wenn keine überlappenden Schreiboperationen unvollständig sind; fünfzehnte Programmanweisungen, um die neueste überlappende unvollständige Schreiboperation auszuwählen, wenn eine überlappende Schreiboperation unvollständig ist, und um die ausgewählte Speicheroperation zu speichern; und sechzehnte Programmanweisungen, um die überlappenden Schreiboperationen als vollständig zu melden, nachdem die ausgewählte Schreiboperation vollständig ist.
DE112013000465.8T 2012-02-01 2013-01-29 Verwaltung einer fernen Datenreplikation Active DE112013000465B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/363,542 US8868874B2 (en) 2012-02-01 2012-02-01 Managing remote data replication
US13/363,542 2012-02-01
PCT/IB2013/050737 WO2013114266A1 (en) 2012-02-01 2013-01-29 Managing remote data replication

Publications (2)

Publication Number Publication Date
DE112013000465T5 true DE112013000465T5 (de) 2014-09-11
DE112013000465B4 DE112013000465B4 (de) 2017-08-17

Family

ID=48871339

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013000465.8T Active DE112013000465B4 (de) 2012-02-01 2013-01-29 Verwaltung einer fernen Datenreplikation

Country Status (4)

Country Link
US (2) US8868874B2 (de)
CN (1) CN104094260B (de)
DE (1) DE112013000465B4 (de)
WO (1) WO2013114266A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9805049B1 (en) * 2013-02-15 2017-10-31 EMC IP Holding Company LLC Migrating applications over asynchronous distances using semi-synchronous acceleration
US10180945B2 (en) * 2015-02-02 2019-01-15 Adobe Inc. Data replication from a cloud-based storage resource
US10303360B2 (en) 2015-09-30 2019-05-28 International Business Machines Corporation Replicating data in a data storage system
US9917896B2 (en) * 2015-11-27 2018-03-13 Netapp Inc. Synchronous replication for storage area network protocol storage
JP6444917B2 (ja) * 2016-03-08 2018-12-26 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
US10168948B2 (en) 2017-02-20 2019-01-01 International Business Machines Corporation Replicating data in a data storage system
US10180802B2 (en) 2017-05-18 2019-01-15 International Business Machines Corporation Collision detection at multi-node storage sites
US10565062B1 (en) * 2017-08-03 2020-02-18 Veritas Technologies Llc Systems and methods for managing replication of data to a remote storage device
US10452502B2 (en) 2018-01-23 2019-10-22 International Business Machines Corporation Handling node failure in multi-node data storage systems
US10585791B2 (en) * 2018-03-20 2020-03-10 Intel Corporation Ordering of memory device mapping to reduce contention
CN109144941A (zh) * 2018-10-12 2019-01-04 北京环境特性研究所 弹道数据处理方法、装置、计算机设备和可读存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
JP2002189570A (ja) * 2000-12-20 2002-07-05 Hitachi Ltd 記憶システムの二重化方法および記憶システム
US7120824B2 (en) * 2003-05-09 2006-10-10 International Business Machines Corporation Method, apparatus and program storage device for maintaining data consistency and cache coherency during communications failures between nodes in a remote mirror pair
US7437389B2 (en) * 2004-03-10 2008-10-14 Hitachi, Ltd. Remote copy system
JP2006221487A (ja) * 2005-02-14 2006-08-24 Hitachi Ltd リモートコピーシステム
JP4282464B2 (ja) * 2003-12-17 2009-06-24 株式会社日立製作所 リモートコピーシステム
US7254685B1 (en) * 2004-06-15 2007-08-07 Emc Corporation Method for maintaining high performance while preserving relative write I/O ordering for a semi-synchronous remote replication solution
JP4377790B2 (ja) * 2004-09-30 2009-12-02 株式会社日立製作所 リモートコピーシステムおよびリモートコピー方法
US7475207B2 (en) * 2005-07-14 2009-01-06 Emc Corporation Maintaining write order fidelity on a multi-writer system
US7941620B2 (en) * 2005-09-12 2011-05-10 International Business Machines Corporation Double-allocation data-replication system
GB0617342D0 (en) * 2006-09-02 2006-10-11 Ibm Consistent remote copy data storage system error management
US8150800B2 (en) 2007-03-28 2012-04-03 Netapp, Inc. Advanced clock synchronization technique
US7925629B2 (en) 2007-03-28 2011-04-12 Netapp, Inc. Write ordering style asynchronous replication utilizing a loosely-accurate global clock
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
CN101765831B (zh) * 2007-06-06 2012-10-17 雅典娜电信实验有限公司 数据库不一致的处理方法
US7979652B1 (en) 2007-12-20 2011-07-12 Amazon Technologies, Inc. System and method for M-synchronous replication
US8301593B2 (en) 2008-06-12 2012-10-30 Gravic, Inc. Mixed mode synchronous and asynchronous replication system
US20100049927A1 (en) * 2008-08-21 2010-02-25 International Business Machines Corporation Enhancement of data mirroring to provide parallel processing of overlapping writes
US20100049926A1 (en) * 2008-08-21 2010-02-25 International Business Machines Corporation Enhancement of data mirroring to provide parallel processing of overlapping writes

Also Published As

Publication number Publication date
US8868857B2 (en) 2014-10-21
CN104094260A (zh) 2014-10-08
WO2013114266A1 (en) 2013-08-08
US8868874B2 (en) 2014-10-21
US20130198467A1 (en) 2013-08-01
DE112013000465B4 (de) 2017-08-17
US20130198477A1 (en) 2013-08-01
CN104094260B (zh) 2017-08-25

Similar Documents

Publication Publication Date Title
DE112013000465B4 (de) Verwaltung einer fernen Datenreplikation
DE112017007224T5 (de) Momentaufnahmen-Verwaltung in einer Blockchain
DE112015000343T5 (de) Erstellen einer Wiederherstellungskopie von einer Quelldaten-Kopie in einem Repository, das Quelldaten an verschiedenen Zeitpunkten aufweist
DE102016103769A1 (de) Inkrementelle Replikation eines Quellen-Datasets
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112012004099T5 (de) Transaktionsverarbeitungssystem, Verfahren und Programm
DE112012002631T5 (de) Stream-Verarbeitung unter Verwendung einer Client-Server-Architektur
DE112011103276T5 (de) Vorauslese-Verarbeitung in einer Client-Server-Netzwerkarchitektur
DE112013003300B4 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE112012004747T5 (de) Verborgenes automatisiertes Spiegeln von Daten für native Schnittstellen in verteilten virtuellen Maschinen
DE112012000693T5 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE112015000222T5 (de) Zusammenführen von mehreren Zeitpunktkopien zu einer zusammengeführten Zeitpunktkopie
DE112013003340T5 (de) Einfrieren von virtuellen Sofortkopien auf mehreren Datenträgern
DE102012223167A1 (de) Gemeinsame Nutzung von Artefakten zwischen kollaborativen Systemen
DE112012004499T5 (de) Testen von Transaktionsanwendungen
DE112021000338B4 (de) Auslagern der statistikerfassung
DE102013209318A1 (de) Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem
DE112018001561B4 (de) Verteiltes speichernetzwerk
DE102021125630A1 (de) Datensynchronisation in einem datenanalysesystem
DE112012004926T5 (de) Gemeinsame Speichernutzung durch Prozessoren
DE112018004138T5 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE112012000274B4 (de) Schutz der Unversehrtheit von Daten auf Speicherdatenträgern
DE112020005227T5 (de) Speicherzustandsüberwachung für differenziertedatenwiederherstellungskonfigurationen
DE112011103299T5 (de) Systeme und Verfahren zum Verwalten einer virtuellen Bandarchiv-Domäne

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final