-
Die vorliegende Erfindung bezieht
sich allgemein auf Datenverarbeitungssysteme und, insbesondere,
auf Kopiereinrichtungen, die insbesondere innerhlab verteilter Systeme
verwendet werden.
-
Kopiereinrichtungen sind in einer
Anzahl unterschiedlicher Typen von Software- Produkten vorgesehen worden. Zum Beispiel
sind Kopiereinrichtungen in Datenbank-Produkten, Netzwerk-Directory-Service-Produkten
und Groupware-Produkten eingeschlossen worden. Viele der herkömmlichen
Kopiereinrichtungen sind im Hinblick auf dasjenige, was sie kopieren
können,
beschränkt.
Zum Beispiel können
viele herkömmliche
Kopiereinrichtungen nur einen Typ einer logischen Struktur kopieren
(d. h. eine Datei). Weiterhin sind die herkömmlichen Kopiereinrichtungen
im Hinblick auf die Menge der logischen Strukturen, die sie zu einem
Zeitpunkt kopieren können,
beschränkt.
Insbesondere können
viele herkömmliche
Kopiereinrichtungen nur eine Datei zu einem Zeitpunkt kopieren.
-
Software-Practice and Experience,
Dezember 1987, UK, vol. 17, Nr. 12, ISSN 0038-0644, Seiten 923–940, Purdin
T. D. M. et al. „A
file replication facility for Berkeley Unix", offenbart eine Datei-Kopiereinrichtung
zum Unterstützen
eines Dateikopierens in einem Netzwerk-Computer. Eine Datei-Kopierung
wird durch Reproduktions-Sätze
unterstützt,
die Zusammenstellungen von zwei oder mehr Dateien sind, in Bezug
auf die das System versucht, sie identisch beizubehalten. Ähnlich kann
eine Stellen-Transparenz für
eine Zusammenstellung von Dateien unter Verwendung einer Metadatei
bzw. eines Metafiles eingerichtet werden. Ein Reproduktions- bzw.
Wiedergabe-Satz wird durch den mkrep Befehl erzeugt, der mehrere
Datei-Argumente besitzt. Falls die Datei, angezeigt durch das erste
Argument, existiert, wenn der Befehl ausgeführt wird; werden deren Inhalte
zu den anderen, benannten Dateien kopiert.
-
Proceedings of the Summer 1993 USENIX Conference,
Cincinnati; OH, USA, 21.-25.
Juni 1993, 1993 Berkeley, CA, USA, USENIX Assoc, USA, Seiten 279
290, Fowler G. et al. „A
user-level replicated file system", offenbart ein auf einem Benutzer-Level kopiertes
Datei-System und beschreibt einen Kopiermechanismus. Um ein Kopieren
von temporären
Dateien zu vermeiden, führt
der Kopiermechanismus eine neue Bezeichnung, einen kopierten Baum,
ein, mit dem die Benutzer in der Lage sind, einen oder mehrere Unterbäume eines
Dateisystems zu definieren, die kopiert werden müssen. Dateien unter kopierten
Bäumen
können
zu einem physikalischen Backup-Datei-System hin kopiert werden,
immer dann, wenn deren Konfext/Attribute geändert werden. Der Kopiermechanismus
ermöglicht
Benutzern, eine oder mehrere Unterbäume eines Datei-Systems als
kopierte Bäume
zu definieren. Kopierte bzw. replizierte Bäume werden nachfolgend dahingehend
beschrieben, dass sie Benutzern ermöglichen, ein Kopieren der temporären Dateien
zu vermeiden.
-
Es ist die Aufgabe der vorliegenden
Erfindung, ein sichereres Verfahren von kopierten von Dateien in
einem verteilten System, und ein entsprechendes, verteiltes System,
zu schaffen.
-
Diese Aufgabe wird durch die Erfindung
gelöst,
wie sie in den unabhängigen
Ansprüchen
beansprucht ist. Die Erfindung ist nur wenig im Hinblick darauf
eingeschränkt,
was sie kopieren kann, und im Hinblick auf die Menge der logischen
Strukturen, die sie zu einem Zeitpunkt kopieren kann.
-
Bevorzugte Ausführungsformen sind in den abhängigen Ansprüchen definiert.
-
Ein Verfahren wird geschaffen, das
in einem verteilten System ausgeführt werden kann, das eine Kopiereinrichtung
und eine Anzahl von Computersystemen umfasst, die jeweils eine Speichervorrichtung
umfassen. Bei diesem Verfahren ist eine Mehrzahl von Dateien vorgesehen
und in einem Baum organisiert. Eine einzelne Datei der Dateien wird
unter Verwendung der Kopiereinrichtung kopiert, so dass eine Kopie
der Datei in der Speichervorrichtung eines unterschiedlichen Computersystems,
als die originale Kopie der Datei, gespeichert wird. Ein Unterbaum von
Dateien mehrerer Level wird auch kopiert. Der Unterbaum ist ursprünglich in
der Speichervorrichtung eines der Computersysteme gespeichert. Ein Kopieren
wird unter Verwendung der Kopiereinrichtung durchgeführt, so
dass eine Kopie des Unterbaums und dessen Dateien in der Speichervorrichtung
in einem anderen der Computersysteme gespeichert sind.
-
Gemäß einem anderen Aspekt wird
eine erste Kopie einer Datei in einem der Com putersysteme vorgesehen.
Eine zweite Kopie der Datei wird in einem anderen der Com putersysteme
vorgesehen. Die erste Kopie der Datei wird mit der zweiten Kopie
der Datei unter Verwendung eines Reconcilers abgeglichen. Die Abgleichung
stellt sicher, dass die zweite Kopie der Datei irgendwelche Änderungen,
vorgenommen an der ersten Kopie der Datei, einschließt. Eine
erste Kopie einer Gruppe von Dateien wird in einem der Computersysteme
vorgesehen, und eine zweite Kopie der Gruppe von Dateien wird in
einem anderen der Computersysteme vorgesehen. Die Reconcilereinrichtung
wird dazu verwendet, die erste Kopie der Gruppe von Dateien mit
der zweiten Kopie der Gruppe von Dateien so abzugleichen, dass die zweite
Kopie der Gruppe von Dateien irgendwelche Änderungen, vorgenommen an der
ersten Kopie der Gruppe der Dateien, seit die letzte abgeglichen
ist, enthält.
-
Gemäß einem weiteren Aspekt wird
eine erste Kopie einer Gruppe von Dateien in der Speichervorrichtung
eines ersten der Computersysteme gespeichert. Eine zweite Kopie
der Gruppe von Dateien wird in der Speichervorrichtung eines zweiten
der Computersysteme gespeichert. Änderungen werden bei zumindest
einer der Dateien in der ersten Kopie einer Gruppe von Dateien vorgenommen.
Die Änderungen
werden zu der zweiten Gruppe von Dateien unter dem Auftreten eines
Ereignisses propagiert. Zusätzliche Änderungen
werden bei mindestens einer der Dateien in der ersten Kopie einer
Gruppe von Dateien vorgenommen, und diese Änderungen werden auch zu der
zweiten Kopie einer Gruppe von Dateien unter dem Auftreten eines
anderen Ereignisses propagiert.
-
Gemäß einem noch anderen Aspekt
wird eine erste Kopie einer Gruppe von Datei en in der Speichervorrichtung
des ersten Computersystems gespeichert. Die zweite Kopie der Gruppe
von Dateien wird in der Speichervorrichtung eines zweiten Computersystems
gespeichert. Irgendwelche Änderungen,
vorgenommen an der ersten Kopie der Gruppe von Dateien, werden inkremental
zu dem zweiten Computersystem geschickt, so dass die Änderungen bei
der zweiten Kopie der Gruppe der Dateien vorgenommen werden können.
-
Gemäß einem zusätzlichen Aspekt wird ein erster
Satz von Dateien, der in einer der Speichervorrichtungen gespeichert
ist, dahingehend spezifiziert, dass er kopiert werden soll. Ein
Filter wird zum Bestimmen spezifiziert, welche Dateien in dem ersten Satz
von Dateien kopiert werden sollen. Die Dateien, spezifiziert durch
den Filter, werden unter Verwendung der Kopiereinrichtung kopiert,
um einen zweiten Satz von Dateien herzustellen.
-
Gemäß einem noch weiteren Aspekt
werden Dateien, die Namen haben, in den Speichervorrichtungen des
Computersystems des verteilten Systems gespeichert. Ein verteilter
Namensraum ist vorgesehen. Der verteilte Namensraum weist eine logische
Organisation der Namen der gespeicherten Dateien auf. Ausgewählte Bereiche
einer Gruppe von Dateien in dem Namensraum werden kopiert, um neue
Dateien, die die ausgewählten
Bereiche der Dateien halten, zu erzeugen.
-
Gemäß einem weiteren Aspekt wird
eine erste Kopie eines Satzes von Dateien einer gegebenen Klasse
in einem ersten Computersystem gespeichert. Eine zweite Kopie des
Satzes von Dateien wird in einem zweiten Computersystem gespeichert.
Die erste Kopie des Satzes von Dateien wird mit der zweiten Kopie
des Satzes der Dateien unter Verwendung eines klassen-spezifischen
Reconcilers, der nur Dateien der gegebenen Klasse abgleicht, abgeglichen.
Die Dateien können
als dauerhafte Objekte gespeichert werden, die in Klassen organisiert
sind. Objekte und Klassen werden nachfolgend diskutiert werden.
-
Gemäß einem anderen Aspekt läuft ein
Anwendungsprogramm auf einem der Computersysteme eines verteilten
Systems. Eine Anforderung wird innerhalb des Anwendungsprogramms
zu einem privaten Kopiermechanismus vorgenommen, um einen Satz von
Dateien zu kopieren. Jede der Dateien behält eine Liste von Prozessen
bei, die ermöglicht
bzw. zugelassen werden, um auf die Datei zuzugreifen. Der Satz von
Dateien wird unter Verwendung des privaten Kopiermechanismus kopiert,
um einen neuen Satz von Dateien zu erzeugen, ohne die Liste der Prozesse
zu kopieren, die ermöglichten,
auf die Datei zuzugreifen.
-
Gemäß einem weiteren Aspekt wird
eine erste Kopie einer Gruppe von Dateien in einem ersten Computersystem
vorgesehen und eine zweite Kopie der Gruppe von Dateien wird in
einem zweiten Computersystem vorgesehen. Änderungen werden in Bezug auf
die erste Kopie einer Gruppe von Dateien vorgenommen: Ein Agent
wird für
die erste Kopie einer Gruppe von Dateien vorgesehen. Jeder Agent besitzt
Zugriffsrechte, um auf die Dateien in der ersten Kopie der Gruppe
von Dateien zuzugreifen und diese zu lesen. Ein Reconciler ist an
dem zweiten Computersystem zum Abgleichen der zweiten Kopie der
Gruppe von Dateien mit der ersten Kopie der Gruppe von Dateien vorgesehen.
Ein Proxy wird für den
Agent der ersten Kopie der Gruppe von Dateien zu dem Reconciler
erteilt. Der Proxy erteilt dem Reconciles eine begrenzte Autorität, um auf
die Dateien in der ersten Kopie der Gruppe von Dateien zuzugreifen
und diese zu lesen. Der Reconciler gleicht dann die zweite Kopie
der Gruppe von Dateien mit der ersten Kopie der Gruppe der Dateien
unter Verwendung des Reconcilers ab, so dass Änderungen, die in der ersten
Kopie einer Gruppe von Dateien vorgenommen wurden, auch bei der
zweiten Kopie einer Gruppe von Dateien vorgenommen werden.
-
Gemäß einem abschließenden Aspekt
wird ein Verfahren in einem verteilten Sy stem durchgeführt. Bei
diesen Verfahren sind heterogene Dateisysteme in dem verteilten
System vorgesehen. Ein Speicher-Manager ist für jedes Dateisystem vorgesehen,
um einen Zugriff auf die Dateien, die darin gehalten sind, zu managen.
In Abhängigkeit
einer Anforderung, einen ersten Satz von Dateien mit einem zweiten
Satz von Dateien abzugleichen, wird ein Zugriff auf den ersten Satz
von Dateien durch den Speicher-Manager für das Dateisystem erteilt,
das den ersten Satz von Dateien enthält, und ein Zugriff wird zu
dem zweiten Satz von Dateien durch den Speicher-Manager für das Dateisystem
erteilt, das den zweiten Satz von Dateien hält. Der erste Objekt-Satz wird
mit dem zweiten Objekt-Satz unter der Steuerung der Speicher-Manager
der jeweiligen Dateisysteme abgeglichen, die den ersten Satz von
Dateien und den zweiten Satz von Dateien halten.
-
Kurze Beschreibung der Zeichnungen
-
1A zeigt
ein Blockdiagramm eines verteilten Systems, geeignet zum Ausführen einer
bevorzugten Ausführungsform
der vorliegenden Erfindung.
-
1B zeigt
ein Diagramm eines verteilten Namensraums für ein verteiltes System gemäß der bevorzugten
Ausführungsform
der vorliegenden Erfindung.
-
2 zeigt
ein Blockdiagramm einer Änderungs-Log-Datei,
verwendet in der bevorzugten Ausführungsform der vorliegenden
Erfindung.
-
3 zeigt
ein Blockdiagramm eines Kopier-Informations-Blocks (RIB), verwendet
in der bevorzugten Ausführungsform
der vorliegenden Erfindung.
-
4 zeigt
ein Blockdiagramm, das die funktionalen Komponenten der Kopiereinrichtung,
verwendet in der bevorzugten Ausführungsform der vorliegenden
Erfindung, darstellt.
-
5 zeigt
ein Diagramm, das die Wechselwirkung von Elementen darstellt, die
eine Rolle in einem öffentlichen
Kopieren in der bevorzugten Ausführungsform
der vorliegenden Erfindung spielen.
-
6 zeigt
ein Flussdiagrmm der Schritte, die beim Kopieren in der bevorzugten
Ausführungsform
der vorliegenden Erfindung durchgeführt werden.
-
7 zeigt
ein Flussdiagramm, das die Schritte darstellt, die durchgeführt werden;
um eine Sicherheit während
eines Kopierens in der bevorzugten Ausführungsform der vorliegenden
Erfindung zu erzielen.
-
Detaillierte Beschreibung
der Erfindung
-
Eine bevorzugte Ausführungsform
der vorliegenden Erfindung sieht eine Kopierein richtung zur Verwendung
in einer verteilten Umgebung vor. Die Kopiereinrichtung unterstützt ein
schwach konsistentes Kopieren irgendeines Unterbaums von dauerhaften
Objekten in dem verteilten Namensraum des Systems. Die Kopiereinrichtung
kann einzelne Objekte kopieren oder kann logische Strukturen kopieren,
die mehrere Objekte umfassen Die Kopiereinrichtung kopiert lokale
Kopien von Objekten mit entfernten Kopien von Objekten. Eine Abgleichung
tritt auf einer paarweisen Basis auf, so dass jedes Objekt in einem lokalen
Satz von Objekten mit seinem entsprechenden Objekt in dem entfernten
Satz- von lokalen Objekten abgeglichen wird. Die Abgleichung kann über heterogene
Dateisysteme auftreten.
-
1A zeigt
ein verteiltes System 10, das zum Ausführen der bevorzugten Ausführungsform.der
vorliegenden Erfindung geeignet ist. Das verteilte System 10 umfasst
einen Zwischenverbindungsmechanismus 12, wie beispielsweise
ein Local Area Network (LAN), ein Wide Area Network (WAN) oder einen
anderen Zwischenverbindungsmechanismus, der eine Anzahl von unterschiedlichen
Datenverarbeitungsquellen bzw. ressourcen miteinander verbindet.
Die Datenverarbeitungsquellen umfassen Arbeitsstahonen 14, 16, 18 und 20,
Drucker 22 und 24 und sekundäre Speichervorrichtungen 26 und 28. Jede
der Arbeitsstationen 14, 16, 18 und 20 umfasst einen
entsprechenden Speicher 30, 32, 34 und 36. Jeder
Speicher 30, 32, 34 und 36 hält eine
Kopie eines verteilten Betriebssystems 38. Jede Arbeitsstation 14, 16, 18 und 20 kann
ein separates Dateisystem ausführen.
-
Fachleute auf dem betreffenden Fachgebiet werden
erkennen, dass die vorliegende Erfindung bei Konfigurationen, anderen
als die Konfiguration, die in 1A dargestellt
ist, praktiziert werden kann. Das verteilte System 10,
dargestellt in 1A, ist
dazu vorgesehen, dass es nur erläuternd
und nicht einschränkend
für die
vorliegende Erfindung ist. Zum Beispiel kann der Zwischenverbindungsmechanismus
12 eine Anzahl von Netzwerken zusammen verbinden, die separate Netzwerk-Betriebssysteme
laufen lassen.
-
Die bevorzugte Ausführungsform
der vorliegenden Erifindung ermöglicht
Benutzern, und System-Administratoren, dauerhafte „Objekte"
zu kopieren. Ein Objekt in diesem Zusammenhang ist eine logische
Struktur, die mindestens ein Datenfeld hält. Gruppen von Objekten mit ähnlichen
Eigenschaften und gemeinsamen Semantiken sind in Objektklassen organisiert.
Eine Anzahl von unterschiedlichen Objektklassen kann für das verteilte
System 10 definiert werden. Obwohl die bevorzugte Ausführungsform der
vorliegenden Erfindung Objekte einsetzt, werden Fachleute auf dem
betreffenden Fachgebiet erkennen, dass die vorliegende Erfindung
nicht auf eine objekt-orientierte Umgebung beschränkt ist;
im Gegensatz dazu kann die vorliegende Erfindung auch in nicht objekt-orientierten
Umgebungen praktiziert werden. Die vorliegende Erfindung ist nicht
auf ein Kopieren von Objekten beschränkt; im Gegensatz dazu ist
sie allgemeiner dafür
geeignet, das Kopieren von logischen Strukturen, wie beispielsweise
Dateien oder Datei-Directories, zu unterstützen.
-
Das Betriebssystem 38 umfasst
ein Dateisystem zum Speichern der Objekte, die in der bevorzugten
Ausführungsform
der vorliegenden Erfindung verwendet werden. Die Objekte sind in
einem verteilten Namensraum 19 (1B)
organisiert. Der verteilte Namensraum 19 ist eine logische,
baumähnliche Struktur,
gebildet aus den Objektnamen 21, gespeichert in dem Dateisystem
des Betriebssystems 38. Der verteilte Namensraum 19 stellt
die Hierarchie unter den benannten Objekten des Systems 10 dar (1A).
-
Die Kopiereinrichtung der bevorzugten
Ausführungsform
der vorliegenden Erfindung dient nicht nur für die Duplizierung von Objekten,
so dass Objekte über
das verteilte. System hinweg verteilt werden können, sondern dient auch für eine Abgleichung
von mehreren Kopien von Objekten (d. h. Multimaster-Replikation).
Eine Abgleichung bezieht sich auf eine Abgleichung eines Objekts
mit einem geänderten
Objekt, so dass das Objekt die Änderungen,
vorgenommen an dem geänderten
Objekt, wiedergibt. Zum Beispiel wird angenommen, dass eine entfernte Kopie
eines Objekts geändert
worden ist und eine lokale Kopie des Objekts noch nicht so aktualisiert
worden ist, um die Änderungen
zu reflektieren. Jedes Objekt besitzt nicht nur Inhalte, sondern
besitzt auch einen Namen und eine Stelle innerhalb des verteilten Dateisystems.
Eine Abgleichung umfasst eine Abgleichung der zwei Kopien des Objekts,
so dass die lokale Kopie des Objekts in einer ähnlichen
Weise
zu derjenigen geändert
wird, in der die entfernte Kopie des Objekts geändert wurde. Der Ausdruck „Replikation"
bzw. "Kopieren", wie er hier verwendet wird, bezieht sich nicht
nur auf ein Duplizieren von Objekten, so dass mehrere Kopien der
Objekte über
das verteilte System 10 verteilt werden, sondern bezieht
sich auch auf eine Abgleichung der Kopien der Objekte.
-
Bevor die bevorzugte Ausführungsform
der vorliegenden Erfindung in weiterem Detail nachfolgend diskutiert
wird, ist es hilfreich, ein paar Schlüsselkonzepte einzuführen, auf
die nachfolgend Bezug genommen werden wird. Ein „Objekt-Satz" ist eine Zusammenstellung
von Objekten, die zusammen für ein
Kopieren gruppiert sind. Ein Objekt-Satz kann ein einzelnes Objekt
oder einen Unterbaum von Objekten umfassen. Der Objekt-Satz wird
durch den Benutzer oder den Administrator, der ein Kopieren anfordert,
spezifiziert Ein „Kopie-Satz"
bzw. „Replika
Set" ist im Gegensatz dazu eine Zusammenstellung von Systemen, die
jeweils eine lokale Kopie eines Objekt-Satzes besitzen, und eine „Kopie"
bzw. ein „Replika"
ist ein Element eines Kopiesatzes.
-
Um die Kopiereinrichtung von dem
unterlegenden, physikalischen Speichersystem zu isolieren (z. B.
der Typ eines Dateisystems, der eingesetzt wird, um Objekte zu speichern),
und um eine Erweiterungsfähigkeit
vorzusehen, wendet die bevorzugte Ausführungsform der vorliegenden
Erfindung die Abstrahierung eines Speichers für kopierte Objekte (ReplStore)
an. Die ReplStore Abstraktion ermöglicht der Kopiereinrichtung,
dass, sie über
heterogene Dateisysteme hinweg angewandt wird. Das ReplStore präsentiert
eine Gruppe von Schnittstellen, die für ein unterlegendes, physikalisches
Speichersystem unterstützt
werden müssen,
um Kopiereinrichtungen zu unterstützen. Insbesondere können nur
solche Objekte, die in Objektspeichern vorhanden sind, die die ReplStore
Schnittstel len unterstützen, kopiert werden. Eine
Schnittstelle ist eine benannte Gruppe von logisch in Bezug stehenden
Funktionen. Die Schnittstelle spezifiziert Signaturen (wie beispielsweise
Parameter) für
die Gruppe von in Bezug stehenden Funktionen, geliefert durch eine
Schnittstelle. Die Schnittstelle liefert keinen Code zum Ausführen der Funktionen;
vielmehr wird der Code zum Ausführen der
Funktion durch Objekte oder durch andere Implementationen geliefert.
Objekte, die den Code für
einen Fall einer Schnittstelle liefern können, sind solche, um die Schnittstelle „zu unterstützen". Der
Code, geliefert durch ein Objekt, das eine Schnittstelle unterstützt, muss
mit der Signatur, spezifiziert innerhalb der Schnittstelle übereinstimmen.
Demzufolge muss, in dem Beispiel, das vorstehend beschrieben ist,
der Objektspeicher, der die Objekte in dem Objekt-Satz speichert,
die ReplStore Schnittstellen unterstützen, damit der Objekt-Satz
kopiert werden kann. Implementierungen der ReplStore Schnittstellen
sind für
jedes der Dateisysteme innerhalb des verteilten Systems 10 vorgesehen,
um ein Kopieren über
jedes der Dateisysteme zu unterstützen.
-
Jeder ReplStore schafft einen Mechanismus zum
Identifizieren von kopierten Ob jekten auf einem lokalen Volumen.
Dieser Mechanismus ist die Idee des replizierten Objekts (replicated
object ID – ROBID).
Die ROBID ist eine Abstrahierung, die die Identität ebenso
wie andere Informationen über
ein Objekt, das kopiert werden soll, einkapselt. Der ReplStore unterstützt Programme
zum Serialisieren und Entserialisieren von ROBIDs. Die ROBID eines
Objekts schafft einen Mechanismus zum Durchführen von zahlreichen Operationen.
Zum Beispiel kann ein Objekt von einem Speicher unter Verwendung
von Informationen, die in der ROBID enthalten sind, aufgesucht werden.
Weiterhin kann ein Komponentenname eines Objekts von dessen ROBID
ausgesucht werden.
-
Jeder ReplStore behält eine
kopierte Speicher-Änderungs-Log-Datei 40 (2) bei. Die Änderungs-Log-Datei
40 umfasst eine Zahl von Änderungselementen 42,
die Änderungen
spezifizieren, die in Bezug auf Objekte in dem Objekt-Satz vorgenommen
worden sind. Jedes Änderungselement 42 umfasst
ein Typ-Feld 44, ein serialisiertes ROBID Feld 46 für das Objekt,
das geändert
wird, ein Zeit-Feld 48, das die Zeit anzeigt, zu. der die Änderung
aufgetreten ist (lokale Zeit), und ein Kopier-Informations-Block
(replication information block – RIB) Feld 50,
das eine RIP hält,
die der Änderung
zugeordnet ist. In der Ausführungsform,
die hier beschrieben ist, sind fünf
Typen von Änderungen
vorhanden, die innerhalb des Typ-Felds 44 spezifiziert
werden können.
Diese Änderungen
sind Löschen,
Erzeugen, Modifizieren, Umbenennen und Bewegen. Eine Löschung tritt
dann auf wenn ein Objekt gelöscht
wird. Eine Erzeugung tritt dann auf, wenn das Objekt erzeugt. wird.
Eine Modifikation tritt dann auf, wenn die Inhalte des Objekts in
irgendeiner Weise modifiziert werden. Eine Umbenennung tritt dann
auf, wenn der Komponenten-Name des Objekts modifiziert wird, und
eine Bewegung tritt auf, wenn das Objekt unter einem neuen Parent
in dem verteilten Namensraum des Systems bewegt wird.
-
Ein Cursor 49 wird innerhalb
der Änderungs-Log-Datei 40 beibehalten,
der als ein Index in die Liste von Änderungselementen 42 hinein
wirkt. Der Cursor 49 wirkt als ein Markierer in der Liste
von Änderungselementen 42.
Zusätzlich
kann eine Änderungs-LogDatei
mehrere Cursor umfassen. Der Cursor 49 kann die Form eines
Zeitstempels an nehmen. Der Cursor 49 kann zum Beispiel
den Beginn von Anderungen,die nach einem Zeitpunkt aufgetreten sind, identifizieren.
-
Jedes Objekt in einem Objekt-Satz,
das kopiert werden soll, wird mit einem RIB 51 (3) gestempelt. Der RIB 51 besitzt
drei Felder: ein Ursprungs-Feld (originator-field) 57,
ein Änderungs-Identifizierer-Feld 55 und
ein Propagator-Feld 57. Das Ursprungs-Feld 53 spezifiziert,
wo die letzte Änderung
an dem Objekt auftrat. Das Änderungs-Identifizierer-Feld
55 identifiziert, im Gegensatz dazu, die letzte Änderung an dem Objekt relativ zu
dem Ursprung, der identifiziert ist, und zwar innerhalb des Ursprungs-Felds 53.
Zuletzt spezifiziert das Propagator-Feld 57 die Identität der Partei,
die die Änderung
zu der lokalen Stelle schickte. Wenn ein Objekt lokal geändert wird,
wird der RIP 51 zugeordnet zu dem Objekt, modifiziert,
um die lokale Stelle als den Ursprung und den Propagator wiederzugeben.
Der Änderungs-Identifizierer
wird geeignet gestempelt.
-
Ein Kopieren ist für das verteilte
System 10 dahingehend nützlich,
dass es ein Belastungs-Ausbalancieren und eine Verfügbarkeit
liefert. Ein Kopieren liefert ein Belastungs-Ausbalancieren dadurch, dass
man mehr als eine Kopie eines Objekts, gespeichert über das
verteilte System 10 hinweg, hat, um die Belastung an irgendeiner
Kopie des Objekts zu begrenzen. Ein Kopieren erhöht die Verfügbarkeit, indem ermöglicht wird,
dass mehrere Kopien von wichtigen Objekten über das System 10 hinweg
verteilt werden können.
Die erhöhte
Verfügbarkeit
erhöht
die Fehlermöglichkeit
des Systems. Genauer ge- sagt werden, indem man Kopien von wichtigen
Objekten über
das System 10 verteilt besitzt, Benutzer weniger durch
Fehler innerhalb des Systems beeinflusst, die einen Zugriff auf
Objekte verhindern oder einschränken.
Die erhöhte
Verfügbarkeit
erhöht
auch die Funktionsweise des Systems.
-
Die bevorzugte Ausführugsform
der vorliegenden Erfindung wird in einer Ko- piereinrichtung 54 (4) verkörpert, die Teil des Betriebssystems 38 ist.
Allerdings werden Fachleute auf dem betreffenden Fachgebiet erkennen,
dass die Kopiereinrichtung der vorliegenden Erfindung auch in anderen Umgebungen,
einschließlich
graphischen Benutzerschnittstellen, ausgeführt werden kann. Wie in 4 dargestellt ist, umfasst
die Kopiereinrichtung 54 drei primäre, funktionale Komponenten:
eine Kopiekomponente 56, eine Reconciler-Komponenten 58 und eine
Steuerkomponente 60. Die Kopiereinrichtung 54 verwnrendet
die Kopiekomponente 56 für ein Duplizieren. Zusätzlich gleicht
die Kopiereinrichtung 54 Kopien von Objekt-Sätzen unter
Verwendung der Reconciler-Komponenten 58 ab, um sicherzustellen, dass
sie zueinander konsistent sind. Diese Abgleichung stellt eine konsistente
Ansicht der Objekte über
das verteilte System 10 sicher.
-
Ein Level einer Steuerung, ausgeübt durch die
Steuerkomponente 60, bezieht sich darauf, wie ein Kopieren
aufgerufen wird. Ein Kopieren kann manuell oder automatisch aufgerufen
werden. Ein manueller Aufruf erfordert, dass eine explizite Anforderung,
um zu Kopieren, durch einen Benutzer oder eine andere Partei vorgenommen
ist. Der Benutzer oder die andere Partei muss den Objekt-Satz und
die Bestimmung für
das Kopieren spezifizieren. Die Bestimmungen sind nicht für jeden
Kopierzyklus spezifiziert; im Gegensatz dazu wird eine Replika-Verbindung
zu Anfang spezifiziert. Die Replika-Verbindung identifiziert die
zwei Replikas bzw. Kopierungen und den Objekt-Satz, die bei dem
Kopieren umfasst sind. Im Gegensatz dazu tritt ein automatisches
Aufrufen dann auf, wenn ein Kopieren durch bestimmte Ereignisse 67 (siehe 5) oder durch Verstreichen
einer bestimmten Zeitdauer (die als ein Typ eines Ereignisses konstruiert
sein kann) getriggert wird. Ein Kopieren kann vorab ablaufmäßig geplant
werden, um unter festgelegten Zeitintervallen aufzutreten. Ein anderer
Aspekt einer Kontrolle bzw. Steuerung, ausgeübt durch den Steuermechanismus,
tritt dort auf, wo man ein Kopieren aufrufen kann. Ein Kopieren
"kann durch eine geeignet privilegierte Partei aufgerufen werden.
-
Die bevorzugte Ausführungsform
der vorliegenden Efindung schafft zwei Typen eines Kopierens: ein öffentliches
Kopieren und ein privates Kopieren. Ein öffentliches Kopieren bezieht
sich auf einen Vorgang, der nur durch geeignet privilegierte Parteien
vorgenommen werden kann, um eine „öffentliche" Kopie eines Objekt-Satzes
zu erzeugen. Bei einem öffentlichen
Kopieren kooperiert jede der Kopien des Objekt-Satzes, die erzeugt
werden, mit den anderen Kopien, um eine Konsistenz beizubehalten.
Die Knoten in dem Namensraum, die die öffentlichen Kopien speichern,
und zwar zusammen, bilden einen öffentlichen
Replika-Satz, und die Elemente des Satzes behalten Zustands-Informationen bei,
um eine Konsistenz unter den Kopien beizubehalten. Zugriffsbeschränkungen
auf die Objekte werden bewahrt. Änderungen,
die in einer öftentlichen Kopie
eines Objekt-Satzes auftreten, werden mit anderen, öffentlichen
Kopien abgeglichen.
-
Ein privates Kopieren bezieht sich
auf einen Vorgang zum Herstellen von privaten Kopien eines Objekt-Satzes.
Eine private Kopie kann durch irgendeine Partei, einschließlich, eines
Nichtadministratots, erzeugt werden. Nicht alle Elemente der kopierten
Sätze behalten
Züstands-Informationen
bei, um eine Konsistenz unter Kopien aufrechtzuerhalten. Ein privates
Kopieren wird in weiterem Detail nachfolgend diskutiert werden.
-
Eine Anzahl von Elementen spielt
eine Rolle in dem Kopierprozess der bevorzugten Ausführungsform
der vorliegenden Erfindung. 5 zeigt
ein Diagramm, das die Elemente darstellt, die eine Hauptrolle in
dem öffentlichen
Kopierprozess darstellen. Objekt-Kopier-Agenten
(Object Replication Agents – ORAs) 62 und 64 sind
Kopierer-Objekte, die als Agenten an Knoten wirken, in denen Objekt-Sätze gespeichert
sind, um eine automatische Unterstützung für ein Kopieren zu schaffen.
Jede Maschine in dem verteilten System besitzt deren eigenen ORA. Die
ORAs 62 und 64 können als Fern-Prozedur-Aufruf(Remote
Procedure Call – RPC)
Server dienen, die Anforderungen, vorgenommen für entfernte Clients, bedienen,
oder können
alternativ andere Typen von zuverlässigen Kommunikationsmechanismen sein,
die eine ähnliche
Rolle spielen. Ein separater ORA 64 ist für ein lokales
Objekt vorgesehen und ein anderer ORA 64 ist für das entsprechende,
entfernte Objekt in dem öffentlichen
Kopierprozess vorgesehen. Ein lokaler ORA 62 ist für ein Laden
eines ReplStore DLL 66 und eines ReplStore Manager DLL 65 verantwortlich.
Der ReplStore Manager 65 ist für eine Zugriffsregulierung
zu dem ReplStore 66 verantwortlich. Clients rufen den ReplStore
Manager 65 auf, um den geeigneten ReplStore 66 für ein gegebenes, physikalisches
Speichersystem zu laden. Die ORAs 62 und 64 besitzen
einen Privileg-Level, der ihnen ermöglicht, alle Objekte zu lesen
und zu schreiben, die von einem Lokal-Objekt-Speicher kopiert sind.
Die ORAs 62 und 64 sind für ein Antworten auf Anforderungen
hin veräntwortlich,
um Änderungen
mit anderen ORAs, die öffentliche
Kopien beibehalten, auszutauschen.
-
Ein Reconciler 68 spielt
auch eine Rolle in dem öffentlichen
Kopierprozess. Er wirkt als ein Gegenstück zu dem lokalen ORA 62,
um den Lokal-Objekt-Satz mit dem entfernten Objekt entsprechend abzugleichen.
Der Reconciler 68 wird durch den lokalen ORA 62 aufgerufen
und ist für
ein Öffnen
von Objekten verantwortlich, die abgeglichen werden sollen. Zwei
Typen von Reconciler-Objekten können
durch den Reconciler- 68 aufgerufen werden. Genauer gesagt
kann ein klassen-spezifischer Reconciler 70 aufgerufen
werden, oder ein Default- (d. h. eine klassen-unabhängiger)
Reconciler 72 kann aufgerufen werden. Der klassen-spezifische
Reconciler 70 gleicht Objekte ab, die klassen-spezifische
Anforderungen beim Kopieren haben. Der klassen-spezifische Reconciler 70 wird
auf nur eine Klasse von Objekten angewandt. Der klassen-unabhängige Reconciler 72 gleicht
Objekte ungeachtet deren Klasse ab. Mehrere klassen-unabhängige Reconciler
können
in dem System 10 verfügbar
sein. Zum Beispiel kann jeder Objekt-Satz seinen eigenen, klassenunabhängigen Reconciler
haben. Jeder Replika-Satz kann seinem eigenen, klassenunabhängigen Reconciler
zugeordnet sein, der immer dann aufgerufen wird, wenn ein klassen-spezifischer
Reconciler nicht verfügbar ist.
Zuletzt können,
wie vorstehend erwähnt
ist, Ereignisse 67 eine Rolle beim Triggern eines Kopierens spielen.
-
6 zeigt
ein Flussdiagramm der Schritte, durchgeführt für ein Kopieren in der bevorzugten Ausführungsform
der vorliegenden Erfindung. Zu Anfang wird ein Zugriff zu einer Änderungs-Log-Datei 40 (2) für einen entfernten Objekt-Satz
(Schritt 74 in 6) erhalten.
Insbesondere dann, wenn ein Lokal-Objekt-Satz mit einem entfernten
Objekt-Satz abgeglichen werden soll, kontaktiert der lokale ORA 62 (5) den entfernten ORA 64 über einen Fern-Prozedur-Aufruf-Mechanismus.
Der lokale ORA 62 kontaktiert den entfernten ORA 64,
um einen Zugriff zu der Änderungs-Log-Datei 40 zu
erhalten. Ein Cursor 49 (2)
wird dann in der Änderungs-Log-Datei
(Schritt 76 in 6) erzeugt.
Genauer gesagt speichert der lokale ORA 62 einen Zeitstempel,
der die Zeit des letzten Abgleichens zwischen den Objekt-Sätzen anzeigt,
und führt
dann diesen Zeitstempel zu dem entfernten ORA 64 weiter, um
als ein Cursor 49 verwendet zu werden. Der entfernte ORA 64 führt dann
diesen Zeitstempel als einen Cursor in die Fern-Änderungs-Log-Datei 40 hinein. Der Cursor
identifiziert Elemente in der Änderungs-Log-Datei,
die die Zeitstempel nach der letzten Abgleichung haben, und sie
sind demzufolge für
diesen Kopierzyklus von Interesse.
-
Eine Liste von Änderungselementen wird dann
von der Fern-Änderungs-Log-Datei,
unter Verwendung des Cursors, erhalten, um die Änderungselemente zu identifizieren,
die für Änderungen
dienen, die nach dem letzten Abgleichen aufgetreten sind. Der entfernte
ORA 64 siebt die RIBs 51 jedes der Änderungselemente 42,
um sicherzustellen, dass der entfernte ORA nicht zurück zu den Änderungen
des lokalen ORA 62 führt,
die von dem lokalen ORA ursprünglich
ausgingen (d. h. der entfernte ORA prüft das Ursprungs-Feld 53' der
RIBs), und prüft
die RIBs, um sicherzustellen, dass Änderungselemente hinsichtlich Änderungen,
die von dem lokalen ORA (d. h. der entfernte ORA prüft das Propagator-Feld 57 der RIBs)
propagiert wurden, nicht geschickt werden. Die erhaltenen Änderungselemente
werden zurück
zu dem lokalen ORA 62 geführt, wo sie dauerhaft gespeichert
werden. Der lokale ORA 62 verwendet dann den Reconciler 68,
um eine Namensraum- Abgleichung
(Schritt 80) und eine Inhalts-Abgleichung (Schritt 82) an den Objekten,
die durch die ROBIDs in den Änderungselementen
identifiziert sind, durchzuführen.
Insbesondere gleicht der Reconciler 56 jedes Objekt ab,
das sich in dem entfernten Objekt-Satz geändert hat, mit entsprechenden
Objekten des Lokal-Objekt-Satzes. Irgendwelche Änderungen, die an dem entfernten
Objekt vorgenommen worden sind, werden bei dem entsprechenden, lokalen
Objekt vorgenommen. Ob der klassen-spezifische Reconciler 70 oder
der klassen-unabhängige
Reconciler 72 verwendet wird, hängt von der Quelle ab (d. h. entfernte
Kopie eines Objekts). Ein klassen-spezifischer Reconciler 70 wird
nur dann verwendet, wenn die entfernte Kopie des Objekts einen solchen
Reconciler erfordert.
-
Eine Namensraum-Wiederherstellung
wird für
irgendeine Änderung,
aufgezeichnet in einem Änderungselement,
durchgeführt
(siehe Schritt 80 in 6),
das nicht strikt einer Inhaltsmodifikation oder das nicht einer
Systemeigenschaft zugeordnet ist. Solche Änderungen umfassen Erzeugungen,
Löschungen,
Bewegungen und Umbenennungen. Eine Namensraum-Abgleichung tritt
durch Vergleichen von Informationen, eihaltbar durch RO-BIDs von lokalen
Objekten, relativ zu Informationen, gespeichert für entsprechende,
entfernte Objekte, auf. Viele unterschiedliche Arten und Weisen
zum Lösen
von Namen-Auflösungs-Konflikten
können
innerhalb der vorliegenden Erfindung verwendet werden. Die vorliegende
Ausführungsform
der vorliegenden Erfindung wendet allerdings Regeln ie vorliegende
Ausführun
an. Eine erste Regel, verwendet durch die bevorzugte Ausführungsform
der vorliegenden Erindung, um Namensraum-Konflikte aufzulösen, ist
diejenige, eine letzte Modifikation gegenüber einer vorherigen Modifikation
auszuwählen.
Wenn ein Objekt an einer Stelle bewegt/umbenannt wird, um einen ersten
Namen zu haben, und dasselbe Objekt zu einer anderen Stelle bewegt
oder umbenannt wird, um einen unterschiedlichen Namen zu haben,
wird die letzte auftretende Änderung
ausgewählt,
so dass das Objekt den Namen, der der letzten Änderung zugeordnet ist annimmt.
Eine zweite Regel wird dazu verwendet, Namensraum-Kollisionen aufzulösen. Eine Namensraum-Kollision
tritt dann auf, wenn zwei unterschiedliche Objekte erzeugt, bewegt
oder umbenannt werden, um denselben Namen zu haben. Die zweite Regel
spezifiziert, dass, welches Objekt auch immer erzeugt; bewegt
oder zuerst umbenannt wurde, der Name ist, der für das Objekt an des lokalen Stelle
ausgewählt
ist.
-
Eine Inhalts-Abgleichung (siehe Schritt 82 in 6) setzt ein Abgleichen
von Inhalten eines lokalen Objekts mit einem entfernten Objekt ein,
so dass das lokale Objekt die Modifikationen umfasst, die an dem
entfernten Objekt vorgenommen sind. Durch Prü fen der Änderungen in der Änderungs-Log-Datei können die
lokalen Objekte geändert
werden, um dieselben Inhalte wie die entfernten Objekte zu haben.
-
Während
einer Kopierung werden Änderungen
von einem Replika zu einem ande ren propagiert. Ein Kopieren bzw.
eine Replizierung ist „eine
Art und Weise", in der die Änderungen,
vorgenommen an einer anfänglichen
Kopie eines Objekt-Satzes, bei einer . zweiten Kopie des Objekt-Satzes
vorgenommen werden. Dabei ist keine unmittelbare, reziprokale Aktion
vorhanden, um die Änderungen,
vorgenommen bei der zweiten Kopie des Objekt-Satzes, bei der ersten
Kopie des Objekt-Satzes vorzunehmen. Nichtsdestotrotz kann eine
solche Propagation zu der ersten Kopie des Objekt-Satzes durchgeführt werden. Unter
Angabe dieser einen Art und Weise eines Kopierens überwacht
jedes Replika, wie aktuell eine lokale Kopie eines Objekt-Satzes
für eine
Replika ist, wobei Cursor irr Partner-Änderungs-Log-Dateien beibehalten
werden. Bei dem Abschluss jeder Änderung während einer
Abgleichung ändern
die zwei Replikas bzw. Kopierungen Cursor-Informationen.
-
Eine öffentliche Replizierung bzw.
Kopierung besitzt eine Anzahl von Sicherheitsmerkmalen. Allgemein
müssen
Reconciler in der Lage sein, Objekte zu aktualisieren, um ein Kopieren
vorzunehmen. Der klassen-unabhängige
Reconciler ist ein vertrauensvoller System-Prozess, und besitzt,
demzufolge, eine Annahme zu einem Sicherheitsrisiko. Klassen-spezifische
Reconciler sind allerdings keine vertrauensvollen System-Prozesse,
und besitzen demzufolge ein Sicherheitsproblem. Um dabei zu helfen,
dieses Sicherheitsdilemma zu beseitigen, verwendet die bevorzugte
Ausführungsform
der vorliegenden Erfindung "Proxies".
-
Ein Proxy ist ein Delegations-Ticket,
das ermöglicht,
dass Arbeiter-Prozesse oder entfernte Prozesse gut definierte Operationen
durchführen,
ohne dass sie außergewöhnliche
Privilegien haben. Das Proxy fasst Daten paketmäßig Referenzen der erteilenden
Partei zusammen und leiht sie den Parteien, die nach einem Zugriff
zu entfernten Objekten nachsuchen. Die Partei, die nach einem Zugriff
sucht, kann dann in die Schuhe der erteilenden Partei einsteigen
und auf die notwendigen Objekte zugreifen. Diese Empfehlungen können verschlüsselt sein. 7 zeigt ein Flussdiagramm
der Schritte, die durchgeführt
werden, um ein Proxy in der bevorzugten Ausführungsform der vorliegenden
Erfindung zu verwenden. Während
des Kopierprozesses gibt der entfernte ORA 64 (5) einem lokalen Reconciler 68 ein
Proxy(Schritt 84 in 7) wie
vorstehend erwähnt
ist, umfasst dieses Proxy die geeigneten Empfehlungen und Zugriffsrechte,
die durch den entfernten ORA dem lokalen Reconciler erteilt werden
müssen.
Der Reconciler 68 schickt dann die Empfehlungen zu der
entfernten Stelle (Schritt 86 in 7).
Mit anderen, Worten präsentiert
der Reconciler 68 den Proxy zu der entfernten Stelle. Die
entfernte Stelle validiert dann die Empfehlungen, und falls die
Empfehlungen gültig
sind, erteilt sie einen be- grenzten Zugriff zu den Objekten innerhalb
der entfernten Kopie des Objekt-Satzes; der in Rede steht (Schritt 88). Der
Reconciler 68 erteilt dann einen Zugriff zu den entfernten
Objekten in dem Objekt-Satz (Schritt 80). Der Bereich eines
Zugriffs des lokalen Reconcilers ist allerdings auf nur dasjenige
beschränkt,
das notwendig ist, um eine geeignete Abgleichung durchzuführen. Es
sollte ersichtlich werden, dass die vorliegende Erfindung nicht
auf die ausschließliche
Verwendung von Proxies eingeschränkt
ist. Irgendeine Technik, die einen sicheren Zugriff erteilt, beispielsweise so,
dass jede ORA zu einem Mitglied einer gemeinsamen Zugriffsgruppe
gemacht wird, die Zugriffsrechte erteilt, ist zulässig.
-
Das meiste der vorstehenden Diskussion
hat sich auf ein öffentliches
Kopieren kon zentriert. Ein privates Kopieren ist ähnlich zu
dem öffentlichen
Kopieren, umfasst allerdings eine Anzahl von Unterschieden. In eisern
privaten Kopieren muss die Quelle von Änderungen nicht eine Aufzeichnung
darüber beibehalten,
welche Objekte dupliziert oder geändert wurden. Dabei sind keine
Zustands-Informationen, beibehalten an der Quelle, vorhanden. Die
Quelle ist nicht zum Hinweisen darauf verantwortlich, dass Änderungen
aufgetreten sind. Dementsprechend sind die Ressourcen, die für ein öffentliche
Kopieren erforderlich sind, nicht erforderlich. Diese Charakteristika machen
eine private Replizierung bzw. Kopierung besonders für Fälle geeignet,
bei denen eine manuelle Kontrolle über ein Kopieren erwünscht ist,
oder Fälle,
bei denen die Kosten eines Beibehaltens einer öffentlichen Kopie eines Objekt-Satzes
nicht garantiert sind.
-
Während
die vorliegende Erfindung unter Bezugnahme auf eine bevorzugte Ausfüh rungsform davon
beschrieben worden ist, werden Fachleute auf dem betreffenden Fachgebiet
erkennen, dass die verschiedenen Änderungen in Form und im Detail vorgenommen
werden können,
ohne den Schutzumfang der vorliegenden Erfindung, wie er in den
beigefügten
Ansprüchen
definiert ist, zu verlassen. Zum Beispiel muss die vorliegende Erfindung
nicht in einer objekt-orientierten Umgebung ausgeführt werden und
muss nicht nur in einer Konfiguration eines verteilten Systems ähnlich zu
demjenigen, die in1A dargestellt
ist, praktiziert werden. Weiterhin können Kommunikationsmechanismen,
andere als RPD-Mechanismen, für
entfernte Interaktionen verwendet werden, und Sicherheitsmechanismen,
andere als die Proxies, können
eingesetzt werden.