-
Technisches
Gebiet
-
Die vorliegende Erfindung betrifft
im allgemeinen verteilte Datenspeichersysteme und insbesondere Systeme
und Verfahren, die eine hochverfügbare
Speicherung von Daten unterhalten.
-
Hintergrundinformation
-
Computerbasierte strukturierte Speichersysteme,
wie bspw. Computerdateisysteme und Datenbanksysteme, waren bemerkenswert
erfolgreich dabei, Nutzern schnellen und leichten Zugang zu erheblichen
Datenmengen bereitzustellen. Die Wichtigkeit dieser strukturierten
Speichersysteme im heutigen geschäftlichen Verkehr ist schwerlich überzubewerten.
Beispielsweise haben strukturierte Speichersysteme Unternehmen ermöglicht,
enorme Speicher von dauerhaften Daten zu erzeugen und zu erhalten,
die das Unternehmen über
die Jahre modifizieren und aktualisieren kann. Für viele Unternehmen sind diese dauerhafte
Daten ein wertvolles Kapitalvermögen, das
jeden Tag verwendet wird, um die Kerntätigkeiten des Unternehmens
durchzuführen.
Die Daten können
bspw. Computerdateien (bspw. Quellcode, Textverarbeitungsdokumente
usw.), Datenbankaufzeichnungen und Informationen (bspw. Informationen
zu Mitarbeitern, Kunden und/oder Produkten), und/oder Webseiten
sein. Solche Daten müssen „hochverfügbar" sein, das heißt, die
Daten müssen
trotz Systemhard ware- oder Softwarefehlern verfügbar sein, da sie bei tagtäglichen
Entscheidungsfindungsprozessen verwendet werden.
-
Bisherige Bemühungen, eine hohe Verfügbarkeit
oder Fehlertoleranz bereitzustellen umfaßten sowohl Hardwaretechniken,
wie bspw. ein Bereitstellen redundanter Systeme, als auch Softwareansätze, wie
bspw. eine Technologie mit einem redundanten Feld von unabhängigen Platten
(RAID) und ein Gruppieren bzw. Clustern. Jede dieser Bemühungen hat seine
eigenen eindeutigen Nachteile.
-
Redundante Systeme sind durch doppelte oder
dreifache Redundanz charakterisiert. Diese Typen von Systemen stellen
mehr als eine vollständige Maschine
bereit, um die Aufgabe einer Maschine zu erfüllen. Jede Maschine führt dieselben
Operationen parallel durch. Wenn eine Maschine ausfällt oder
einen Fehler macht, stellt die zusätzliche Maschine das korrekte
Ergebnis bereit. Solche Systeme sind, obwohl sie Systemfehlern sehr
tolerant gegenüberstehen, äußerst teuer.
Folglich müssen
mehrere Netzwerke von Maschinen bereitgestellt werden, um jedes
Netzwerk zu implementieren.
-
Ein ähnlicher fehlertoleranter Ansatz
für eine Speicherung
ist RAID. Die RAID-Technologie kann als eine Plattenspiegelung (ein
sogenanntes RAID I) oder als ein Plattenstreifen mit Parität (ein sogenanntes
RAID V) implementiert sein. Eine Plattenspiegelung bietet eine Speicherung
mit hoher Fehlertoleranz, sie ist aber sehr teuer, da mehrere Platten, üblicherweise
zwei, bereitgestellt sein müssen,
um die Daten auf einer Platte zu speichern. Plattenstreifen mit
Parität
hat eine geringe Performance für
intensive Schreibanwendungen, da jedes Mal, wenn Daten zu dem Feld
von Platten geschrieben werden, ein Paritätsblock berechnet werden muß. Ein Plattenstreifen bietet
eine feste N + 1 Redundanz und erfährt eine zusätzliche
Performanceverringerung nach dem ersten Fehler, da der fehlende
Block (oder Blöcke)
jedes Mal, wenn eine Leseoperation durchgeführt wird, wieder berechnet
werden muß.
Schließlich
haben solche festen N + 1 Redundanzschemen keine Möglichkeit
sich selbst „zu
heilen", das bedeutet,
daß nach
einem Fehler das System nicht länger
N + 1 redundant ist.
-
Andere Softwareansätze zur
Verbesserung der Zuverlässigkeit
und ein Arbeitsablauf zur zentralisierten strukturierten Speicherung
von Netzwerksystemen haben üblicherweise
umfaßt:
(1) ein statisches Abbilden der Daten zu einem oder mehreren Servern
und zugeordneten Platten (manchmal als ein „nichts gemeinsam genutztes" Gruppieren bezeichnet),
(2) ein Speichern der Daten in einem gemeinsam genutzten Datenspeicher,
wie bspw. eine gemeinsam genutzte Platte (manchmal als ein "alles gemeinsam genutztes" Gruppieren bezeichnet)
und (3) ein Datenbanknachbilden.
-
Systeme, die das erste Verfahren
verwenden, verteilen Teile des Datenspeichers über eine Mehrzahl von Servern
und zugeordneten Platten. Jeder der Server unterhält einen
Teil des strukturierten Speichers der Daten, sowie jeder Server
optional einen zugeordneten Teil einer Verzeichnisstruktur unterhält, die
die Teile der innerhalb des bestimmten Servers gespeicherten Daten
beschreibt. Diese Systeme schützen
vor einem Datenverlust durch statisches Verteilen der Speicherng
von Daten über
eine Mehrzahl von Servern, so daß der Ausfall irgendeines Servers
nicht zu einem Verlust von nur einem Teil der gesamten Daten führt. Obwohl
bekannte gruppierte Datenbanktechnologien einen Betrieb mit höherer Fehlertoleranz
bieten können,
indem dieses gegen einen Datenverlust schützt und eine Unterstützung für Zwei-Pfad-Platten bietet, beruhen
die bekannten Systeme stets auf einer statischen Zuordnung der Daten über verschiedene
Server. Da Daten nicht dynamisch zwischen Servern zugeordnet werden,
werden (1) Systemressourcen nicht basierend auf einer Systemverwendung
zugeordnet, was zu einer Unterausnutzung dieser Ressourcen führt, ist
(2) eine skalierbare Performance begrenzt, da neue Server bereitgestellt
werden müssen,
wenn der Datensatz anwächst
oder wenn ein bestimmter Server Anfragen nicht bedienen kann, die
zu dessen Teil des Datensatzes gemacht werden und erfordert (3)
eine solche statische Zuordnung immer zumindest einen der Server,
der die Information speichert, um zu bestehen, um die Daten zu erhalten.
Ebenso bedarf ein Ausfall eines Servers einen zweiten Server, um
die Daten zu bedienen, die zuvor durch den ausgefallenen Server
bedient wurden, was die Systemperformance verringert.
-
Systeme, die das zweite Verfahren
einsetzen, speichern die Daten, die in einem gemeinsam genutzten
Datenspeicher abgelegt sind, wie bspw. in einer gemeinsam genutzten
Platte. Die gemeinsam benutzten Platten können zwischen einer Untermenge
von Systemknoten oder zwischen allen Knoten des Systems aufgeteilt
bzw. gemeinsam genutzt werden. Jeder Knoten in dem System aktualisiert
kontinuierlich den zentralen Datenspeicher mit seinem Teil des strukturierten
Speichers. Beispielsweise exportiert in einem Datenbanksystem jeder
Knoten Tabellen, die dieser gegenwärtig für den Datenspeicher verwendet.
Wenngleich dieses Verfahren die Probleme eines Lastausgleichs zu
dem zentralen Datenspeicher weiterreicht, hat es zwei hauptsächliche Nachteile.
Erstens ist der Durchsatz aufgrund des erhöhten Overheads verringert,
der mit einem Sicherstellen der Kohärenz des zentralisierten Datenspeichers
einhergeht. Zweitens ist ein Abschließen ineffizient, da gesamte
Seiten gesperrt sind, wenn ein Knoten auf irgendeinen Teil der Seite
zugreift. Folglich können
Knoten eine Auseinandersetzung um einen Speicher erfahren, selbst
wenn kein wirklicher Konflikt vorliegt.
-
Vergleichbar mit einem Plattenspiegeln,
aber auf einem höheren
Niveau, sind auf einer Datenbanknachbildung basierende Techniken.
Diese Systeme können
ein Nachbilden der Datenspeicher bereitstellen oder der Transaktionen,
die auf den Datenspeichern durchgeführt werden. Folglich gehen
diese Systeme beim Schützen
vor Datenverlust weiter, indem sie eine statische Redundanz innerhalb
des strukturierten Speichersystems bieten. Solche Systeme haben
jedoch dieselben Nachteile wie andere statische zuvor beschriebene
Techniken. Außerdem hat
die sogenannte „transaktionssichere" Nachbildungstechnik
den Nachteil, daß sie
Skalierbarkeitsprobleme hat, wenn die Anzahl von unterhaltenen Tabellen
ansteigt.
-
Das Dokument
US 5 423 037 beschreibt einen zuverlässigen verteilten
Datenbankserver, der mehrere dauerhafte Kopien von Datenbankfragmenten
auf einer Mehrzahl von Netzwerkknoten unterhält.
-
Gemäß der vorliegenden Erfindung
ist ein System für
die verteilte Speicherung von Daten vorgesehen, mit:
- a) einer Mehrzahl von Knoten, die durch ein Netzwerk miteinander
verbunden sind, an das die Knoten angeschlossen sind, wobei die
Knoten periodisch Anschlußmöglichkeitinformationen
austauschen, die überwacht
werden, um einen Fehler eines Knotens zu erfassen,
- b) einem verteilten gemeinsam genutzten Speichersystem, das
eine verteilte Speicherung über die
Knoten bereitstellt,
- c) einer Instanz eines Datenkontroll- bzw. Datensteuerprogramms,
das auf jedem Knoten gespeichert ist, um Daten zu manipulieren,
wobei mehrere verteilte Instanzen des Daten kontrollprogramms vorliegen,
wobei jede Instanz des Datenkontrollprogramms an das gemeinsam genutzte Speichersystem
angeschlossen und betrieben ist, um das gemeinsam genutzte Speichersystem
als eine Speichervorrichtung mit darin enthaltenen Daten zu nutzen,
wobei das gemeinsam genutzte Speichersystem mehrere beständige Kopien
von Daten erhält,
die unter mehr als einem Netzwerkknoten verteilt sind, und
- d) Mitteln zum Bestimmen eines Teils der Daten, für den ein
erfaßter
fehlerhafter Knoten verantwortlich war, und zum Speichern einer
Kopie des Teils der Daten, für
den der fehlerhafte Knoten verantwortlich war, in einem beständigen Speicher,
der durch einen fortbestehenden Knoten betrieben ist,
wobei
jeder Knoten einen gemeinsam genutzten adressierbaren Speicherraum
des gemeinsam genutzten Speichersystems nutzt und aufweist:
- (e) eine lokale flüchtige
Speichervorrichtung, die mit dem Knoten gekoppelt ist und eine flüchtige Speicherung
bereitstellt,
- (f) eine lokale beständige
Speichervorrichtung, die mit dem Knoten gekoppelt ist und eine beständige Speicherung
bereitstellt, und
- (g) ein gemeinsam genutztes Speichersubsystem zum Abbilden bzw.
Zuordnen eines Teils des gemeinsam genutzten adressierbaren Speicherraums
auf zumindest einen Teil des beständigen und des flüchtigen
Speichers, um dadurch eine adressierbare dauerhafte bzw. beständige und flüchtige Speicherung
bereitzustellen, auf die durch jeden der Mehrzahl von Knoten zugegriffen werden
kann, und wobei das geteilte Speichersubsystem aufweist:
- (h) einen Verteiler zum Abbilden von Teilen des gemeinsam genutzten
adressierbaren Speicherraums über
die Vielzahl von lokalen beständigen und
flüchtigen
Speichervorrichtungen, um den gemeinsam genutzten adressierbaren
Speicherraum über
die Mehrzahl von lokalen beständigen und
flüchtigen
Speichervorrichtungen zu verteilen,
- (i) einen Verzeichnisverwalter, der mit zumindest einem Verzeichnis
zum Nachverfolgen der abgebildeten Teile des gemeinsam genutzten
adressierbaren Speicherraums verbunden ist, um Informationen bereitzustellen,
die repräsentieren,
welche der lokalen beständigen
und flüchtigen
Speichervorrichtungen welche Teile des gemeinsam genutzten adressierbaren
Speicherraums darauf abgebildet haben.
-
Ausführungsformen der vorliegenden
Erfindung stellen Datenspeichersysteme bereit, die zuverlässiger sind
und einen Betrieb mit größerer Fehlertoleranz
ermöglichen
als bestehende Datenspeichersysteme, die eine Performanceverringerung
haben, wenn ein Fehler auftritt.
-
Die neuen hierin beschriebenen Systeme
erreichen eine selbstheilende N + 1 Redundanz für Plattenspeicher, RAM-Speicher und Speicher
für strukturierte
Daten durch Verteilen von Systemdaten und Datenstrukturen durch
einen global adressierbaren Speicherraum, wobei ein Teil von diesem
durch einen oder mehrere unterschiedliche Knoten auf einem Netzwerk
bedient wird. Da jeder Knoten lokal Systemseiten bedient, auf die
dieser gegenwärtig
zugreift, hat das System die Fähigkeit,
dynamisch Daten als Reaktion auf Netzwerkaktivitätsniveaus zu bewegen und auf
Muster zuzugreifen, um eine Performance zu optimieren und Knotenzugriffszeiten
zu verringern. Das System bietet weiterhin eine ver teilte Steuerung
für eine
Mehrzahl von unterschiedlichen Typen von strukturierten Speichersystemen,
wie bspw. Dateisysteme, Datenbanksysteme und Systeme, die Webseiten
speichern, gemeinsam nutzen und zu anfordernden Knoten liefern.
-
Das System kann weiterhin Fehler
beheben, die während
eines Betriebs auftreten, da Systemdaten über Netzwerkknoten verteilt
sind. Geeignete Datenstrukturen und Betätigungspolicen sind bereitgestellt,
die dem System erlauben zu identifizieren, wenn ein Knoten beschädigt wurde
oder Informationen fehlen. Die Informationen können lokalisiert oder wiedererzeugt
werden und zu anderen Knoten auf dem Netzwerk erneut verteilt werden,
um das System zu einer Redundanz von N + 1 zurückzubringen. Optional kann
ein gemeinsam genutztes Speichersystem verwendet werden, wie bspw.
ein verteiltes gemeinsames Speichersystem (DSM), das die Speicherung
von Daten über
einige oder alle der Speichervorrichtungen verteilt, die mit einem
Netzwerk verbunden sind. Speichervorrichtungen, die mit dem Netzwerk
verbunden werden können,
umfassen Festplattentreiber, Bandtreiber, Floppy-Disk-Treiber, CD-ROM-Treiber,
Treiber für
optische Platten, RAM-Speicherbausteine oder ROM-Speicherbausteine.
-
Gemäß einem Aspekt betrifft die
Erfindung ein Verfahren zum Fortführen eines Betriebs nach einem
Knotenfehler in einem System zur Bereitstellung einer verteilten
Steuerung über
Daten. Eine Anzahl von Knoten ist über ein Netzwerk miteinander
verbunden und die Knoten tauschen periodisch Verbindungsinformationen
aus. Auf jedem Knoten ist eine Instanz eines Datensteuerprogramms
zum Manipulieren von Daten gespeichert. Folglich existieren mehrere
verteilte Instanzen von Datensteuerprogrammen in dem Netzwerk. Jede
Instanz des Datensteuerprogramms hat eine Schnittstelle zu einem verteilten
gemeinsam genutzten Speichersystem, das eine verteilte Speicherung über die
miteinander verbundenen Knoten bereitstellt und das eine adressierbare
dauerhafte Speicherung von Daten bereitstellt. Jede Instanz des
Datensteuerprogramms wird betrieben, um das gemeinsam genutzte Speichersystem
als eine Speichervorrichtung mit darin enthaltenen Daten zu verwenden.
Das gemeinsam genutzte Speichersystem koordiniert den Zugriff auf
die Daten, um eine verteilte Steuerung über die Daten zur Verfügung zu
stellen. Ausgetauschte Verbindungsinformationen werden verwendet,
um den Ausfall bzw. Fehler eines Knotens zu bestimmen. Wenn ein
Knotenfehler erkannt ist, wird der Teil der Daten, der für den ausgefallenen
Knoten verantwortlich war, bestimmt.
-
Gemäß einem weiteren Aspekt betrifft
die Erfindung ein Verfahren zum Fortführen eines Betriebs nachdem
ein Knotenfehler in einem System zur Bereitstellung einer verteilten
Steuerung über
Daten aufgetreten ist. Eine Anzahl von Knoten ist über ein Netzwerk
miteinander verbunden und die Knoten tauschen periodisch Verbindungsinformationen
aus. Bei jedem Knoten ist eine Instanz eines Datensteuerprogramms
zum Manipulieren von Daten gespeichert. Folglich existieren mehrere
verteilte Instanzen des Datensteuerprogramms in dem Netzwerk. Jede Instanz
des Datensteuerprogramms hat eine Schnittstelle zu einem global
adressierbaren Datenspeicher, der eine verteilte Speicherung über die
miteinander verbundenen Knoten und eine adressierbare dauerhafte
Speicherung von Daten bereitstellt. Jede Instanz des Datensteuerprogramms
wird betrieben, um den global adressierbaren Datenspeicher als eine Speichervorrichtung
mit darin enthaltenen Daten zu betreiben. Der global adressierbare
Datenspeicher koordiniert einen Zugriff auf die Daten, um eine verteilte
Steuerung über
die Daten bereitzustellen. Ausgetauschte Verbindungsinformationen
werden verwendet, um den Ausfall eines Knotens zu bestimmen. Wenn
ein Knotenausfall erkannt wurde, wird der Teil der Daten, der für den ausgefallenen
Knoten zuständig
war, bestimmt.
-
Das Vorstehende und andere Aufgaben,
Aspekte, Merkmale und Vorteile der Erfindung werden anhand der folgenden
Beschreibung und der Ansprüche
deutlicher werden.
-
Kurze Beschreibung
der Zeichnung
-
In der Zeichnung bezeichnen gleiche
Zeichen im allgemeinen gleiche Teile in unterschiedlichen Ansichten.
Ebenso sind die Darstellungen nicht notwendigerweise maßstabsgerecht.
Die Betonung liegt anstelle dessen üblicherweise auf einer Darstellung
der Prinzipien der Erfindung.
-
1 zeigt
ein konzeptuelles Blockdiagramm eines erfindungsgemäßen Speichersystems für strukturierte
Daten in einem verteilten adressierbaren gemeinsam genutzten Speicher.
-
2 zeigt
eine schematische Ansicht einer Ausführungsform zum logischen Organisieren
von Netzwerkknoten.
-
3 zeigt
ein Diagramm einer möglichen Ausführungsform
des Systems aus 1,
nämlich ein
Dateisystem mit einem verteilten adressierbaren gemeinsam genutzten
Speicher, das eine Speicherung für
Computerdateien, wie bspw. Quellcodedateien, Textverarbeitungsdokumentdateien
usw., bereitstellt.
-
4 zeigt
eine grafische Repräsentation der
Organisation von Verzeichniseinträgen und zugeordneten Dateibezeichnungen
(ebenfalls als „I-Knoten" bzw. „Einknoten" bekannt), die für eine Verwendung
mit dem Dateisystem aus 3 geeignet
sind.
-
5 zeigt
ein Diagramm eines Einknotens, der für eine Verwendung mit dem Dateisystem
aus 3 geeignet ist.
-
6 zeigt
ein Flußdiagramm
der durchzuführenden
Schritte, um Metadaten eines Datensystems zu aktualisieren.
-
7 zeigt
ein Computernetzwerk mit einem verteilten gemeinsam genutzten Speicher.
-
8 zeigt
ein funktionelles Blockdiagramm, das genauer ein verteiltes gemeinsam
genutztes Speichercomputernetzwerk des in 7 dargestellten Typs verdeutlicht.
-
9 zeigt
genauer ein gemeinsam genutztes Speichersubsystem, das für einen
Einsatz mit dem in 8 wiedergegebenen
Netzwerk geeignet ist.
-
10 zeigt
ein funktionelles Blockdiagramm eines erfindungsgemäßen gemeinsam
genutzten Speichersubsystems.
-
11 zeigt
eine Verzeichnisseite, die durch ein gemeinsam genutztes Speichersubsystem
des in 10 gezeigten
Typs bereitgestellt werden kann.
-
12 zeigt
ein Verzeichnis, das innerhalb eines gemeinsam genutzten Speichers
verteilt und aus Verzeichnisseiten des in 11 gezeigten Typs gebildet sein kann.
-
13 zeigt
in einem funktionellen Blockdiagramm ein System, das ein Verzeichnis
gemäß 12 zum Verfolgen von Teilen
eines verteilten gemeinsam genutzten Speichers verwendet.
-
Beschreibung
-
Ein Netzwerksystem 10 gemäß der Erfindung
umfaßt
eine Mehrzahl von Netzwerkknoten, die auf einen Speicherraum zugreifen
können,
der einen strukturierten Speicher von Daten speichert, wie bspw.
ein strukturiertes Dateisystem oder eine Datenbank. Jeder der Knoten
umfaßt
zumindest ein Datensteuerprogramm, das auf den strukturierten Speicher
von Daten zugreift und diesen verwaltet. Der strukturierte Speicher
von Daten kann in einem adressierbaren gemeinsam genutzten Speicher
gespeichert sein, oder der strukturierte Speicher kann auf eine
herkömmlichere
Art gespeichert sein. Beispielsweise kann jeder Knoten für ein Speichern
eines bestimmten Elements oder von Elementen des strukturierten
Speichers der Daten verantwortlich sein. Bei einer solchen Ausführungsform
kann das Datensteuerprogramm auf einen gewünschten Teil des strukturierten
Datenspeichers zugreifen, indem ein global einzigartiger Identifikator
bzw. eine global eindeutige Kennung verwendet wird. Das darunter liegende
System würde
dem Identifikator in ein oder mehrere Kommandos zum Zugreifen auf
die gewünschten
Daten übersetzen,
einschließlich
Netzwerkübertragungskommandos.
Bei einer weiteren Ausführungsform
sind die strukturierten Daten in einem adressierbaren gemeinsam
genutzten Speicherraum abgelegt, was ermöglicht, daß die Knoten transparent auf
Teile des strukturierten Speichers zugreifen, indem Standardspeicherzugriffkommandos verwendet
werden.
-
Das System 10 kann ein Dateisystem,
ein Datenbanksystem, ein Webserver, ein Objektspeichersystem oder
irgendein an deres strukturiertes Speichersystem sein, das einen
organisierten Datensatz erhält.
Hierin bedeutet der Ausdruck „Webserver" irgendein Prozessor,
der Datenobjekte überträgt (wie
bspw. Aktiv-X-Objekte), Anwendungen (wie bspw. Java-Applets) oder Dateien
(wie bspw. HTML-Dateien), zu einem Antragssteller über Webprotokolle
(bspw. HTTP oder FTP) überträgt. Bei
einer umfaßten
Ausführungsform
ist das System 10 ein Dateisystem, das verschiedene Computerdateien unterhält. Dies
ist jedoch nur eine Ausführungsform der
Erfindung, die zur Erläuterung
vorgestellt wird. Die Erfindung kann eingesetzt werden, um irgendeinen
von einer Mehrzahl von strukturierten Datensystemen bereitzustellen
(bspw. Datenbanksysteme, Webseitensysteme, Intranet usw.). Die Erfindung
ist nicht auf ein Dateisystem oder andere bestimmte Ausführungsformen,
die hierin beschrieben sind, begrenzt.
-
1 zeigt
ein erfindungsgemäßes Netzwerksystem 10,
das eine Mehrzahl von Netzwerknoten 12a–12d umfaßt und einen
adressierbaren gemeinsam genutzten Speicherraum 20, der
einen Teil bzw. Abschnitt 22 für ein Speichern eines strukturierten
Datenspeichers 28 hat. Jeder der Knoten 12a–12d kann
einige Subelemente aufweisen. Beispielsweise umfaßt ein Knoten 12a einen
Prozessor 30a, ein Datensteuerprogramm 32a und
ein gemeinsam genutztes Speichersubsystem 34a. Bei der
beschriebenen Ausführungsform
weisen zwei der Knoten 12a und 12d Überwachungen
auf, die Anzeigen 40 und 42 bereitstellen, die
den strukturierten Datenspeicher 28 innerhalb des adressierbaren
gemeinsam genutzten Speicherraums 20 wiedergeben. Der adressierbare
gemeinsam genutzte Speicherraum 20 verbindet jeden der
Netzwerkknoten 12a–12d miteinander
und stellt jedem Knoten 12a–12d einen Zugriff
auf den strukturierten Datenspeicher 28, der innerhalb
des adressierbaren gemeinsam genutzten Speicherraums 20 enthalten
ist, zur Verfügung.
-
Ein erfindungsgemäßes System 10 kann
unter anderem jedem Netzwerkknoten 12a–12d eine gemeinsam
genutzte Kontrolle bzw. Steuerung über den strukturierten Datenspeicher 28 bereitstellen
und daher kann das System 10 eine Steuerung des Datenspeichers über die
Knoten des Netzwerks verteilen. Hierzu umfaßt jeder Knoten des Systems 10,
wie bspw. der Knoten 12a, ein Datensteuerprogramm 32a,
das eine Schnittstelle zu einem gemeinsam genutzten Speichersubsystem 34a aufweist.
Das Datensteuerprogramm 32a kann als ein strukturiertes Speichersystem
arbeiten, wie bspw. ein Dateisystem, das ausgelegt ist, einen strukturierten
Datenspeicher zu erhalten und das gemeinsam genutzte Speichersubsystem
als eine adressierbare Speichervorrichtung zu betreiben, die einen
strukturierten Datenspeicher speichern kann. In Richtung des Datensteuerprogramms 32a kann
das gemeinsam genutzte Speichersubsystem 34a auf Daten
innerhalb des adressierbaren gemeinsam genutzten Speicherraums 20 zugreifen
und diese speichern. Diese kooperierenden Elemente bieten ein strukturiertes
Speichersystem, das eine verteilte Architektur hat und dadurch eine
größere Fehlertoleranz,
Zuverlässigkeit
und Flexibilität
als bekannte strukturierte Speichersysteme aufweist, die auf einer
zentralisierten Steuerung und zentralisierten Servern beruhen. Folglich
kann die Erfindung Computernetzwerke bereitstellen mit verteilt gesteuerten
und leicht skalierten Dateisystemen, Datenbanksystemen, Webseitensystemen,
Aufgabenspeichern, Datenerfassungssystemen oder irgendwelchen anderen
strukturierten Speichersystemen.
-
Es ist notwendig, eine Liste von
allen in dem Netzwerk (12a–12d in 1) vorhandenen Knoten zu
unterhalten und Verbindungsinformationen für die Knoten, um verschiedene
Systemfunktionalitäten
bereitzustellen. Bei einer Ausführungsform
wird die Knoteninformation verwendet, um eine Fehlerbehebung bereitzustellen,
die nachfolgend detaillierter beschrieben wird.
-
Irgendeine Datenstruktur zum Erhalten
einer Liste von Knoten kann verwendet werden, solange die Liste
verhältnismäßig kompakt
bleibt. Es ist ebenfalls wünschenswert,
daß die
Liste der Netzwerkknoten unabhängig
von einer Netzwerktechnologie ist, was bedeutet, daß Netzwerkadressen
nicht direkt verwendet werden sollten. Bei einer Ausführungsform
wird ein eindeutiger Identifikationscode jedem Knoten 12a– 12d in
dem Netzwerk zugewiesen. Der Identifikationscode, der jedem Knoten
zugeordnet ist, sollte nicht geändert
werden.
-
Ein Netzwerk, wie es in der Beschreibung beschrieben
ist, kann viele Tausend Knoten aufweisen, die örtlich verteilt oder auf bestimmten
Netzwerken angeordnet sind. Die Unterhaltung einer flachen bzw.
zweidimensionalen Liste von Knoten für eine solche Netzwerktopologie
führt zu
einem extremen Betrag eines Listenunterhaltungsoverhead. Daher ist es
im allgemeinen wünschenswert,
irgendeine Struktur der Knotenliste hinzuzufügen, um den Overhead bei der
Wartung zu reduzieren.
-
Bei der Ausführungsform in 2 sind Knoten 12a–12e in
Gruppen von Knoten 52, 54 zusammengefaßt, die
definiert sein können,
um verschiedene Netzwerktopologien wiederzugeben. Gruppen von Knoten
können
ebenfalls gruppiert sein. Dies führt
zu einer Baumstrukturhierarchie von Knoten und Gruppen. Es gibt
eine „Wurzel"-Gruppe 56,
die als Elemente jede Gruppe und jeden Knoten, die in dem Netzwerk
vorliegen, umfaßt.
Weitere Nutzeffekte können
durch Begrenzen der Gruppengröße auf eine
vorgegebene Anzahl von Knoten erreicht werden.
-
Bei der Ausführungsform, die in 2 beschrieben ist, ist
vorgesehen, daß sich
eine Gruppenmitgliedschaft unregelmäßig, wenn überhaupt ändert. Im allgemeinen ist,
wenn ein Knoten 12a–12e in ein
Netzwerk eingeführt
wird, dieser in eine bestimmte Gruppe 52, 54 konfiguriert
und der Verbund der Gruppe des Knotens sollte sich nur ändern als
ein Ergebnis eines durch den Netzwerkverwalter erbrachten Befehls.
-
Beispielsweise sind für Ausführungsformen, bei
denen Knoten gruppiert sind und die Anzahl der Knoten, die zu irgendeiner
Gruppe gehören
begrenzt ist, können
zwei Formen der Identifikation jedem Knoten zugeordnet zu werden.
Eine kurze Form der Identifikation kann zugeordnet sein, die Gruppeninformationen
codiert und daher sich ändern
kann, jedoch unregelmäßig, mit
einer Netzwerktopologie oder einer logischen Organisation. Es kann
ebenso eine längere
Form der Identifikation jedem Knoten zugeordnet sein, die garantiert
ungeändert
bleibt. Die letztere Form wird vorzugsweise verwendet, um auf jeden
Knoten 12a–12e in
dem Netzwerk zu verweisen. Beispielsweise kann eine Gruppe von Knoten 52, 54 auf 64 Elemente
begrenzt sein, was 6 Bits erfordert, um die Identifikationsinformation
für jeden Knoten
zu codieren. Folglich würden
12 Bits dem System erlauben, jeden Knoten in dem Netzwerk eindeutig
zu identifizieren, wenn mehr als eine Gruppe von Knoten existiert,
bis zu einem Maximum von 64 Gruppen. Für Netzwerke, in denen mehr
als 64 Gruppen von Knoten existieren, müssen Gruppen von Knoten selbst
gruppiert sein und 18 Bits wären
erforderlich, um jeden Knoten in dem System eindeutig zu identifizieren.
-
Jeder Knoten 12a–12e kann
auch einem dauerhaften Identifikationscode zugeordnet sein, der unveränderlich
für die
Lebensdauer des Knotens ist. Dauerhafte Identifikationscodes können unter
Verwendung einer globalen Adreßkomponente konstruiert
werden, um diese im Raum einzigartig bzw. eindeutig zu machen und
ein Datum oder eine Zeitkomponente, um diese in der Zeit einzigartig
zu machen. Daher besteht bei dieser Ausführungsform der dauerhafte Identifikationscode
eines Knotens sowohl aus einer Adresse als auch einem Zeitstempel,
um dessen Eindeutigkeit zu sichern.
-
Wie in 1 zu sehen ist, unterhält das System 10 der
Erfindung innerhalb des adressierbaren gemeinsam genutzten Speicherraums 20 einen strukturierten
Datenspeicher 28. Jeder der Knoten 12a–12d kann
auf den adressierbaren gemeinsam genutzten Speicherraum 20 durch
die gemeinsam genutzten Speichersubsysteme 34a–34d zugreifen. Jedes
der gemeinsam genutzten Speichersubsysteme 34a–34d stellt
dessen Knoten mit einem Zugriff auf die adressierbare gemeinsam
genutzte Speicherstelle bzw. den adressierbaren gemeinsam genutzten
Speicherraum 20. Die gemeinsam genutzten Speichersubsysteme 34a–34d koordinieren
jede der Speicherzugriffsoperationen des jeweiligen Knotens, um
einen Zugriff auf gewünschte
Daten bereitzustellen und eine Datenkohärenz innerhalb des adressierbaren
gemeinsam genutzten Speicherraums 20 zu bewahren. Dies
ermöglicht
den miteinander verbundenen Knoten 12a–12d, den adressierbaren
gemeinsam genutzten Speicherraum 20 als einen Raum zum
Speichern und Wiedergewinnen bzw. Suchen von Daten zu nutzen. Zumindest
ein Teil des adressierbaren gemeinsam genutzten Speicherraums 20 wird
durch ein physikalisches Speichersystem unterstützt, das eine dauerhafte Speicherung
von Daten bietet. Beispielsweise kann ein Teil des adressierbaren
gemeinsam genutzten Speicherraums 20 einer oder mehreren
Festplattentreibern zugeordnet sein oder auf diese abgebildet sein,
die auf dem Netzwerk sind, oder mit einem oder mehreren der Netzwerkknoten 12a–12d als
lokale Festplattenspeicher für diese
konkreten Knoten zugeordnet sein. Folglich zeigt 1, daß erfindungsgemäße Systeme
ge meinsam genutzte Speichersubsysteme haben, die den Netzwerknoten
einen Zugriff auf einen adressierbaren gemeinsam genutzten Speicherraum
zur Verfügung
stellen, wobei zumindest ein Teil der Stelle bzw. des Raums zumindest
einem Teil von einer oder mehreren der dauerhaften Ablagespeichervorrichtungen
(bspw. Festplatten) zugeordnet ist, um den Knoten zu erlauben, adressierbar
Daten zu speichern und wiederzufinden von und zu der einen oder den
mehreren dauerhaften Ablagespeichervorrichtungen. Eine bevorzugte
Ausführungsform
einer solchen adressierbaren gemeinsam genutzten Speicherraum ist
in der US-Patentanmeldung mit der Seriennummer 08/754 481, die am
22. November 1996 eingereicht wurde, beschrieben.
-
Daher kann bei einer Verwirklichung
der vorliegenden Erfindung jeder Knoten 12a–12d seine
jeweiligen gemeinsam genutzten Speichersubsysteme als eine Speichervorrichtung
verwenden, die eine dauerhafte Datenspeicherung bietet.
-
Jedes der Datensteuerprogramme 32a–32d ist
ein Softwaremodul, das die jeweiligen gemeinsam genutzten Speichersubsysteme 34a–34d auf
eine Weise koppelt, die ähnlich
einer Schnittstelle zwischen einem konventionellen Datenspeicherprogramm
und einer lokalen Speichervorrichtung arbeitet. Beispielsweise kann
das Datensteuerprogramm 32a Daten zu dem gemeinsam genutzten
Speichersubsystem 34a leiten und Daten von diesem sammeln.
Da die gemeinsam genutzten Speichersubsysteme die Speicherzugriffe
auf den adressierbaren gemeinsam genutzten Speicherraum 20 koordinieren, ist
jedes der Datensteuerprogramme davon befreit, seine Aktivitäten mit
den anderen Datensteuerprogrammen auf dem Netzwerk zu verwalten
und zu koordinieren oder davon, seine Aktivitäten mit einem oder mehreren
Hauptservern zu verwalten und zu koordinieren. Folglich kann jedes
der Datensteuerprogramme 32a–32d eine gleichrangige
Inkarnation (d. h. eine In stanz) sein, die auf einem unterschiedlichen der
Netzwerknoten 12a–12d abgelegt
ist und kann das jeweilige gemeinsam genutzte Speichersubsystem 34a–34d als
eine lokale Speichervorrichtung, wie bspw. eine lokale Festplatte,
behandeln.
-
Eines oder mehrere der Datensteuerprogramme 32a–32d kann
bzw. können
eine grafische Nutzerschnittstelle 42 bereitstellen, die
grafisch den strukturierten Datenspeicher 28 darstellt,
der innerhalb des adressierbaren gemeinsam genutzten Speicherraums 20 enthalten
ist. Die grafische Nutzerschnittstelle 42 erlaubt einem
Nutzer bei einem Knoten, bspw. bei dem Knoten 12a, Datenobjekte
grafisch in den strukturierten Datenspeicher 28 einzusetzen.
Dazu kann das Datensteuerprogramm 32a einen Befehlssatz
erzeugen, der einen Datenstrom zu dem gemeinsam genutzten Speichersubsystem 34a vorlegt
und das gemeinsam genutzte Speichersubsystem 34a wird den
Datenstrom verwenden, um ein Objekt innerhalb des strukturierten
Datenspeichers 28 zu speichern. Ähnlich können die anderen gemeinsam
genutzten Speichersubsysteme 34b–34d Informationen
zu ihren jeweiligen Knoten bereitstellen, die bezeichnend für diese Änderung
des strukturierten Datenspeichers 28 ist. Folglich spiegelt
der Knoten (der eine grafische Nutzerschnittstelle 40 umfaßt), wie
in 1 für den Knoten 12c lediglich
zur Vereinfachung gezeigt ist, die Änderung des strukturierten
Datenspeichers 28 wider, der durch das Datensteuerprogramm 32a des
Knotens 12a bewirkt ist. Insbesondere kann die grafische
Nutzerschnittstelle 40 des Knotens 12c einem Nutzer
anzeigen, daß ein Objekt
innerhalb des strukturierten Datenspeichers 28 plaziert
ist. Beispielsweise kann der adressierbare gemeinsam genutzte Speicherraum 20 auch
die Datenobjekte 50a– 50c enthalten,
die in den strukturierten Datenspeicher 28 plaziert sein
können,
um Teil des strukturierten Datenspeichers zu werden. Wie dargestellt
ist, kann ein Systemnutzer bei dem Knoten 12a ein Objekt 50a leiten,
um dieses an einem gesetzten Ort innerhalb des Datenspeichers 28 einzusetzen.
Das Datensteuerprogramm 32a weist dann das gemeinsam genutzte
Speichersubsystem 34a an, das Objekt 50a in den
Datenspeicher 28 an dem geeigneten Ort zu plazieren. Darüber hinaus
erfaßt
das gemeinsam genutzte Speichersubsystem 34c auf dem Knoten 12c die Änderung
innerhalb des Datenspeichers 28 und spiegelt diese Änderung
innerhalb der grafischen Nutzerschnittstelle 40 wider.
-
Wie in 3 gezeigt ist, ist ein strukturiertes Dateisystem 60 eine
bestimmte Ausführungsform
gemäß der Erfindung,
die die Größen bzw.
Eigenschaften des adressierbaren gemeinsam genutzten Speicherraums 20 verwendet,
um zu implementieren, was für
alle Netzwerkknoten als ein kohärentes
einzelnes Dateisystem erscheint, wenn es in der Tat sich über alle
Netzwerkknoten spannt, die mit dem adressierbaren gemeinsam genutzten
Speicherraum 20 gekoppelt sind.
-
Das Dateisystem 60 aus 3 unterscheidet sich von
bekannten physikalischen und verteilten Dateisystemen auf unterschiedliche
Art und Weise. Im Gegensatz zu bekannten physikalischen Dateisystemen,
die eine Dateiorganisation auf Plattenblöcke abbilden, verwaltet das
Dateisystem 60 gemäß der Erfindung
das Abbilden eines Verzeichnisses und einer Dateistruktur auf ein
verteiltes adressierbares gemeinsam genutztes Speichersystem 20,
bei dem zumindest ein Teil des adressierbaren Raums auf zumindest
einen Teil eines oder mehrerer dauerhafter Speichervorrichtungen
(bspw. Festplatten) auf dem Netzwerk abgebildet ist oder diesem
zugeordnet ist. Nicht wie bei bekannten verteilten Dateisystemen verwendet
das Dateisystem 60 der Erfindung gleichrangige Knoten,
von denen jeder eine Inkarnation oder eine Instanz desselben Datensteuerprogramms hat.
Auch im Gegensatz zu bekannten Dateisystemen erhält das Dateisystem 60 der
Erfindung eine Datenkohärenz
unter bzw. zwischen den Netzwerkknoten, bildet automatisch Daten
für eine
Redundanz und Fehlertoleranz nach, bewegt automatisch und dynamisch
Daten für
eine sich ändernde
Netzwerknutzung und Verkehrmuster und bietet eine Vielzahl von anderen
Vorteilen und Fortschritten, von denen einige in der US Patentanmeldung
mit der Seriennummer 08/754 481, die am 22. November 1996 eingereicht
wurde, beschrieben sind.
-
Wie ebenfalls in 3 zu erkennen ist, ist das Dateisystem 60 teilweise
innerhalb des adressierbaren gemeinsam genutzten Speicherraums 20 abgelegt
und umfaßt
einen strukturierten Datenspeicher 62, eine übergeordnete
Wurzel 64, Dateisätze 66–74,
einen Verzeichniseintrag 80 und eine Datei oder ein Dokument 82.
Es sind zwei Netzwerkknoten 84 und 86 gezeigt,
die auf den adressierbaren gemeinsam genutzten Speicherraum 20 (auf
eine Weise, die zuvor unter Bezugnahme auf 1 beschrieben wurde) über die
Ansteuerlogiken 90 und 94 zugreifen. Anwendungsprogramme 92 und 96,
die auf den Knoten zur Ausführung
kommen, interagieren mit den Datensteuerprogrammen (nicht in 3, aber in 1 mit 32a–32d gezeigt) und
bewirken, daß die
Datensteuerprogramme in den Knoten auf die logischen Treiber 90 und 94 zugreifen.
Bei der beschriebenen Ausführungsform
sind die Ansteuerlogiken DOS-Vorrichtungen, die über installierbare Dateisystemtreiber,
die dem Dateisystem 60 zugeordnet sind, „mit" den Dateisatzverzeichnissen „verbunden
sind".
-
Das Dateisystem 60 unterstützt ein
globales Dateisystem für
einen adressierbaren gemeinsam genutzten Speicherraum 20,
der von allen Netzwerknoten gemeinschaftlich genutzt wird. Dieses
globale Dateisystem ist in eine oder mehrere unabhängige Ansammlungen
von Dateien organisiert, die wie die Dateisätze 66–74 dargestellt
sind. Ein Dateisatz kann als logisch äquivalent zu einer herkömmlichen
Dateisystempartition betrachtet werden. Es ist eine Sammlung von
Dateien, die hierarchisch als eine Verzeichnisbaumstruktur organisiert
sind und in einem Wurzelverzeichnis wurzeln. Die Knoten ohne Verzweigung
bzw. Ast in dem Baum sind die Verzeichnisse 80 und die
Verzweigungen bzw. Äste
in dem Baum sind reguläre
Dateien 82 oder leere Verzeichnisse. Subverzeichnisbäume innerhalb
eines Dateisatzes können
durch Verbinden einer Datei mit mehreren Verzeichnissen überlappen.
-
Ein Vorteil des Aufbrechens des Dateisystems 60 in
Dateisätze 66–74 besteht
darin, daß dieses
eine flexiblere Dateisystemverwaltung für Nutzer des Systems 60 bereitstellt.
Wenn das Dateisystem 60 sehr groß wird (bspw. Hunderte von
Knoten mit Tausenden von Gigabits an Speicher), ist es wünschenswert,
die Dateien in Gruppen von Verwaltungsentitäten zu organisieren, so daß Verwaltungsaktionen
unabhängig
auf einzelne Gruppen durchgeführt
werden können,
ohne die Funktion der anderen zu beeinträchtigen.
-
Die Dateisätze in der adressierbaren gemeinsam
genutzten Speicherraum 20 sind beschrieben und in einer
gemeinsamen Struktur numeriert, die Wurzel 64, die den
Startpunkt bereitstellt, um die Dateisätze in der adressierbaren gemeinsam
genutzten Speicherraum 20 festzulegen. Die Wurzel 64 kann
an einem statischen und wohlbekannten Speicherort in dem adressierbaren
gemeinsam genutzten Speicherraum 20 abgelegt sein und auf
diese kann über
eine verteilte gemeinsam genutzte Speichersystemprogrammschnittstelle
zugegriffen werden. Wenn ein Knoten auf einen Dateisatz zum ersten
Mal zugreift, sucht dieser zunächst
die Wurzel 64, um den Identifikator, der dem Dateisatz
zugeordnet ist, zu bestimmen, bspw. die gemeinsam genutzte Speicheradresse,
die zum Zugriff auf den Dateisatz verwendet wird. Wenn er einmal
den Identifikator bestimmt hat, kann der Knoten auf das Wurzelverzeichnis
des Dateisatzes zugreifen. Von dem Wurzelverzeichnis kann dieser
dann zu dem gesamten Dateisatzverzeichnisbaum übergehen, um die gewünschte Datei zu
orten. Dateisätze,
die von dem Dateisystem 60 verwendet werden, sind ausführlicher
unter der Überschrift „Dateisatz" beschrieben.
-
Bei der in 4 beschriebenen Ausführungsform des erfindungsgemäßen Dateisystems 60 wird
auf ein Verzeichnis 126 (wie bspw. das Verzeichnis 80 aus 3) durch Starten bei einem
Verzeichnis-Einknoten oder Beschreiber 128 zugegriffen,
der eine Adresse enthält,
die auf einen Verzeichniseintragstrombeschreiber 130 zeigt.
Dieser Beschreiber 130 ist ein Zeiger auf einen Block von
Daten, der Verzeichniseinträge
für die
Dateien Datei 1 bis Datei 3 enthält. Der
Verzeichniseintrag für
Datei 1 hat eine Zahl an Einträgen, wobei einer der Einträge eine
Kette ist, die den Namen der Datei enthält und ein weiterer Eintrag
die Adresse des Einknotens und der Strombeschreiber 132 ist.
Die Strombezeichner für Datei 1 werden
verwendet, um die verschiedenen 4-Kilobyte-Daten in dem adressierbaren
gemeinsam genutzten Speicherraum 20 zu lokalisieren und
wiederzufinden, der die Datei 1 bildet. Andere Dateien werden
wiedergefunden und von dem adressierbaren gemeinsam genutzten Speicherraum 20 auf
dieselbe Weise aufgebaut. Die Verzeichnisse, die von dem Dateisystem 60 verwendet
werden, sind unter der Überschrift „Verzeichnis" detaillierter beschrieben.
-
Bei der in 5 gezeigten Ausführungsform des Dateisystems 60 ist
eine Datei 98 (wie bspw. die Datei 82 aus 3) durch eine oder mehrere
gemeinsam genutzte Seiten von Daten 100, 102, 104, 106 und 108 in
dem adressierbaren gemeinsam genutzten Speicherraum 20 repräsentiert.
Jede Datei 98 hat einen Dateieinknoten oder einen Beschreiber bzw.
Bezeichner 110, der verschiedene Dateiattribute 112 umfaßt.
-
Der Dateibezeichner 110 umfaßt eine
Adresse, die zu einem Datenstrombezeichner 14 zeigt und der
Datenstrom selbst umfaßt
eine oder mehrere Adressen 116, 118, 120, 122 und 124,
die auf bestimmte Seiten in dem identifizierbaren gemeinsam genutzten
Speicherraum 20 zeigen. Bei der beschriebenen Ausführungsform
ist eine Seite die elementare Einheit in dem adressierbaren gemeinsam
genutzten Speicherraum 20 und enthält bis zu 4 Kilobyte an Daten.
Selbst wenn die gesamten 4 Kilobyte nicht benötigt werden, wird eine gesamte
Seite verwendet. Dies ist durch die Seite 108 verdeutlicht,
die lediglich etwa 2 Kilobyte an Daten enthält. Die von dem Dateisystem 60 verwendeten
Dateien sind unter der Überschrift „Dateien" detaillierter beschrieben.
-
Dateisatz
-
Die Dateisätze sind die grundlegende Einheit für das Dateisystem 60.
Jeder Dateisatz wird mit einem Namen mit bis zu 255 Zeichen
identifiziert bzw. gekennzeichnet. Das Dateisystem 60 exportiert
einen Satz von Dateisatzniveauoperationen, die es einem Verwalter
erlauben, die Dateisätze
in den folgenden Typen von Aktionen zu verwalten.
-
Dateisatzerzeugung
-
Diese Operation erzeugt einen neuen
Dateisatz. Der Dateisatz ist anfänglich
mit einer Datei erzeugt, dem leeren Wurzelverzeichnis. Ein Standarddateisatz
wird automatisch bei der Initialisierung des adressierbaren gemeinsam
genutzten Speicherraums 20 erzeugt.
-
Dateisatzlöschung
-
Diese Operation löscht einen Dateisatz. Alle Dateien
in dem Dateisatz werden entfernt und der gesamte gemeinsam genutz te
Speicherraum, der den Dateien in dem Dateisatz zugeordnet ist, wird
verworfen und der zurückbleibende
physikalische Speicher für
eine neue Speicherung freigegeben. Das Dateisystem 60 wird
nur dann eine Löschung
des Dateisatzes ermöglichen,
wenn keine offenen Kennungen bei dem Dateistrom in dem Dateisatz
vorliegen. Um einen Dateisatz zum Löschen vorzubereiten, muß der Dateisatz „heruntergefahren" sein, indem dieser offline
gesetzt wird.
-
Dateisatzaufzählung
-
Diese Operation zählt einen spezifischen Dateisatz
oder alle Dateisätze
in dem adressierbaren gemeinsam genutzten Speicherraum 20 auf.
-
Dateisatzsteuerung
-
Diese Operation führt Niveausteuerungsroutinen
für einen
Dateisatz aus, wie bspw. das Setzen von Dateisatzattributen.
-
Einbauexportsteuerung
-
Verzeichnisse werden lokalen Vorrichtungen angefügt, d. h. „eingebaut", indem Parameter
verwendet werden, die in dem Windows NT-Verzeichnis gespeichert
sind oder ein anderer ähnlicher
zentraler Speicherbereich für
solche Informationen. Wenn es zum ersten Mal gestartet wird, greift
das Datensteuerprogramm 60 auf den zentralen Speicher und
bestimmt, welche Dateisätze
eingebaut werden sollen. Das Datensteuerprogramm erzeugt ein Dateiobjekt, das
jeden Dateisatz repräsentiert,
der durch die Einträge
in den zentralen Speicher gekennzeichnet ist. Bei manchen Ausführungsformen
kann eine Anwenderprogrammschnittstelle (API: Application Program Interface)
bereitgestellt sein, die es dem Daten steuerprogramm 60 ermöglicht,
dynamisch Dateisätze einzubringen
und auszubauen, indem geeignete API-Anrufe gemacht werden.
-
Die Nutzer des Dateisystems 60 sind
sich nicht des gemeinsam genutzten Speicher-„Logikvolumens" bewußt, sondern
sehen eher jeden Dateisatz als ein Volumen (oder eine Partition
in dem Sinne eines traditionellen physikalischen Dateisystems). Die
Win32 GetVolume-Information wird verwendet, um Informationen auf
dem Dateisatz zu bekommen (präziser
gesagt, Informationen zu der logischen Vorrichtung, an der der Dateisatz
angefügt
ist). Da alle Dateisätze
den gleichen Speicherpool in dem adressierbaren gemeinsam genutzten
Speicherraum 20 nutzen, ist die gesamte Volumengröße, die
dem Nutzer für
jeden Dateisatz zurückgegeben
wird, die gegenwärtige
angesammelte Speicherkapazität
in dem adressierbaren gemeinsam genutzten Speicherraum 20.
Derselbe Ansatz wird für
die Informationen bezüglich
des gesamten freien Raums genommen und der angesammelte Wert für den adressierbaren
gemeinsam genutzten Speicherraum 20 wird für jeden Dateisatz
zurückgegeben.
-
Verzeichnis
-
Ein Scannen bzw. Abtasten eines Verzeichniseintrages
ist eine der am häufigsten
von Nutzeranwendungen durchgeführten
Operationen. Diese muß auch
die am besten sichtbare Operation für die Performance sein. Folglich
muß Aufmerksamkeit
darauf gerichtet werden, die Verzeichnisabtastung effizient zu gestalten
und das Windows NT-Dateisystem (NTFS) verdoppelt ausreichend Dateieinknoteninformationen
in dem Verzeichniseintrag, so daß eine Leseverzeichnisoperation
durch Abtasten und Lesen der Verzeichniseinträge erfüllt werden kann, ohne daß Informationen
von dem Dateieinknoten gelesen werden müssen. Das Problem bei diesem
Schema ist, daß die doppelt
gespeicherten Dateimetadaten, wie die Dateizeitstempel und die Dateigröße, relativ häufig aktualisiert
werden können,
was die Aktualisierung der Metadaten teurer macht. Dieser Overhead
wird jedoch angesichts der Performance, die bei Verzeichnisabtastoperationen
erhöht
wird, als akzeptabel betrachtet.
-
Das Dateisystem 60 übernimmt
die gleiche Philosophie des Bereitstellens einer effizienten Verzeichnisabtastung
durch Verdoppeln von Dateieinknoteninformationen in Verzeichniseinträgen. Jeder Verzeichniseintrag
enthält
ausreichend Informationen, um die Win32-Abfragedatei-Informationsanforderungen
zu erfüllen.
Der Dateieinknoten ist mit den Dateistrombezeichnern auf einer separaten
Seite abgelegt. Der Einknoten ist über einen Zeiger in dem Verzeichniseintrag
angeordnet.
-
Die Verzeichniseinträge des Dateisystems werden
in dem Verzeichniseingangsdatenstrom der Verzeichnisdatei gespeichert.
Um die Raumausnutzung zu maximieren, wird jeder Verzeichniseintrag der
ersten verfügbaren
freien Stelle auf einer Seite zugewiesen, die den gesamten Eintrag
aufnehmen kann. Die Länge
der Einträge
variiert in Abhängigkeit von
der Länge
des Grund- bzw. Primärnamens
der Datei. Die folgenden Informationen sind Teil des Verzeichniseintrags:
Erzeugungszeit, Änderungszeit, letzte
Schreibzeit, letzte Zugriffszeit, Zeiger zu einem Strombezeichner,
Zeiger zu Einknoten des Stammverzeichnisses, Dateiattribute in MS-DOS-Typ und Dateiname
(8.3 Namensvereinbarung) in MS-DOS-Art. Für durchschnittliche Längen des
Dateinamens enthält
eine Seite bis zu etwa 30 Einträgen.
Alle Dateiinformationen in dem Verzeichniseintrag sind ebenso in
dem Dateieinknoten enthalten, bis auf den Dateigrundnamen und den
MS-DOS-Dateinamen.
Die Dateigrundnamen und zugeordnete Kurzna men sind lediglich in
den Verzeichniseinträgen
gespeichert. Dies führt
zu einer festen Größe der Einknoten.
-
Wenn eine Dateiinformation modifiziert
wird (außer
für Dateinamen),
wird der Einknoten im Zusammenhang mit der Aktualisierungstransaktion
aktualisiert und enthält
daher immer die aktuellsten Informationen. Die Änderungen des zugeordneten
Verzeichniseintrags wird langsam bzw. träge geräumt, um die Kosten eines doppelten
Aktualisierens einzusparen. Dies bedeutet, daß die Aktualisierungen des Einknotens
entweder geräumt
sind oder behebbar sind, aber nicht die entsprechenden Aktualisierungen des
Verzeichniseintrags. Wenn der Verzeichniseintrag aus der Synchronität mit dem
Einknoten gelangt (wenn die Änderung
des Einknotens erfolgreich geräumt
ist, aber nicht die Verzeichnisänderung)
wird der Eintrag aktualisiert, wenn der Einknoten das nächste Mal
aktualisiert wird. Um eine Synchronisation der Aktualisierungen
des Verzeichnisses zu erleichtern, können die Verzeichniseinträge (Einknoten)
nicht mehrere Seiten umspannen bzw. überbrücken. 4 zeigt die Organisation von Verzeichniseinträgen und
zugeordneten Einknoten.
-
Eine Datei des Dateisystems 60 umfaßt Ströme von Daten
und die Dateisystem-Metadaten, um die Datei zu beschreiben. Dateien
sind in dem Dateisystem 60 durch Objekte, die als Einknoten
bezeichnet sind, beschrieben. Der Einknoten ist eine Datenstruktur,
die die Dateimetadaten speichert. Es repräsentiert die Datei in dem Dateisystem 60.
-
Ein Datenstrom ist ein logisch sequentieller Strom
von Bytes. Es können
die Daten sein, die durch Anwendungen abgelegt sind oder die internen Informationen,
die durch das Dateisystem 60 abgelegt sind. Die Datenströme sind
auf Seiten abgebildet, die von dem adressierbaren gemeinsam genutzten
Speicherraum für
eine Speicherung zugewiesen sind.
-
Das Dateisystem 60 unterteilt
einen Datenstrom in eine Sequenz von 4-Kilobyte-Segmenten, wobei
jedes Segment einer Seite entspricht. Das Dateisystem 60 erhält zwei
Größeninformationen
pro Datenstrom: Die Anzahl an Bytes in dem Datenstrom und die Zuordnungsgröße in Anzahl
von Seiten. Die Abbildungsinformation hinsichtlich Byte-Strom zu Segment/Seite
ist Teil der Dateimetadaten und ist in einer Struktur abgelegt,
die als Datenstrombezeichner, siehe 5,
bezeichnet ist.
-
Nutzeranfragen für Daten sind durch Bereich an
Bytes und die Position des Startbyte spezifiziert, das durch dessen
Offset von dem Beginn des Datenstroms gemessen ist, der Byteposition
0. Das Dateisystem 60 bildet den Offset in eine Seite ab,
die das Startbyte und den seiteneigenen Offset von dem Beginn der
Seite enthält.
-
Jede Datei des Dateisystems 60 hat
zumindest zwei Datenströme:
den Standarddatenstrom und den Zugriffssteuerlisten-(ACL: Access
Control List)-Strom. Jede Datei kann optional andere Datenströme aufweisen.
Der ACL-Strom wird verwendet, um den Sicherheitszugriffssteuerlistensatz
auf der Datei zu speichern. Jeder Datenstrom ist individuell benannt,
so daß der
Nutzer einen Zugriff auf einen spezifischen Datenstrom erzeugen
oder öffnen
kann. Es wird angenommen, daß der
Name des Standarddatenstroms der Grundname der Datei ist. Um auf
einen Datenstrom zuzugreifen, muß der Nutzer des Dateisystems 60 zunächst eine
Dateikennung zu dem gewünschten
Datenstrom durch einen Namen öffnen.
Wenn der Dateiname verwendet wird, dann ist die Kennung zu dem Standarddatenstrom
geöffnet.
Diese offene Dateikennung repräsentiert
den Datenstrom in allen Dateisystemdiensten, die an dem Datenstrom
arbeiten.
-
Das Dateisystem 60 exportiert
einen Satz an Diensten, um an dem Dateiniveau zu betätigen. Die Eingabe
für die
Dienste sind die Dateiobjektkennung (Einknoten) oder die Datenstromobjektkennung
und die für
die Operation spezifischen Parameter umfassen die gewünschten
Teile des Datenstroms in Byte-Positionen.
-
Offene Dateien sind durch Datenstromobjekte
(oder lediglich Dateiobjekte) repräsentiert. Nutzer greifen auf
Dateien, die diese Dateiobjekte nutzen und für den Nutzer durch Dateikennungen
gekennzeichnet sind. Eine Dateikennung ist eine 32-Bit-Entität, die eine
Instanz eines offenen Dateistroms repräsentiert. Beispielsweise erzeugt
Windows NT das Dateiobjekt und gibt eine Dateikennung zu den Nutzern
als Antwort auf die Nutzeranfrage für eine Dateierzeugung oder
ein Dateiöffnen
zurück.
Das Dateisystem 60 initialisiert einen Zeiger auf einen
Dateisteuerblock. Mehrere Dateiobjekte zeigen zu demselben Dateisteuerblock
und jeder Dateisteuerblock erhält
separate Stromobjekte für
jeden offenen Kontext. Nach außen
ist die Dateikennung für
die Nutzer nicht sichtbar. Mehrere Öffnungen können gegenüber derselben Datei ausgegeben
werden. Wenn der Nutzer eine Datei schließt, wird das Dateiobjekt und die
zugeordnete Dateikennung entfernt.
-
Das Dateisystem 60 bildet
Dateiströme
in Sequenzen von Segmenten ab, die zunehmend größer werden, wobei jedes Segment
einer oder mehreren Seiten entspricht. Das Dateisystem 60 versucht, fortlaufende
Seiten für
Datenströme
zu reservieren, ordnet aber lediglich einen wirklichen Externspeicher auf
einer benötigten
Basis zu, üblicherweise
als ein Ergebnis einer Dateierweiterung, die durch Schreiben jenseits
der Datenstromzuordnungsgröße angefordert
ist. Wenn eine Dateikennungsanforderung empfangen wird, rundet das
Dateisystem 60 die Erweiterungsgröße in eine Anzahl von Bytes bis
zu einem Mehrfachen von 4 Kilobytes, um dies zu einer ganzzahligen
Anzahl von Seiten zu machen, und fordert Seiten für eine tatsächliche
Zuordnung. Die Anzahl von 4-Kilobyte-Seiten,
die durch das Dateisystem zugeordnet ist, hängt von der Anzahl der getätigten Dateierweiterungsaufrufen
ab. Das Dateisystem 60 weist eine 4-Kilobyte-Seite für die erste
Dateierweiterungsaufforderung zu, zwei 4-Kilobyte-Seiten für die zweite Aufforderung,
vier 4-Kilobyte-Seiten
für die
dritte Erweiterungsaufforderung und so weiter. Die neu zugeordneten
Seiten sind mit Null gefüllt. Durch
Reservieren benachbarter Seiten kann das Dateisystem 60 den
Umfang an Organisationsablauf bzw. Buchungsinformationen auf das
Byte, das bei dem Seitenabbilden übersteht, reduzieren. Das Dateisystem 60 reserviert
(manchmal viel) mehr als angeforderten Speicherraum für eine Datei
und belegt den Speicher durch Zuordnen von Externspeicher Seite
für Seite.
-
Segmente mit einer 4-Kilobyte-Zuordnung werden
gewählt,
um den unbenutzten Speicherraum zu reduzieren und noch eine vernünftige Zuordnungsgröße für übliche Dateierweiterungen
bereitzustellen. Da eine Zuordnung eine teure Operation ist (die
sehr wahrscheinlich verteilte Operationen umfaßt), sind kleinere Zuordnungsgrößen nicht
effizient. Größere Zuordnungsgrößen würden zu
einer ineffektiven Raumnutzung führen
oder zu einer zusätzlichen Komplexität, um unbenutzten
Raum zu verwalten. Ein 4-Kilobyte-Segment bildet natürlicherweise
auf eine Seite ab, was das Abbilden des Datenstromsegments auf eine
Seite vereinfacht. Obwohl eine Analogie zu dem NTFS Zuordnungsverfahren
einer 4-Kilobyte-Cluster(Segment)-Größe für größere Platten, um
ein Zuordnen zu beschleunigen und eine Fragmentierung zu reduzieren
gemacht werden kann, ist eine solche Analogie nicht vollständig gültig, da
die tatsächliche
Zuordnungssementgröße auf einer
Platte in großem
Maße von
der lokalen Plattengröße und den
physikalischen Dateisystemen abhängt.
-
Ähnlich
wie das NTFS, das die Zuordnung jeder Plattenpartition kontrolliert
und daher schnell den freien Volumenraum, der für eine Zuordnung verfügbar ist,
bestimmen kann, fordert das Dateisystem 60 die Information
für den
vollständig
verfügbaren
Raum und nutzt diese Information, um schnell zu bestimmen, ob mit
dem Zuordnungsvorgang fortgefahren wird. Wenn der vollständig verfügbare Raum
weniger als die erforderliche Zuordnungsgröße ist, wird die Aufforderung
sofort abgelehnt. Ansonsten fährt
das Dateisystem 60 damit fort, die Seiten zuzuordnen, um
der Aufforderung nachzukommen. Die Tatsache, daß das Dateisystem 60 mit
der Zuordnung fortfahren kann, ist keine Garantie dafür, daß die Zuordnung erfolgreich
durchgeführt
wird, da der gegenwärtige vollständig verfügbare Raum
sich ständig ändern kann.
-
Das Dateisystem 60 macht
sich die Fähigkeit der
Seitenniveaunachbildung des darunter liegenden verteilten adressierbaren
gemeinsam genutzten Speichersystems 20 zunutze, das in
der vorstehend genannten US-Patentanmeldung beschrieben ist. Eine
Seitenniveaunachbildung erlaubt dem System, eine Dateinachbildung
bereitzustellen. Die Datenströme
einer nachgebildeten Datei werden durch Seiten unterstützt, die
wiederum selbst nachgebildet sind. Auf diese Weise werden Datenströme automatisch
ohne Eingreifen des Dateisystems 60 nachgebildet. Der zusätzliche
Raum, der durch die mehreren Nachbildungen verbraucht wird, spiegelt
sich nicht in den Datei-(Datenstrom)Größen wider. Die Stromzuordnungsgröße teilt
stets die gesamte Zuordnungsgröße in Seiten
mit, die für
eine Nachbildung erforderlich ist. Die Seiten unterstützen temporäre Dateien,
sie sind jedoch nicht nachgebildet.
-
Dateizugriff
und Betriebsmittelteilung-Sperrung
-
Der gemeinsam genutzte Speicher stellt
den Verteilungsmechanismus für
eine Ressourcen- bzw. Betriebsmittelteilung unter gleichrangigen
Knoten bereit, die die Dateisystem 60 Software betreiben.
Jede Instanz des Dateisystems 60 auf jedem Netzwerkknoten
sieht die gemeinsam genutzten Speicherressourcen bzw. Betriebsmittel
(d. h. Seiten), wenn diese mit anderen lokalen oder entfernten Prozessen bzw.
Threads geteilt werden. Das Dateisystem 60 braucht eine
Möglichkeit,
Dateisystemsperrungen auf hohem Niveau zu implementieren, um eine
konsistente Betriebsmittelaufteilung bereitzustellen. Jede übereinstimmende
Steuerstruktur kann verwendet werden, um Sperrungen zu implementieren,
wie bspw. ein Sperrobjekt oder Semaphoren. Bei Datenbankanwendungen
kann ein Sperren ebenfalls durch ein Implementieren übereinstimmender
Steuerstrukturen erreicht werden, die Datenbankindizes oder Schlüsseln zugeordnet
sind. Bei Dateisystemanwendungen kann ein Zugriff auf Dateien oder
Verzeichnisse gesteuert werden. Ein weiteres Beispiel für Sperrungen
eines Dateisystems ist das Bytebereichssperren, das dem Nutzer die
Fähigkeit
gibt, einen gemeinsamen Zugriff auf Dateien zu koordinieren. Eine
Bytebereichssperrung ist eine Sperrung, die auf einen Bereich von
Bytes auf ein File gesetzt ist. Ein koordinierter gemeinsamer Zugriff
auf ein File kann durch Anwenden von Sperrungen auf den gewünschten
Bytebereich erreicht werden. Im allgemeinen arbeitet die Dateisystemsperrung
auf hohem Niveau auf die folgenden Weisen: (a) eine Dateisystemressource
muß von
jeder Dateisystem 60 Instanz gemeinsam genutzt werden und
der Zugriff auf die Ressource wird durch ein Sperrprotokoll koordiniert, das
eine Sperrobjektdatenstruktur verwendet, die eine Sperrung auf hohem
Niveau repräsentiert,
um die gemeinsam genutzte Ressource zu koordinieren, und es ist
der Wert der Datenstruktur, der den gegenwärtigen Zustand der Sperrung
repräsentiert,
(b) zum Zugreifen auf die Ressource muß die Instanz bei jedem Knoten
in der Lage sein, auf den Zustand (oder Wert) der Sperrdatenstruktur
zu achten, und wenn dieser "frei" ist, diesen so zu
modifizieren, daß dieser "beschäftigt" wird, aber wenn
dieser "beschäftigt" ist, dann muß diese
warten "frei" zu werden und es
können
Zwischenzustände
zwischen "frei" und "beschäftigt" bestehen (d. h.
mehr als zwei Sperrzustände), aber
bei jedem Vorgang bei diesem Bytebereichssperrbeispiel ist eine
Sperrung eine Beschreibung eines bestimmten Bytebereichs, der gemeinsam
genutzt bzw. exklusiv gesperrt durch einige Prozesse des Dateisystems 60 ist
und eine mit diesem in Konflikt stehende neue Bytebereichssperranfrage,
die in den bereits gesperrten Bytebereich fällt oder diesen überlappt,
wird verweigert oder der Anfrager kann blockieren (abhängig wie
die Anfrage gemacht wurde) und (c) ein Zugriff auf die gesperrte
Datenstruktur oder eine Modifikation dieser durch jede Instanz des Knotens
muß in
eine serielle Reihenfolge gebracht sein, so daß diese wiederum dann verwendet
werden kann, um eine Betriebsmittelteilung auf hohem Niveau zu koordinieren.
-
Die Sperrmerkmale und Fähigkeiten
der gemeinsam genutzten Speichermaschine, die in der vorstehend
genannten US-Patentanmeldung
Nr. 08/754 481 beschrieben ist, erlauben dem Dateisystem 60 einen
Zugriff auf Seiten zu koordinieren. Die Maschine kann ebenfalls
verwendet werden, um einen Zugriff auf Ressourcen zu koordinieren,
aber bei einem Ressourcensperren auf komplexem hohen Niveau, wie
bspw. beim Bytebereichssperren, kann ein Verwenden der Maschinensperrmerkmale
und -fähigkeiten,
um Direktsperrungen bereitzustellen, aus folgenden Gründen sehr
teuer sein: (a) jede Bytebereichssperrung würde eine Seite erfordern, die
die Sperrung repräsentiert
und da die Anzahl der Bytebereichssperrungen sehr groß sein kann,
können
die Kosten in Form eines Seitenverbrauchs zu hoch sein und (b) die
Maschinensperrungen stellen nur zwei Sperrzustände bereit (d. h. gemeinsam
genutzt und exklusiv), und Systemsperrungen auf hohem Niveau erfordern
mehr Sperrzustände.
-
Das erfindungsgemäße Dateisystem 60 implementiert
das Dateisystemsperren unter Verwendung der Maschinensperrung als
ein Grundelement, um eine Serialisierung bzw. Durchnumerierung bereitzustellen,
um auf die Sperrdatenstrukturen zuzugreifen und diese zu aktualisieren.
Um eine Sperrstruktur zu lesen, nimmt das Dateisystem 60 eine
gemeinschaftliche Sperrung auf der Seite der Datenstruktur unter
Verwendung der Maschinensperrmerkmale und Fähigkeiten vor, bevor diese
die Seite liest, um zu verhindern, daß die Datenstruktur geändert wird.
Um die Sperrstruktur zu modifizieren bzw. zu ändern, setzt diese eine exklusive
Sperrung auf die Seite. Die Seitensperrung wird genommen und gelöst, sobald
der Sperrstrukturwert gelesen oder modifiziert wird.
-
Mit der Serialisierung, die durch
die Seitensperrung und die Seitenannulierungsbenachrichtigung bereitgestellt
ist, implementiert das Dateisystem 60 die Sperrungen auf
hohem Niveau auf die folgende Weise: (a) um eine Dateisystemsperrung (FS-Sperrung)
zu nehmen, setzt das Dateisystem 60 eine gemeinschaftliche
Sperrung auf der FS-Sperrseite und liest die Seite und führt dann
die Sperrstruktur aus, (b) wenn die Sperrstruktur anzeigt, daß die Ressource
nicht versperrt ist oder in einem kompatiblen Sperrmodus gesperrt
ist, dann fordert das Dateisystem 60 an, die Seite exklusiv
zu sperren und dies garantiert lediglich, daß nur eine Knoteninstanz des Dateisystems 60 die
Sperrdatenstruktur modifizieren kann und wenn die Anforderung erfolgreich
ist, dann bildet das Schreiben des Dateisystems 60 die
Sperrseite ab und dann ändert
diese die Sperrstruktur, um die Sperrung zu setzen und die Seite
zu entsperren und setzt den Seitenzugriff auf keinen und (c) wenn die
Ressource in einem inkompatiblen Sperrmodus gesperrt ist, entsperrt
das Dateisystem 60 die Seite, aber hält das Seitenlesen abgebildet
und setzt sich selbst (den gegenwärtigen Prozeß) in eine
Reihe und wartet auf ein Systemereignis, das anzeigt, daß der Sperrwert
geändert
hat und wenn der Sperrwert sich nicht ändert, dann wird der Prozeß des Dateisystems 60 unterrichtet
und wiederholt den vorstehenden Schritt (a). Das Dateisystem 60 implementiert
die Benachrichtigung unter Verwendung eines Signalgrundelements.
Die Prozesse des Dateisystems 60, die auf eine Sperrung
warten, sind auf ein Systemereignis gesperrt. Wenn die Seite die
Sperränderungen
enthält,
wird ein Signal zu jedem blockierten Prozeß des Dateisystems 60 geschickt.
Jeder der blockierten Prozesse des Dateisystems 60 wacht
dann auf und wiederholt Schritt (a). FS-Sperrungen werden auf flüchtigen
Seiten gespeichert.
-
Dateizugriff
und Betriebsmittelaufteilung – Bytebereich
sperren
-
Bytebereichsperren ist ein Dateisystemsperrdienst,
der dem Nutzer durch die API der Win32Sperrdatei() und der SperrdateiEx()
exportiert wird. Es erlaubt einen gleichzeitigen Zugriff auf unterschiedliche
sich nicht überlappende
Bereiche auf einen Dateidatenstrom durch mehrere Nutzer. Um auf den
Datenstrom zuzugreifen, sperrt der Nutzer den Bereich (Bytebereich)
der Datei, um einen exklusiven oder gemeinschaftlichen Lesezugriff
auf den Bereich zu erhalten.
-
Das Dateisystem 60 unterstützt ein
Bytebereichssperren für
jeden individuellen Datenstrom der Datei. Das nachfolgend erläuterte Bytebereichssperrverhalten
nach Win32-Art wird unterstützt
durch (a) ein Sperren eines Bereichs einer Datei, die verwendet
wird, um einen gemeinschaftlichen oder exklusiven Zugriff auf den
spezifizierten Bereich der Datei zu erhalten und das Dateisystem 60 wird
Bytebereichssperrungen durch eine Dateikennung nachverfolgen und
daher stellen Dateikennungen einen Weg bereit, um den Besitzer der
Sperrung eindeutig zu identifizieren, (b) ein Sperren eines Bereichs,
das über
die gegenwärtige
Position des Endes der Datei geht, ist kein Fehler, (c) ein Sperren
eines Teils einer Datei für
einen exklusiven Zugriff verweigert alle anderen Prozesse, sowohl
Lese- als auch Schreibzugriffe auf den spezifizierten Bereich der
Datei und ein Sperren eines Teils einer Datei für einen gemeinschaftlichen
Zugriff verweigert allen anderen Prozessen einen Schreibzugriff
auf den spezifizierten Bereich der Datei, aber es erlaubt anderen
Prozessen, den gesperrten Bereich zu lesen und dies bedeutet, daß das Dateisystem 60 Bytebereichssperrungen überprüfen muß, die auf
dem Datenstrom gesetzt sind nicht nur um Aufforderungen zu sperren,
sondern für
jeden Lese- oder Schreibzugriff, (d) falls eine exklusive Sperrung
für einen
Bereich angefordert ist, der bereits durch andere Prozesse entweder
gemeinschaftlich oder exklusiv gesperrt ist, die Aufforderung dann
zu blockieren oder geht unmittelbar fehl in Abhängigkeit von der spezifizierten
Anrufoption und (e) Sperrungen können
nicht einen existierenden gesperrten Bereich der Datei überlappen.
-
Für
jede Bytebereichssperrung erzeugt das Dateisystem 60 eine
Aufzeichnung der Bytebereichssperrung, um die Sperrung zu repräsentieren.
Die Aufzeichnung enthält
die folgenden Informationen: (a) Bytebereich, (b) Sperrmodus (gemeinschaftlich oder
exklusiv), (c) Prozeßidentifikation
und (d) einen Win32-Sperrschlüsselwert.
-
Das Dateisystem 60 betrachtet
die Dateibytebereiche als Ressourcen mit kontrolliertem Zugriff.
Für jede
Aufzeichnung der Bytebereichssperrung erzeugt das Dateisystem 60 eine
Dateisystemsperrung (wie vorstehend erläutert), um den Zugriff auf
die "Ressource" des Bytebereichs
zu koordinieren. Eine Aufforderung für eine kompatible Bytebereichssperrung
(gemeinschaftliche Sperrung) übersetzt
in eine Aufnahme-Lesesperrung auf der Dateisystemsperrung, die der
Aufzeichnung des Bytebereichs zugeordnet ist. Eine Aufforderung
für eine
exklusive Bytebereichssperrung wird auf eine Aufnahme-Schreibsperrung
auf der Dateisystemsperrung abgebildet.
-
Beim Verwenden des vorstehend erläuterten Mechanismus
zum Sperren des Dateisystems werden Sperranfragen, die auf der Seite,
die den gewünschten
Bytebereich enthält,
warten, benachrichtigt, wenn der Seiteninhalt sich ändert.
-
Nachdem eine konkrete Ausführungsform der
Erfindung im Detail beschrieben wurde, nämlich das Dateisystem 60,
wird nunmehr eine kurze Zusammenfassung der Offenbarung zu dem Dateisystem 60 in
den folgenden drei Absätzen
gegeben.
-
Das Dateisystem 60 sieht
die adressierbare gemeinsam genutzte Speicherraum 20 als
einen gemeinschaftlichen flachen Identifikatorraum, auf den gleichzeitig
mit vielen Netzwerkknoten (bspw. 12a–12d) zugegriffen
wird. Das Dateisystem 60 bildet die Dateidaten und Metadaten,
die logisch als Byteströme
in Seiten repräsentiert
sind, ab und eine Seite ist die Einheit des adressierbaren gemeinsam genutzten
Speicherraums 20. Vom Standpunkt des Dateisystems 60 aus
betrachtet, ist ein Datenstrom in einer geordneten Ansammlung von
Seiten gespeichert. Das Dateisystem 60 ruft die Maschine,
die in der vorstehend bezeichneten US-Patentanmeldung beschrieben ist auf,
um Raum in Seiten von dem adressierbaren gemeinsam genutzten Speicherraum 20 zuzuordnen,
um seine Metadaten und Nutzerdateidaten zu speichern. Auf Abschnitte
des adressierbaren gemeinsam genutz ten Speicherraums 20,
die durch das Dateisystem 60 reserviert sind, kann durch eine
Instanz des Dateisystems 60 in dem adressierbaren gemeinsam
genutzten Speicherraum 20, aber nicht durch andere Typen
von Netzwerkknoten, zugegriffen werden.
-
Jede Instanz des Dateisystems 60 (einschließlich des
Datensteuerprogramms 32a–34d aus 1) ist gleichrangig zu
allen anderen Netzwerkknoten, die das Dateisystem 60 betreiben
und nutzt daher Dateidaten über
den adressierbaren gemeinsam genutzten Speicherraum 20 gemeinschaftlich. Dem
lokalen Nutzer zeigt das Dateisystem 60 die Eigenschaften
der Konsistenz eines einzelnen Knotens und ein gemeinschaftliches
Dateinutzen verhält
sich wie ein gemeinschaftliches Nutzen mit anderen Prozessen auf
demselben Knoten. Vom Standpunkt eines Nutzers des Dateisystems 60 aus
betrachtet, wird folgendes lokales Verhalten beobachtet: (a) eine Aktualisierung
der Dateidaten ist in dem gesamten Netzwerk konsistent, d. h. wenn
eine Dateiseite geändert
wird, ist die Modifikation sofort durch andere Nutzer mit offenen
Kennungen zu der Datei zu sehen und für einen gemeinschaftlichen
Zugriff zum Schreiben auf die Datei verbleibt die Koordination des
gemeinschaftlichen Schreibzugriffs, falls eine solche vorliegt,
vollständig
bei den Nutzern, üblicherweise mittels
eines Bytebereichssperrens, und (b) ein Räumen ist eine globale Operation
in dem Netzwerk, d. h. eine gültige
verschmutzte Dateiseite kann von irgendeinem Knoten geräumt werden,
der die Datei offen hat und wenn. das Räumen nicht erfolgreich vollendet
wird, kann der resultierende Dateidatenzustand entweder der alte
Zustand vor dem Räumen oder
ein teilweise gelesener Zustand sein und die Instanzen des Dateisystems 60 verwenden
den gemeinsam verwendeten Adreßraum
sowohl als Datenspeicher als auch als Mechanismus zum Durchreichen
von Informationen (Sperren und Teilen bzw. gemeinschaftliches Verwenden
von Informationen).
-
Das folgende ist eine Liste der Typen
von Aufforderungen, die das Dateisystem 60 zu einer darunterliegenden
Maschine abgeben kann, die in der vorstehend genannten US-Patentanmeldung beschrieben
ist: (a) reserviere ein Stück
des adressierbaren gemeinsam genutzten Speicherraums 20 – das Dateisystem 60 fordert,
daß ein
durchgängiger Bereich
von Adressen zu reservieren ist und die Reservierung der gemeinsam
genutzten Speicherraum bewirkt nicht die Realisierung (Zuordnung
des Speicherraums, aber sie reserviert bloß den Raum, der durch die Adressen
repräsentiert
ist, (b) hebe die Reservierung eines Stücks von Adressen in dem adressierbaren
gemeinsam genutzten Speicherraum 20 auf – das Dateisystem 60 gibt
einen Bereich von Adressen frei, der nicht länger verwendet wird, und es
gibt keinen Aufruf zum Aufheben der Reservierung, da Adressen nicht
wiederverwendet werden, wenn sie einmal verworfen worden sind, (c)
materialisiere bzw. realisiere ein Stück des adressierbaren gemeinsam
genutzten Speicherraums 20 – ordne einen gemeinsam genutzten
Speicherraum für
zuvor reservierte Adressen zu und der zugeordnete Raum wird als
Seiten zurückgegeben,
aber nur nachdem ein reservierter gemeinsam genutzter Speicherraum zugeordnet
ist, so daß auf
diesen mit dem Dateisystem 60 zugegriffen werden kann und
auf zugeordnete Seiten kann zugegriffen werden, aber um auf diese zuzugreifen,
muß das
Dateisystem 60 formale Zugriffsaufforderungen machen und
das Dateisystem 60 muß spezifizieren,
ob die zugeordneten Seiten dauerhaft oder flüchtig sind und das Dateisystem 60 kann
ebenfalls optional die Anzahl der Nachbildungen spezifizieren, die
für die
Seiten erforderlich sind, (d) hebe die Zuordnung der Seiten auf – eine Anzahl von
Seiten wird durch das Dateisystem 60 freigegeben und die
durch die Seiten repräsentierten
Ressourcen können
wiederverwendet werden, (e) greife auf einen Bereich von Seiten
zu – das
Dateisystem 60 fordert einen Lese- oder Schreibzugriff
auf die Seiten und dies wird bewirken, daß die Seiten in den lokalen
Knotenspeicher gebracht werden, (f) hebe einen Bezug eines Bereichs
von Seiten auf – das Dateisystem 60 zeigt
an, daß es
nicht mehr einen Zugriff auf die Seiten braucht, (g) sperre und
entsperre eine Seite – das
Dateisystem 60 nutzt die Sperr- und die Entsperrseite,
um Lese-Schreib-Aktualisierungen für eine Seite
zu synchronisieren und die Sperrsemantik „gemeinschaftlich genutzt,
exklusiv" wird verwendet,
(h) räume
verunreinigte Seiten – das
Dateisystem 60 fordert ein Räumen von schmutzigen Seiten
für eine
dauerhafte Speicherung und das Räumen
wird typischerweise ausgeführt,
wenn es von dem Aufrufer des Dateisystems explizit gefordert wurde,
wenn eine Datei geschlossen ist oder während ein Dateisystem heruntergefahren
wird (i) setze Attribute auf Seiten und Sub- bzw. Unterseiten – das Dateisystem 60 verwendet
die Seitenattribute, um das gewünschte
Verwaltungsverhalten der Seite zu spezifizieren und einige der durch
das Dateisystem gesetzten Attribute umfassen das beste Kohärenzprotokoll
für die
Seite, wie die Seiten nachgebildet werden sollten (Anzahl der Haupt-
bzw. Kernkopien), ob die Seiten in dem RAM-Cache-Speicher zwischengespeichert
werden sollen, setze ein 16-Byte-Dateisystemattribut
auf die Seite, (j) lese (nimm) Attribute einer Seite, (k) nimm den
Ort der übergeordneten
Wurzel (super_root), (l) nimm den gesamten Speicherraum (in Bytes)
und den gesamten freien Speicherraum (in Bytes) des adressierbaren
gemeinsam genutzten Speicherraums 20 und (m) Transaktionssperroperationen,
wie bspw. Transaktionsbeginn, -ende, Festschreiben, Abbrechen, bekomme
Logaufzeichnungen usw.
-
Adressierbare gemeinsam genutzte
Speicherraum Nachdem die Erfindung und verschiedene Ausführungsformen
dieser zu einem gewissen Maße detailliert
beschrieben wurden, wird nun eine detailliertere Beschreibung des
adressierbaren gemeinsam genutzten Speicherraums gegeben, der in
der US-Patentanmeldung mit der Seriennummer 08/754 481, die am 22.
November 1996 eingereicht wurde, beschrieben ist. Alle nachfolgend
gegebenen Informationen sind in dieser Patentanmeldung enthalten.
-
Das adressierbare gemeinsam genutzte Speichersystem,
das in der US Patentanmeldung, auf die Bezug genommen wird, beschrieben
ist, ist eine „Maschine", die einen virtuellen
Speicherraum erzeugen und verwalten kann, der von jedem Computer
auf einem Netzwerk gemeinschaftlich genutzt werden kann und dieser
kann den Speicherraum für jede
Speichervorrichtung, die mit dem Netzwerk verbunden ist, überbrücken bzw. überspannen.
Folglich können
alle Daten, die auf dem Netzwerk gespeichert sind, innerhalb des
virtuellen Speicherraums gespeichert werden und der gegenwärtige physikalische
Ort der Daten kann auf irgendeiner der Speichervorrichtungen, die
mit dem Netzwerk verbunden sind, abgelegt sein.
-
Insbesondere kann die Maschine oder
das System ein globales Adreßsignal
erzeugen oder empfangen, das einen Teil, bspw. 4 Kilobytes, des
virtuellen Speicherraums repräsentiert.
Das globale Adreßsignal
kann von den physikalischen Räumen und
den zur Identifikation vorgesehenen Räumen der darunterliegenden
Computerhardware entkoppelt werden, d. h. der Bezug kann aufgehoben
sein, um eine Unterstützung
für einen
Speicherraum bereitzustellen, der groß genug ist, um jede flüchtige oder dauerhafte
Speichervorrichtung, die mit dem System verbunden ist, zu überbrücken. Beispielsweise
können
erfindungsgemäße Systeme
einen 32-Bit-Computer betreiben. Sie können aber lediglich globale Adreßsignale,
die 128 Bits breit sein können,
verwenden. Folglich umfaßt
der virtuelle Speicherraum 2128 Bytes, was
viel größer ist
als der 232 Adreßraum, der durch die darunterliegende
Computerhardware unterstützt
ist. Ein solcher Adreßraum
kann groß genug sein,
um eine separate Adresse für
jedes Byte eines Datenspeichers auf dem Netzwerk bereitzustellen, einschließlich aller
RAM-, Platten- und Bandspeicher.
-
Einen solch großen virtuellen Speicherraum speichert
typischerweise nur ein kleiner Teil Daten zu einer Zeit. Folglich
umfaßt
das System einen Speicherverwalter, der diese Teile des virtuellen
Speicherraums, die genutzt werden, verfolgt. Das System bietet eine
physikalische Speichereinrichtung für jeden Teil des virtuellen
Speicherraums, der verwendet wird, durch Abbilden jedes Teils auf
eine physikalische Speichervorrichtung, wie bspw. ein RAM-Speicher
oder eine Festplatte. Optional umfaßt das Abbilden ein Grad einer
Indirektion, was den Datenübergang,
eine fehlertolerante Operation und ein Lastausgleich erleichtert.
-
Aufgrund der Tatsache, daß jedem
Computer erlaubt ist zu überwachen
und zu verfolgen, welche Teile des virtuellen Speicherraums verwendet werden,
kann jeder Computer den Speicherraum gemeinschaftlich nutzen. Dies
erlaubt es den über
das Netzwerk verbundenen Computern so zu erscheinen, als hätten sie
einen einzelnen Speicher und daher kann es ermöglichen, daß Anwendungsprogramme, die
auf unterschiedlichen Computern laufen, miteinander unter Verwendung
von Techniken kommunizieren, die gegenwärtig verwendet werden, um zwischen
Anwendungen zu kommunizieren, die auf derselben Maschine laufen.
-
Gemäß einem Aspekt kann die Erfindung
der vorstehend genannten US-Patentanmeldung dahingehend verstanden
werden, daß diese
Computersysteme mit einem adressierbaren gemein sam genutzten Speicherraum
aufweist. Die Systeme können
ein Datennetzwerk aufweisen, das Datensignale trägt, die repräsentativ
für computerlesbare
Informationen sind, und eine dauerhafte Speichervorrichtung, die mit
dem Datennetzwerk gekoppelt ist und die eine dauerhafte Datenspeicherung
bereitstellt und mehrere Computer, die jeweils eine Schnittstelle
haben, die mit dem Datennetzwerk gekoppelt ist, um auf das Datennetzwerk
für einen
Austausch von Datensignalen damit zuzugreifen. Darüber hinaus
kann jeder der Computer ein gemeinsam genutztes Speichersubsystem
zum Abbilden eines Teils der adressierbaren Speicherraum auf einen
Teil der dauerhaften Speicherung umfassen, um eine adressierbare
dauerhafte Speicherung für
Datensignale bereitzustellen.
-
In einem System, das die Speicherung über die
Speichervorrichtungen des Netzwerks verteilt, wird die dauerhafte
Speichervorrichtung dahingehend verstanden werden, daß diese
eine Mehrzahl von lokalen dauerhaften Speichervorrichtungen aufweist,
die jeweils mit einem jeweiligen der Mehrzahl von Computern gekoppelt
sind. Hierzu kann das System ebenfalls einen Verteiler zum Abbilden
von Teilen des adressierbaren Speicherraums über die Mehrzahl von lokalen
dauerhaften Speichervorrichtungen und einen Plattenverzeichnisverwalter
zum Verfolgen der abgebildeten Abschnitte des adressierbaren Speicherraums
haben, um Informationen bereitzustellen, die repräsentativ
für die
lokale dauerhafte Speichervorrichtung sind, die den Teil des darauf
abgebildeten adressierbaren Speicherraums speichert.
-
Das System kann ebenfalls ein Zwischenspeicher-
bzw. Cache-System
zum Betreiben einer der lokalen dauerhaften Speichervorrichtungen
aufweisen, wie bspw. ein Cache-Speicher zum Cache- bzw. Zwischenspeichern
von Datensignalen, die vor kurzem zugegriffenen Teilen des adressierbaren Speicherraums
zugeordnet sind. Darüber
hinaus kann das System ein Migrationssteuerung zum selektiven Bewegen
von Teilen des adressierbaren Speicherraums zwischen den lokalen
dauerhaften Speichervorrichtungen der mehreren Computern aufweisen.
Die Migrationssteuerung kann Datenzugriffsmuster, Ressourcenanforderungen
oder irgendwelche anderen Kriterien oder eine Heuristik, die zur Verwendung
mit der Erfindung geeignet ist, bestimmen und diesen antworten.
Folglich kann die Migrationssteuerung die Lasten auf dem Netzwerk
ausgleichen und Daten zu Knoten bewegen, von denen auf diese häufig zugegriffen
wird. Die Cache-Steuerung kann ein Softwareprogramm sein, das auf
einem Hauptrechner läuft,
um ein softwareverwaltetes RAM und ein Platten-Cache bzw. einen
Plattenpuffer bereitzustellen. Das RAM kann irgendein flüchtiger Speicher,
einschließlich
einem SRAM, DRAM oder irgendeinem anderen flüchtigen Speicher, sein. Die Platte
kann irgendein dauerhafter Speicher sein, einschließlich irgendeiner
Platte, RAID, Band oder eine andere Vorrichtung, die eine dauerhafte
Datenspeicherung bereitstellt.
-
Das System kann ebenfalls eine konsistente bzw.
kohärente
Nachbildungssteuerung zum Erzeugen einer Kopie oder einer ausgewählten Anzahl
von Kopien eines Teils des adressierbaren Speicherraums sein, der
in der dauerhaften Speichervorrichtung eines ersten Computers enthalten
ist und zum Speichern der Kopie in der lokalen dauerhaften Speichervorrichtung
eines zweiten Computers. Die kohärente
Nachbildungssteuerung kann die Kohärenz der Kopien gewährleisten,
um eine kohärente
Datennachbildung bereitzustellen.
-
Das System kann ebenfalls so verstanden werden,
daß dieses
eine integrierte Steuerung von Daten bietet, die in einem flüchtigen
Speicher und in einem dauerhaften Speicher abgelegt sind. In solchen
Systemen bietet eine flüchtige
Speichervorrichtung eine flüchtige
Speicherung für
Datensignale und die gemeinsam genutzten Speichersubsysteme weisen
ein Element auf, typischerweise ein Softwaremodul, um einen Teil
des adressierbaren Speicherraums auf einen Teil des flüchtigen
Speichers abzubilden. In diesen Systemen kann die flüchtige Speichervorrichtung
aus einer Mehrzahl von lokalen flüchtigen Speichervorrichtungen
zusammengesetzt sein, von denen jede mit einem entsprechenden der
Mehrzahl von Computern gekoppelt ist und die dauerhafte Speichervorrichtung
kann aus einer Mehrzahl von lokalen dauerhaften Speichervorrichtungen
zusammengesetzt sein, von denen jede mit einem entsprechenden der
Mehrzahl von Computern gekoppelt ist.
-
In diesen Systemen kann ein Verzeichnisverwalter,
die abgebildeten Abschnitte des adressierbaren Speicherraums verfolgen
und kann zwei Unterkomponenten aufweisen, einen Plattenverzeichnisverwalter
zum Verfolgen von Teilen des adressierbaren Speicherraums, die auf
die lokalen dauerhaften Speichervorrichtungen abgebildet sind, und
ein RAM-Verzeichnisverwalter
zum Nachvollziehen bzw. Nachverfolgen von Teilen des adressierbaren
Speicherraums, die auf die lokalen flüchtigen Speichervorrichtungen
abgebildet sind. Optional kann ein RAM-Cache-System eine der lokalen
flüchtigen Speichervorrichtungen
als einen Cache-Speicher betreiben zum Zwischenspeichern von Datensignalen, die
Teilen des adressierbaren Speicherraums, auf die vor kurzem zugegriffen
wurde, zugeordnet sind.
-
Das System kann zusätzliche
Elemente, einschließlich
eines Seitenelements zum Wiederabbilden eines Teils des adressierbaren
Speicherraums zwischen einer der lokalen flüchtigen Speichervorrichtungen
und einer der lokalen dauerhaften Speichervorrichtungen, eine Policen-
bzw. Verwaltungssteuerung zum Bestimmen eines Signals für eine verfügbare Ressource,
das für
den verfügbaren
Speicher auf jedem der mehreren Computer repräsentativ ist, ein Seitenelement,
das dem Teil des adressierbaren Speicherraums von einer Speichervorrichtung
eines ersten Computers zu einer Speichervorrichtung eines zweiten
Computers wieder abbildet, die auf das Signal für eine verfügbare Ressource reagiert, und eine
Migrationssteuerung zum Bewegen von Teilen des adressierbaren Speicherraums
zwischen den lokalen flüchtigen
Speichervorrichtungen der mehreren Computern aufweisen.
-
Optional kann das System eine Hierarchieverwaltung
zum Organisieren der mehreren Computern in einen Satz von hierarchischen
Gruppen aufweisen, wobei jede Gruppe zumindest einen der mehreren
Computer umfaßt.
Jede der Gruppen kann einen Gruppenspeicherverwalter zum Übertragen von
Teilen des adressierbaren Speicherraums als eine Funktion der hierarchischen
Gruppen umfassen.
-
Das System kann eine Kohärenz zwischen kopierten
Teilen des Speicherraums durch Einschließen einer kohärenten Nachbildungssteuerung
zum Erzeugen einer kohärenten
Kopie eines Teils des adressierbaren Speicherraums behalten.
-
Das System kann globale Adreßsignale
erzeugen oder empfangen. Folglich kann das System einen Adreßgenerator
zum Erzeugen eines globalen Adreßsignals aufweisen, das für einen
Teil des adressierbaren Speicherraums repräsentativ ist. Der Adreßgenerator
kann eine überspannende
Einheit zum Erzeugen von globalen Adreßsignalen als eine Funktion
einer Speicherkapazität
umfassen, die den dauerhaften Speichervorrichtungen zugeordnet ist, um
globale Adreßsignale
bereitzustellen, die zum logischen Adressieren der Speicherkapazität der dauerhaften
Speichervorrichtungen geeignet sind.
-
Bei verteilten Systemen kann der
Verzeichnisverwalter eine verteilte Verzeichnisverwaltung sein,
um innerhalb des ver teilten Speicherraums zu speichern, ein Verzeichnissignal,
das für
einen Speicherort eines Teils des adressierbaren Speicherraums repräsentativ
ist. Der verteilte Verzeichnisverwalter kann einen Verzeichnisseitengenerator
zum Zuordnen eines Teils des adressierbaren Speicherraums und zum
Speichern eines Eingangssignals darin sein, das repräsentativ
für einen
Teil des Verzeichnissignals ist. Der Verzeichnisseitengenerator
umfaßt
optional einen Bereichsgenerator zum Erzeugen eines Bereichssignals,
das repräsentativ
für einen Teil
des adressierbaren Speicherraums ist und zum Erzeugen des Eingangssignals
als Reaktion auf das Bereichssignal, um ein Eingangssignal bereitzustellen,
das repräsentativ
für einen
Teil des Verzeichnissignals ist, das dem Teil des adressierbaren
Speicherraums entspricht. Darüber
hinaus kann der verteilte Verzeichnisverwalter ein Verbindungssystem zum
Verbinden der Verzeichnisseiten aufweisen, um eine hierarchische
Datenstruktur der verbundenen Verzeichnisseiten zu bilden sowie
ein Bereichsverbindungssystem zum Verbinden der Verzeichnisseiten
als eine Funktion des Bereichssignals, um eine hierarchische Datenstruktur
von verbundenen Verzeichnisseiten zu bilden.
-
Da die durch das System gespeicherten
Daten heimatlos sein können,
indem die Daten keinen festen physikalischen Ort haben aber wandern
können,
wenn die Ressourcen und andere Faktoren zwischen den Speichervorrichtungen
des Netzwerks diktieren, kann ein erfindungsgemäßes Computersystem einen Verzeichnisseitengenerator
umfassen, der einen Knotenauswähler
zum Erzeugen eines verantwortlichen Knotensignals hat, das für einen
ausgewählten
der mehreren Computer mit Ortsinformationen für einen Teil des gemeinsam
genutzten Adreßraums
repräsentativ
ist. Dies bietet ein Indirektionsgrad, der das Verzeichnis von dem
physikalischen Speicherort der Daten entkoppelt. Folglich muß das Verzeichnis
nur den Knoten oder eine andere Vorrichtung identifizieren, der bzw.
die den physikalischen Ort der Daten nachvollzieht. Auf diese Weise muß das Verzeichnis,
jedesmal wenn sich Daten zwischen physikalischen Speicherorten bewegen,
nicht aktualisiert werden, da die Knotennachverfolgung des Orts
der Daten sich nicht geändert
hat und stets die physikalische Ortsinformation bietet.
-
Folglich kann das System Seitengeneratoren umfassen,
die Verzeichnisseiten erzeugen, die Informationen tragen, die repräsentativ
für eine
Ortsüberwachung
sind, wie bspw. einen verantwortlichen Computerknoten, der einen
Datenspeicherort verfolgt, um eine Verzeichnisstruktur zum Verfolgen bzw.
Nachvollziehen heimatloser Daten bereitzustellen. Darüber hinaus
kann das Verzeichnis selbst als Seiten innerhalb des virtuellen
Speicherraums gespeichert sein. Daher kann der Datenspeicherort
Informationen speichern, die repräsentativ für eine Verzeichnisseite sind,
um die Verzeichnisstruktur als Seiten von heimatlosen Daten zu speichern.
-
Gemäß einem weiteren Aspekt kann
die Erfindung der vorstehend benannten US-Patentanmeldung als Verfahren
zum Bereitstellen eines Computersystems mit einem adressierbaren
gemeinsam genutzten Speicherraum verstanden werden. Das Verfahren
kann Schritte des Bereitstellens eines Netzwerks zum Tragen von
Datensignalen umfassen, die repräsentativ
für computerlesbare
Informationen sind, des Bereitstellens einer Festplatte, die mit
dem Netzwerk gekoppelt ist und des Aufweisens einer dauerhaften
Speicherung für
Datensignale, des Bereitstellens mehrerer Computer, wobei jeder
dieser Computer eine Schnittstelle aufweist, die mit dem Datennetzwerk
gekoppelt ist, zum Austauschen von Datensignalen zwischen den mehreren
Computern und des Zuordnens eines Teils des adressierbaren Speicherraums
zu einem Teil der dauerhaften Speicherung der Festplatte, um eine
adressier bare dauerhafte Speicherung für Datensignale zur Verfügung zu
stellen.
-
Nunmehr werden die Darstellungen
betrachtet, die dem adressierbaren gemeinsam genutzten Speichersystem
oder der Maschine der vorstehend benannten US-Patentanmeldung zugeordnet
sind. 7 zeigt ein Computernetzwerk 10,
das einen gemeinsamen Speicher bereitstellt, der den Speicherraum
für jeden
Knoten des dargestellten Computernetzwerks 210 überspannt.
-
Insbesondere zeigt 7 ein Computernetzwerk 210,
das eine Mehrzahl von Knoten 212a–212c aufweist, von
denen jeder eine CPU 214, ein Betriebssystem 216,
eine optionale private Speichervorrichtung 218 und ein
gemeinsam genutztes Speichersubsystem 220 aufweist. Wie
weiterhin in 5 dargestellt
ist, ist jeder Knoten 212a–212c über das gemeinsam
genutzte Speichersubsystem 220 mit einem virtuellen gemeinsam
genutzten Speicher 222 verbunden. Wie nachfolgend detaillierter
beschrieben werden wird, ermöglicht
das Computernetzwerk 210 durch Bereitstellen des gemeinsam
genutzten Speichersubsystems 220, das den Knoten 212a–212c ermöglicht,
auf den virtuellen gemeinsam genutzten Speicher 222 zuzugreifen,
den Netzwerknoten 212a–212c eine
Funktionalität
zu kommunizieren und gemeinsam zu nutzen unter Verwendung derselben
Techniken, die durch Anwendungen eingesetzt werden, wenn zwischen
Anmeldungen, die auf derselben Maschinen laufen, kommuniziert wird.
Diese Techniken können
ein Objekt verbinden und einbetten und dynamische Verbindungsbüchereien, Klassenregister
und andere solche Techniken verwenden. Folglich können die
Knoten 212 den virtuellen gemeinsam genutzten Speicher 222 verwenden, um
Daten und Objekte zwischen Anwendungsprogrammen auszutauschen, die
auf den unterschiedlichen Knoten 212 des Netzwerks 210 laufen.
-
Bei der in 7 gezeigten Ausführungsform kann jeder Knoten 212 ein
konventionelles Computersystem sein, wie bspw. ein im Handel erhältliches IBM
PC-kompatibles Computersystem. Der Prozessor 214 kann eine
Prozessoreinheit sein, die zum Ausführen von Datenverarbeitung
für dieses
Computersystem geeignet ist. Das Betriebssystem 216 kann irgendein
im Handel erhältliches
oder ein proprietäres
Betriebssystem sein, das Funktionen zum Zugreifen auf den lokalen
Speicher des Computersystems und des Netzwerkbildens umfaßt oder
auf diese zugreifen kann.
-
Die private Speichervorrichtung 218 kann
irgendeine Computerspeichervorrichtung sein, die zum Speichern von
Datensignalen geeignet ist, die für computerlesbare Informationen
repräsentativ sind.
Der private Speicher stellt dem Knoten mit einer lokalen Speicherung
bereit, die für
andere Knoten auf dem Netzwerk nicht erreichbar gehalten werden kann.
Typischerweise umfaßt
die private Speichervorrichtung 218 ein RAM, oder einen
Teil eines RAM-Speichers zum temporären Speichern von Daten und
Anwendungsprogrammen und zum Bereitstellen des Prozessors 214 mit
einer Speichereinrichtung zum Ausführen von Programmen. Die private Speichervorrichtung 18 kann
ebenfalls eine dauerhafte Speichereinrichtung aufweisen, typischerweise eine
Festplatteneinheit oder einen Teil einer Festplatteneinheit für die dauerhafte
Speicherung von Daten.
-
Das in 7 dargestellte, gemeinsam genutzte Speichersubsystem 220 ist
eine Ausführungsform
der Erfindung, die zwischen dem Betriebssystem 216 und
dem virtuellen gemeinsam genutzten Speicher 222 gekoppelt
ist und eine Schnittstelle zwischen dem Betriebssystem 216 und
dem virtuellen gemeinsam genutzten Speicher bildet, um dem Betriebssystem 216 zu
ermöglichen,
auf den virtuellen gemeinsam genutzten Speicher 222 zuzugreifen. Das
dargestellte gemeinsam genutzte Speichersubsystem 220 ist
ein Softwaremodul, das als eine selbständige Maschine für einen
verteilten gemeinsam genutzten Speicher arbeitet. Das dargestellte
System dient zur Erklärung
und andere Systeme der Erfindung können realisiert sein, wie bspw.
gemeinsam genutzte Speichersubsysteme, die in einem Anwendungsprogramm
eingebettet sein können
oder als ein eingebetteter Code einer Hardwarevorrichtung implementiert
sein können.
Andere solche Anwendungen können
ohne Verlassen des Bereichs der Erfindung umgesetzt sein.
-
Der dargestellte virtuelle gemeinsam
genutzte Speicher 222 verdeutlicht einen virtuellen gemeinsam
genutzten Speicher, auf den von jedem der Knoten 212a–212c über das
gemeinsam genutzte Speichersubsystem 220 zugegriffen werden
kann. Der virtuelle gemeinsam genutzte Speicher 222 kann
auf Vorrichtungen abbilden, die eine physikalische Speicherung für computerlesbare
Daten bereitstellen, die in 7 als
eine Mehrzahl von Seiten 224a–224d dargestellt
sind. Bei einer Ausführungsform
bilden die Seiten Teile des gemeinsam genutzten Speicherraums und
unterteilen den Adreßraum
des gemeinsam genutzten Speichers in seitenadressierbare Speicherräume. Beispielsweise
kann der Adreßraum in
Seiten von 4-Kilobyte-Abschnitte eingeteilt sein. Bei anderen Ausführungsformen
kann eine alternative Körnigkeit
verwendet werden, um den gemeinsam genutzten Speicherraum zu verwalten.
Jeder Knoten 212a–212c kann
durch das gemeinsam genutzte Speichersubsystem 220 auf
jede Seite 224a–224d zugreifen,
die in dem virtuellen gemeinsam genutzten Speicher 222 abgelegt
sind. Jede Seite 224a–224d repräsentiert
einen einzigartigen bzw. eindeutigen Eintrag von Computerdaten,
die innerhalb des virtuellen gemeinsam genutzten Speichers 222 gespeichert
sind. Auf jede Seite 224a–224d kann von jedem
der Knoten 212a–212c zugegriffen
werden und alter nativ kann jeder Knoten zusätzliche Seiten von Daten innerhalb
des virtuellen gemeinsam genutzten Speichers 222 speichern.
Auf jede neu gespeicherte Seite von Daten kann von jedem der anderen
Knoten 212a–212c zugegriffen
werden. Folglich bietet der virtuelle gemeinsam genutzte Speicher 222 ein
System zum gemeinschaftlichen Nutzen und Kommunizieren von Daten
zwischen jedem Knoten 212 des Computernetzwerks 210.
-
8 zeigt
in einem funktionellen Blockdiagramm ein Computernetzwerk 230,
das einen verteilten gemeinsam genutzten Speicher aufweist. Bei
dieser Ausführungsform
hat jeder Knoten 212a–212c ein
Speichersubsystem 232, das zwischen dem Betriebssystem 216 und
den beiden lokalen Speichervorrichtungen verbunden ist, dem RAM 234 und
der Platte 236, und das weiterhin mit einem Netzwerk 238 gekoppelt
ist, das mit jedem der dargestellten Knoten 212a, 212b und 212c und
mit einer Netzwerkspeichervorrichtung 226 gekoppelt ist.
Insbesondere zeigt 8 ein
verteiltes gemeinsam genutztes Speichernetzwerk 30, das
eine Mehrzahl von Knoten 212a–212c umfaßt, von
denen jeder eine Verarbeitungseinheit 214, ein Betriebssystem 216,
ein Speichersubsystem 232, ein RAM 234 und eine
Platte 236 umfaßt. 8 zeigt weiterhin ein Computernetzwerksystem 238,
das zwischen den Knoten 212a–212c und der Netzwerkspeichervorrichtung 226 verbunden
ist. Das Netzwerk 238 bietet ein Netzwerkkommunikationssystem über diese
Elemente.
-
Das dargestellte Speichersubsystem 232a–232c,
das zwischen dem Betriebssystem 216a–216c, den Speicherelementen 234a–234c, 236a–236c und
dem Netzwerk 238 verbunden ist, umschließt die lokalen
Speicher jedes der Knoten, um eine Abstraktion eines gemeinsam genutzten
virtuellen Speichersystems zu bieten, das über jeden der Knoten 212a– 212c auf
dem Netzwerk 238 gespannt ist. Die Speichersubsy steme 232a–232c können Softwaremodule
sein, die als Verteiler agieren, um Teile des adressierbaren Speicherraums über die dargestellten
Speichervorrichtungen abzubilden. Die Speichersubsysteme verfolgen
darüber
hinaus die in dem lokalen Speicher gespeicherten Daten jedes Knotens 212 und
arbeiten weiterhin als Netzwerkverbindungen mit einem Netzwerk 238 zum Übertragen von
Daten zwischen den Knoten 212a–212c. Auf diese Weise
greifen die Speichersubsysteme 232a–232c auf jedes Speicherelement
auf dem Netzwerk 238 zu und steuern dieses, um Speicherzugriffsoperationen
durchzuführen,
die für
das Betriebssystem 216 transparent sind. Folglich hat das
Betriebssystem 216 eine Schnittstelle zu dem Speichersubsystem 232 als
eine Schnittstelle für
einen globalen Speicherraum, der über jeden Knoten 212a bis 212c auf
dem Netzwerk 238 gespannt ist.
-
8 zeigt
weiterhin, daß das
System 230 einen verteilten gemeinsam genutzten Speicher
zur Verfügung
stellt, der eine dauerhafte Speicherung für Teile des verteilten Speichers
umfaßt.
Insbesondere umfaßt
die dargestellte Ausführungsform
ein Speichersubsystem, wie bspw. ein Subsystem 232a, das eine
Schnittstelle zu einer dauerhaften Speichervorrichtung hat, die
als die Platte 236a dargestellt ist. Das Subsystem 232a kann
die dauerhafte Speichervorrichtung betreiben, um eine dauerhafte
Speicherung für
Teile des verteilten gemeinsam genutzten Speicherraums bereitzustellen.
Wie dargestellt ist, hat jede dauerhafte Speichervorrichtung 236,
die in 8 dargestellt
ist, einen Teil des darauf abgebildeten adressierbaren Speicherraums.
Beispielsweise hat die Vorrichtung 236a die Teile des adressierbaren Speicherraums
C0, Cd, Cg, die darauf abgebildet sind, um eine dauerhafte
Speicherung für
Datensignale bereitzustellen, die in diesen Adreßbereichen abgelegt sind.
-
Folglich kann das Subsystem 232a eine
integrierte Steuerung von dauerhaften Speichervorrichtungen und
eines elektronischen Speichers bereitstellen, um dem verteilten
gemeinsam genutzten Speicherraum zu ermöglichen, alle möglichen
Typen von Speichervorrichtungen zu umspannen und den Teilen des
verteilten gemeinsam genutzten Speichers zu erlauben, sich zuwischen
dauerhaften und elektronischen Speichern in Abhängigkeit von vorbestimmten
Bedingungen, wie bspw. die vormalige Nutzung, zu bewegen.
-
Unter Bezugnahme auf die Ausführungsform,
die in 2 dargestellt
ist, können
die Knoten des Netzwerks in eine Hierarchie von Gruppen organisiert
sein. Bei diesen Ausführungsformen
können die
Speichersubsysteme 232a–232c einen Hierarchieverwalter
umfassen, der eine hierarchische Steuerung für die Verteilung von Daten
bereitstellt. Dies umfaßt
ein Steuern der Migrationssteuerung und der Verwaltungssteuerung,
was nachfolgend im Detail erläutert
ist, um eine hierarchische Datenmigration und ein Lastausgleichen
durchzuführen,
so daß sich die
Daten primär
zwischen Computern derselben Gruppe bewegen und durch andere Gruppen
in einer hierarchischen Ordnung durchgehen. Eine Ressourcenverteilung
ist ähnlich
verwaltet.
-
9 zeigt
detaillierter ein gemeinsam genutztes Speichersubsystem 240 gemäß der Erfindung. 9 zeigt ein gemeinsam genutztes
Speichersubsystem 240, das eine Schnittstelle 242,
einen DSM-Verzeichnisverwalter 244, eine Speichersteuerung 246,
eine lokale Platten-Cache-Steuerung 248 und eine lokale
RAM-Cache-Steuerung 250 umfaßt. 9 zeigt weiterhin das Netzwerk, einen
optionalen Nutzer des DSM-Systems, der als der Dienst 258 dargestellt
ist, das Betriebssystem 216, einen Plattentreiber 260,
ein Plattenelement 262 und ein RAM-Element 264.
-
Das in 9 dargestellte Speichersubsystem 240 kann
die Speicherverwaltungsoperationen des Netzwerkknotens 212 umschließen, um
einen virtuellen gemeinsam genutzten Speicher bereitzustellen, der
jeden Knoten umspannen kann, der in das Netzwerk 254 verbunden
ist. Folglich sieht jeder lokale Knoten 212 das Netzwerk
als ein Satz von Knoten, die jeweils mit einem großen gemeinsam
genutzten Computerspeicher verbunden sind.
-
Die dargestellte Schnittstelle bietet
einen Eingangspunkt für
den lokalen Knoten, um auf den gemeinsam genutzten Speicherraum
des Computernetzwerks zuzugreifen. Die Schnittstelle 242 kann direkt
mit dem Betriebssystem 216 gekoppelt sein, zu einem verteilten
Dienstprogramm, wie bspw. dem dargestellten DSM-Dateisystem 258,
zu einem verteilten Dienst auf Nutzerniveau oder alternativ zu einer
Kombination davon.
-
Die dargestellte Schnittstelle 240 bietet
eine Anwendungsprogrammschnittstelle (API), die eine speicherorientierte
API ist. Daher kann die dargestellte Schnittstelle 242 einen
Satz von Schnittstellen exportieren, die eine Steuerung auf niedrigem
Niveau des verteilten Speichers bietet. Wie in 9 dargestellt ist, exportiert die Schnittstelle 242 die
API zu dem Betriebssystem 216 oder zu dem optionalen DSM-Dienst 258.
Das Betriebssystem 216 oder der Dienst verwendet die Schnittstelle 242,
um Standardspeicherverwaltungstechniken anzufordern, wie bspw. Lesen
und Schreiben von Teilen des Speicherraums. Diese Teile des Speicherraums
können
Seiten sein, wie vorstehen beschrieben ist, die 4-Kilobyte-Teile des
gemeinsam genutzten Speicherraums sein können oder andere Speichereinheiten,
wie bspw. Objekte oder Segmente. Jede Seite kann innerhalb des gemeinsam
genutzten Speicherraums angeordnet sein, die durch ein globales
Adreßsignal für diese
Speicherseite bezeichnet ist. Das System kann Adreßsignale
von einem Anwendungsprogramm empfangen oder kann optional einen
globalen Adreßgenerator
umfassen, der die Adreßsignale erzeugt.
Der Adreßgenerator
kann ein umspannendes Modul umfassen, das Adreßsignale für einen Speicherraum, der die
Speicherkapazität
des Netzwerks umspannt, erzeugt.
-
Folglich empfängt bei einer Ausführungsform die
Schnittstelle 242 Aufforderungen, um Seiten des gemeinsam
genutzten Speicherraums zu manipulieren. Hierzu kann die Schnittstelle 242 ein
Softwaremodul umfassen, das eine Bibliothek von Funktionen umfaßt, die
als Dienste bezeichnet werden können, das
OS 216, oder andere Aufrufer oder eine Vorrichtung. Die
Funktionsaufrufe bieten dem OS 216 eine API der speicherorientierten
Dienste auf hohem Niveau, wie bspw. ein Lesen von Daten, Schreiben
von Daten und Zuordnen von Speicher. Die Implementierung der Funktionen
kann ein Setzen von Aufrufen zu Steuerungen umfassen, die die Verzeichnisverwaltung 244 und
die lokale Speichersteuerung 246 betreiben. Folglich kann
die Schnittstelle 242 ein Satz von Speicherfunktionsaufrufen
auf hohem Niveau zu Schnittstellen zu den Funktionselementen auf
niedrigem Niveau des gemeinsam genutzten Speichersubsystems 240 sein.
-
9 zeigt
weiterhin einen DSM-Verzeichnisverwalter 244, der mit der
Schnittstelle 242 gekoppelt ist. Die Schnittstelle 242 leitet
Aufforderungssignale durch, die Aufforderungen repräsentieren,
um Speicheroperationen zu implementieren, wie bspw. ein Zuordnen
eines Teils eines Speichers, Schließen eines Teils eines Speichers,
Abbilden eines Teils eines Speichers oder einige andere Speicherfunktionen
dieser Art. Der Verzeichnisverwalter 244 verwaltet ein
Verzeichnis, das Abbildungen enthalten kann, die jede Speichervorrichtung überspannen
können, die
mit dem in 8 dargestellten
Netzwerk 238 verbunden sind, einschließlich jedes RAM- und Plattenelements,
auf das durch das Netzwerk zugegriffen werden kann. Die Verzeichnisverwaltung
speichert eine globale Verzeichnisstruktur, die ein Abbilden des globalen
Adreßraums
zur Verfügung
stellt. Bei einer Ausführungsform,
wie detaillierter später
beschrieben wird, bietet die Verzeichnisverwaltung 244 ein globales
Verzeichnis, das zwischen globalen Adreßsignalen und verantwortlichen
Knoten auf dem Netzwerk abbildet. Ein verantwortlicher Knoten speichert Informationen,
die den Ort und Attribute von Daten beachten, die mit einer jeweiligen
globalen Adresse verbunden sind und speichert optional eine Kopie
der Daten dieser Seite. Folglich verfolgt der Verzeichnisverwalter 244 Informationen
zum Zugreifen auf irgendeinen Adreßort innerhalb des Identifikator-
bzw. Kennzeichnerraums.
-
Die Steuerung des gemeinsam genutzten Speichers
kann durch den Verzeichnisverwalter 244 und die Speichersteuerung 246 koordiniert
werden. Der Verzeichnisverwalter unterhält eine Verzeichnisstruktur,
die auf einer globalen Adresse betrieben werden kann, die von der
Schnittstelle 242 empfangen wurde und bezeichnet für diese
Adresse einen Knoten auf dem Netzwerk, der verantwortlich für die Unterhaltung
der Seite ist, die der Adresse des gemeinsam genutzten Speicherraums
zugeordnet ist. Wenn der Verzeichnisverwalter 244 identifiziert,
welcher Knoten für
die Unterhaltung einer bestimmten Adresse verantwortlich ist, kann
der Verzeichnisverwalter 244 einen Knoten identifizieren,
der Informationen zum Orten einer Kopie der Seite speichert und macht
den Aufruf zu der Speichersteuerung 246 dieses Knotens
und reicht die Speicheraufforderung zu der Speichersteuerung des
Knotens durch, die durch die Speicherschnittstelle 242 bereitgestellt
ist. Folglich ist der dargestellte Verzeichnisverwalter 244 verantwortlich
für die
Verwaltung einer Verzeichnisstruktur, die für jede Seite des gemeinsam
genutz ten Speicherraums einen verantwortlichen Knoten bezeichnet,
der den physikalischen Ort der jeweiligen auf den entsprechenden
Seiten gespeicherten Daten nachvollzieht. Daher kann das Verzeichnis
optional einen verantwortlichen Knoten oder eine andere Vorrichtung
identifizieren, die den Ort der Seite nachvollzieht bzw, verfolgt,
eher als daß direkt
der Ort der Seite bereitgestellt wird. Diese Indirektion erleichtert
eine Wartung des Verzeichnisses, wenn Seiten zwischen Knoten wandern.
-
Die Speichersteuerung 246 führt die
Speicherzugriffsfunktionen auf niedrigem Niveau durch, die Daten
innerhalb des Speicherelements, das mit dem Netzwerk verbunden ist,
physikalisch speichert. In der dargestellten Ausführungsform
kann der Verzeichnisverwalter 244 eines ersten Knotens
eine Speicherzugriffaufforderung durch die Schnittstelle 242 zu
dem Netzwerkmodul des OS 216 weiterleiten und über das
Netzwerk 254 zu einem zweiten Knoten, der den Verzeichnisverwalter 244 als
den verantwortlichen Knoten für
die gegebene Adresse kennzeichnet. Der Verzeichnisverwalter 244 kann
dann den verantwortlichen Knoten abfragen, um die Attribute und
den gegenwärtigen
Eigentümerknoten
der Speicherseite zu bestimmen, der der jeweiligen globalen Adresse
zugeordnet ist. Der Eigentümer
der jeweiligen Seite ist der Netzwerkknoten, der Kontrolle über das
Speicherbausteinelement hat, auf dem die Daten der zugeordneten
Seite gespeichert sind. Die Speichersteuerung 246 des Eigentümers kann über die
OS 216 des Knotens oder über
eine Schnittstelle auf den Speicher des Eigentümerknotens zugreifen, um auf
die Daten der Seite zuzugreifen, die physikalisch auf dem Eigentümerknoten
gespeichert sind.
-
Insbesondere ist der Verzeichnisverwalter 244,
wie in 9 dargestellt
ist, mit dem Netzwerkmodul 252 gekoppelt, das mit dem Netzwerk 254 gekoppelt
ist. Der Verzeichnisverwal ter kann einen Befehl und zugeordnete
Daten zu dem Netzwerkmodul 252 übertragen, welche der Netzwerkschnittstelle 252 anweisen,
ein Datensignal zu dem Eigentümerknoten
durchzureichen. Der Eigentümerknoten
empfängt
die Speicheraufforderung über
das Netzwerk 254 und über
das Netzwerkmodul 252, das die Speicheraufforderung zu
der Schnittstelle 242 des Eigentümerknotens durchreicht. Die
Schnittstelle 242 ist mit der Speichersteuerung 246 gekoppelt
und kann die Speicheraufforderung zu der lokalen Speichersteuerung
des Eigentümerknotens
weiterreichen, um die lokalen Speicherelemente zu betreiben, wie bspw.
die Platte oder RAM-Elemente, um die geforderte Speicheroperation
durchzuführen.
-
Sobald der Eigentümerknoten einmal die geforderte
Speicheroperation durchgeführt
hat, wie bspw. ein Lesen einer Seite von Daten, kann das Speichersubsystem 240 des
Eigentümerknotens
die Seite von Daten übertragen
oder eine Kopie der Seite von Daten über das Netzwerk 254 zu
dem Knoten, der ursprünglich
einen Zugriff auf den Teil des gemeinsam genutzten Speichers angefordert
hat. Die Seite von Daten wird über
das Netzwerk 254 zu dem Netzwerkmodul 252 des
anfordernden Knotens übertragen
und das gemeinsam genutzte Speichersubsystem 240 betreibt
die Speichersteuerung 246, um eine Kopie der zugegriffenen
Daten in den lokalen Speicher des anfordernden Knotens abzulegen.
-
Folglich kennzeichnet der Verzeichnisverwalter 244 bei
einer Ausführungsform
der Erfindung, wenn ein erster Knoten auf eine Seite des gemeinsam
genutzten Speicherraums zugreift, der nicht lokal auf dem Knoten
abgelegt ist, einen Knoten, der eine Kopie der Daten, die auf der
Seite abgelegt sind, hat und bewegt eine Kopie dieser Daten in den
lokalen Speicher des anfordernden Knotens. Die lokale Speichereinrichtung,
sowohl flüchtig
(bspw. ein lokales RAM) und dauerhaft (bspw. eine lokale Plattenspeicherung)
des anfordernden Knotens wird daher ein Cache- bzw. Zwischenspeicher
für Seiten,
die durch den lokalen Knoten angefordert wurden. Diese Ausführungsform
ist in 9 dargestellt,
die eine Speichersteuerung darstellt, die eine lokale Plattencachesteuerung 248 und
eine lokale RAM-Cachesteuerung 250 hat.
Beide dieser lokalen Cachesteuerungen können dem Betriebssystem 216 oder
anderen Nutzerseiten des gemeinsam genutzten Speicherraums, die
zwischengespeichert in dem lokalen Speicher der Knoten sind, einschließlich einem
lokalen dauerhaften Speicher und einem flüchtigen Speicher bereitstellen.
-
Das gemeinsam genutzte Speichersubsystem
kann eine Steuerung für
eine kohärente
Nachbildung aufweisen, die eine Kohärenz zwischen zwischengespeicherten
Seiten durch Verwenden einer Kohärenz
durch einen Ungültigkeitsprozeß erhält, eine
Kohärenz
durch einen Migrationsprozeß oder
einen anderen Kohärenzprozeß, der zur
Verwendung mit der vorliegenden Erfindung geeignet ist. Die Steuerung
für eine
kohärente
Nachbildung kann automatisch eine Kopie der in jeder Seite gespeicherten
Daten erzeugen und kann die Kopie in einer Speichervorrichtung ablegen,
die von der Speichervorrichtung der Originalkopie getrennt ist.
Dies bietet eine Fehlertoleranzoperation, da die Fehlfunktion irgendeiner Speichervorrichtung
nicht zu einem Datenverlust führt.
Die Steuerung für
eine kohärente
Nachbildung kann ein Softwaremodel sein, das alle Kopien von Seiten,
die in einem flüchtigen
Speicher gehalten und zum Schreiben verfügbar gemacht sind, überwacht. Die
Steuerung kann irgendeine Kohärenztechnik,
die vorstehend benannt ist, verwenden, und kann Tabellen von Ortinformationen
speichern, die die Ortsinformation für alle erzeugten Kopien kennzeichnet.
-
10 zeigt
detaillierter eine Ausführungsform
eines erfindungsgemäßen gemeinsam
genutzten Speichersubsystems. Das in 10 dargestellte gemeinsam
genutzte Speichersubsystem 270 umfaßt ein Element 274 für entfernte
Operationen, einen lokalen RAM-Cachespeicher 276, einen
RAM-Kopiersatz 278, ein globales RAM-Verzeichnis 280,
einen Plattenkopiersatz 282, ein globales Plattenverzeichnis 284,
eine Konfigurationsverwaltung 288, ein Policeelement 290 und
einen lokalen Plattencache 94. 10 zeigt weiterhin ein Netzwerkelement 304, einen
physikalischen Speicher 300, gemeinsam genutzte Datenelemente 302,
ein physikalisches Dateisystem 298, das Teil des Betriebssystems 216 ist,
einen Konfigurationsdienst 308, ein Diagnosedienst 310 und
eine Speicherzugriffsaufforderung 312. Das dargestellte
Subsystem 270 kann ein Computerprogramm sein, das mit dem
physikalischen Speicher, dem Dateisystem und dem Netzwerksystem
des Hauptknotens gekoppelt ist oder kann eine elektrische Schaltkreiskartenanordnung
sein, die eine Schnittstelle zu dem Hauptknoten hat oder kann eine Kombination
von Programmen und Schaltkreiskartenanordnungen sein.
-
Der in 10 dargestellte Flußplaner kann die Steuerungen
organisieren, die durch eine API des Subsystems 270 bereitgestellt
sind. Bei einer Ausführungsform
kann der Flußplaner 272 eine
Zustandsmaschine sein, die die Aufforderungen 312 überwacht
und diese beantwortet und entfernte Aufforderungen durch ein Netzwerk 304,
die Befehle für Speicheroperationen
sein können
und die Signale umfassen können,
die repräsentativ
für die
globalen Adressen sind, mit denen gearbeitet wird. Diese Speicheroperationsaufforderungen 312 können als Operationscodes
für grundlegende
Operationen von einer oder mehreren globalen Adressen agieren. Diese
können
Lese- oder Schreibaufforderungen oder andere Speicheroperationen
sein. Alternativ dazu kann der Flußplaner 272 ein Programm
sein, wie bspw. ein Interpreter, der eine Ausführungsumgebung eine Ausführungsumgebung
bereitstellt, und der diesen Operationscode in Kontrollflußprogramme,
die als Applets bezeichnet werden, abbilden kann. Diese Applets
können
unabhängige
ausführbare
Programme sein, die beide Umgebungsdienste, wie bspw. ein Verketten
bzw. Threading, eine Synchronisation und eine Pufferverwaltung und
die in 10 dargestellten
Elemente verwenden. Die API ist geeignet, von beiden externen Klienten
angerufen zu werden, wie einem verteilten gemeinsam genutzten Speicherdateisystem
sowie rekursiv durch die Applets und die anderen Elemente 274– 294 des Subsystems 270.
Jedes Element kann einen Grad an Einkapselung für die Verwaltung einer bestimmten Ressource
oder einem Aspekt des Systems bereitstellen. Hierzu kann jedes Element
eine API exportieren, die aus Funktionen, die durch die Applets
auszuführen
sind, besteht. Diese Struktur ist in 10 dargestellt.
Folglich kann der Flußplaner 272 eine
Umgebung bereitstellen, um Applets zu laden und auszuführen. Diese
Applets werden durch den Flußplaner 272 auf
einer Basis pro Operationscode versandt und können den Steuerfluß für eine sequentielle
oder parallele Ausführung
eines Elements durchführen, um
den Operationscode auf der spezifizierten globalen Adresse zu implementieren,
wie bspw. eine Lese- oder Schreiboperation. Optional kann der Flußkoordinierer 272 ein
Element aufweisen, um das Applet zur Laufzeit dynamisch zu ändern, wie
auch Applets parallel und interpretiert auszuführen.
-
Das dargestellte gemeinsam genutzte
Speichersubsystem 270 umfaßt einen binär verzweigten Verzeichnisverwalter,
der das globale RAM-Verzeichnis 280 und das globale Plattenverzeichnis 284 umfaßt. Das
globale RAM-Verzeichnis 280 ist ein Verzeichnisverwalter,
der Informationen nachvollzieht bzw. nachverfolgt, die den Ort der
Seiten bereitstellen können,
die in dem flüchtigen
Speicher der Netzwerkknoten, typischerweise ein RAM-Speicher, abgelegt sind.
Das globale Plattenverzeichnis 284 ist ein globaler Plattenverzeichnisverwalter,
der eine Verzeichnisstruktur verwaltet, die Informationen nachvollzieht, die
den Ort der Seiten bereitstellen, die auf dauerhaften Speichervorrichtungen
abgelegt sind. Zusammen stellen das globale RAM-Verzeichnis 280 und
das globale Plattenverzeichnis 284 dem gemeinsam genutzten
Speichersubsystem 270 eine integrierte Verzeichnisverwaltung
für Seiten
bereit, die in einem dauerhaften Speicher und einem flüchtigen
Speicher abgelegt sind.
-
Bei einer Ausführungsform kann ein Seitenelement
das RAM und die Plattenverzeichnisverwalter betätigen, um Teile des adressierbaren
Speicherraums zwischen einem der flüchtigen Speicher und einem
der dauerhaften Speicher wieder abzubilden. In dem gemeinsam genutzten
Speichersystem ermöglicht
dies dem Seitenelement, Seiten von dem flüchtigen Speicher eines der
Knoten zu einem Plattenspeicher eines weiteren Knotens wieder abzubilden.
Folglich reicht die RAM-Verzeichnisverwaltung eine
Steuerung der Seite zu der Plattenverzeichnisverwaltung weiter,
die dann die Seite als eine andere Seite von Daten behandeln kann.
Dies ermöglicht eine
verbesserte Lastausgleichung durch Entfernen von Daten von einem
RAM-Speicher und Speichern dieser in den Plattenvorrichtungen unter
der Kontrolle bzw. Steuerung des Plattenverzeichnisverwalters.
-
Daten können in dem RAM-Speicher von mehr
als dem einen Knoten gespeichert werden, dem dauerhaften Speicher
von mehr als dem einen Knoten oder gewissen Kombinationen von RAM
und dauerhaften Speicher, die über
das Netzwerk verteilt sind. Die natürliche Verteilung von Daten,
die in dem System vorliegen, bietet eine erste Linie der Defensive
gegen Knotenfehlfunktionen. Zusätzlich
zu der natürlichen
Verteilung von Daten kann das System Seiten von Daten „duplizieren", das heißt, das
System kann Kopien von Seiten oder mehreren Knoten speichern. Das
globale Plattenverzeichnis 284 bildet Adreßbereiche
auf Knoten ab, die für
eine Verwaltung der Seiten innerhalb jedes Bereichs verantwortlich
sind. Die Knoten, die verantwortlich für einen Bereich von Adressen
sind, werden als „Kernhalter" dieser Seiten benannt.
-
Jeder Seite kann eine minimale Anzahl
von Kernhaltern zugeordnet sein, unter die diese nicht fallen sollten.
Beispielsweise, wenn einer Seite drei als die minimale Anzahl von
Kernhaltern zugewiesen ist und der dritte Kernhalter eine Fehlfunktion
hat, die einen Zugriff auf dies Seite verhindert, ist die Seite
unter eine bevorzugte minimale Anzahl von Kernhaltern gefallen und
eine weitere Kopie der Seite sollte gemacht werden. Eine weitere
Kopie der Seite kann auf dem Kernhalterknoten gemacht werden (wenn
dieser nicht vollständig
ausgefallen ist), oder ein neuer Kernhalter kann einer Kopie der
Seite bestimmt sein, die durch einen der überstehenden Kernhalter gegeben
ist.
-
In Anspielung auf das vorstehend
genannte wird ein Reduplizieren ebenfalls verwendet um sich von
einem abgeschlossenen Knoten zu erholen und ein Reduplizieren nach
einer Knotenfehlfunktion wird nachfolgend detaillierter beschrieben
werden.
-
Die lokale Speichersteuerung des
Subsystems 270 ist durch den lokalen RAM-Cachespeicher 276 und
den lokalen Platten-Cachespeicher 294 bereitgestellt.
Der lokale RAM-Cachespeicher 276,
der mit dem physikalischen Speicher 300 des lokalen Knotens
gekoppelt ist, kann, wie vorstehend beschrieben ist, auf den virtuellen
Speicherraum des lokalen Knotens zugreifen, um auf Daten zuzugreifen, die
physikalisch innerhalb des RAM-Speichers 300 abgelegt sind.
Vergleichbar ist der lokale Plattenspeicher 294 mit der
dauer haften Speichervorrichtung 298 gekoppelt und kann
auf einen physikalischen Ort zugreifen, der Daten des verteilten
gemeinsam genutzten Speichers in der lokalen dauerhaften Speicherung
hält.
-
10 zeigt
ebenfalls ein Element 274 für entfernte Operationen, das
zwischen dem Netzwerk 304 und dem Flußplaner 272 gekoppelt
ist. Das entfernte Operationselement 274 verhandelt die Übertragung
der Daten über
das Netzwerk 304, um Teile der Daten, die in dem gemeinsam
genutzten Speicherraum abgelegt sind, zwischen den Knoten des Netzwerks
zu bewegen. Das Element 274 für entfernte Operationen kann
ebenfalls Dienste von entfernten Gleichrangigen anfordern, d. h.
es ist nicht geeignet, eine Kohärenz
zu erhalten oder aus anderen Gründen.
-
10 zeigt
ebenfalls ein Policeelement 290, das ein Softwaremodul
sein kann, das als Steuerung arbeitet, um die Verfügbarkeit
von Ressourcen zu bestimmen, wie bspw. Druckerfähigkeiten, Festplattenraum,
verfügbarer
RAM-Speicher und andere solche Ressourcen. Die Policesteuerung kann
irgendeine der geeigneten Heuristiken verwenden, um die Elemente,
wie bspw. die Seitensteuerung, den Plattenverzeichnisverwalter und
andere Elemente anzuweisen, dynamisch die verfügbaren Ressourcen zu verteilen.
-
10 zeigt
weiterhin ein Speichersubsystem 270, das einen RAM-Kopiersatz 278 und
eine Plattenkopiersatz 282 umfaßt. Diese Kopiersätze können Kopien
von Seiten verwalten, die bei einem einzelnen Knoten zwischengespeichert
sind. Der Plattenkopiersatz 282 kann Informationen über Kopien
von Seiten halten, die in dem lokalen Plattencachespeicher abgelegt
sind, der ein lokaler dauerhafter Speicher sein kann. Vergleichbar
kann der RAM-Kopiersatz 278 Informationen über Kopien
von Seiten halten, die in dem lokalen RAM- Cachespeicher abgelegt sind, der ein
lokales RAM sein kann. Diese Kopiersätze umgeben ein Indexieren
und eine Speicherung von Kopiersatzdaten, die von Applets verwendet
werden können
oder anderen ausführbaren
Code zum Erhalten der Kohärenz
von Daten, die in dem gemeinsam genutzten Speicherraum abgelegt
sind. Die Kopiersatzelemente können
Kopiersatzdaten erhalten, die die Seiten kennzeichnen, die durch
den Hauptknoten zwischengespeichert sind. Weiterhin kann der Kopiersatz
die anderen Knoten auf dem Netzwerk kennzeichnen, die eine Kopie
der Seite halten und kann weiterhin für jede Seite kennzeichnen,
welcher dieser Knoten der Eigentümerknoten
ist, wobei der Eigentümerknoten
ein Knoten sein kann, der Schreibrechte auf die Seite hat, auf die
zugegriffen wird. Die Kopiersätze
selbst können
in Seiten des verteilten gemeinsam genutzten Speicherraums abgelegt
sein.
-
Der lokale RAM-Cachespeicher 276 bietet eine
Speicherung für
Speicherseiten und deren Attribute. Bei einer Ausführungsform
bietet der lokale RAM-Cachespeicher 276 einen globalen
Adreßindex,
um auf die zwischengespeicherten Seiten des verteilten Speichers
und auf die auf diese Seite basierten Attribute zuzugreifen. Bei
dieser Ausführungsform
bietet der lokale RAM-Cachespeicher 276 das Indexieren
durch Speichern in einem Speicher einer Liste von jeder globalen
Adresse, die in dem lokalen RAM zwischengespeichert ist. Mit jeder
aufgelisteten globalen Adresse bietet der Index einen Zeiger in
einen Pufferspeicher und zu dem Ort der Seitendaten. Optional kann
mit jeder aufgelisteten globalen Adresse der Index weiterhin Attributinformationen
bereitstellen, einschließlich
einer Versionsmarkierung, die repräsentativ für die Version der Daten ist,
einer Speichermarke, die repräsentativ
dafür ist, ob
die im RAM zwischengespeicherten Daten eine Kopie der auf der Platte
gehaltenen Daten sind, oder ob die im RAM zwischengespeicherten
Daten modifiziert wurden, aber noch nicht zu der Platte übertragen
wurden, und eines flüchtigen
Bits, um anzuzeigen, ob die Seite durch einen Sicherungsspeicher
in dem dauerhaften Speicher gesichert ist und einschließlich anderer
solcher Attributinformationen, die zum Verwalten der Kohärenz der
gespeicherten Daten nützlich
sind.
-
Bei der in 10 dargestellten Ausführungsform
stellt das Speichersubsystem 270 dem verteilten Speicherraum
durch die koordinierte Operation des Verzeichnisverwalters den Knotenzugriff
bereit, der das globale RAM-Verzeichnis 280 und das globale
Plattenverzeichnis 284, die Cachesteuerung, die den lokalen
RAM-Cachespeicher und die lokalen Plattencacheelemente 276 und 294 umfaßt, und
die Kopiersatzelemente, die den RAM-Kopiersatz 278 und
den Plattenkopiersatz 282 umfassen, bereit.
-
Die Verzeichnisverwaltung stellt
eine Verzeichnisstruktur bereit, die den gemeinsam genutzten Adreßraum indexiert.
Beim Fortführen
des Beispiels des in Seiten aufgeteilten gemeinsam genutzten Adreßraums erlaubt
der Verzeichnisverwalter des Subsystems 270 dem Hauptknoten,
durch globale Adressen auf Seiten des gemeinsam genutzten Speicherraums
zuzugreifen.
-
11 und 12 zeigen ein Beispiel einer
Verzeichnisstruktur, die einen Zugriff auf den gemeinsam genutzten
Speicherraum bereitstellt. 11 zeigt eine
Verzeichnisseite 320, die einen Seitenkopf 322 und
Verzeichniseinträge 324 und 326 umfaßt, wobei jeder
Verzeichniseintrag ein Bereichsfeld 330, ein verantwortliches
Knotenfeld 332 und ein Adreßfeld 334 umfaßt. Die
Verzeichnisseiten können
durch einen Verzeichnisseitengenerator erzeugt werden, der ein Softwaremodul
sein kann, das durch den Verzeichnisverwalter gesteuert ist. Es
ist zu verstehen, daß die
Verzeichnisverwaltung mehrere Verzeichnisse erzeugen kann, einschließlich eines
für die
globale Platte und eines für
die globalen RAM-Verzeichnisse. Die dargestellte Verzeichnisseite 320 kann
eine Seite des globalen Adreßraums
sein, wie bspw. ein 4-Kilobyte-Teil des gemeinsam genutzten Adreßraums. Daher
kann die Verzeichnisseite in dem verteilten gemeinsam genutzten
Speicherraum abgelegt sein, so wie die anderen Seiten, auf die die
Verzeichnisseiten Zugriff bereitstellen können.
-
Wie weiterhin in 11 dargestellt ist, umfaßt jede
Verzeichnisseite 120 einen Seitenkopf 322, der
Attributinformationen für
diesen Seitenkopf umfaßt,
die typischerweise Metadaten für
die Verzeichnisseite sind, und umfaßt weiterhin Verzeichniseinträge, wie
bspw. die dargestellten Verzeichniseinträge 324 und 326,
die einen Index in einen Teil des gemeinsam genutzten Adreßraums bereitstellen,
wobei dieser Teil eine oder mehrere Seiten sein kann, einschließlich all
der Seiten des verteilten gemeinsam genutzten Speicherraums. Die
dargestellte Verzeichnisseite 320 umfaßt Verzeichniseinträge, die
einen ausgewählten
Bereich von globalen Adressen des gemeinsam genutzten Speicherraums
indexieren. Hierzu kann der Verzeichnisgenerator einen Bereichsgenerator
umfassen, so daß jeder
Verzeichniseintrag ein Bereichsfeld 330 aufweisen kann,
das den Start eines Bereichs der Adressen der Eintragungsorte beschreibt.
-
Folglich kann jede Verzeichnisseite 320 eine Mehrzahl
von Verzeichniseinträgen
umfassen, wie bspw. Einträge 324 und 326,
die den Adreßraum
in eine Untermenge von Adreßbereichen
unterteilen kann. Beispielsweise umfaßt die dargestellte Verzeichnisseite 320 zwei
Verzeichniseinträge 324 und 326.
Die Verzeichniseinträge 324 und 326 können bspw.
den Adreßraum
in zwei Unterabschnitte unterteilen. Bei diesem Beispiel könnte der
Startadreßbereich
des Verzeichniseintrags 324 die Basisadresse des Adreßraums sein
und der Startadreßbereich
des Verzeichniseintrags 326 könnte die Adresse für die obere
Hälfte
des Speicherraums sein. Folglich bietet der Verzeichniseintrag 324 einen
Index für
Daten, die in dem Adreßraum
zwischen der Basisadresse und bis zu einem mittleren Punkt des Speicherraums
abgelegt sind und dazu ergänzend
bietet der Verzeichniseintrag 326 einen Index für Seiten,
die in dem Adreßraum
abgelegt sind, der von dem mittleren Punkt des Adreßraums zu
der höchsten
Adresse reicht.
-
11 zeigt
weiterhin eine Verzeichnisseite 320, die in jedem Verzeichniseintrag
ein verantwortliches Knotenfeld 332 und das globale Adreßfeld 334 der
abgeleiteten Seite umfaßt.
Diese Felder 332, 334 bieten weiter Ortsinformationen
für die
Daten, die in den Seiten innerhalb des Adreßbereichs, der in Feld 330 gekennzeichnet
ist, gespeichert sind.
-
12 zeigt
ein Verzeichnis, das aus Verzeichnisseiten gebildet ist, die ähnlich den
in 9 dargestellten
sind. 12 zeigt, daß das Verzeichnis 340 Verzeichnisseiten 342, 350–354 und 360–366 umfaßt. 12 zeigt weiterhin, daß das Verzeichnis Ortsinformationen
zu den Seiten des verteilten gemeinsam genutzten Speicherraums bereitstellt,
die in 12 als Seiten 370–384 dargestellt
sind.
-
Die in 12 dargestellte Verzeichnisseite 342 arbeitet
wie eine Wurzelverzeichnisseite und kann bei einer statischen Adresse
angeordnet sein, die jedem Knoten bekannt ist, der mit dem verteilten Adreßraum gekoppelt
ist. Die Wurzelverzeichnisseite 342 umfaßt drei
Verzeichniseinträge 344, 346 und 348.
Jeder in 12 dargestellte
Verzeichniseintrag hat Verzeichniseinträge, die ähnlich denen in 11 dargestellten sind.
Beispielsweise umfaßt
ein Ver zeichniseintrag 344 ein Variable Co, die das Adreßbereichsfeld 330 repräsentiert,
eine Variable Nj, die das Feld 332 repräsentiert und eine Variable
Cs, die das Feld 334 repräsentiert. Die dargestellte
Wurzelverzeichnisseite 342 unterteilt den Adreßraum in
drei Bereiche, die als ein Adreßbereich
dargestellt sind, der sich zwischen den Adressen Co und Cd erstreckt, ein
zweiter Adreßbereich,
der sich zwischen den Adressen Cd und Cg erstreckt und ein dritter
Adreßbereich,
der sich zwischen Cg und dem höchsten Speicherort
des Adreßraums
erstreckt.
-
Wie weiterhin in 12 dargestellt ist, zeigt jeder Verzeichniseintrag 344, 346 und 348 auf
eine untergeordnete Verzeichnisseite, die als Verzeichnisseiten 350, 352 und 354 dargestellt
sind, von denen jede weiterhin den Adreßbereichindex durch den zugeordneten
Verzeichniseintrag des Wurzelverzeichnisses 342 unterteilt.
In 11 wird dieser Unterteilungsprozeß, wenn
jede der Verzeichnisseiten 350, 352 und 354 jeweils
wieder Verzeichniseinträge
hat, die untergeordneten Verzeichnisseiten anordnen, einschließlich der
dargestellten Beispiele von Verzeichnisseiten 360, 362, 364 und 366,
fortgeführt.
-
Das dargestellte Beispiel von Verzeichnisseiten 360, 362, 364 und 366 sind
jeweils Ast- bzw. Verzweigungseinträge. Die Verzweigungseinträge enthalten
Verzeichniseinträge,
wie die Verzeichniseinträge 356 und 358 des
Verzweigungseintrags 360, der ein Bereichsfeld 330 und
das verantwortliche Knotenfeld 332 speichert. Diese Verzweigungseinträge kennzeichnen
eine Adresse und einen verantwortlichen Knoten für die Seite in dem verteilten
Speicherraum, auf die zugegriffen wird, wie bspw. die dargestellten
Seiten 370–384.
Wie bspw. in 12 dargestellt
ist, zeigt der Verzweigungseintrag 356 zu der Seite 370,
die dem Bereichsfeld 330 des Verzweigungseintrags 356 entspricht,
für den
ein Verzeich niseintrag eine Seite ist, auf die zugegriffen wird.
Auf diese Weise stellt die Verzeichnisstruktur 340 Ortsinformationen
für Seiten
bereit, die in dem verteilten Adreßraum abgelegt sind.
-
Bei der in 12 dargestellten Ausführungsform
kann ein Knotenauswähler
einen verantwortlichen Knoten für
jede Seite auswählen,
wie vorstehend beschrieben ist, so daß der Verzweigungseintrag 356 Informationen über die
Adresse und den verantwortlichen Knoten der zu lokalisierenden Seite
bereitstellt. Folglich verfolgt das Verzeichnis Eigentumsverhältnisse
und eine Verantwortlichkeit für
Daten, um ein Grad an Indirektion zwischen dem Verzeichnis und dem
physikalischen Ort der Daten bereitzustellen. Während einer Speicherzugriffsoperation
reicht das Speichersubsystem 270 die Adresse der Seite,
auf die zugegriffen wird, zu dem verantwortlichen Knoten weiter,
der in dem Verzeichniseintrag 356 angezeigt ist. Das gemeinsam
genutzte Speichersubsystem dieses Knotens kann einen Knoten kennzeichnen,
der eine Kopie der Seite speichert, auf die zugegriffen wird, einschließlich des
Eigentümerknotens.
Diese Kennzeichnung eines Knotens mit einer Kopie kann durch den
RAM-Kopiersatz oder den Plattenkopiersatz des verantwortlichen Knotens durchgeführt werden.
Der Knoten, der eine Kopie in seinem lokalen physikalischen Speicher
abgelegt hat, wie bspw. der Eigentümerknoten, kann dessen lokale
Cacheelemente verwenden, einschließlich des lokalen RAM-Cachespeichers
und des lokalen Plattencachespeichers, um von dem globalen Adreßsignal
einen physikalischen Ort der Daten, die auf der Speiche abgelegt
sind, auf die zugegriffen wird zu kennzeichnen. Das Cacheelement
kann das Betriebssystem des Eigentümerknotens verwenden, um auf
die Speichervorrichtung zuzugreifen, die den physikalischen Ort
hält, damit
auf die auf der Seite gespeicherten Daten zugegriffen werden kann.
Für eine
Lese-Speicher-Operation oder für
andere ähnliche Operationen
können
die Daten, die von dem physikalischen Speicher des Eigentümerknotens
gelesen werden, über
das Netzwerk zu dem Speichersubsystem des Knotens gereicht werden,
der das Lesen anfordert und nachfolgend in den virtuellen Speicherraum
des auffordernden Knotens zur Verwendung durch diesen Knoten gespeichert
werden.
-
Unter Bezugnahme auf 12 kann gesehen werden, daß die dargestellte
Verzeichnisstruktur 340 eine hierarchische Struktur umfaßt. Hierzu
bietet die Verzeichnisstruktur 340 eine Struktur, die kontinuierlich
den Speicherraum in kleinere und kleinere Abschnitte unterteilt.
Darüber
hinaus ist jeder Abschnitt durch Verzeichnisseiten derselben Struktur
repräsentiert,
aber Indizes-Adreßräume von
unterschiedlicher Größe. Wenn
Seiten erzeugt oder gelöscht
werden, setzt ein Verbinder die Seiten von dem Verzeichnis ein oder
löscht
diese. Bei einer Ausführungsform ist
der Verbinder ein Softwaremodul zum Verbinden von Datenstrukturen.
Der Verbinder kann in Reaktion auf die Adreßbereiche arbeiten, um die
dargestellte hierarchische Struktur bereitzustellen. Folglich bietet das
dargestellte Verzeichnis 340 ein skalierbares Verzeichnis
für den
gemeinsam genutzten Adreßraum.
Darüber
hinaus sind die Verzeichnisseiten in dem verteilten Adreßraum abgelegt
und durch das verteilte gemeinsam genutzte Speichersystem erhalten.
Eine Wurzel für
das Verzeichnis kann an bekannten Orten abgelegt sein, um ein Urladen
bzw. Booten des Systems zu ermöglichen.
Folglich werden häufig genutzte
Seiten kopiert und verteilt und seltener genutzte Seiten werden
zu der Platte verschoben. Vergleichbar werden Verzeichnisseiten
zu jenen Knoten wandern, die auf diese am meisten zugreifen und stellen
ein Grad von Selbstorganisation bereit, der den Netzwerkverkehr
reduziert.
-
13 zeigt
das Verzeichnis aus 12, das
durch ein System gemäß der Erfindung
verwendet wird. Insbesondere 13 zeigt
ein System 400, das zwei Knoten 406a und 406b,
eine Verzeichnisstruktur 340 und ein paar von lokalen Speichern mit
flüchtigen
Speichervorrichtungen 264a und 264b und dauerhaften
Speichervorrichtungen 262a und 662b aufweist.
Ein dargestellter Knoten 406a umfaßt einen Adreßverbraucher 408a,
eine globale Adresse 410a und eine Schnittstelle 242a,
eine Verzeichnisverwaltung 244a und eine Speichersteuerung 246a. Ein
Knoten 406b hat entsprechende Elemente. Diese Knoten sind über das
Netzwerk 254 verbunden. Das Verzeichnis 340 hat
eine Wurzelseite, Verzeichnisseiten A–F und Seiten 1–5.
-
Jeder Knoten 406a und 406b arbeitet
wie vorstehend beschrieben. Die dargestellten Adreßverbraucher 408a und 408b können ein
Anwendungsprogramm, ein Dateisystem, eine Hardwarevorrichtung oder
irgendein anderes solches Element sein, das einen Zugriff auf den
virtuellen Speicher anfordert. Im Betrieb fordern die Adreßverbraucher 408a und 408b eine
Adresse oder einen Bereich von Adressen an und der Verzeichnisverwalter
kann einen globalen Adreßgenerator
umfassen, der die Verbraucher mit den angeforderten Adressen versorgt, oder
einen Zeiger zu der angeforderten Adresse. Wenn Adressen erzeugt
werden, erzeugen die jeweiligen Verzeichnisverwalter 244a und 244b Verzeichnisseiten
und speichern die Seiten in der Verzeichnisstruktur 340.
Wie dargestellt ist, verfolgt die Verzeichnisstruktur 340 die
Teile des Adreßraums,
der durch das System 400 verwendet wird und eine physikalische
Speicherung für
jede Seite ist innerhalb der lokalen Speicher vorgesehen.
-
Wie in 13 gezeigt ist, sind die Daten, die den
Verzeichnisseiten zugeordnet sind, verteilt über die zwei lokalen Speicher
abgelegt und Zweifachkopien können
existie ren. Wie vorstehend beschrieben und nun in 13 dargestellt ist, können die
Daten sich zwischen unterschiedlichen lokalen Speichern bewegen
oder zwischen einer flüchtigen
und einer dauerhaften Speicherung blättern. Die Datenbewegung kann
als Reaktion auf die Datenanforderungen sein, die durch Speichernutzer,
wie bspw. Anwendungsprogramme, gemacht werden, oder durch eine Operation
der Migrationssteuerung, die vorstehend beschrieben ist. Wie ebenfalls
vorstehend beschrieben ist, kann die Bewegung von Daten zwischen
unterschiedlichen Speicherorten ohne die Erforderlichkeit von Änderungen
in dem Verzeichnis 340 auftauchen. Dies wird durch Bereitstellen
eines Verzeichnisses 340 erzielt, das von dem physikalischen
Ort der Daten durch Verwenden eines Zeigers auf einen verantwortlichen
Knoten entkoppelt ist, der den Datenspeicherungsort verfolgt bzw.
nachvollzieht. Folglich kann der verantwortliche Knoten, obwohl
der Datenspeicherungsort sich ändern
kann, konstant bleiben, wodurch eine Änderung des Verzeichnisses 340 nicht
mehr notwendig ist.
-
Wiederherstellung
-
Das System und die Verfahren, die
vorstehend beschrieben wurden, erlauben es, einen verteilten Systemadreßraum zu
teilen bzw. gemeinsam zu nutzen, einschließlich einer permanenten Speicherung
für einen
Speicher und großzügige Handhabe von
Knotenfehlverhalten. Da das RAM-Verzeichnis, das Plattenverzeichnis
und das Dateisystem über
jeden Knoten in dem verteilten gemeinsam genutzten System verteilt
sind, kann ein Ausfall eines Knotens ein „Loch" in dem RAM-Verzeichnis, dem Plattenverzeichnis,
dem Dateisystem oder einer Kombination der dreien zurücklassen.
-
Das hierin beschriebene System beruht
auf zwei Konzepten, um ein gemeinschaftliches Nutzen von Speicher
und eine Feh lertoleranz zu unterstützen. Diese Konzepte sind quorum
bzw. Beschlußfähigkeit
oder heartbeat bzw. Herzschlag. Das Konzept eines Ankerknotens muß jedoch
eingeführt
werden, bevor die Konzepte Beschlußfähigkeit und Herzschlag beschrieben
werden.
-
Ankerknoten sind spezielle Netzwerkknoten, die
eine Kopie der gesamten Knotenverzeichnisdatenbank halten und eine
Speicherung für
andere wichtige Systeminformationen bereitstellen können, wie
Kopien der Wurzel des Plattenverzeichnisbaums. Ein Knoten ist als
ein Ankerknoten konfiguriert, wenn er dem Netzwerk eingeführt bzw.
vorgestellt wurde und dies kann durch Setzen eines Werts in einer
Konfigurationsdatei gemacht werden, die auf dem Knoten vorliegt,
oder der Knoten kann als ein Ankerknoten, unter Verwendung von Hardwaretechniken,
wie bspw. Jumper oder eine spezielle Verkabelung konfiguriert sein.
Ankerknoten können
ebenfalls eine komplette Liste von allen anderen Ankerknoten in
dem Netzwerk speichern. Jeder Ankerknoten kann mit einer Liste von
allen anderen Ankerknoten durch den Systemverwalter oder eine Initialisierung
versehen sein, wobei jeder Ankerknoten ein Suchprotokoll verwenden
kann, um andere Ankerknoten zu orten.
-
Eine Beschlußfähigkeit zeigt an, daß genügend Knoten
in dem System funktional bleiben, um eine geeignete Datenverarbeitung
und ein geeignetes gemeinschaftliches Nutzen von Speicher zur Verfügung zu
stellen. Da die Anzahl der in einem Netzwerk vorliegenden Knoten
sehr hoch sein kann, partizipieren nicht alle Knoten bei der Berechnung
einer Beschlußfähigkeit.
Um Verarbeitungsanforderungen zu reduzieren, partizipieren nur „Ankerknoten" bei der Berechnung
der Beschlußfähigkeit.
Beim Versuch eine Beschlußfähigkeit
einzurichten, kann jeder Ankerknoten eine „Stimme" beitragen. Wenn die Anzahl der Stimmen,
die empfangen wurden, über
ei nen vorgegebenen Schwellwert liegt, dann wird die Beschlußfähigkeit
eingerichtet und eine normale Verarbeitung wird bewirkt. Eine Beschlußfähigkeit
kann ebenfalls verwendet werden, um großzügig zu arbeiten, wenn ein Netzwerkausfall
zu einem Partitionieren des Netzwerks in zwei oder mehr Regionen
führt. Eine
der Partitionen kann fortfahren zu arbeiten (da diese nicht in der
Lage ist, eine Beschlußfähigkeit einzurichten),
während
die anderen nicht fortfahren können
zu arbeiten. Bei einigen Ausführungsformen kann
der Netzwerkverwalter mehr als eine Stimme zu gewissen Ankerknoten
zuordnen, um zu versuchen, einen Betrieb des Netzwerks zu gewissen
Knoten hin auszurichten.
-
„Herzschlag" betrifft den periodischen
Austausch von Verbindungsinformationen zwischen allen Knoten des
Netzwerks. Ein Knoten ist zugeordnet, um Herzschlaginformationen
zu überwachen.
Herzschlagüberwachungen
können
pro Netzwerk, pro Partition oder pro Gruppe zugeordnet sein. Die
Identität
der Herzschlagüberwachung
wird dynamisch zugeordnet und kann, dies ist jedoch nicht erforderlich, eine
günstige
Auswahl von Ankerknoten als die Herzschlagüberwachungen wählen. Alle
anderen Knoten, die mit dem Netzwerk verbunden sind, sind Herzschlag-„Sklaven" (Herzschlaguntergeordnete),
was bedeutet, daß diese
Knoten ihren Betriebszustand zu dem Herzschlagüberwacher berichten und periodische
Verbindungsaktualisierungen von dem Überwacher empfangen.
-
Herzschlaginformationen verbreiten
sich auf die folgende Weise. Jeder Herzschlagsklave überträgt periodisch
einen Elementimpuls zu seiner lokalen Herzschlagüberwachung, die der Überwachung anzeigt,
daß dieser
funktioniert. Wenn die Überwachung
die Elementimpulse der Sklaven empfängt, aktualisiert diese ihre
Verbindungsinformationen. Die Überwachung
kann Verbindungsinformationen als eine Einzelbit- bzw. Bitmap-Datei speichern oder irgendeine
andere Daten struktur, die ermöglicht,
solche Informationen zu speichern und zu übertragen. Die Überwachung
sendet periodisch die übersetzten Verbindungsinformationen
zu den Herzschlagsklaven, was als ein „Monitorpuls" bzw. Überwachungspuls
bezeichnet wird.
-
Falls ein Herzschlagsklave eine Frist
dreimal in einer Reihe zum Übertragen
von Elementimpulsinformationen vergaßt, nimmt die Herzschlagüberwachung
an, daß der
fehlerhafte Sklave nicht mehr funktioniert und aktualisiert die
gespeicherten Verbindungsinformationen, um die Statusänderung
widerzuspiegeln. Jeder überstehende
Herzschlagsklave wird über
die Änderung
in der Verbindung zu dem nächsten
Monitorimpuls benachrichtigt. Falls ein Sklave nicht in der Lage
ist, Informationen zu übertragen
aber diese empfangen kann, wird der Sklave die gesendete Benachrichtigung
empfangen, daß er nicht
länger
Teil des Netzwerks ist.
-
Sollte der Herzschlagmonitor eine
Frist zum Senden des Monitorimpulses dreimal hintereinander verpassen,
nimmt jeder Sklave an, daß der
Herzschlagmonitor nicht mehr funktioniert und jeder Sklave versucht,
der neue Herzschlagmonitor zu werden. Jeder Sklave kann entscheiden,
der Herzschlagmonitor zu werden oder eine Konfigurationsdatei kann erzeugt
werden, die Herzschlagmonitore auflistet, um eine Präferenz auszugeben,
von der nachfolgende Monitore ausgewählt werden.
-
Die Verantwortlichkeit jedes Knotens
hängt davon
ab, ob er ein Herzschlagmonitor, ein Ankerknoten oder beides ist.
Jeder Fall wird nachfolgend zusammengefaßt.
-
Herzschlagmonitor und
Ankerknoten
-
Bei jeder Verbindungsänderung,
d. h. bei jeder Frist zum Empfangen von Elementimpulsen, wird dieser
Knoten nachrechnen, ob eine Beschlußfähigkeit existiert, lediglich
basierend auf seinen gespeicherten Verbindungsbitmapdaten. Ein resultierender Beschlußfähigkeitszustand
ist in den übertragenen Monitorimpulsen
enthalten. Empfangene Beschlußfassungszustandsinformationen
von anderen Ankerknoten werden ignoriert.
-
Herzschlagmonitor
aber kein Ankerknoten
-
Dieser Knoten empfängt Elementimpulse von
allen Sklaven. Wenn ein Elementimpuls von einem Ankerknoten empfangen
wird, aktualisiert dieser Knoten umgehend den gegenwärtigen Beschlußfähigkeitszustand
und überträgt den aktuellen
Beschlußfähigkeitszustand
auf den nächsten
Monitorimpuls.
-
Herzschlagsklave
und Ankerknoten
-
Wenn eine Verbindungsänderung
vorliegt, rechnen diese Knoten eine Beschlußfassung lediglich basierend
auf Verbindungsinformationen nach, die von dem Herzschlagmonitor
empfangen wurden. Diese Knoten umfassen den resultierenden Beschlußfähigkeitszustand
in ihren Elementimpulsen. Beschlußfähigkeitsinformationen, die
von dem Herzschlagmonitor empfangen werden, werden ignoriert.
-
Herzschlagsklave
und kein Ankerknoten
-
Diese Knoten übertragen keine Beschlußfähigkeitsinformationen.
Diese Knoten empfangen aktualisierte Beschlußfähigkeitsinformationen von den Monitorimpulsen
des Herzschlagmonitors.
-
Bei Ausführungsformen, in denen Knoten gruppiert
sind, kann jede Gruppe einen Gruppenherzschlagübertrager wählen. Der Gruppenherzschlagübertrager
benachrichtigt einen Gruppenniveauherzschlagmonitor, daß die Gruppe,
die dieser repräsentiert,
aktiv ist. Der Gruppenniveauherzschlagmonitor sendet periodisch
den Zustand des Satzes von Gruppen, die in dem Netzwerk vorliegen. Dieses
hierarchische Gruppieren kann von beliebiger Tiefe sein.
-
Bei manchen Ausführungsformen werden Beschlußfähigkeitsinformationen
nach einer bestimmten Zeitdauer verworfen. Dies kann durch Zuordnen
eines Zeitgebers erfolgen, mit Beschlußfähigkeitsinformationen (auf
Herzschlagmonitoren und Sklaven), der wiedergestartet wird, wenn
der Knoten Beschlußfähigkeitsinformationen
empfängt.
Daher wissen Nichtankerknoten, wenn der letzte Ankerknoten nicht
mehr funktioniert (und daher eine Übertragung von Beschlußfähigkeitsinformationen
nicht stattfindet), daß diese
nicht länger
eine Beschlußfähigkeit
haben, nicht später
als die Unterbrechungszeitdauer für den Zeitgeber.
-
Wie vorstehend beschrieben ist, erhalten
Ankerknoten eine Aufzeichnung der gegenwärtigen Knotendatenbank, d.
h. Ankerknoten zeichnen den gegenwärtigen Verbindungszustand des
Netzwerks auf. Ankerknoten können
die Knotendatenbank in einer Plattenspeicherung oder irgendein anderer
dauerhafter Speichermechanismus speichern, um eine Sicherung während eines
Knotenausfalls bereitzustellen. Diese Knotendatenbank kann zu einem
spezifischen Verzeichnisort geschrieben sein. Aktualisierungen für die Datenbank
können
durch eine zentralisierte Datenbank gesteuert sein. Wenn ein Ankerknoten
eine Aktualisierung der Datenbank bereitet, kann dieser die Operation
anzeigen, die dieser versucht durchzuführen (Hinzufügen, Löschen oder Ändern eines
Knotens), ein Datenidentifizieren des Knotens für den ein Eintrag geändert wird und
die Versionsnummer der Datenbank, die verwendet wird, wenn die Aktualisierung
erfolgreich ist.
-
Bei Netzwerken mit mehr als einem
Ankerknoten müssen
Ankerknoten in einen Entscheidungsalgorithmus eingegeben werden,
um eine Aktualisierung der Knotendatenbank durchzuführen. Ein
Ankerknoten, der die Aktualisierung der Knotendatenbank startet,
nimmt die Rolle eines „Koordinators" an. Der Koordinator
erhält
eine Liste aller Ankerknoten, die gegenwärtig in dem Beschlußfähigkeitssatz
sind und jeder Ankerknoten in der Liste scheint die Rolle eines „untergeordneten" Ankerknotens für die begonnene
Aktualisierung anzunehmen. Während
die Aktualisierung der Datenbank voranschreitet, verhindern der
Koordinator und die untergeordneten Knoten es, daß eine Aktualisierung
einer zweiten Knotendatenbank beginnt.
-
Bei Netzwerken mit einem einzelnen
Ankerknoten wird der Koordinator eine Liste von Ankerknoten erhalten,
die nur den Koordinator enthält.
Für den Fall,
daß der
Koordinator eine Liste von Ankerknoten, die leer ist, wiedererlangt,
ist ein Fehler aufgetreten und die Aktualisierung wird umgehend
beendet. Bei einigen Ausführungsformen
ist erste Handlung des Koordinators ein Überprüfen für eine Beschlußfähigkeit.
Wenn keine Beschlußfähigkeit
gegeben ist, wird die Aktualisierung dann umgehend beendet.
-
RAM-Verzeichnis-Wiedergewinnung
-
Wie vorstehend beschrieben ist, sind
Seiten eines globalen RAM-Verzeichnisses (GRD) flüchtige Seiten,
die nicht für
eine redundante verläßliche dauerhafte
Plattenspeicherung gesichert werden und die häufig modifiziert werden. Diese
Eigenschaften bewirken, daß GRD-Seiten äußerst anfällig gegenüber Knotenfehlfunktionen
sind. Das GRD-Seiten die Ord nung von anderen GRD-Seiten ermöglichen,
kann ein Verlust einer GRD-Seite in einen Abschnitt des gemeinsam
genutzten Speicherraums führen,
der damit unauffindbar wird.
-
Im kurzen Überblick, wenn ein Knoten in
dem Netzwerk eine Fehlfunktion hat, hören alle anderen Knoten damit
auf weiterzuarbeiten. Der GRD wird verworfen, synchron wiederbestückt mit
dem Inhalt des lokalen RAM-Cachespeichers der überlebenden Knoten und eine
Verarbeitung wird fortgesetzt.
-
Die Bezeichnungen „Knotenzustand" und „Netzwerkzustand" sollten eingeführt werden.
Ein Knoten hat vier Zustände:
normal, benachrichtigt, ruhig und wiedererrichtet. Im normalen Zustand
funktioniert ein Knoten normal. Wenn dieser von einem Ausfall eines
weiteren Knotens benachrichtigt wird, nimmt der Knoten den „benachrichtigten" Zustand an und wartet,
daß all
seine lokale Verarbeitung beendet ist. Wenn einmal die Verarbeitung
abgeschlossen ist, nimmt der Knoten den ruhigen Zustand an und verwirft
alle GRD-Seiten, die er zwischengespeichert hat. Wenn der Knoten
eine Nachricht von dem Wiederherstellungskoordinator „beginne
Repopulation" empfängt, verläßt er den
ruhigen Zustand und nimmt den Wiedererrichtungszustand an. Wenn
der Knoten dem Wiederherstellungskoordinator berichtet, daß er die
Wiedererrichtung abgeschlossen hat, nimmt der Knoten wieder den
normalen Zustand an.
-
Der Zustand Netzwerkzustand hat ähnliche Größen, außer daß das Netzwerk
in dem Benachrichtigungszustand ist, wenn irgendein Knoten in dem
Benachrichtigungszustand ist, wobei das Netzwerk nur in dem ruhigen
Zustand ist, wenn alle Knoten in dem ruhigen Zustand sind, das Netzwerk
in dem Wiedererrichtungszustand ist, wenn irgendein Knoten in dem
Wiedererrichtungszustand ist und das Netzwerk in dem norma len Zustand
ist, wenn der erste Knoten zu dem normalen Zustand zurückkehrt.
-
Wenn ein Ankerknoten bemerkt, daß ein Knoten
eine Fehlfunktion hatte (über
den Herzschlagmechanismus) oder eine Aufforderung zum Wiedererrichten
der GRD von einem weiteren Knoten empfängt, der eine Knotenfehlfunktion
erfaßt
hat, nimmt dieser den „benachrichtigten" Zustand an und verhandelt
mit den anderen Ankern, um der Wiederherstellungskoordinator zu
werden und dadurch erhält
er Kontrolle über
die Wiedererrichtung. Die Verhandlung zum Steuern des Wiedererrichtens
kann auf unterschiedlichen Qualitäten beruhen. Beispielsweise
können
Ankerknoten basierend auf einen Identifikationscode verhandeln,
wobei Codes mit geringeren zugeordneten Identifikationscodes die
Verhandlung „gewinnen". Wenn ein Ankerknoten
die Verhandlung verliert, verweist er auf den Gewinner und beendet
den Versuch, die Wiedererrichtung zu steuern und wartet auf eine
Nachricht „beginne-Wiederherstellung" und fährt wie
vorstehend beschrieben fort.
-
Wenn andererseits der Ankerknoten
die Wiedererrichtung steuert, sendet er eine Nachricht „Ruhe für Wiederherstellung" an alle Knoten und
wartet darauf, alle Antworten zu empfangen. Dies kann ein synchroner
Prozeß sein,
obwohl dieser wünschenswerter
Weise asynchron ist, um den Knoten auf sich ändernde Anwortgeschwindigkeiten
und Fähigkeiten anzupassen.
-
Ein Nichtankerknoten wird zunächst die Nachricht „Ruhe für Wiederherstellung" von dem Wiederherstellungskoordinator-Ankerknoten empfangen.
Dies wird bewirken, daß der
Knoten den „benachrichtigten" Zustand annimmt.
Wenn er einmal in dem benachrichtigten Zustand ist, werden alle
lokalen Verarbeitungsaktivitäten
gestoppt und Fehler sollten für
die meisten empfangenen entfernten Aufrufe zurückgegeben werden. Dieser Zustand
muß entweder
alle Entwertungen vervollständigen
oder verläßlich diese
ablehnen. Andererseits könnte
eine Seite modifiziert werden, während
nicht verbundene Kopiehalter unerledigt sind. Sobald die gesamte
lokale Verarbeitung abgeschlossen ist, wird eine Nachricht „Ruhe für Wiederherstellung" zu dem Koordinator
gesendet und die Knoten nehmen den ruhigen Zustand an.
-
Während
des ruhigen Zustands entfernt der Knoten alle GRD-Seiten von seinem
lokalen RAM-Cachespeicher ob schmutzig oder nicht und verwirft Kopiersatzinformationen
und wartet auf eine Nachricht „beginne
Repopuplation".
-
Wenn alle Antworten durch den Wiederherstellungskoordinator
empfangen wurden, sendet dieser eine Nachricht „beginne Repopulation" an alle Knoten und
wartet auf deren Antwort, daß die
Repopulation abgeschlossen ist.
-
Wenn der Knoten eine Nachricht „beginne Repopulation" empfängt, nimmt
er den Wiedererrichtungszustand an und sendet eine Antwort auf die Nachricht.
Für jede
Seite, die in dem lokalen Cachespeicher des Knotens verbleibt, sendet
der Koten eine Nachricht zu dem Wiederherstellungskoordinator, die
die Seite durch eine globale Adresse kennzeichnet und fragt an,
der verantwortliche Knoten und Eigentümer der Seite zu werden. Wenn
dies erfolgreich ist, besitzt der Knoten die Seite. Wenn dies nicht erfolgreich
ist, sollte der Knoten die Seite von seinem lokalen RAM-Cachespeicher
nehmen oder sich bei dem neuen Eigentümer anmelden, um eine abgeleitete
Kopie der Seite zu werden.
-
Wenn der Knoten versucht hat, Eigentümer jeder
Seite zu werden, die in seinem lokalen RAM-Cachespeicher existiert,
sendet er eine Nachricht „Repopulation
vervollständigt" zu dem Wiederherstellungskoordinator
und wartet darauf, eine Nachricht „Wiederaufnehmen von Operationen" zu empfangen. Sobald
jeder Knoten eine Nachricht „Repopulation
vervollständigen" zu dem Wiederherstellungskoordinator
geschickt hat, sendet dieser eine Nachricht „Wiederaufnehmen von Operationen" an alle Knoten in
dem Netzwerk.
-
Wenn ein Knoten während des GRD-Wiedererrichtungsprozesses
ausfällt,
kann dies entweder ignoriert werden oder der Wiedererrichtungsprozeß kann erneut
gestartet werden.
-
Plattenverzeichniswiederherstellung
-
Seiten der GDD werden durch mehrere
Knoten in dem Netzwerk gespeichert, um einen gewissen Grad an Toleranz
gegenüber
einem Knotenausfall zu haben. Wenn ein Knoten ausfällt, müssen dauerhafte Daten
und Verzeichnisseiten, die von dem ausgefallenen Knoten gespeichert
sind, redupliziert werden, um einen nachfolgenden Ausfall zu überstehen.
Es gibt zwei Mechanismen, die verwendet werden, um diese Reduplizierungsfunktion
auszuführen.
Der erste ist ein normaler Seitenaktivierungsprozeß. Wenn eine
Seite aktiviert ist, überprüft der primäre Kernhalter,
um sicherzustellen, daß diese
Seite nicht unter eine minimale Anzahl eines Schwellwerts des Kernhalters
gefallen ist. Wenn sie dies getan hat, ist der primäre Kernhalter
dafür verantwortlich,
einen neuen Kernhalter zu finden. Dieser Mechanismus ist anforderungsgesteuert,
d. h. dieser Mechanismus führt dazu,
daß Seiten
redupliziert werden, wenn auf diese explizit zugegriffen wird. Der
zweite Mechanismus nützt
einen Hintergrundreduplizierer, der die Aktivität asynchron plant.
-
Einer der in dem Netzwerk vorliegenden Knoten
wird als der primäre
Ankerknoten (PAN) bezeichnet. Der PAN unterhält die primäre Kopie der Wurzelseite des
globalen Plattenverzeich nisses (GDD). Der PAN wird dynamisch zugeordnet.
Ankerknoten können
verhandeln, um der PAN zu werden, falls ein PAN ausfällt, oder
eine Konfigurationsdatei kann vorgesehen sein, die eine Reihe von
Knoten auflistet, die als der PAN dienen können. In jedem Fall muß eine Beschlußfähigkeit
gegeben sein. Ankerknoten, die kein PAN sind, verhalten sich auf
dieselbe Weise wie Nichtankerknoten unter Bezugnahme auf den Reduplizierungsprozeß.
-
Um eine asynchrone GDD-Wiederherstellung
bereitzustellen, unterhält
der PAN den Hintergrundreduplizierungsprozeß und steuert diesen. Der PAN
empfängt
Benachrichtigungen von anderen Knoten, wenn diese GDD-Seiten erfassen,
die unter dem minimalen Schwellwert des Kernhalters sind. Diese
GDD-Seiten werden
typischerweise während normaler
Verzeichnistraversaloperationen erfaßt. Der PAN redupliziert durch
Aktivieren von Seiten, wie dies vorstehend beschrieben ist.
-
Knoten erhalten einen Zustand unter
Berücksichtigung
von GDD-Seiten, die weniger Kernhalter als der Schwellwert haben,
auf die diese gestoßen sind.
Wenn auf eine solche Seite gestoßen wird, benachrichtigt der
Knoten den PAN, um die Seite zu reduplizieren und überwacht
dann den PAN. Sollte der PAN während
des Reduplizierens ausfallen, wartet der Knoten darauf, daß die anderen
Ankerknoten einen neuen PAN auswählen
(oder bis ein neuer PAN von einer Konfigurationsdatei zugeordnet
ist), und überträgt die Anfrage
zum Reduplizieren zu dem neuen PAN. Das Kommunikationssubsystem
wird verwendet, um die Knotenzustände für diesen Prozeß zu überwachen.
Der Knotenzustand wird ebenfalls verwendet, um Reduplizierungsoperationen
wieder zu beginnen, die aufgrund von Ressourcenrandbedingungen unvollständig sind,
wie z. B. verfügbarer
Plattenraum.
-
Verschiedenen Formen von Netzwerkausfällen können bewirken,
daß Knotensätze in getrennte Ansammlungen
partitioniert werden. Wenn dies auftritt, können duplizierte Kopien von
Seiten zwischen Ansammlungen aufgeteilt werden, d. h. ein Kernhalter
für eine
Seite ist in dem Netzwerk präsent,
während
ein weiterer in der Ansammlung enthalten ist. Der Beschlußfähigkeitssatz,
der eine Majorität
des ursprünglichen
Satzes von Ankerknoten ist, ist für einen Schreibzugriff auf
die Daten und Verzeichnisseiten erforderlich. Eine Ansammlung von
Knoten, die nicht in dem Beschlußfähigkeitssatz sind, dienen daher
den Datenseiten, aber es kann nicht auf diese geschrieben werden.
Diese Unmöglichkeit,
Seiten ohne Beschlußfähigkeit
zu modifizieren, wird durch Ankerknoten bestärkt, die Modifikationen für die GDD-Wurzelseite
nicht erlauben, wenn eine Beschlußfassung verloren wurde. Wenn
ein Knoten versucht, eine Seite ohne Zugriff auf alle ihre Kernhalter
zu modifizieren, wird er zunächst
versuchen, den Satz von Kernkopiehaltern zu modifizieren, was erfordert,
daß die Seite
der GDD-Seite modifiziert wird. Dieses Schreiben auf die GDD-Seite
erfordert selbst ein Schreiben auf die GDD, die ihren Kernkopiesatz
speichert usw., bis abschließend
der Knoten versuchen wird, die GDD-Wurzelseite zu modifizieren. Da diese
Operation durch die anderen Knoten ausfallen wird, wird ein ursprüngliches
Schreiben auf eine normale Datenseite fehlschlagen. Die Bekräftigung
der Ankerknoten zu einer Beschlußfähigkeit auf diese GDD-Wurzelseite verhindert
eine Datenkorruption, wenn ein partitioniertes Netzwerk gegeben
ist.
-
Dateisystemwiederherstellung
-
Eine weitere Folge eines Knotenausfalls
ist die Erzeugung von Inkonsistenzen von Dateisystemmetadaten. Inkonsistenzen
von Dateisystemmetadaten nehmen eine Anzahl von Formen an, einschließlich (1)
einer Inkonsistenz zwischen der Dateisy stemrepräsentation von zugeordneten
Seiten und dem globalen Plattenverzeichnis (GDD) von zugeordneten
oder Seiten, bei denen die Zuordnung aufgehoben ist, was von einem
Ausfall während
einer Zuordnung oder Aufhebung der Zuordnung von Seiten herrührt, (2)
fehlerhafte Dateiattribute, die in einem Dateieinknoten enthalten
sind, (3) inkonsistente Seiten von dem Dateisystem, was von einem
Ausfall während
einer Transaktion herrührt,
der mehrere Löschungsoperationen
erfordert, um Aktualisierungen aufzuzeichnen, wie bspw. Aktualisierungen,
die mehrere Plattenblocks überspannen
(Verzeichnisaktualisierungen und Dateisatzoperationen), (4) Fehler
eines Einknotenverzeichnisses, was von Ausfällen einer einzelnen Seite
und mehreren Seitenaktualisierungen herrührt, (5) eine Inkonsistenz
zwischen Dateiattributen, wie sie in dem Einknoten gespeichert sind,
und Dateiattributen, wie sie in einem Einknoten einer Datei gespeichert
sind, und einem Verzeichniseintrag einer Datei, was von einem Ausfall
während
des Synchronisationsprozesses herrührt.
-
Dateisystemtransaktionen, die GDD-Aktualisierungen
umfassen, sind Transaktionen, die eine Zuordnung umfassen, eine
Aufhebung einer Zuordnung und ein Nichtzuordnen, d. h. ein Freimachen von
Plattenraum, während
Adreßraum
reserviert gehalten wird. Diese Transaktionen erfordern, daß der Zustand
der Seiten, die zugeordnet werden, in den Dateisystemmetadatenstrukturen
aktualisiert werden und erfordert ebenfalls den Aufruf einer GDD-Zuordnung,
einer Aufhebung oder von Nichtzuordnungsfunktionen. Um diese Funktionen
auf eine Weise durchzuführen,
die es ermöglicht,
daß das
Dateisystem sich von einem Knotenausfall erholt, müssen Dateisystemseiten
einer Wiederherstellungshandlung bzw. -kennung zugeordnet wird,
die zu dem GDD übertragen
wird, wenn die Seite zugeordnet ist. Die Wiederherstellungskennung
ist eine Identifikationsentität,
die eindeutig eine Seite kenn zeichnet, wie bspw. der Identifikationscode
des Dateisystemobjekts.
-
Das Dateisystem bietet eine Rückrufroutine, die
durch die GDD aufgerufen werden kann, um den gegenwärtigen Zustand
einer Zuordnung von spezifizierten Seiten gemäß dem Dateisystem zu bestimmen.
Zum Zuordnen von Seiten muß das
Dateisystem die GDD-Zuordnungsfunktion aufrufen, bevor sie versucht
die Transaktion durchzuführen.
Nachdem die GDD-Zuordnung
erfolgreich abgeschlossen ist, kann das Dateisystem dauerhaft den
Zuordnungszustand aufzeichnen. Wenn die Transaktion nicht vervollständigt ist,
kann die GDD zugeordnete Seiten haben, die das Dateisystem nicht
bemerken wird.
-
Zum Aufheben einer Zuordnung und
zum Nichtzuordnen muß das
Dateisystem dauerhaft die Aufhebung und Nichtzuordnung berichten,
bevor die GDD-Funktionen zum Aufheben und Nichtzuordnen der Seiten
aufgerufen werden. Wenn die Transaktion nicht vervollständigt wird,
kann die GDD mit Dateisystemseiten enden, die das Dateisystem nicht
erkennt bzw. bemerkt.
-
Die GDD kann das Dateisystem aufrufen, Seiten
zu verifizieren, die mit der Dateisystemobjekt-ID verbunden sind.
Die GDD reicht dem Dateisystem, das es bemerkt, den einzunehmenden
Zustand der Zuordnung. Das Dateisystem durchsucht seine Metadatenstrukturen,
um die Seiten zu identifizieren und berichtet dem GDD nur zurück, wenn
es mit dem GDD nicht in Übereinstimmung
ist.
-
Aktualisierungen von Dateieinknoten
erfordern ein Aktualisieren von Metadateninformationen, die in dem
Einknoten der Datei enthalten sind. Diese Attribute können Dateizeitstempel,
Dateiflaggen und das Ende einer Dateimarkierung ent halten. Attribute können direkt
durch verschiedene Satzdateiattributoperationen aktualisiert werden,
oder wie im Fall von Zeitstempel, können diese indirekt als Teil
von anderen Dateisystemoperationen gesetzt werden. Da der Einknoten
die Plattenblöcke
nicht überspannt,
d. h. der Einknoten besetzt eine einzelne Seite, kann die Aktualisierung
entweder vollständig
gelingen oder vollständig
fehlschlagen. Folglich wird das Dateisystem eine Inkonsistenz in
den Dateisystemmetadaten nicht erfassen. Dies stimmt für Dateigrößenaktualisierungen
auch, da beide dieser Metadatenstrukturen, obwohl eine Dateigröße eines
primären
Stroms in sowohl dem Dateieinknoten als auch dem Dateistrombeschreiber
gespeichert ist, auf derselben Seite in demselben Plattenblock abgelegt
sind.
-
Die Aktualisierungen der Dateisystemmetadaten,
die mehrere Seiten umspannen, umfassen Aktualisierungen des Verzeichnisseintrags,
wie ein Erzeugen einer Datei oder eines Verzeichnisses, Löschen einer
Datei oder eines Verzeichnisses und Umbenennen einer Datei oder
eines Verzeichnisses, Dateisatzaktualisierungen (wie Erzeugen und
Lösen oder Überwurzelaktualisierungen
oder -erzeugungen). Jede dieser Aktualisierungen von Metadaten zu mehreren
Seiten ist anfällig
gegenüber
Knotenfehlfunktionen während
der Transaktion und jede muß auf
eine bestimmte Art und Weise behandelt werden.
-
Ein Einsetzen und Löschen von
Verzeichnisseinträgen
kann mehrfaches Räumen
bzw. Freimachen erfordern, was mehrere Seiten einschließt. In Abhängigkeit
der Verteilung von Verzeichniseinträgen kann das Hinzunehmen oder
Löschen
einer Datei eine Seite beeinflussen, die den Eintrag enthält, wobei
die Seiten, die vorhergehenden und die nächsten Einträge in der
Liste, und die Einknoten die Namenshash-Tabelle enthalten. Im Falle
eines Einsetzens in den Verzeichnisein trag, falls kein freier Schlitz
in den existierenden Verzeichnisseiten gefunden werden kann, wird
eine neue Eintragsseite zugeordnet.
-
Eine Transaktion zum Einsetzen oder
Löschen
eines Verzeichniseintrags muß zunächst den Verzeichniseinknoten
mit dem Typ der Transaktion markieren. Markierungen können umfassen:
Erzeugen, Erzeuge Verzeichnis, Umbenennen, Umbenennen des Ziels,
und Löschen.
Die Einknotennummer der einzusetzenden Datei oder der zu entfernenden Datei
wird ebenfalls in dem Verzeichniseinknoten abgelegt. Der Verzeichniseinknoten
wird dann gelöscht bzw.
geräumt,
was den Beginn der Aktualisierungstransaktion kennzeichnet.
-
Sobald der Verzeichniseinknoten gelöscht ist,
wird das Verzeichnis mit den Eintragsmodifikationen zusammen mit
den Seiten aktualisiert, die vorhergehende und nächste Einträge in der Sortierungs- und
Hash-Liste und der Hash-Tabellen-Einknotenseite
enthalten. Dies kann parallel erfolgen. Die Transaktionsmarke in
dem Verzeichniseinknoten wird dann gelöscht und der Einknoten ausgegeben.
Dies kennzeichnet das Ende der Transaktion. Eine Verzeichniseinknotenseite,
die eine Transaktionsmarkierung hat, zeigt an, daß das Verzeichnis
das Ziel einer unvollständigen
Transaktion war und das Verzeichnis wiederhergestellt werden muß. Das Dateisystem stellt
Verzeichniseinknotenseiten wieder her, indem eine Funktion aufgerufen
wird, die individuelle Verzeichnisse verifiziert und repariert.
Diese Funktion sollte jede Inkonsistenz überprüfen und reparieren, die in
dem Verzeichnis gefunden wird, wie bspw. unterbrochene sortier-/hashverbundene Listen,
inkonsistente frei Blöcke,
die mit Listen verbunden sind, oder fehlerhafte Hash-Tabellenspeichereinträge. Wenn
der Funktion die Reparatur des Verzeichnisses nicht gelingt, sollte
das Verzeichnis als korrupt gekennzeichnet werden und ein zukünftiger Zugriff
auf das Verzeichnis sollte verwehrt werden. Andererseits wird die
Dateieintragseinknotenanzahl von der Transaktionsmarkierung extrahiert
und eine Verbindung zu dem Einknoten wird verifiziert. Sobald dieser verifiziert
ist, wird die Transaktionsmarke in dem Verzeichniseinknoten gelöscht und
die Verzeichniseinknotenseite wird geräumt. Dies kennzeichnet das Ende
der Wiederherstellung.
-
Eine Dateierzeugung und eine Verzeichniserzeugung
umfassen ein Zuordnen von neuen Einknotenseiten und für Verzeichnisse
ein Zuordnen der ersten Verzeichniseintragsseite und die nachfolgende
Einsetzung der neuen Datei oder des Verzeichnisses in das Stammverzeichnis.
Das Dateisystem implementiert eine Datei- oder Verzeichniserzeugung,
indem es zunächst
die Einknotenverzeichnisfunktion aufruft, einen neuen Einknoten
zurückzugeben.
Diese Transaktion ist in dem Stammverzeichniseinknoten markiert
und geräumt.
Alle Datenstrukturaktualisierungen werden unter dieser Transaktionsmarkierung
durchgeführt.
Sobald diese Aktualisierungen gelöscht sind, wird die Transaktionsmarkierung
in dem Verzeichniseinknoten gelöscht.
-
Eine Transaktionsmarkierung, die
in dem Stammeinknoten (d. h. dem Einknoten des Stammverzeichnisses)
gefunden wurde, zeigt an, daß ein Knotenausfall
während
einer Transaktion aufgetreten ist. Um sich von der fehlgeschlagenen
Datei- oder Verzeichniserzeugnistransaktion zu erholen, wird die Datei
oder der Verzeichnisknoten unter Verwendung der Transaktionsmarke,
die in dem Stammverzeichniseinknoten enthalten ist, angeordnet.
Das Stammverzeichnis wird auf eine ähnliche Weise, wie zuvor beschrieben,
wieder hergestellt, aber die Stammeinknotentransaktionsmarkierung
wird nicht sofort gelöscht.
Wenn das Stammverzeichnis repariert werden kann oder konsistent
ist und der neue Dateieinknoten oder der neue Verzeichniseinknoten
von der Transaktionsmar kierung ersichtlich ist, dann wird die Transaktionsmarkierung
in den Stammeinknoten gelöscht
und geräumt.
In diesem Fall ist die Transaktion vollständig. Andernfalls muß das Dateisystem
die Transaktion aufheben.
-
Um die Transaktion aufzuheben, muß das Dateisystem
bestimmen, ob die Transaktion zum Erzeugen eines Verzeichnisses
oder zum Erzeugen einer Datei ist. Wenn die fehlgeschlagene Transaktion zum
Erzeugen eines Verzeichnisses vorgesehen war und das Dateisystem
den Zeiger zu der Verzeichniseintragsseite in der Einknotenseite
hat, dann kann diese einfach die Verzeichniseintragsseite aufheben. Andernfalls
muß das
Dateisystem die Einknotenverzeichnisfunktion aufrufen, um den Einknoten
freizugeben, muß den
Eintrag von dem Stammverzeichnis entfernen, wenn ein Eintrag erzeugt
worden ist, und dann die Transaktionsmarkierung von dem Stammeinknoten
löschen
und räumen.
-
Ein Löschen einer Datei und ein Löschen eines
Verzeichnisses werden in zwei Phasen durchgeführt. Im kurzen Überblick
wird die Datei oder das Verzeichnis zunächst zum Löschen markiert und seine Einträge werden
von dem Stammverzeichnis entfernt. Dann, wenn alle offenen Kennungen
für die
Datei oder das Verzeichnis geschlossenen wurden, wird dieses physikalisch
gelöscht.
-
Zum Wiederherstellen einer fehlgeschlagenen
Dateilöschungs- oder Verzeichnislöschungstransaktion
sollte ein Dateisystem während
der Markierung-für-Löschen-Phase
eine Transaktionsmarkierung in dem Dateieinknoten oder dem Verzeichniseinknoten
setzen, um anzuzeigen, daß dieses
entfernt wurde. Der Einknoten wird dann geräumt. Der Dateieintrag oder
der Verzeichniseintrag wird dann von dem Stammverzeichnis unter
Verwendung der allgemeinen, vorstehend beschriebenen Methode entfernt.
Die Transaktionsmarkierung, die in dem Stammeinknoten gesetzt ist,
zeigt an, daß eine Löschtransaktion
gegeben ist. Da ein Nachschauen nach dem Verzeichnis nach der Datei
nun fehlschlagen wird, werden keine neuen Dateikennungen geöffnet. Existierende
Kennungen können
jedoch noch verwendet werden, um auf die Datei oder das Verzeichnis
zuzugreifen.
-
Sobald alle existierenden Kennungen
zu der Datei oder dem Verzeichnis geschlossen wurden und falls das
Ziel der Transaktion ein Verzeichnis ist, dann werden alle Verzeichniseintragsseiten
aufgehoben. Der Einknoten wird langsam zu einer lokalen Nachschauliste
zurückgegeben.
Einknoten werden von dem globalen Pool in Gruppen zugeordnet und
diese Zuordnung wieder aufgehoben, und zwar aus Performance- und
Skalierungsgründen.
Einknoten können jedoch
einzeln zugeordnet werden und diese Zuordnung wieder aufgehoben
werden. Wenn ein Stammverzeichniseinknoten oder ein Datei/Verzeichniseinknoten
mit einer Transaktionsmarkierung gefunden wird, die eine unvollständige Löschtransaktion
anzeigt, dann muß die
Löschung
wieder hergestellt werden.
-
Wenn jedoch der Stammeinknoten eine Löschtransaktionsmarkierung
hat, dann muß der
Einknoten der Datei/des Verzeichnisses, das gelöscht wurde, unter Verwendung
der Transaktionsmarkierung in dem Stammeinknoten angeordnet werden. Falls
der Datei/Verzeichniseinkoten anzeigt, daß das Ziel des Löschens ein
Verzeichnis ist, müssen
alle Verzeichniseintragszeiten in ihrer Zuordnung aufgehoben werden.
Der Einknoten wird zu dem lokalen Pool für eine spätere Disposition zurückgegeben.
Sobald das Entfernen des Datei/Verzeichniseintrags verifiziert wurde,
kann die Stammeinknotentransaktionsmarkierung gelöscht werden
und der Stammeinknoten kann aufgehoben werden. Dieser Schritt vervollständigt die
Wiederherstellung der Löschung.
-
Eine Umbenennungsoperation wird durch Ausführen eines
Einsetzens in ein neues Verzeichnis bewirkt und ein Löschen von
einem alten Verzeichnis. Die Einsetzungstransaktion wird jedoch
nicht gelöscht,
bis sowohl das Einsetzen als auch das Löschen vollständig abgeschlossen
sind. Dies ermöglicht
dem System, entweder von einer nicht erfolgreich durchgeführte Umbenennungsoperation
zurückzutreten
oder die fehlgeschlagene Umbenennungsoperation zu vervollständigen,
wenn auf diese gestoßen
wird, in Abhängigkeit
von dem Maß an Fortschritt
der vor dem Fehlschlag erreicht wurde.
-
Die Erzeugung und das Löschen eines Dateisatzes
bedarf ebenfalls mehrerer Seitenräumungen, was anfällig gegenüber einem
Knotenausfall während
der Transaktion ist. Das Erzeugen eines Dateisatzes umfaßt das Zuordnen
und die Initialisierung der neuen Dateisatzseite, des Einknotenverzeichnisses
des Dateisatzes und des Wurzelverzeichnisses. Um eine fehlgeschlagene
Dateisatzerzeugung wiederherzustellen, muß das Dateisystem damit beginnen,
die notwendigen Seiten zuzuordnen, um den Dateisatz, das Einknotenverzeichnis
und das Wurzelverzeichnis zu initialisieren. Wurzelverzeichnisseiten
werden mit der Dateisystemobjektkennzeichnung (ID) zugeordnet, die
zu dem Wurzelverzeichnis zeigt und dateisatzbezogene Seiten werden lediglich
mit der Dateisatzkennzeichnung initialisiert. Sollte ein Knoten
an diesem Punkt ausfallen, werden die zugeordneten Seiten verloren.
Die übergeordnete Wurzel
wird dann aktualisiert, um den neuen Dateisatz aufzuzeichnen. Wenn
dieser Schritt erfolgreich ist, dann ist die Dateisatzerzeugungstransaktion
erfolgreich.
-
Eine Dateisatzlöschoperation wird die Dateisatzseite,
das Einknotenverzeichnis und das Wurzelverzeichnis freigeben. Die
Transaktion beginnt durch Markieren des Dateisatzes als das Ziel
einer Löschtransaktion.
Die Dateisatzseite wird geräumt
und das Wurzelverzeichnis wird gelöscht. Sobald das Wurzelverzeichnis
gelöscht
ist, werden alle freien Einknoten freigegeben und dieser Schritt
kann so oft wie notwendig wiederholt werden. Das übergeordnete
Verzeichnis wird dann aktualisiert, um den Dateisatz von dem Satz
der übergeordneten
Wurzel des Dateisatzes zu befreien. Sollte ein Knoten zu diesem
Zeitpunkt ausfallen, wird die Dateisatzseite verloren. Sie kann
aber über
den GDD-Rückrufmechanismus
wiedergewonnen werden. Das Dateisatzlöschen wird durch Löschen der
Dateisatzseiten vervollständigt. Das
Einknotenverzeichnis ist ein Satz von dauerhaften Datenstrukturen,
die verwendet werden, um alle Einknoten in einem Dateisatz nachzuvollziehen.
Bei Verwendung des Einknotenverzeichnisses kann das Dateisystem
jeden Einknoten in dem Dateisatz ausfindig machen. Das Einknotenverzeichnis
enthält zwei
wichtige Komponenten, nämlich
(1) die freie Einknotenliste und (2) die Einknotenbitmapdatei.
-
Wie vorstehend bemerkt wurde, werden
Dateiattribute in dem Dateieinknoten und dessen Verzeichniseintrag
dupliziert, um die Performance von Verzeichnisabfragen zu verbessern,
was eine der wichtigsten Performance-Maßzahlen in den Dateisystemen
ist. Da jede Dateiattributänderung
beiden Strukturen mitgeteilt werden muß, kann die Anzahl von Räumungen,
die zum Aktualisieren einer Datei oder eines Verzeichnisses erforderlich
sind, verdoppelt werden. Da Aktualisierungen bei den Einknotenseiten
und die Verzeichnisseite getrennt sind, können Inkonsistenzen zwischen
den beiden auftreten. Inkonsistenzen können durch Bereitstellen des
Einknotens in dem Verzeichniseintrag mit einer Synchronisierungsversionsnummer
reduziert werden. Die beiden werden synchronisiert, wenn sie dieselbe
Synchronisierungsversionsnummer haben. Immer wenn der Einknoten
aktualisiert wird, wird seine Synchronisationsversionsnummer inkrementiert.
Dann wird die Verzeichniseintragsseite gesperrt und die Dateiattribute
in dem Einknoten sind Kopien zu dem Verzeichniseintrag, einschließlich der
Synchronisierungsversionsnummer. Die Eintragszeiten werden jetzt
noch nicht geräumt,
aber die Einknotenseite wird geräumt gemäß den vorstehend
beschriebenen Vorgehensweisen. Wenn an diesem Punkt ein Knoten ausfällt, wird
der Verzeichniseintrag in dem Einknoten nicht synchron miteinander
sein. Sobald der Einknoten geräumt
ist, wird die Eintragsseite ebenfalls unabhängig davon geräumt.
-
Während
eine Datei geöffnet
ist oder ein Verzeichnis geöffnet
ist, wird die Einknotensynchronisierungsversion mit der Version
der Verzeichniseintragssynchronisation verglichen. Wenn diese nicht zueinander
passen bzw. nicht übereinstimmen,
wird der Verzeichniseintrag nicht mit dem Einknoteneintrag synchronisiert
und der Verzeichniseintrag muß aktualisiert
werden.
-
Variationen, Modifikationen und andere
Implementierungen von dem, was hierin beschrieben ist, werden dem
Fachmann ohne Verlassen des Bereichs der Erfindung, wie diese beansprucht
ist, offensichtlich sein. Folglich ist die Erfindung nicht durch die
vorstehende erläuternde
Beschreibung sondern durch die nachfolgenden Ansprüche definiert.