Benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikationen
Die vorliegende Erfindung betrifft allgemein Computer und insbesondere benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikation. In der heutigen Gesellschaft sind Computersysteme etwas Alltägliches. Computersysteme können am Arbeitsplatz, zuhause oder in der Schule vorhanden sein. Computersysteme können Datenspeichersysteme oder Plattenspeichersysteme enthalten, um Daten zu verarbeiten und zu speichern. Datenreplikation ist ein solcher Prozess. Replizierte Datensysteme können verschiedene logische Datenspeicherentitäten wie Dateien, Datenobjekte, Sicherungs-Abbilder, Daten-Momentaufnahmen oder virtuelle Bandkassetten extern bereitstellen. Häufig ist es erforderlich, dass solche Datenspeicherentitäten von ihrem Ursprungsort an entfernt angeordnete Orte repliziert werden. Replizierte Datenentitäten steigern die Fehlertoleranz-Fähigkeiten und die Verfügbarkeit von Daten. Wenn auch mehrere bestehende Ansätze verwendet werden können, um Datenreplikation durchzuführen, weisen diese Ansätze begleitende Beschränkungen, die sich negativ auf Replikationseffizienz, Systemleistung und Datenkonsistenz auswirken, zusätzlichen Aufwand erfordern, oder irgendeine Kombination der obigen Probleme auf. Datenreplikation bedeutet das Sichern von an einem primären Ort gespeicherten Daten durch Speichern des genauen Duplikats der Daten an einem sekundären oder entfernt liegenden Ort. Das Verwenden von Datenreplikationsprozessen bietet verschiedene Vorteile. Datenreplikation trat in den letzten Jahren als ein äußerst wichtiges technologisches Gebiet in Datenverarbeitungs-Speichersystemen in Erscheinung. Probleme mit dem Bereitstellen der Datenreplikations-Funktionalität bestehen in Systemen für synchronisierte Replikation, wo es erforderlich ist, dass strikte Beziehungen zwischen Objekten vorliegen, wie, dass Objekt A mit Zustand X erfordert, dass Objekt B Zustand Y hat. In Systemen für synchronisierte Replikation gibt es beim Erstellen eines neuen Replikationskontexts zwischen der Quelle und dem Ziel oder beim Hinzufügen eines zusätzlichen Satzes von Objekten zum Kontext einen Zustand der Nicht-Synchronisation, da nur neue Operationen an den Objekten an das Ziel gesendet werden. Somit ist es erforderlich, eine Replikation der unsynchronisierten Objekte in ihrem aktuellen Zustand einzuleiten. Schlechthin besteht ein Bedürfnis nach einer Lösung, die einen benutzergesteuerten Replikationsprozess in einem System für synchronisierte Objektreplikation ermöglicht. Außerdem besteht ein Bedürfnis, die benutzergesteuerte Replikation der unsynchronisierten Objekte durchzuführen, ohne das Erstellen und Bearbeiten der Objekte im Quellen-Repository zu stören, und dabei jede Verletzung der normalen Reihenfolge der Replikation neuer Operationen in der Quelle zu vermeiden. Zusätzlich besteht ein Bedürfnis, einem Benutzer zu gestatten, die Replikation eines Satzes von Objekten ungeachtet des Synchronisationszustands des Satzes von Objekten einzuleiten, um die Objekte, welche eine Replikation erfordern, effizient zu erkennen und die Replikation auf die erkannten, eine Replikation erfordernden Objekte zu beschränken. Demgemäß und in Anbetracht des Vorangehenden werden verschiedene beispielhafte Ausführungsformen von Verfahren, Systemen und Computerprogramm-Produkten für benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikation in einer Datenverarbeitungsumgebung bereitgestellt. In einer Ausführungsform wird, nur als Beispiel, eine Momentaufnahme ausgewählter Objekte in einem Quellen-Repository als Reaktion auf die benutzergesteuerte Replikation erstellt. Die Momentaufnahme wird als ein Momentaufnahme-Replikationsjob ausgewiesen. Der Momentaufnahme-Replikationsjob wird zum Ende einer Replikationswarteschlange hinzugefügt, um die Ausführung für die synchronisierte Objektreplikation zu erwarten. Unsynchronisierte Objekte in einem Bestimmungsziel werden durch Vergleichen eines Zustands der ausgewählten Objekte in der Momentaufnahme mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahmereplikationsjobs erkannt. Die unsynchronisierten Objekte im Bestimmungsziel werden auf der Grundlage des Vergleichs des Zustands der ausgewählten Objekte in der Momentaufnahme mit dem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahmereplikationsjobs synchronisiert. Zusätzlich zur vorangehenden beispielhaften Verfahrens-Ausführungsform werden weitere beispielhafte System- und Computerprodukt-Ausführungsformen bereitgestellt und bieten diese entsprechende Vorteile. Die vorangehende Kurzbeschreibung wurde bereitgestellt, um eine Auswahl von Konzepten in einer vereinfachten Form vorzustellen, welche unten in der ausführlichen Beschreibung werter beschrieben werden. Diese Kurzbeschreibung soll weder Hauptmerkmale oder wesentliche Merkmale des Anspruchsgegenstands identifizieren noch soll sie als eine Hilfe beim Ermitteln des Umfangs des Anspruchsgegenstands verwendet werden. Der Anspruchsgegenstand ist nicht auf Umsetzungen beschränkt, die einigen oder allen im Hintergrund erwähnten Nachteilen abhelfen. Damit die Vorteile der Erfindung ohne weiteres verstanden werden, erfolgt eine ausführlichere Beschreibung der oben kurz beschriebenen Erfindung anhand spezieller Ausführungsformen, die in den beigefügten Zeichnungen veranschaulicht werden. Während es sich von selbst versteht, dass diese Zeichnungen Ausführungsformen der Erfindung darstellen und deshalb nicht als ihren Umfang begrenzend zu verstehen sind, wird die Erfindung nun unter Verwendung der folgenden beigefügten Zeichnungen spezieller und ausführlicher beschrieben und erläutert: In der folgenden Beschreibung und im Anspruchsgegenstand wird durchweg die folgende, sich auf die veranschaulichten Ausführungsformen beziehende Terminologie verwendet. Ein „Replikationskontext” soll einen benutzerdefinierten Zusammenhang zwischen einem Satz von Quellenobjekten und einem Ziel bezeichnen. Alle Quellenoperationen an dem Satz von Objekten sind in das Ziel zu replizieren. Ein „Replikationsjob” soll eine Task, eine Objektoperation von der Quelle (z. B. einem Quellen-Repository) in ein Ziel (z. B. ein Bestimmungsziel) zu replizieren, bezeichnen. Eine „Momentaufnahme” soll einen interaktiven Zustand eines Objektsatzes zu einem bestimmten Zeitpunkt bezeichnen. Die Momentaufnahme enthält Daten der Objekte und Metadaten zur Zeit der Erstellung der Momentaufnahme. Die Momentaufnahme erhält den Zustand der Objekte aufrecht, selbst wenn sie geändert oder gelöscht werden. Eine „Replikationswarteschlange” soll eine Warteschlange bezeichnen, welche die Replikationsjobs enthält, deren Ausführung ansteht. Die Replikationswarteschlange ist eine strikte First-in-first-out-Warteschlange, so dass die Replikationsjobs im Ziel (z. B. im Bestimmungsziel) in genau der gleichen Reihenfolge durchgeführt werden, in welcher sie in der Quelle (z. B. im Quellen-Repository) auftraten. Ein ”System” kann ein Computersystem, einen Computerprozessor, ein primäres Speichersystem, ein entfernt angeordnetes Speichersystem oder jede beliebige sonstige Komponente in einer Computerumgebung, welche zum Ausführen der beanspruchten Erfindung benötigt wird, umfassen. Eine „eindeutige Objekt-ID” soll ein Attribut des Objekts bezeichnen, welches das Objekt innerhalb der Gruppe von Replikationssystemen eindeutig identifiziert. Eine „Objektzustands-ID” soll ein Attribut des Objektzustands bezeichnen, welches den Zustand des Objekts identifiziert. Die Objektzustands-ID ist für einen bestimmten Zustand eines Objekts eindeutig und ändert sich, wenn die Objektdaten oder Metadaten sich ändern. Eine „Replikations-Engine” soll das für die physische Replikation von Daten zuständige Modul bezeichnen. Eine „Replikations-Task” soll eine Anforderung an die Replikations-Engine, die physische Replikation der Objektdaten oder Metadaten durchzuführen, bezeichnen. Wie oben erwähnt, bedeutet Datenreplikation das Sichern von an einem primären Ort gespeicherten Daten durch Speichern des genauen Duplikats der Daten an einem sekundären oder entfernt liegenden Ort. Darüber hinaus ist Objektreplikation eher das Verfahren des Replizierens von Objekten auf einer logischen Ebene als das Replizieren auf einer Speicherblockebene. Ähnlich der Replikation eines Speichers auf Blockebene kann Objektreplikation entweder synchronisiert oder unsynchronisiert sein. Im synchronisierten Modus wird jede Operation an den Objekten im Quellen-Repository in das Ziel-Repository gespiegelt. Die Operationen werden im Ziel in der gleichen Reihenfolge durchgeführt, in welcher sie in der Quelle durchgeführt wurden. Im unsynchronisierten Modus besteht keine Notwendigkeit, die Operationen reihenfolgegemäß durchzuführen, sondern lediglich, irgendeinen stabilen Zustand der Objekte im Ziel aufrechtzuerhalten. Ein System für synchronisierte Replikation ist erforderlich, wenn strikte Beziehungen zwischen den Objekten vorliegen, wie dass Objekt A mit Zustand X erfordert, dass Objekt B Zustand Y hat. Zum Beispiel hängen Unterverzeichnisse und/oder Dateien in Systemen für synchronisierte Replikation von übergeordneten Verzeichnissen ab. In solchen Systemen gibt es beim Erstellen eines neuen Replikationskontexts zwischen der Quelle und dem Ziel oder beim Hinzufügen eines zusätzlichen Satzes von Objekten zum Kontext einen Zustand der Nicht-Synchronisation, da nur neue Operationen an den Objekten an das Ziel gesendet werden. Somit ist es erforderlich, eine Replikation der unsynchronisierten Objekte in ihrem aktuellen Zustand einzuleiten. Schlechthin besteht ein Bedürfnis nach einer Lösung, die einen benutzergesteuerten Replikationsprozess in einem System für synchronisierte Objektreplikation ermöglicht. Außerdem besteht ein Bedürfnis, die benutzergesteuerte Replikation der unsynchronisierten Objekte durchzuführen, ohne das Erstellen und Bearbeiten der Objekte im Quellen-Repository zu stören, und dabei jede Verletzung der normalen Reihenfolge der Replikation neuer Operationen in der Quelle zu vermeiden. Zusätzlich besteht ein Bedürfnis, einem Benutzer zu gestatten, die Replikation eines Satzes von Objekten ungeachtet des Synchronisationszustands des Satzes von Objekten einzuleiten, um die Objekte, welche eine Replikation erfordern, effizient zu erkennen und die Replikation auf die erkannten, eine Replikation erfordernden Objekte zu beschränken. Um diese Bedürfnisse zu befriedigen, versuchen die Mechanismen der veranschaulichten Ausführungsformen, eine Lösung bereitzustellen, die eine benutzergesteuerte Replikation der unsynchronisierten Objekte gestattet, welche das Erstellen und Bearbeiten der Objekte im Quellen-Repository nicht stört, ohne dabei die normale Reihenfolge der Replikation neuer Operationen in der Quelle zu verletzen. In einer Ausführungsform stellen die Mechanismen, nur als Beispiel, ungeachtet des Synchronisationszustands eines Satzes von Objekten eine benutzergesteuerte Replikation des Satzes von Objekten bereit, erkennen sie effizient die Objekte, welche eine Replikation erfordern, und beschränken sie die Replikation auf lediglich die erkannten, eine Replikation erfordernden Objekte. Darüber hinaus sorgen die Mechanismen der vorliegenden Erfindung, nur als Beispiel, für eine skalierbare und effiziente benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikation, welches die folgenden wesentlichen Anforderungen erfüllt. 1) Die Mechanismen gestatten dem Benutzer, eine Replikation eines Satzes von Objekten unabhängig von ihrem tatsächlichen Synchronisationszustand durchzuführen. 2) Die Mechanismen erkennen effizient die unsynchronisierten Objekte, welche eine Replikation erfordern. 3) Die Mechanismen stören nicht das lokale Erstellen, Löschen und Bearbeiten von Objekten. 4) Die Mechanismen beeinträchtigen nicht die normale Replikationsreihenfolge der Quellenoperationen. 5) Die Mechanismen gestatten die benutzergesteuerte Replikation eines Satzes von Objekten unabhängig von den eigentlichen Replikationsprozeduren. Die Mechanismen der vorliegenden Erfindung erfüllen jeden einzelnen dieser Punkte ungeachtet der Systemgröße und der Anzahl von Objekten. Darüber hinaus ermöglichen die Mechanismen der vorliegenden Erfindung das Einleiten einer Replikation eines Satzes von Objekten ungeachtet ihres Synchronisationszustands, während sie von den Replikationsprozeduren, vom Protokoll und/oder vom Dateisystem-Aufbau, von der Darstellung und der Implementierung unabhängig bleiben. In einer Ausführungsform können die Operationen der synchronen Objektreplikation der vorliegenden Erfindung, nur als Beispiel, durch das Hinzufügen neuer Quellenoperationen unter dem Replikationskontext als Replikationsjobs zum Ende der Replikationswarteschlange in der Reihenfolge, in welcher sie auftreten, einfach beschrieben werden. Die Mechanismen führen die Jobs aus, indem sie einen Job vom Kopf der Replikationswarteschlange nehmen und die Quellenoperation durchführen, welche der Replikationsjob im Ziel beschreibt. Da die Replikationsjobs in der Reihenfolge, in welcher sie in der Quelle auftreten, zur Replikationswarteschlange hinzugefügt werden und der Reihe nach durchgeführt werden, treten die Replikationsjobs im Ziel in genau der gleichen Reihenfolge auf, in welcher sie in der Quelle auftraten. Da der Mechanismus der synchronen Objektreplikation nur eine Replikation neuer Operationen an den Objekten durchführt, wenn er den Replikationskontext erstellt oder wenn er diesem zusätzliche Objekte hinzufügt, sind diese Objekte im Ziel nicht vorhanden und werden sie als unsynchronisiert angesehen. Schlechthin sorgen die Mechanismen der vorliegenden Erfindung für eine Lösung, die eine skalierbare und effiziente Einleitung der Replikation eines Objektsatzes innerhalb des grundlegenden Replikationsablaufs ermöglicht, was eine Replikation der Objekte ungeachtet ihres Synchronisationszustands gestattet. In einer Ausführungsform erstellen die Mechanismen bei Einleitung der Replikation eines Objektsatzes durch einen Benutzer eine Momentaufnahme des ausgewählten Objektsatzes. Die Mechanismen setzen voraus, dass der zugrundeliegende Aufbau und die zugrundeliegende Darstellung der Objekte einen zügigen Momentaufnahme-Erstellungsprozess unterstützt. Darüber hinaus setzen die Mechanismen voraus, dass der Momentaufnahme-Erstellungsprozess nicht andere lokale Objektoperationen stört. Die Momentaufnahme wird dann als ein neuer Replikationsjob zum Ende der Replikationswarteschlange hinzugefügt. Die Mechanismen der synchronen Replikation gewährleisten die Ausführung der Replikationsjobs in genau der gleichen Reihenfolge, in welcher die Replikationsjobs auftraten, alle Operationen, die vor der Momentaufnahme-Erstellung auftraten, sind zuverlässig zu replizieren, bevor der Momentaufnahmereplikationsjob repliziert wird, und alle Operationen, die nach der Momentaufnahmereplikations-Erstellung auftraten, sind nach der Momentaufnahme-Replikation zu replizieren. In Um ein deutlicheres Verstehen der hierin beschriebenen Verfahren zu erleichtern, ist der Speichercontroller 240 in In einigen Ausführungsformen können die im Speicher 230 enthaltenen Einheiten in einer Ringleitungsarchitektur angeschlossen sein. Der Speichercontroller 240 verwaltet den Speicher 230 und erleichtert die Verarbeitung von für den Speicher 230 bestimmten Schreib- und Leseanforderungen. Der Systemarbeitsspeicher 243 des Speichercontrollers 240 speichert Programmanweisungen und Daten, auf welche der Prozessor 242 zugreifen kann, um Funktionen und Verfahrensschritte der vorliegenden Erfindung zum Ausführen und Verwalten des Speichers 230, wie hierin beschrieben, auszuführen. In einer Ausführungsform enthält der Systemarbeitsspeicher 243 die Betriebssoftware 250, steht er mit ihr in Beziehung oder ist er mit ihr zum Durchführen hierin beschriebener Verfahren und Operationen in Verbindung. Wie in Zur Steigerung der Leistung des Datenspeichersystems 200 ist der Cachespeicher 245 in einigen Ausführungsformen mit einem flüchtigen Speicher und einem nichtflüchtigen Speicher ausgeführt und über einen lokalen Bus (in Der Speicher 230 kann physisch aus einer oder mehreren Speichereinheiten wie Speicheranordnungen bestehen. Eine Speicheranordnung ist eine logische Gruppierung einzelner Speichereinheiten wie eine Festplatte. in bestimmten Ausführungsformen besteht der Speicher 230 aus einer JBOD-(Just a Bunch of Disks)Anordnung oder einer RAID-(Redundant Array of Independent Disks)Anordnung. Eine Ansammlung physischer Speicheranordnungen kann weiter zusammengefasst werden, um eine Rangfolge zu bilden, was den physischen Speicher von der logischen Konfiguration loslöst. Der Speicherplatz in einer Rangfolge kann logischen Datenträgern zugeordnet sein, welche den in einer Schreib-/Leseanforderung angegebenen Speicherort definieren. In einer Ausführungsform kann das Speichersystem wie in Der Speichercontroller 240 kann ein benutzergesteuertes Replikationsmodul 255, ein Replikations-Engine-Modul 257 und ein Momentaufnahmemodul 259 enthalten. Das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259 können in Verbindung mit jeder einzelnen Komponente des Speichercontrollers 240, der Hosts 210, 220, 225 und der Speichereinheiten 230 arbeiten. Das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259 können strukturell ein einziges vollständiges Modul sein oder können zu anderen einzelnen Modulen gehören und/oder darin enthalten sein. Das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259 können sich auch im Cachespeicher 245 oder in anderen Komponenten befinden. Der Speichercontroller 240 enthält einen Steuerschalter 241 zum Steuern des Fibre Channel-Protokolls für die Host-Computer 210, 220, 225, einen Mikroprozessor 242 zum Steuern des ganzen Speichercontrollers 240, einen nichtflüchtigen Steuer-Arbeitsspeicher 243 zum Speichern eines Mikroprogramms (Betriebssoftware) 250 zum Steuern des Betriebs des Speichercontrollers 240, Daten zur Steuerung und jede später beschriebene Tabelle, den Cachespeicher 245 zum vorübergehenden Speichern (Puffern) von Daten und Puffer 244 zum Unterstützen des Cachespeichers 245, um Daten zu lesen und zu schreiben, einen Steuerschalter 241 zum Steuern eines Protokolls, um die Datenübertragung zu oder von den Speichereinheiten 230 zu steuern, das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259, in welchem Daten gesetzt werden können. Mehrere Puffer 244 können bei der vorliegenden Erfindung ausgeführt sein, um die Operationen wie hierin beschrieben zu unterstützen. In einer Ausführungsform sind die Cluster-Hosts/-Knoten 210, 220, 225 und der Speichercontroller 240 über einen Netzadapter (dies könnte ein Fibre Channel sein) 260 als eine Schnittstelle, d. h. über mindestens einen als „Fabric” bezeichneten Schalter verbunden. In einer Ausführungsform sind die Host-Computer oder eine oder mehrere physische oder virtuelle Einheiten 210, 220, 225 und der Speichercontroller 240 über einen Netzadapter (dies könnte ein Fibre Channel sein) 260 als eine Schnittstelle, d. h. über mindestens einen als „Fabric” bezeichneten Schalter verbunden. In einer Ausführungsform wird die Funktionsweise des in Wie oben erwähnt, können das benutzergesteuerte Replikationsmodul 255, das Replikations-Engine-Modul 257 und das Momentaufnahmemodul 259 sich auch im Cachespeicher 245 oder in anderen Komponenten befinden. Besonders erwähnt werden sollte, dass das RAM-Modul 259 mit einem Kurzzeitspeicher und die Festplatte mit dem Langzeitspeicher vergleichbar ist. In anderen Worten, das RAM-Modul 259 ist Arbeitsspeicher. Der RAM (Random Access Memory (Arbeitsspeicher)) ist der Ort in einem Computer, wo das Betriebssystem, Anwendungsprogramme und Daten, die gerade in Verwendung sind, vorgehalten werden, so dass sie durch den Prozessor 242 des Computers schnell erreicht werden können. Der RAM lässt sich viel schneller auslesen und schreiben als die anderen Arten von Speicher in einem Computer, die Festplatte, die Diskette und die CD-ROM. Schlechthin können ein oder mehrere benutzergesteuerte Replikationsmodule 255, Replikations-Engine-Module 257 und Momentaufnahmemodule 259 auf der Grundlage von Speicherarchitektur und Benutzervorlieben nach Bedarf verwendet werden. Um die Operationen der vorliegenden Erfindung wie in Darüber hinaus kann ein Replikationskontext erstellt werden, wenn es bereits vorhandene Objekte in der Quelle gibt. In einem Dateisystem können dies Verzeichnisse mit Dateien sein. Zum Beispiel ist der Replikationskontext die Verbindung zwischen dem Verzeichnis „/a” im Quellensystem und dem Verzeichnis „/a” im Zielsystem. Zur Zeit des Erstellens des Replikationskontexts ist das Verzeichnis „/a/b” in der Quelle bereits einschließlich einer komplexen Unterverzeichnisstruktur darunter vorhanden. Da der Mechanismus der synchronen Replikation nur neue Operationen repliziert, werden der Inhalt und die Struktur von „/a/b” nicht repliziert, solange sie nicht geändert werden. Ein Benutzer fährt dann fort und erstellt das neue Verzeichnis, zum Beispiel „/a/c/”, in der Quelle und erstellt eine weitere Unterverzeichnisstruktur darunter. Da diese neuen Operationen unter der Replikationskontext-Überwachung erfolgen, werden sie alle zur Replikationswarteschlange hinzugefügt und werden sie zur Replikation eingeplant. Zu einem bestimmten Zeitpunkt möchte der Benutzer möglicherweise „/a” vollständig mit dem Ziel synchronisieren. Der Benutzer bewerkstelligt dies durch Einleiten einer Replikation des Verzeichnisses „/a”. Wie in Zur Zeit des Einleitens ist die Replikationswarteschlange möglicherweise nicht leer, was bedeutet, dass es Quellenoperationen an „/a/c” gibt, die noch nicht ins Ziel repliziert wurden. In anderen Worten, zur Zeit der Ausführung stimmt der Zielzustand von „/a/c” nicht mit dem in der Quellen-Momentaufnahme überein. Da die Mechanismen der synchronen Replikation gewährleisten, dass die Replikationsjobs reihenfolgegemäß ausgeführt werden, gewährleisten die Mechanismen, dass bei Ausführung des Momentaufnahmereplikationsjobs alle früheren Operationen an „/a/c”, die vor seiner Erstellung auftraten, bereits repliziert wurden und dass Operationen an „/a/c”, die nach der Momentaufnahme-Erstellung auftraten, nicht repliziert wurden. In anderen Worten, dies bedeutet, dass das Ziel zur Zeit der Ausführung eine Kopie von „/a/c” enthält, welche derjenigen in der Momentaufnahme genau gleicht. Das Beispielszenario fortführend, arbeiten die Mechanismen durch Vergleichen der Objekte in der Momentaufnahme mit denjenigen im Ziel, was durch Durchlaufen der Momentaufnahme und Vergleichen der Baumstruktur, der Daten und der Metadaten mit dem Ziel geschieht. Darüber hinaus kann der Mechanismus beim Durchführen der Durchlauf- und/oder der Vergleichsoperationen feststellen, dass „/a/c” vollständig mit der Momentaufnahme übereinstimmt und keine Replikation der Momentaufnahme erforderlich ist. Jedoch fehlen dann alle „/a/b” im Ziel, so dass die Mechanismen in der Replikations-Engine Replikations-Tasks für die eigentliche Replikation der Daten und Metadaten für alle Knoten in der Momentaufnahme unter „/a/b” eröffnen können. Die Mechanismen warten, bis alle Replikations-Tasks abgeschlossen sind, und dann schließen sie den Momentaufnahme-Replikationsjob ab und gestatten sie, die Quellenoperationen, die danach auftraten, zu replizieren. Dadurch gewährleisten die Mechanismen, dass das Ziel bei Abschluss der Momentaufnahme-Replikation das genaue Abbild von „/a” zur Zeit der Einleitung einer Replikation durch den Benutzer enthält. Da die Momentaufnahme-Replikation keine Bearbeitungen an „/a/c” im Ziel vornahm, ist der Zustand von „/a/c” nicht beeinträchtigt und können die Quellenoperationen in der Warteschlange für „/a/c” mit dem Replizieren fortfahren. In einer Ausführungsform, wie unten in Die Prozedur zur Ausführung des Momentaufnahme-Replikationsjobs wird nun anhand von Bei Ausführung des Momentaufnahme-Replikationsjobs wird, wie oben in In einer Ausführungsform haben die Mechanismen zur Momentaufnahme-Replikation besondere Eigenschaften, die eine skalierbare und effiziente benutzergesteuerte Replikation in einem System für synchronisierte Replikation ermöglichen, welche der umfassenden, wie folgt zusammengesetzten Liste von Anforderungen genügt. 1) Die Mechanismen gestatten dem Benutzer, eine Replikation eines Satzes von Objekten unabhängig von ihrem tatsächlichen Synchronisationszustand durchzuführen. 2) Die Mechanismen erkennen effizient unsynchronisierte Objekte, indem sie ihren Zustand im Ziel mit ihrem Zustand in der Quellen-Momentaufnahme vergleichen. 3) Die Mechanismen der vorliegenden Erfindung stören nicht das lokale Erstellen und Bearbeiten von Objekten, da die Mechanismen nur eine Momentaufnahme des Zustands der Objekte erstellen, wobei sie den vom logischen Speichersystem bereitgestellten effizienten Momentaufnahme-Mechanismus verwenden. 4) Die Mechanismen beeinträchtigen nicht die normale Replikationsreihenfolge der Quellenoperationen, da eine Momentaufnahme als ein weiterer Replikationsjob zur Replikation hinzugefügt wird. 5) Die Mechanismen gestatten für die benutzergesteuerte Replikation eines Satzes von Objekten unabhängig von den eigentlichen Replikationsprozeduren zu sein. Wie der Fachmann erkennen wird, können Aspekte der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogramm-Produkt verkörpert sein. Entsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständig auf Hardware beruhenden Ausführungsform, einer vollständig auf Software beruhenden Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Software- und Hardware-Aspekte, die hierin alle allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können, kombinierenden Ausführungsform annehmen. Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogramm-Produkts annehmen, das in einem oder mehreren computerlesbaren Medien, auf denen computerlesbarer Programmcode enthalten ist, verkörpert ist. Jede beliebige Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Zu einem computerlesbaren Speichermedium können zum Beispiel, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleiter-System, eine elektronische, magnetische, optische, elektromagnetische, Infrarot- oder Halbleiter-Vorrichtung oder -Einheit oder irgendeine geeignete Kombination der Vorerwähnten gehören. Zu spezielleren Beispielen (eine nichterschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes zählen: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM, Random Access Memory), ein Festwertspeicher (ROM, Read-Only Memory), ein löschbarer programmierbarer Festwertspeicher (EPROM, Erasable Programmable Read-Only Memory, oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disc-Festwertspeicher (CD-ROM), eine Einheit zur optischen Speicherung, eine Einheit zur magnetischen Speicherung oder irgendeine geeignete Kombination der Vorerwähnten. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium irgendein materielles Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit ein bzw. einem Befehlsausführungssystem, eine bzw. einer Befehlsausführungsvorrichtung oder eine bzw. einer Befehlsausführungseinheit enthalten oder speichern kann. Auf einem computerlesbaren Medium enthaltener Programmcode kann mittels irgendeines geeigneten Mediums einschließlich, aber nicht beschränkt auf drahtlos, drahtgebunden, Lichtwellenleiter, HF usw. oder irgendeiner geeigneten Kombination der Vorerwähnten übertragen werden. Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in irgendeiner Kombination einer oder mehrerer Programmiersprachen, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ oder dergleichen und herkömmliche verfahrensorientierte Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen, geschrieben sein. Der Programmcode kann ganz auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder ganz auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letzteren Szenario kann der entfernt angeordnete Computer über jede Art von Netzwerk, darunter ein lokales Netz (LAN, Local Area Network) oder ein weiträumiges Netz (WAN, Wide Area Network), mit dem Computer des Benutzers verbunden sein oder kann die Verbindung zu einem externen Computer hergestellt sein (zum Beispiel mittels eines Internet-Diensteanbieters über das Internet). Aspekte der vorliegenden Erfindung wurden oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogramm-Produkten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich von selbst, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle implementiert werden kann. Diese Computerprogrammbefehle können an einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung gegeben werden, um eine Maschine zu produzieren, so dass die Befehle, welche über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der im Block oder in den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktionen/Vorgänge schaffen. Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Weise zu funktionieren, so dass die im computerlesbaren Medium gespeicherten Befehle ein Erzeugnis produzieren, das Befehle enthält, welche die bzw. den im Block oder in den Blöcken von Ablaufplan und/oder Blockschaubildern angegebene(n) Funktion/Vorgang implementieren. Die Computerprogrammbefehle können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um zu veranlassen, dass eine Reihe von Arbeitsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder den anderen Einheiten ausgeführt werden, um einen computer-ausgeführten Prozess zu produzieren, so dass die Befehle, welche auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der im Block oder in den Blöcken von Ablaufplan und/oder Blockschaubildern angegebenen Funktionen/Vorgänge schaffen. Die Ablaufdiagramme und die Blockschaubilder in den obigen Figuren veranschaulichen Architektur, Funktionalität und Betrieb möglicher Umsetzungen von Systemen, Verfahren und Computerprogramm-Produkten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block im Ablaufplan oder in den Blockschaubildern ein Codemodul, einen Codeabschnitt oder einen Codeteil darstellen, welches bzw. welcher einen oder mehrere lauffähige Befehle zum Umsetzen der angegebenen logischen Verknüpfungen) enthält. Es sollte auch bemerkt werden, dass bei manchen alternativen Umsetzungen die im Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei aufeinanderfolgend gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder können die Blöcke manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach erforderlicher Funktionalität. Es wird auch bemerkt werden, dass jeder Block der Blockschaubilder und/oder des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder im Ablaufplan durch spezielle, auf Hardware beruhende Systeme, welche die angegebenen Funktionen oder Vorgänge ausführen, oder Kombinationen von Spezial-Hardware und Computerbefehlen ausgeführt werden können. Wenn auch eine oder mehrere Ausführungsformen der vorliegenden Erfindung eingehend dargestellt wurden, wird der Fachmann erkennen, dass Veränderungen und Anpassungen an diesen Ausführungsformen vorgenommen werden können, ohne vom Umfang der vorlegenden Erfindung, wie in den folgenden Ansprüchen bekanntgemacht, abzuweichen. Eine Momentaufnahme ausgewählter Objekte in einem Quellen-Repository wird als Reaktion auf die benutzergesteuerte Replikation erstellt. Die Momentaufnahme wird zu einem Momentaufnahme-Replikationsjob bestimmt. Der Momentaufnahme-Replikationsjob wird zum Ende einer Replikationswarteschlange hinzugefügt, um die Ausführung für die synchronisierte Objektreplikation zu erwarten. Unsynchronisierte Objekte in einem Bestimmungsziel werden durch Vergleichen eines Zustands der ausgewählten Objekte in der Momentaufnahme mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs erkannt. Die unsynchronisierten Objekte im Bestimmungsziel werden auf der Grundlage des Vergleichs des Zustands der ausgewählten Objekte in der Momentaufnahme mit dem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs synchronisiert. Verfahren zur benutzergesteuerten Replikation in einem System für synchronisierte Objektreplikation in einer eine Prozessoreinheit verwendenden Datenverarbeitungsumgebung, welches aufweist: Verfahren nach Anspruch 1, außerdem aufweisend das Ausführen entweder von: Verfahren nach Anspruch 2, außerdem aufweisend das Aufteilen der Operation in eine Datenoperation und eine Metadatenoperation, wobei die Datenoperation entweder aus dem Schreiben neuer Daten oder aus dem Löschen alter Daten besteht und die Metadatenoperation entweder aus dem Ändern von Metadaten eines Knotens oder dem Ändern einer Baumstruktur besteht. Verfahren nach Anspruch 1, wobei das Vergleichen eher das Vergleichen einer schlanken Darstellung der ausgewählten Objekte als aller Daten in einem Satz der ausgewählten Objekte aufweist. Verfahren nach Anspruch 1, außerdem aufweisend, in Verbindung mit dem Vergleich, das Durchlaufen der Momentaufnahme durch Vergleichen mindestens eines von einer Baumstruktur und/oder von Daten und/oder von Metadaten der Momentaufnahme mit Objekten im Bestimmungsziel. Verfahren nach Anspruch 1, außerdem aufweisend, in Verbindung mit der Ausführung des Momentaufnahme-Replikationsjobs, das Ausführen entweder von: Verfahren nach Anspruch 1 außerdem aufweisend, in Verbindung mit der benutzergesteuerten Replikation der ausgewählten Objekte, das Replizieren der ausgewählten Objekte unabhängig von einem tatsächlichen synchronisierten Zustand der ausgewählten Objekte. Verfahren nach Anspruch 1, außerdem aufweisend, in Verbindung mit der benutzergesteuerten Replikation der ausgewählten Objekte, das Replizieren der ausgewählten Objekte unabhängig von mindestens einem von einer Replikationsprozedur und/oder einem Protokoll und/oder einem Dateisystem-Aufbau und/oder einer Implementierung. System zur benutzergesteuerten Replikation in einem System für synchronisierte Objektreplikation in einer Datenverarbeitungsumgebung, welches aufweist: Computerprogramm-Produkt für benutzergesteuerte Replikation in einem System für synchronisierte Objektreplikation in einer eine Prozessoreinheit verwendenden Datenverarbeitungsumgebung, wobei das Computerprogramm-Produkt ein computerlesbares Speichermedium mit darin gespeicherten computerlesbaren Programmcodeabschnitten aufweist, wobei die computerlesbaren Programmcodeabschnitte aufweisen: HINTERGRUND DER ERFINDUNG
Gebiet der Erfindung
Beschreibung des Stands der Technik
KURZBESCHREIBUNG DER ERFINDUNG
KURZBESCHREIBUNG DER ZEICHNUNGEN
AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
das Erstellen einer Momentaufnahme ausgewählter Objekte in einem Quellen-Repository als Reaktion auf die benutzergesteuerte Replikation, wobei die Momentaufnahme zu einem Momentaufnahme-Replikationsjob bestimmt wird;
das Hinzufügen des Momentaufnahme-Replikationsjobs zu einem Ende einer Replikationswarteschlange, um die Ausführung für die synchronisierte Objektreplikation zu erwarten; und
das Erkennen unsynchronisierter Objekte in einem Bestimmungsziel durch Vergleichen eines Zustands der ausgewählten Objekte in der Momentaufnahme mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs, wobei die unsynchronisierten Objekte im Bestimmungsziel auf der Grundlage des Vergleichs des Zustands der ausgewählten Objekte in der Momentaufnahme mit dem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs synchronisiert werden.
dem Replizieren der Operation vor dem Replizieren des Momentaufnahmereplikationsjobs, wenn eine Operation vor dem Erstellen auftritt, oder,
dem Replizieren der Operation nach dem Replizieren des Momentaufnahmereplikationsjobs, wenn eine Operation nach dem Erstellen auftritt,.
dem Abrufen mindestens eines Objekts der ausgewählten Objekte aus der Momentaufnahme auf eine geordnete Weise,
dem Senden einer Objektidentifikation (ID) und einer Zustands-ID des mindestens einen Objekts an das Bestimmungsziel,
dem Suchen nach der Objekt-ID im Bestimmungsziel, wobei, wenn die Objekt-ID ausfindig gemacht ist, die Zustands-ID des mindestens einen Objekts mit einer aktuellen Zustands-ID des Bestimmungsziels verglichen wird, oder,
wenn weder die Objekt-ID im Bestimmungsziel vorhanden ist noch die Zustands-ID des mindestens einen Objekts und die aktuelle Zustands-ID des Bestimmungsziels übereinstimmen, werden Replikations-Tasks zum Replizieren von Daten und Metadaten des mindestens einen Objekts in das Bestimmungsziel geöffnet.
eine in der Datenverabeitungsumgebung betreibbare Prozessoreinheit, wobei die Prozessoreinheit geeignet ist für:
das Erstellen einer Momentaufnahme ausgewählter Objekte in einem Quellen-Repository als Reaktion auf die benutzergesteuerte Replikation, wobei die Momentaufnahme zu einem Momentaufnahme-Replikationsjob bestimmt wird,
das Hinzufügen des Momentaufnahme-Replikationsjobs zu einem Ende einer Replikationswarteschlange, um die Ausführung für die synchronisierte Objektreplikation zu erwarten, und
das Erkennen unsynchronisierter Objekte in einem Bestimmungsziel durch Vergleichen eines Zustands der ausgewählten Objekte in der Momentaufnahme mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs, wobei
die unsynchronisierten Objekte im Bestimmungsziel auf der Grundlage des Vergleichs des Zustands der ausgewählten Objekte in der Momentaufnahme mit dem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs synchronisiert werden.
einen ersten ausführbaren Abschnitt zum Erstellen einer Momentaufnahme ausgewählter Objekte in einem Quellen-Repository als Reaktion auf die benutzergesteuerte Replikation, wobei die Momentaufnahme zu einem Momentaufnahme-Replikationsjob bestimmt wird;
einen zweiten ausführbaren Abschnitt zum Hinzufügen des Momentaufnahme-Replikationsjobs zu einem Ende einer Replikationswarteschlange, um die Ausführung für die synchronisierte Objektreplikation zu erwarten; und
einen dritten ausführbaren Abschnitt zum Erkennen unsynchronisierter Objekte in einem Bestimmungsziel durch Vergleichen eines Zustands der ausgewählten Objekte in der Momentaufnahme mit einem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs, wobei die unsynchronisierten Objekte im Bestimmungsziel auf der Grundlage des Vergleichs des Zustands der ausgewählten Objekte in der Momentaufnahme mit dem aktuellen Zustand des Bestimmungsziels zur Zeit der Ausführung des Momentaufnahme-Replikationsjobs synchronisiert werden.