DE69724834T2 - System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher - Google Patents

System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher Download PDF

Info

Publication number
DE69724834T2
DE69724834T2 DE69724834T DE69724834T DE69724834T2 DE 69724834 T2 DE69724834 T2 DE 69724834T2 DE 69724834 T DE69724834 T DE 69724834T DE 69724834 T DE69724834 T DE 69724834T DE 69724834 T2 DE69724834 T2 DE 69724834T2
Authority
DE
Germany
Prior art keywords
node
data
directory
storage
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69724834T
Other languages
English (en)
Other versions
DE69724834D1 (de
Inventor
B. John CARTER
H. Scott DAVIS
J. Daniel DIETTERICH
J. Steven FRANK
S. Robert PHILLIPS
John Woods
David Porter
H. Hsin LEE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mangosoft Corp
Original Assignee
Mangosoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/754,481 external-priority patent/US6148377A/en
Application filed by Mangosoft Corp filed Critical Mangosoft Corp
Publication of DE69724834D1 publication Critical patent/DE69724834D1/de
Application granted granted Critical
Publication of DE69724834T2 publication Critical patent/DE69724834T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/24Negotiation of communication capabilities
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/964Database arrangement
    • Y10S707/966Distributed
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Description

  • 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 12a12d 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 12a12d 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 12a12d miteinander und stellt jedem Knoten 12a12d 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 12a12d 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 (12a12d 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 12a12d 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 12a12e 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 12a12e 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 12a12e 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 12a12e 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 12a12d kann auf den adressierbaren gemeinsam genutzten Speicherraum 20 durch die gemeinsam genutzten Speichersubsysteme 34a34d zugreifen. Jedes der gemeinsam genutzten Speichersubsysteme 34a34d stellt dessen Knoten mit einem Zugriff auf die adressierbare gemeinsam genutzte Speicherstelle bzw. den adressierbaren gemeinsam genutzten Speicherraum 20. Die gemeinsam genutzten Speichersubsysteme 34a34d 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 12a12d, 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 12a12d 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 12a12d seine jeweiligen gemeinsam genutzten Speichersubsysteme als eine Speichervorrichtung verwenden, die eine dauerhafte Datenspeicherung bietet.
  • Jedes der Datensteuerprogramme 32a32d ist ein Softwaremodul, das die jeweiligen gemeinsam genutzten Speichersubsysteme 34a34d 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 32a32d eine gleichrangige Inkarnation (d. h. eine In stanz) sein, die auf einem unterschiedlichen der Netzwerknoten 12a12d abgelegt ist und kann das jeweilige gemeinsam genutzte Speichersubsystem 34a34d als eine lokale Speichervorrichtung, wie bspw. eine lokale Festplatte, behandeln.
  • Eines oder mehrere der Datensteuerprogramme 32a32d 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 34b34d 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 50a50c 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 6674, 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 32a32d 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 6674 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 6674 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. 12a12d) 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 32a34d 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 212a212c 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 212a212c ü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 212a212c ermöglicht, auf den virtuellen gemeinsam genutzten Speicher 222 zuzugreifen, den Netzwerknoten 212a212c 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 212a212c ü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 224a224d 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 212a212c kann durch das gemeinsam genutzte Speichersubsystem 220 auf jede Seite 224a224d zugreifen, die in dem virtuellen gemeinsam genutzten Speicher 222 abgelegt sind. Jede Seite 224a224d repräsentiert einen einzigartigen bzw. eindeutigen Eintrag von Computerdaten, die innerhalb des virtuellen gemeinsam genutzten Speichers 222 gespeichert sind. Auf jede Seite 224a224d kann von jedem der Knoten 212a212c 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 212a212c 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 212a212c 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 212a212c 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 212a212c und der Netzwerkspeichervorrichtung 226 verbunden ist. Das Netzwerk 238 bietet ein Netzwerkkommunikationssystem über diese Elemente.
  • Das dargestellte Speichersubsystem 232a232c, das zwischen dem Betriebssystem 216a216c, den Speicherelementen 234a234c, 236a236c 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 212a212c auf dem Netzwerk 238 gespannt ist. Die Speichersubsy steme 232a232c 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 212a212c. Auf diese Weise greifen die Speichersubsysteme 232a232c 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 232a232c 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 274294 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, 350354 und 360366 umfaßt. 12 zeigt weiterhin, daß das Verzeichnis Ortsinformationen zu den Seiten des verteilten gemeinsam genutzten Speicherraums bereitstellt, die in 12 als Seiten 370384 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 370384. 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.

Claims (12)

  1. System für die verteilte Speicherung von Daten, mit: a) einer Mehrzahl von Knoten (12a12d), die durch ein Netzwerk miteinander verbunden sind, an das die Knoten angeschlossen sind, wobei die Knoten periodisch Anschlußmöglichkeitsinformationen 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 Datenkontrollprogramms (32a32d), das auf jedem Knoten gespeichert ist, um Daten zu manipulieren, wobei mehrere verteilte Instanzen des Datenkontrollprogramms 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 (20) 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 (34a34d) 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 Vielzahl 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 Vielzahl von lokalen beständigen und flüchtigen Speichervorrichtungen zu verteilen, und i) ein 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 Speichervor richtungen welche Teile des gemeinsam genutzten adressierbaren Speicherraums darauf abgebildet haben.
  2. System nach Anspruch 1, bei dem einer der Knoten als ein Herzschlagüberwachungsknoten bezeichnet ist und die übrigen Knoten periodisch Verbindungs- bzw. Anschlußmöglichkeitsinformationen zu dem Herzschlagüberwachungsknoten übertragen und der Herzschlagüberwachungsknoten periodisch Informationen zu den übrigen Knoten sendet.
  3. System nach Anspruch 2, bei dem der Herzschlagüberwachungsknoten erfaßt, wenn ein fehlerhafter Knoten nicht in der Lage ist, Anschlußmöglichkeitsinformationen zu übertragen und jeder der übrigen Knoten von der Fehlfunktion des fehlerhaften Knotens in der periodischen Sendeinformation von dem Herzschlagüberwachungsknoten informiert ist.
  4. System nach Anspruch 2 oder 3, bei dem die Knoten in hierarchischen Gruppen von Knoten organisiert sind und ein Herzschlagüberwachungsknoten für jede Gruppe der Knoten bezeichnet ist und bei dem die übrigen Knoten in einer Gruppe periodisch Anschlußmöglichkeitsinformationen zu dem Herzschlagüberwachungsknoten für die Gruppe übertragen, wobei jeder Herzschlagüberwachungsknoten periodisch Informationen zu den übrigen Knoten in seiner Gruppe sendet und die Vielzahl von Herzschlagüberwachungsknoten Informationen austauschen.
  5. System nach einem der vorstehenden Ansprüche, bei dem die Verzeichnisverwaltung einem flüchtigen Speicherverzeichnis von in flüchtigen Speichervorrichtungen der Knoten gespeicherten Daten zugeordnet ist und einem Plattenverzeichnis von in dauerhaften Speichervorrichtungen der Knoten gespeicherten Daten.
  6. System nach Anspruch 5, bei dem ein Ankerknoten die Verzeichnisverwaltung aufbewahrt und auf die Verzeichnisse zugreift, um den Teil von flüchtigen Daten zu bestimmen, für die ein fehlerhafter Knoten verantwortlich war.
  7. System nach Anspruch 5 oder 6, bei dem das flüchtige Speicherverzeichnis in bezug auf flüchtige Speicherinformationen wiederhergestellt wird, nachdem ein fehlerhafter Knoten erkannt wurde.
  8. System nach Anspruch 5, bei dem das flüchtige Speicherverzeichnis und ein Plattenverzeichnis betrieben werden, um Teile des adressierbaren Speicherraums von einer flüchtigen Speichervorrichtung auf eine beständige Speichervorrichtung wieder abzubilden.
  9. System nach einem der vorstehenden Ansprüche, bei dem Kopien einer Seite mit Daten auf mehreren Knoten gespeichert werden, die als Kernknoten für die Seite mit Daten bezeichnet sind.
  10. System nach Anspruch 9, bei dem eine minimale Anzahl von Kernknoten zum Halten von Kopien der Seite mit Daten spezifiziert sind und wenn eine Fehlfunktion eines oder mehrerer Kernknoten dazu führt, daß die Anzahl der Kernknoten unter das Minimum fällt, eine weitere Kopie der Seite mit Daten auf einem Knoten erzeugt wird.
  11. System nach Anspruch 1, bei dem eine Mehrzahl von Ankerknoten vorgesehen ist, von denen jeder eine Kopie einer gesamten Knotenverzeichnisdatenbank aufbewahrt und wenn eine Fehlfunktion eines Knotens erfaßt ist, die Ankerknoten aushandeln und ein Wiederherstellungskoordinator ausgewählt wird, um eine Wiederherstellung zu steuern bzw. kontrollieren.
  12. System nach einem der vorstehenden Ansprüche, bei dem, wenn eine Fehlfunktion eines Knotens detektiert ist, die Knoten eine Verarbeitung von Daten beenden, im Cache-Speicher in lokalen flüchtigen Speichervorrichtungen enthaltene Daten verworfen werden und die lokalen flüchtigen Speichervorrichtungen wieder belegt werden.
DE69724834T 1996-11-22 1997-11-21 System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher Expired - Fee Related DE69724834T2 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US08/754,481 US6148377A (en) 1996-11-22 1996-11-22 Shared memory computer networks
US754481 1996-11-22
US08/827,534 US5918229A (en) 1996-11-22 1997-03-28 Structured data storage using globally addressable memory
US827534 1997-03-28
US08/848,967 US5909540A (en) 1996-11-22 1997-05-02 System and method for providing highly available data storage using globally addressable memory
US848967 1997-05-02
PCT/US1997/021734 WO1998022876A1 (en) 1996-11-22 1997-11-21 System and method for providing highly available data storage using globally addressable memory

Publications (2)

Publication Number Publication Date
DE69724834D1 DE69724834D1 (de) 2003-10-16
DE69724834T2 true DE69724834T2 (de) 2004-07-01

Family

ID=56289762

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69724834T Expired - Fee Related DE69724834T2 (de) 1996-11-22 1997-11-21 System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher

Country Status (7)

Country Link
US (1) US5909540A (de)
EP (1) EP1008047B1 (de)
JP (1) JP2001504616A (de)
AT (1) ATE249640T1 (de)
AU (1) AU5461198A (de)
DE (1) DE69724834T2 (de)
WO (1) WO1998022876A1 (de)

Families Citing this family (327)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US6192514B1 (en) * 1997-02-19 2001-02-20 Unisys Corporation Multicomputer system
US6151683A (en) * 1997-03-31 2000-11-21 Sun Microsystems, Inc. Rebuilding computer states remotely
US6170045B1 (en) * 1997-04-30 2001-01-02 International Business Machines Corporation Cross-system data piping using an external shared memory
US6035326A (en) * 1997-05-07 2000-03-07 International Business Machines Corporation Mapping table lookup optimization system
US6182249B1 (en) 1997-05-12 2001-01-30 Sun Microsystems, Inc. Remote alert monitoring and trend analysis
US6154128A (en) * 1997-05-21 2000-11-28 Sun Microsystems, Inc. Automatic building and distribution of alerts in a remote monitoring system
US6026472A (en) * 1997-06-24 2000-02-15 Intel Corporation Method and apparatus for determining memory page access information in a non-uniform memory access computer system
US6163806A (en) * 1997-06-30 2000-12-19 Sun Microsystems, Inc. System and method for transparent, global access to physical devices on a computer cluster
US6886162B1 (en) * 1997-08-29 2005-04-26 International Business Machines Corporation High speed methods for maintaining a summary of thread activity for multiprocessor computer systems
US6249802B1 (en) * 1997-09-19 2001-06-19 Silicon Graphics, Inc. Method, system, and computer program product for allocating physical memory in a distributed shared memory network
US6289424B1 (en) 1997-09-19 2001-09-11 Silicon Graphics, Inc. Method, system and computer program product for managing memory in a non-uniform memory access system
US6070174A (en) * 1997-09-30 2000-05-30 Infraworks Corporation Method and apparatus for real-time secure file deletion
US6092213A (en) * 1997-09-30 2000-07-18 Tandem Computers Incorporated Fault tolerant method of maintaining and distributing configuration information in a distributed processing system
US6279032B1 (en) * 1997-11-03 2001-08-21 Microsoft Corporation Method and system for quorum resource arbitration in a server cluster
US6460071B1 (en) * 1997-11-21 2002-10-01 International Business Machines Corporation System and method for managing client application state in a stateless web browser environment
US6098179A (en) * 1998-01-22 2000-08-01 Digital Equipment Corporation Method and apparatus for performing error detection
US6230246B1 (en) * 1998-01-30 2001-05-08 Compaq Computer Corporation Non-intrusive crash consistent copying in distributed storage systems without client cooperation
US6567774B1 (en) * 1998-01-30 2003-05-20 Compaq Computer Corporation Method and system for configuring and updating networked client stations using a virtual disk and a snapshot disk
US6697846B1 (en) * 1998-03-20 2004-02-24 Dataplow, Inc. Shared file system
US6330709B1 (en) * 1998-03-30 2001-12-11 International Business Machines Corporation Virtual machine implementation for shared persistent objects
US6094663A (en) * 1998-03-31 2000-07-25 Apple Computer, Inc. Method and apparatus for implementing atomic queues
US6289358B1 (en) 1998-04-15 2001-09-11 Inktomi Corporation Delivering alternate versions of objects from an object cache
US6128623A (en) 1998-04-15 2000-10-03 Inktomi Corporation High performance object cache
US6128627A (en) * 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
US6202124B1 (en) * 1998-05-05 2001-03-13 International Business Machines Corporation Data storage system with outboard physical data transfer operation utilizing data path distinct from host
US6173413B1 (en) * 1998-05-12 2001-01-09 Sun Microsystems, Inc. Mechanism for maintaining constant permissions for multiple instances of a device within a cluster
US6161191A (en) * 1998-05-12 2000-12-12 Sun Microsystems, Inc. Mechanism for reliable update of virtual disk device mappings without corrupting data
US6237114B1 (en) 1998-05-13 2001-05-22 Sun Microsystems, Inc. System and method for evaluating monitored computer systems
US6163856A (en) * 1998-05-29 2000-12-19 Sun Microsystems, Inc. Method and apparatus for file system disaster recovery
FR2780589B1 (fr) * 1998-06-30 2000-12-01 Bull Sa Agent de communication entre un administrateur de systeme informatique et un systeme de ressources distribuees et outils de creation d'un tel agent
US9361243B2 (en) 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US7392234B2 (en) * 1999-05-18 2008-06-24 Kom, Inc. Method and system for electronic file lifecycle management
US6330567B1 (en) * 1998-08-13 2001-12-11 Tornado Technologies Co., Ltd Searching system for searching files stored in a hard disk of a personal computer
US6405217B1 (en) * 1998-09-21 2002-06-11 Microsoft Corporation State-based implementation of transactions on a file system
US6144970A (en) * 1998-09-24 2000-11-07 International Business Machines Corporation Technique for inplace reorganization of a LOB table space
US6202149B1 (en) 1998-09-30 2001-03-13 Ncr Corporation Automated application fail-over for coordinating applications with DBMS availability
US6263433B1 (en) * 1998-09-30 2001-07-17 Ncr Corporation Provision of continuous database service and scalable query performance using active redundant copies
US6178519B1 (en) * 1998-12-10 2001-01-23 Mci Worldcom, Inc. Cluster-wide database system
US6389551B1 (en) * 1998-12-17 2002-05-14 Steeleye Technology, Inc. Method of preventing false or unnecessary failovers in a high availability cluster by using a quorum service
US6434626B1 (en) * 1999-01-14 2002-08-13 Compaq Information Technologies Group, L.P. Method and apparatus for low latency network performance monitoring
US7774315B1 (en) * 1999-03-12 2010-08-10 Eldad Galker Backup system
US6453426B1 (en) 1999-03-26 2002-09-17 Microsoft Corporation Separately storing core boot data and cluster configuration data in a server cluster
US6401120B1 (en) * 1999-03-26 2002-06-04 Microsoft Corporation Method and system for consistent cluster operational data in a server cluster using a quorum of replicas
US7774469B2 (en) * 1999-03-26 2010-08-10 Massa Michael T Consistent cluster operational data in a server cluster using a quorum of replicas
US6222529B1 (en) 1999-05-05 2001-04-24 Shareware, Inc. Method and apparatus for providing multiple sessions on a single user operating system
US6505382B1 (en) 1999-05-14 2003-01-14 Apple Computer, Inc. Hinge apparatus with cam mechanism
US6760756B1 (en) * 1999-06-23 2004-07-06 Mangosoft Corporation Distributed virtual web cache implemented entirely in software
US6742015B1 (en) 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US6601234B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6601192B1 (en) 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US6640249B1 (en) 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6640238B1 (en) 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US7289964B1 (en) 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6954220B1 (en) 1999-08-31 2005-10-11 Accenture Llp User context component in environment services patterns
US6715145B1 (en) 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6615253B1 (en) 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6578068B1 (en) 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6842906B1 (en) 1999-08-31 2005-01-11 Accenture Llp System and method for a refreshable proxy pool in a communication services patterns environment
US6549949B1 (en) 1999-08-31 2003-04-15 Accenture Llp Fixed format stream in a communication services patterns environment
US6640244B1 (en) 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6609215B1 (en) 1999-10-21 2003-08-19 International Business Machines Corporation Method and system for implementing network filesystem-based customized computer system automated rebuild tool
US6516325B1 (en) * 1999-11-16 2003-02-04 Novell, Inc. Virtual partition vector for a computer directory system
US6662219B1 (en) 1999-12-15 2003-12-09 Microsoft Corporation System for determining at subgroup of nodes relative weight to represent cluster by obtaining exclusive possession of quorum resource
US6658589B1 (en) * 1999-12-20 2003-12-02 Emc Corporation System and method for backup a parallel server data storage system
WO2001046803A2 (en) * 1999-12-21 2001-06-28 Intel Corporation Architecture for dynamically exposing hardware capabilities using a page description language
US6748429B1 (en) 2000-01-10 2004-06-08 Sun Microsystems, Inc. Method to dynamically change cluster or distributed system configuration
US6769008B1 (en) 2000-01-10 2004-07-27 Sun Microsystems, Inc. Method and apparatus for dynamically altering configurations of clustered computer systems
US6789213B2 (en) * 2000-01-10 2004-09-07 Sun Microsystems, Inc. Controlled take over of services by remaining nodes of clustered computing system
US6658587B1 (en) 2000-01-10 2003-12-02 Sun Microsystems, Inc. Emulation of persistent group reservations
US6757836B1 (en) 2000-01-10 2004-06-29 Sun Microsystems, Inc. Method and apparatus for resolving partial connectivity in a clustered computing system
US6862613B1 (en) 2000-01-10 2005-03-01 Sun Microsystems, Inc. Method and apparatus for managing operations of clustered computer systems
GB0002019D0 (en) * 2000-01-29 2000-03-22 Ibm Data migration tool
US20010047348A1 (en) * 2000-02-01 2001-11-29 Lemuel Davis Consumer driven content media duplication system
DE10006206A1 (de) * 2000-02-11 2001-08-30 Daimler Chrysler Ag Elektronisches Steuersystem
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
US7509420B2 (en) * 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
US6826711B2 (en) * 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US6654783B1 (en) 2000-03-30 2003-11-25 Ethergent Corporation Network site content indexing method and associated system
US20040103139A1 (en) * 2000-03-30 2004-05-27 United Devices, Inc. Distributed processing system having sensor based data collection and associated method
US7082474B1 (en) 2000-03-30 2006-07-25 United Devices, Inc. Data sharing and file distribution method and associated distributed processing system
US7003547B1 (en) 2000-03-30 2006-02-21 United Devices, Inc. Distributed parallel processing system having capability-based incentives and associated method
US20090216641A1 (en) * 2000-03-30 2009-08-27 Niration Network Group, L.L.C. Methods and Systems for Indexing Content
US6891802B1 (en) 2000-03-30 2005-05-10 United Devices, Inc. Network site testing method and associated system
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US20090222508A1 (en) * 2000-03-30 2009-09-03 Hubbard Edward A Network Site Testing
US6963897B1 (en) * 2000-03-30 2005-11-08 United Devices, Inc. Customer services and advertising based upon device attributes and associated distributed processing system
US20010039497A1 (en) * 2000-03-30 2001-11-08 Hubbard Edward A. System and method for monitizing network connected user bases utilizing distributed processing systems
US20040148336A1 (en) * 2000-03-30 2004-07-29 Hubbard Edward A Massively distributed processing system architecture, scheduling, unique device identification and associated methods
US6847995B1 (en) 2000-03-30 2005-01-25 United Devices, Inc. Security architecture for distributed processing systems and associated method
US7020678B1 (en) 2000-03-30 2006-03-28 United Devices, Inc. Machine generated sweepstakes entry model and associated distributed processing system
US7092985B2 (en) * 2000-03-30 2006-08-15 United Devices, Inc. Method of managing workloads and associated distributed processing system
US7254607B2 (en) * 2000-03-30 2007-08-07 United Devices, Inc. Dynamic coordination and control of network connected devices for large-scale network site testing and associated architectures
US8010703B2 (en) * 2000-03-30 2011-08-30 Prashtama Wireless Llc Data conversion services and associated distributed processing system
USRE42153E1 (en) * 2000-03-30 2011-02-15 Hubbard Edward A Dynamic coordination and control of network connected devices for large-scale network site testing and associated architectures
US7039670B2 (en) * 2000-03-30 2006-05-02 United Devices, Inc. Massively distributed processing system with modular client agent and associated method
US20010027467A1 (en) * 2000-03-30 2001-10-04 Anderson David P. Massively distributed database system and associated method
US20020055972A1 (en) * 2000-05-08 2002-05-09 Weinman Joseph Bernard Dynamic content distribution and data continuity architecture
US6873987B1 (en) * 2000-05-31 2005-03-29 International Business Machines Corporation Method, system and program products for recovering from failures within a shared nothing distributed computing environment
WO2001095331A2 (en) * 2000-06-09 2001-12-13 Koninklijke Philips Electronics N.V. Method of implicit partitioning the storage space available on a storage medium
US6574748B1 (en) * 2000-06-16 2003-06-03 Bull Hn Information Systems Inc. Fast relief swapping of processors in a data processing system
FI115674B (fi) * 2000-06-30 2005-06-15 Nokia Corp Menetelmä ja järjestelmä merkintäkielipohjaisten sivujen esittämiseksi kannettavissa laitteissa
US20020078445A1 (en) * 2000-07-11 2002-06-20 Imran Sharif Internet appliance for interactive audio/video display using a remote control unit for user input
US6980313B2 (en) * 2000-07-11 2005-12-27 Imran Sharif Fax-compatible internet appliance
US7245291B2 (en) 2000-07-11 2007-07-17 Imran Sharif System and method for internet appliance data entry and navigation
US20030115167A1 (en) * 2000-07-11 2003-06-19 Imran Sharif Web browser implemented in an Internet appliance
US6928521B1 (en) 2000-08-01 2005-08-09 International Business Machines Corporation Method, system, and data structures for using metadata in updating data in a storage device
US8935307B1 (en) 2000-09-12 2015-01-13 Hewlett-Packard Development Company, L.P. Independent data access in a segmented file system
US20060288080A1 (en) * 2000-09-12 2006-12-21 Ibrix, Inc. Balanced computer architecture
US7406484B1 (en) 2000-09-12 2008-07-29 Tbrix, Inc. Storage allocation in a distributed segmented file system
US6782389B1 (en) * 2000-09-12 2004-08-24 Ibrix, Inc. Distributing files across multiple, permissibly heterogeneous, storage devices
US7836017B1 (en) 2000-09-12 2010-11-16 Hewlett-Packard Development Company, L.P. File replication in a distributed segmented file system
US20040236798A1 (en) * 2001-09-11 2004-11-25 Sudhir Srinivasan Migration of control in a distributed segmented file system
US6611848B1 (en) * 2000-09-13 2003-08-26 Radiant Data Corporation Methods for maintaining data and attribute coherency in instances of sharable files
US6633870B1 (en) * 2000-09-13 2003-10-14 Radiant Data Corporation Protocols for locking sharable files and methods for carrying out the protocols
US6687716B1 (en) * 2000-09-13 2004-02-03 Radiant Data Corporation File consistency protocols and methods for carrying out the protocols
US6978280B1 (en) * 2000-10-12 2005-12-20 Hewlett-Packard Development Company, L.P. Method and system for improving LUN-based backup reliability
US7165096B2 (en) * 2000-12-22 2007-01-16 Data Plow, Inc. Storage area network file system
US7047420B2 (en) 2001-01-17 2006-05-16 Microsoft Corporation Exclusive encryption
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US20020156973A1 (en) * 2001-01-29 2002-10-24 Ulrich Thomas R. Enhanced disk array
EP1370947A4 (de) * 2001-02-13 2009-05-27 Candera Inc Speicherungsvirtualisierungsserver auf siliciumbasis
US6606690B2 (en) * 2001-02-20 2003-08-12 Hewlett-Packard Development Company, L.P. System and method for accessing a storage area network as network attached storage
US7089339B2 (en) 2001-03-16 2006-08-08 National Semiconductor Corporation Sharing of functions between an embedded controller and a host processor
US7043637B2 (en) * 2001-03-21 2006-05-09 Microsoft Corporation On-disk file format for a serverless distributed file system
US7478243B2 (en) * 2001-03-21 2009-01-13 Microsoft Corporation On-disk file format for serverless distributed file system with signed manifest of file modifications
US6981138B2 (en) * 2001-03-26 2005-12-27 Microsoft Corporation Encrypted key cache
US7062490B2 (en) * 2001-03-26 2006-06-13 Microsoft Corporation Serverless distributed file system
DE10127195A1 (de) * 2001-06-05 2002-12-19 Infineon Technologies Ag Prozessor mit interner Speicherkonfiguration
US7310644B2 (en) * 2001-06-06 2007-12-18 Microsoft Corporation Locating potentially identical objects across multiple computers
US6988124B2 (en) * 2001-06-06 2006-01-17 Microsoft Corporation Locating potentially identical objects across multiple computers based on stochastic partitioning of workload
US6889233B2 (en) * 2001-06-18 2005-05-03 Microsoft Corporation Selective file purging for delete or rename
US6714953B2 (en) * 2001-06-21 2004-03-30 International Business Machines Corporation System and method for managing file export information
US7194513B2 (en) * 2001-07-08 2007-03-20 Imran Sharif System and method for using an internet appliance to send/receive digital content files as E-mail attachments
US20030014523A1 (en) * 2001-07-13 2003-01-16 John Teloh Storage network data replicator
US9659292B1 (en) * 2001-08-30 2017-05-23 EMC IP Holding Company LLC Storage-based replication of e-commerce transactions in real time
AU2002341784A1 (en) * 2001-09-21 2003-04-01 Polyserve, Inc. A system and method for efficient lock recovery
US7277952B2 (en) * 2001-09-28 2007-10-02 Microsoft Corporation Distributed system resource protection via arbitration and ownership
US7287063B2 (en) * 2001-10-05 2007-10-23 International Business Machines Corporation Storage area network methods and apparatus using event notifications with data
US7430593B2 (en) * 2001-10-05 2008-09-30 International Business Machines Corporation Storage area network for topology rendering
EP1321865A3 (de) * 2001-12-19 2006-03-15 Alcatel Canada Inc. System und Verfahren für einen mehrfachfädigen Zugriff auf eine Datenbank
US7139885B2 (en) 2001-12-27 2006-11-21 Hitachi, Ltd. Method and apparatus for managing storage based replication
US7177868B2 (en) * 2002-01-02 2007-02-13 International Business Machines Corporation Method, system and program for direct client file access in a data management system
US6862668B2 (en) 2002-02-25 2005-03-01 International Business Machines Corporation Method and apparatus for using cache coherency locking to facilitate on-line volume expansion in a multi-controller storage system
US7480909B2 (en) 2002-02-25 2009-01-20 International Business Machines Corporation Method and apparatus for cooperative distributed task management in a storage subsystem with multiple controllers using cache locking
US7020665B2 (en) * 2002-03-07 2006-03-28 Microsoft Corporation File availability in distributed file storage systems
US7225204B2 (en) * 2002-03-19 2007-05-29 Network Appliance, Inc. System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping
CA2377649C (en) * 2002-03-20 2009-02-03 Ibm Canada Limited-Ibm Canada Limitee Dynamic cluster database architecture
KR100453228B1 (ko) * 2002-03-21 2004-10-15 한국전자통신연구원 공유 디스크 파일 시스템의 저널링 및 회복 방법
US7631066B1 (en) * 2002-03-25 2009-12-08 Symantec Operating Corporation System and method for preventing data corruption in computer system clusters
CA2482194A1 (en) * 2002-04-29 2003-11-27 Meshnetworks, Inc. A system and method for creating a graphical view of a network from a node's perspective
JP2003330905A (ja) * 2002-05-14 2003-11-21 Nec Corp コンピュータシステム
US7249118B2 (en) * 2002-05-17 2007-07-24 Aleri, Inc. Database system and methods
US7484216B2 (en) * 2002-06-18 2009-01-27 Microsoft Corporation System and method for decoupling space reservation in transactional logging systems
US20040001476A1 (en) * 2002-06-24 2004-01-01 Nayeem Islam Mobile application environment
US6980994B2 (en) * 2002-07-08 2005-12-27 International Business Machines Corporation Method, apparatus and computer program product for mapping file handles
US6981004B2 (en) * 2002-09-16 2005-12-27 Oracle International Corporation Method and mechanism for implementing in-memory transaction logging records
US7239605B2 (en) * 2002-09-23 2007-07-03 Sun Microsystems, Inc. Item and method for performing a cluster topology self-healing process in a distributed data system cluster
US20040068523A1 (en) * 2002-10-07 2004-04-08 Keith Robert Olan Method and system for full asynchronous master-to-master file synchronization
US7444634B2 (en) * 2002-10-31 2008-10-28 Sun Microsystems, Inc. Method and apparatus for providing dynamic locks for global resources
US8041735B1 (en) * 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7430569B2 (en) * 2002-11-27 2008-09-30 Sap Ag Computerized replication of data objects
US7464091B2 (en) * 2002-11-27 2008-12-09 Sap Ag Method and software for processing data objects in business applications
US7409412B2 (en) 2002-11-27 2008-08-05 Sap Ag Data element and structure for data processing
US7225302B2 (en) * 2002-11-27 2007-05-29 Sap Ag Method and software application for avoiding data loss
US7689715B1 (en) * 2002-12-20 2010-03-30 Symantec Operating Corporation Method and system for implementing a global name space service
US7136885B2 (en) * 2002-12-20 2006-11-14 International Business Machines Corporation Free space management
US20040153841A1 (en) * 2003-01-16 2004-08-05 Silicon Graphics, Inc. Failure hierarchy in a cluster filesystem
US7421438B2 (en) * 2004-04-29 2008-09-02 Microsoft Corporation Metadata editing control
US7627552B2 (en) 2003-03-27 2009-12-01 Microsoft Corporation System and method for filtering and organizing items based on common elements
US7823077B2 (en) * 2003-03-24 2010-10-26 Microsoft Corporation System and method for user modification of metadata in a shell browser
US7769794B2 (en) 2003-03-24 2010-08-03 Microsoft Corporation User interface for a file system shell
US7712034B2 (en) 2003-03-24 2010-05-04 Microsoft Corporation System and method for shell browser
US7240292B2 (en) 2003-04-17 2007-07-03 Microsoft Corporation Virtual address bar user interface control
US7536386B2 (en) * 2003-03-27 2009-05-19 Microsoft Corporation System and method for sharing items in a computer system
US7702659B2 (en) * 2003-03-27 2010-04-20 Sandisk Il Ltd. Robust, self-maintaining file system
US7925682B2 (en) * 2003-03-27 2011-04-12 Microsoft Corporation System and method utilizing virtual folders
US7650575B2 (en) 2003-03-27 2010-01-19 Microsoft Corporation Rich drag drop user interface
JP4413518B2 (ja) 2003-04-16 2010-02-10 株式会社日立製作所 記憶デバイス制御装置、及び記憶デバイス制御装置の制御方法
US7996361B1 (en) * 2003-06-30 2011-08-09 Symantec Operating Corporation Method and system of providing replica files within a fileset
US7111188B2 (en) * 2003-07-31 2006-09-19 International Business Machines Corporation Dynamically configurable fault tolerance in autonomic computing with multiple service points
US20050044301A1 (en) * 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services
US8776050B2 (en) * 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US20050080982A1 (en) * 2003-08-20 2005-04-14 Vasilevsky Alexander D. Virtual host bus adapter and method
US7284147B2 (en) * 2003-08-27 2007-10-16 International Business Machines Corporation Reliable fault resolution in a cluster
US7284018B1 (en) * 2003-10-15 2007-10-16 Sun Microsystems, Inc. Logless transaction coordination
KR100662120B1 (ko) * 2003-10-20 2006-12-27 엘지전자 주식회사 홈 네트워킹에 의한 가전기기의 메모리 공용방법
US8024335B2 (en) 2004-05-03 2011-09-20 Microsoft Corporation System and method for dynamically generating a selectable search extension
US7647355B2 (en) * 2003-10-30 2010-01-12 International Business Machines Corporation Method and apparatus for increasing efficiency of data storage in a file system
JP4376040B2 (ja) * 2003-11-27 2009-12-02 株式会社日立製作所 複数のプロセッサを用いて情報処理を行う装置及び方法
US7107411B2 (en) * 2003-12-16 2006-09-12 International Business Machines Corporation Apparatus method and system for fault tolerant virtual memory management
US7272609B1 (en) * 2004-01-12 2007-09-18 Hyperion Solutions Corporation In a distributed hierarchical cache, using a dependency to determine if a version of the first member stored in a database matches the version of the first member returned
US7397770B2 (en) * 2004-02-20 2008-07-08 International Business Machines Corporation Checking and repairing a network configuration
KR100435985B1 (ko) * 2004-02-25 2004-06-12 엔에이치엔(주) 투표를 활용한 무정지 서비스 시스템 및 그 시스템에서의정보 갱신 및 제공 방법
US7647358B2 (en) * 2004-03-22 2010-01-12 Microsoft Corporation Computing device with relatively limited storage space and operating/file system thereof
US8069192B2 (en) * 2004-03-22 2011-11-29 Microsoft Corporation Computing device with relatively limited storage space and operating / file system thereof
US7694236B2 (en) 2004-04-23 2010-04-06 Microsoft Corporation Stack icons representing multiple objects
US7657846B2 (en) 2004-04-23 2010-02-02 Microsoft Corporation System and method for displaying stack icons
US8707209B2 (en) * 2004-04-29 2014-04-22 Microsoft Corporation Save preview representation of files being created
US7693880B1 (en) * 2004-05-06 2010-04-06 Symantec Operating Corporation Mirrored storage at the file system level
US7203871B2 (en) * 2004-06-03 2007-04-10 Cisco Technology, Inc. Arrangement in a network node for secure storage and retrieval of encoded data distributed among multiple network nodes
US7590706B2 (en) * 2004-06-04 2009-09-15 International Business Machines Corporation Method for communicating in a computing system
US20060004846A1 (en) * 2004-06-16 2006-01-05 Bmc Software, Inc. Low-overhead relational database backup and restore operations
US8069269B2 (en) * 2004-08-04 2011-11-29 Emc Corporation Methods and apparatus for accessing content in a virtual pool on a content addressable storage system
US8307026B2 (en) * 2004-08-19 2012-11-06 International Business Machines Corporation On-demand peer-to-peer storage virtualization infrastructure
US7499980B2 (en) * 2004-08-19 2009-03-03 International Business Machines Corporation System and method for an on-demand peer-to-peer storage virtualization infrastructure
US7908302B1 (en) * 2004-09-17 2011-03-15 Symantec Operating Corporation In-place splitting and merging of files
US7831642B1 (en) * 2004-09-30 2010-11-09 Symantec Operating Corporation Page cache management for a shared file
US7584220B2 (en) * 2004-10-01 2009-09-01 Microsoft Corporation System and method for determining target failback and target priority for a distributed file system
US20060080514A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Managing shared memory
US7600217B2 (en) * 2004-12-14 2009-10-06 Sap Ag Socket-like communication API for Java
US7580915B2 (en) 2004-12-14 2009-08-25 Sap Ag Socket-like communication API for C
US7593930B2 (en) * 2004-12-14 2009-09-22 Sap Ag Fast channel architecture
US7562138B2 (en) * 2004-12-28 2009-07-14 Sap Shared memory based monitoring for application servers
US7886294B2 (en) * 2004-12-28 2011-02-08 Sap Ag Virtual machine monitoring
US7552153B2 (en) * 2004-12-28 2009-06-23 Sap Ag Virtual machine monitoring using shared memory
US7689989B2 (en) 2004-12-28 2010-03-30 Sap Ag Thread monitoring using shared memory
US7614016B2 (en) 2005-04-21 2009-11-03 Microsoft Corporation Multiple roots in navigation pane
US8195646B2 (en) 2005-04-22 2012-06-05 Microsoft Corporation Systems, methods, and user interfaces for storing, searching, navigating, and retrieving electronic information
US7631016B2 (en) * 2005-05-04 2009-12-08 Oracle International Corporation Providing the latest version of a data item from an N-replica set
US7523273B2 (en) * 2005-05-05 2009-04-21 International Business Machines Corporation Autonomic storage provisioning to enhance storage virtualization infrastructure availability
US7665028B2 (en) 2005-07-13 2010-02-16 Microsoft Corporation Rich drag drop user interface
US20070022091A1 (en) * 2005-07-20 2007-01-25 Scriptlogic Corporation Access based file system directory enumeration
US7693889B1 (en) 2005-12-28 2010-04-06 Emc Corporation Automated backup and recovery for content repository
US7574461B1 (en) * 2005-12-28 2009-08-11 Emc Corporation Dividing data for multi-thread backup
JP4908849B2 (ja) * 2006-01-11 2012-04-04 富士通セミコンダクター株式会社 ファイル削除方法、ファイル・オープン方法、ファイル削除プログラム、および、ファイル・オープン・プログラム
US7925624B2 (en) * 2006-03-31 2011-04-12 Amazon Technologies, Inc. System and method for providing high availability data
US7720892B1 (en) * 2006-06-30 2010-05-18 Emc Corporation Bulk updates and tape synchronization
US8117155B2 (en) * 2006-06-30 2012-02-14 Microsoft Corporation Collection-based object replication
US7809828B2 (en) * 2007-04-11 2010-10-05 International Business Machines Corporation Method for maintaining state consistency among multiple state-driven file system entities when entities become disconnected
US9449047B2 (en) 2007-06-19 2016-09-20 Sybase, Inc. Dynamic modification of schemas in streaming databases
US9477560B2 (en) * 2007-07-31 2016-10-25 Lenovo (Singapore) Pte. Ltd. Methods of creating a voting stop point on a distributed network
US8745012B2 (en) 2007-08-10 2014-06-03 Sybase, Inc. Log-structured store for streaming data
US20090063807A1 (en) * 2007-08-29 2009-03-05 International Business Machines Corporation Data redistribution in shared nothing architecture
JP2010541100A (ja) * 2007-10-03 2010-12-24 スケールアウト ソフトウェア インコーポレイテッド 計算グリッド上に高可用性データ並列操作を実装する方法
US8074019B2 (en) * 2007-11-13 2011-12-06 Network Appliance, Inc. Preventing data loss in a storage system
US8301853B1 (en) * 2007-12-31 2012-10-30 Emc Corporation System and method for asynchronously mirroring data
WO2009087413A1 (en) * 2008-01-08 2009-07-16 Taptu Ltd. Data storage
US20090193346A1 (en) * 2008-01-30 2009-07-30 International Business Machines Corporation Apparatus and method to improve a graphical user interface
DE102008012979A1 (de) * 2008-03-06 2009-09-10 Gip Ag Verfahren und Programm zum Bereitstellen von Datenkohärenz in Netzwerken
US8607020B2 (en) 2008-06-06 2013-12-10 International Business Machines Corporation Shared memory partition data processing system with hypervisor managed paging
JP5377898B2 (ja) * 2008-07-10 2013-12-25 株式会社日立製作所 クラスタリングを構成する計算機システムの系切替方法、及びシステム
US9361229B2 (en) * 2008-08-25 2016-06-07 International Business Machines Corporation Distributed shared caching for clustered file systems
US20100057985A1 (en) * 2008-08-27 2010-03-04 Hitachi, Ltd. System and method for allocating performance to data volumes on data storage systems and controlling performance of data volumes
US8171106B2 (en) * 2008-12-12 2012-05-01 International Business Machines Corporation Per file system usage of networks
US9251149B2 (en) * 2009-02-03 2016-02-02 Bmc Software, Inc. Data set size tracking and management
US8171134B2 (en) * 2009-03-18 2012-05-01 At&T Intellectual Property I, L.P. Methods and apparatus to characterize and predict network health status
US8024496B2 (en) 2009-04-10 2011-09-20 International Business Machines Corporation Enhanced memory migration descriptor format and method
US8090911B2 (en) 2009-04-16 2012-01-03 International Business Machines Corporation Selecting a target number of pages for allocation to a partition
US9807468B2 (en) 2009-06-16 2017-10-31 Microsoft Technology Licensing, Llc Byte range caching
DE102009031923A1 (de) * 2009-07-07 2011-01-13 Sones Gmbh Verfahren zum Verwalten von Datenobjekten
US20110055494A1 (en) * 2009-08-25 2011-03-03 Yahoo! Inc. Method for distributed direct object access storage
US8495044B2 (en) * 2009-09-02 2013-07-23 Microsoft Corporation File system node updates
US9158788B2 (en) * 2009-12-16 2015-10-13 International Business Machines Corporation Scalable caching of remote file data in a cluster file system
US8473582B2 (en) * 2009-12-16 2013-06-25 International Business Machines Corporation Disconnected file operations in a scalable multi-node file system cache for a remote cluster file system
US8495250B2 (en) 2009-12-16 2013-07-23 International Business Machines Corporation Asynchronous file operations in a scalable multi-node file system cache for a remote cluster file system
US8458239B2 (en) 2009-12-16 2013-06-04 International Business Machines Corporation Directory traversal in a scalable multi-node file system cache for a remote cluster file system
EP2354980A1 (de) * 2010-02-04 2011-08-10 ST-Ericsson SA Verwaltung der Kommunikation zwischen einem Client-Gerät und einem Server-Gerät durch Bereitstellung von gemäß eines Dateisystems repräsentierten Computerressourcen an das Client-Gerät
US11429486B1 (en) * 2010-02-27 2022-08-30 Pure Storage, Inc. Rebuilding data via locally decodable redundancy in a vast storage network
US9244015B2 (en) 2010-04-20 2016-01-26 Hewlett-Packard Development Company, L.P. Self-arranging, luminescence-enhancement device for surface-enhanced luminescence
US9002911B2 (en) * 2010-07-30 2015-04-07 International Business Machines Corporation Fileset masks to cluster inodes for efficient fileset management
US8577855B2 (en) * 2010-10-19 2013-11-05 Symantec Corporation Online file system consistency check
WO2012054024A1 (en) 2010-10-20 2012-04-26 Hewlett-Packard Development Company, L.P. Metallic-nanofinger device for chemical sensing
WO2012054027A1 (en) 2010-10-20 2012-04-26 Hewlett-Packard Development Company, L.P. Chemical-analysis device integrated with metallic-nanofinger device for chemical sensing
US8612700B1 (en) 2010-10-29 2013-12-17 Symantec Corporation Method and system of performing block level duplications of cataloged backup data
US9465702B2 (en) * 2010-11-05 2016-10-11 Atc Logistics & Electronics, Inc. System and method for auditing removal of customer personal information on electronic devices
US9792104B2 (en) 2010-11-05 2017-10-17 FedEx Supply Chain Logistics & Electronics, Inc. System and method for flashing a wireless device
US20120137044A1 (en) * 2010-11-30 2012-05-31 Nokia Corporation Method and apparatus for providing persistent computations
KR20120063946A (ko) * 2010-12-08 2012-06-18 한국전자통신연구원 대용량 통합 메모리를 위한 메모리 장치 및 이의 메타데이터 관리 방법
KR101502895B1 (ko) 2010-12-22 2015-03-17 주식회사 케이티 복수의 오류 복제본으로부터 오류를 복구하는 방법 및 상기 방법을 이용하는 스토리지 시스템
KR101544481B1 (ko) * 2010-12-31 2015-08-24 주식회사 케이티 클라우드스토리지 시스템에서 복제본 저장장소를 동적으로 선정하는 방법 및 시스템
US8738725B2 (en) 2011-01-03 2014-05-27 Planetary Data LLC Community internet drive
US8756378B2 (en) 2011-02-17 2014-06-17 Oracle International Corporation Broadcast protocol for a network of caches
KR101544485B1 (ko) 2011-04-25 2015-08-17 주식회사 케이티 클라우드 스토리지 시스템에서 복수개의 복제본을 분산 저장하는 방법 및 장치
US20120311289A1 (en) * 2011-05-31 2012-12-06 Somasundaram Meiyappan Persistent data storage
JP5729173B2 (ja) * 2011-06-30 2015-06-03 富士通株式会社 制御装置、制御方法およびストレージ装置
US20130080481A1 (en) * 2011-09-27 2013-03-28 Sybase, Inc. Extreme large space allocation
US9104678B1 (en) * 2011-12-31 2015-08-11 Richard Michael Nemes Methods and apparatus for information storage and retrieval using a caching technique with probe-limited open-address hashing
US9367480B2 (en) 2012-08-07 2016-06-14 Dell Products L.P. System and method for updating data in a cache
US9549037B2 (en) 2012-08-07 2017-01-17 Dell Products L.P. System and method for maintaining solvency within a cache
US9311240B2 (en) 2012-08-07 2016-04-12 Dell Products L.P. Location and relocation of data within a cache
US20140047183A1 (en) * 2012-08-07 2014-02-13 Dell Products L.P. System and Method for Utilizing a Cache with a Virtual Machine
US9852073B2 (en) * 2012-08-07 2017-12-26 Dell Products L.P. System and method for data redundancy within a cache
US9495301B2 (en) * 2012-08-07 2016-11-15 Dell Products L.P. System and method for utilizing non-volatile memory in a cache
US9208090B2 (en) * 2012-08-31 2015-12-08 Silicon Graphics International Corp. Transactional memory proxy
US9348648B2 (en) 2012-09-12 2016-05-24 Salesforce.Com, Inc. Providing a routing framework for facilitating dynamic workload scheduling and routing of message queues for fair management of resources for application servers in an on-demand services environment
US10169090B2 (en) 2012-09-12 2019-01-01 Salesforce.Com, Inc. Facilitating tiered service model-based fair allocation of resources for application servers in multi-tenant environments
US9239874B1 (en) * 2013-03-15 2016-01-19 Emc Corporation Integrated search for shared storage using index throttling to maintain quality of service
US9317472B2 (en) 2013-06-07 2016-04-19 International Business Machines Corporation Processing element data sharing
US9262415B2 (en) * 2013-11-08 2016-02-16 Sybase, Inc. Cache efficiency in a shared disk database cluster
JP6256931B2 (ja) * 2013-12-11 2018-01-10 インテル・コーポレーション 分散型記憶システムにおけるキャッシュおよび非キャッシュの使用
US9813516B2 (en) 2014-02-18 2017-11-07 Salesforce.Com, Inc. Transparent sharding of traffic across messaging brokers
JP5991699B2 (ja) * 2014-08-08 2016-09-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、情報処理システム、バックアップ方法、およびプログラム
US10963348B1 (en) * 2014-12-19 2021-03-30 EMC IP Holding Company LLC Summary change log indexed by inode numbers
US10572452B1 (en) * 2015-01-01 2020-02-25 EMC IP Holding Company LLC Context-based read-ahead for B+ tree data structures in a deduplication system
WO2017032394A1 (en) * 2015-08-21 2017-03-02 Telefonaktiebolaget Lm Ericsson (Publ) Network data sharing in communication networks
CN105302577B (zh) * 2015-11-26 2019-05-07 上海兆芯集成电路有限公司 驱动执行单元的机器码产生方法以及装置
US10733201B1 (en) 2015-11-30 2020-08-04 Amazon Technologies, Inc. Dynamic provisioning for data replication groups
US10452681B1 (en) 2015-11-30 2019-10-22 Amazon Technologies, Inc. Replication group pools for fast provisioning
US10489230B1 (en) 2015-12-02 2019-11-26 Amazon Technologies, Inc. Chaining log operations in data replication groups
US10567499B1 (en) 2015-12-02 2020-02-18 Amazon Technologies, Inc. Unsupervised round robin catch up algorithm
US11640410B1 (en) 2015-12-02 2023-05-02 Amazon Technologies, Inc. Distributed log processing for data replication groups
US10924543B1 (en) * 2015-12-18 2021-02-16 Amazon Technologies, Inc. Deployment strategy for maintaining integrity of replication groups
US10002004B2 (en) * 2016-05-26 2018-06-19 International Business Machines Corporation Stream computing application shutdown and restart without data loss
US10521311B1 (en) 2016-06-30 2019-12-31 Amazon Technologies, Inc. Prioritized leadership for data replication groups
US10733144B2 (en) * 2016-07-13 2020-08-04 Netapp, Inc. Persistent indexing and free space management for flat directory
US10228995B2 (en) * 2016-07-28 2019-03-12 Hewlett Packard Enterprise Development Lp Last writers of datasets in storage array errors
US10565227B1 (en) 2016-08-31 2020-02-18 Amazon Technologies, Inc. Leadership lease protocol for data replication groups
US11150995B1 (en) 2016-09-13 2021-10-19 Amazon Technologies, Inc. Node placement for replication groups
US10275169B2 (en) * 2017-01-18 2019-04-30 Microsoft Technology Licensing, Llc Shared memory in memory isolated partitions
US10459782B2 (en) * 2017-08-31 2019-10-29 Nxp Usa, Inc. System and method of implementing heartbeats in a multicore system
US10789267B1 (en) 2017-09-21 2020-09-29 Amazon Technologies, Inc. Replication group data management
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10880401B2 (en) * 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US11734192B2 (en) 2018-12-10 2023-08-22 International Business Machines Corporation Identifying location of data granules in global virtual address space
US11016908B2 (en) * 2018-12-11 2021-05-25 International Business Machines Corporation Distributed directory of named data elements in coordination namespace
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US11537634B2 (en) * 2021-03-30 2022-12-27 Netapp, Inc. Methods for hierarchical propagation in tree structures and devices thereof
KR102571197B1 (ko) * 2022-12-07 2023-08-30 성균관대학교산학협력단 클러스터 파일시스템의 캐시 일관성 유지방법

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4096567A (en) * 1976-08-13 1978-06-20 Millard William H Information storage facility with multiple level processors
US4426688A (en) * 1981-08-03 1984-01-17 Ncr Corporation Memory system having an alternate memory
US4868738A (en) * 1985-08-15 1989-09-19 Lanier Business Products, Inc. Operating system independent virtual memory computer system
US4710926A (en) * 1985-12-27 1987-12-01 American Telephone And Telegraph Company, At&T Bell Laboratories Fault recovery in a distributed processing system
US4933846A (en) * 1987-04-24 1990-06-12 Network Systems Corporation Network communications adapter with dual interleaved memory banks servicing multiple processors
US5251308A (en) * 1987-12-22 1993-10-05 Kendall Square Research Corporation Shared memory multiprocessor with data hiding and post-store
US5335325A (en) * 1987-12-22 1994-08-02 Kendall Square Research Corporation High-speed packet switching apparatus and method
US5119481A (en) * 1987-12-22 1992-06-02 Kendall Square Research Corporation Register bus multiprocessor system with shift
US5341483A (en) * 1987-12-22 1994-08-23 Kendall Square Research Corporation Dynamic hierarchial associative memory
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5226039A (en) * 1987-12-22 1993-07-06 Kendall Square Research Corporation Packet routing switch
US5282201A (en) * 1987-12-22 1994-01-25 Kendall Square Research Corporation Dynamic packet routing network
US5077736A (en) * 1988-06-28 1991-12-31 Storage Technology Corporation Disk drive memory
US5117350A (en) * 1988-12-15 1992-05-26 Flashpoint Computer Corporation Memory address mechanism in a distributed memory architecture
US4934764A (en) * 1989-03-31 1990-06-19 Kendall Square Research Corporation Computer system module assembly
US5551035A (en) * 1989-06-30 1996-08-27 Lucent Technologies Inc. Method and apparatus for inter-object communication in an object-oriented program controlled system
IT1239122B (it) * 1989-12-04 1993-09-28 Bull Hn Information Syst Sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali
EP0447736B1 (de) * 1990-03-19 1995-09-27 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. Mehrrechnersystem mit verteilten gemeinsamen Betriebsmitteln und dynamischer und selektiver Vervielfältigung globaler Daten und Verfahren dafür
EP0472829A3 (en) * 1990-08-31 1993-01-07 International Business Machines Corporation Multicomputer complex and distributed shared data memory
US5333315A (en) * 1991-06-27 1994-07-26 Digital Equipment Corporation System of device independent file directories using a tag between the directories and file descriptors that migrate with the files
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5313647A (en) * 1991-09-20 1994-05-17 Kendall Square Research Corporation Digital data processor with improved checkpointing and forking
US5245563A (en) * 1991-09-20 1993-09-14 Kendall Square Research Corporation Fast control for round unit
US5423037A (en) * 1992-03-17 1995-06-06 Teleserve Transaction Technology As Continuously available database server having multiple groups of nodes, each group maintaining a database copy with fragments stored on multiple nodes
JPH0619785A (ja) * 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
US5452447A (en) * 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
US5394555A (en) * 1992-12-23 1995-02-28 Bull Hn Information Systems Inc. Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory
US5493728A (en) * 1993-02-19 1996-02-20 Borland International, Inc. System and methods for optimized access in a multi-user environment
US5390326A (en) * 1993-04-30 1995-02-14 The Foxboro Company Local area network with fault detection and recovery
US5408649A (en) * 1993-04-30 1995-04-18 Quotron Systems, Inc. Distributed data access system including a plurality of database access processors with one-for-N redundancy
FI97594C (fi) * 1993-07-05 1997-01-10 Nokia Telecommunications Oy Aikajakoinen monikäyttöradiojärjestelmä, menetelmä kapasiteetin jakamiseksi solun sisällä sekä menetelmä solun sisäisen handoverin suorittamiseksi
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US5495607A (en) * 1993-11-15 1996-02-27 Conner Peripherals, Inc. Network management system having virtual catalog overview of files distributively stored across network domain
US5560027A (en) * 1993-12-15 1996-09-24 Convex Computer Corporation Scalable parallel processing systems wherein each hypernode has plural processing modules interconnected by crossbar and each processing module has SCI circuitry for forming multi-dimensional network with other hypernodes
US5689700A (en) * 1993-12-29 1997-11-18 Microsoft Corporation Unification of directory service with file system services
US5701462A (en) * 1993-12-29 1997-12-23 Microsoft Corporation Distributed file system providing a unified name space with efficient name resolution
US5519855A (en) * 1994-01-14 1996-05-21 Microsoft Corporation Summary catalogs
US5588147A (en) * 1994-01-14 1996-12-24 Microsoft Corporation Replication facility
US5490272A (en) * 1994-01-28 1996-02-06 International Business Machines Corporation Method and apparatus for creating multithreaded time slices in a multitasking operating system
SE515344C2 (sv) * 1994-02-08 2001-07-16 Ericsson Telefon Ab L M Distribuerat databassystem
DE69526652T2 (de) * 1994-02-28 2002-12-05 British Telecomm Bereitstellung von Diensten in Kommunikationsnetzen
WO1995025306A2 (en) * 1994-03-14 1995-09-21 Stanford University Distributed shared-cache for multi-processors
EP0678812A1 (de) * 1994-04-20 1995-10-25 Microsoft Corporation Replikationsüberprüfung
US5566328A (en) * 1995-01-23 1996-10-15 Tandem Computers Incorporated Reconstructing directory pathnames from file handles in a computer system
US5513314A (en) * 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
US5978577A (en) * 1995-03-17 1999-11-02 Csg Systems, Inc. Method and apparatus for transaction processing in a distributed database system
EP0769171A1 (de) * 1995-05-05 1997-04-23 Silicon Graphics, Inc. Seitenmigration in einem system mit nichtuniformen speicherzugriffen
US5675723A (en) * 1995-05-19 1997-10-07 Compaq Computer Corporation Multi-server fault tolerance using in-band signalling
US5687308A (en) * 1995-06-07 1997-11-11 Tandem Computers Incorporated Method to improve tolerance of non-homogeneous power outages
US5781537A (en) * 1995-07-07 1998-07-14 International Business Machines Corporation Setting up, taking down and maintaining connections in a communications network
US5805785A (en) * 1996-02-27 1998-09-08 International Business Machines Corporation Method for monitoring and recovery of subsystems in a distributed/clustered system
US5832514A (en) * 1996-06-26 1998-11-03 Microsoft Corporation System and method for discovery based data recovery in a store and forward replication process
US5768510A (en) * 1996-07-01 1998-06-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server application enabler system
US5805786A (en) * 1996-07-23 1998-09-08 International Business Machines Corporation Recovery of a name server managing membership of a domain of processors in a distributed computing environment

Also Published As

Publication number Publication date
DE69724834D1 (de) 2003-10-16
EP1008047B1 (de) 2003-09-10
WO1998022876A1 (en) 1998-05-28
ATE249640T1 (de) 2003-09-15
AU5461198A (en) 1998-06-10
EP1008047A1 (de) 2000-06-14
JP2001504616A (ja) 2001-04-03
US5909540A (en) 1999-06-01

Similar Documents

Publication Publication Date Title
DE69724834T2 (de) System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher
DE69722962T2 (de) Strukturiertes datenspeichersystem mit global adressierbarem speicher
DE602005001041T2 (de) Speicherauszugssystem
DE102004013114B4 (de) Plattenarrayvorrichtung
DE102004028808B4 (de) Speichersystem, das mit einem externen Speichersystem verbunden ist und Verfahren zum Verbinden derartiger Systeme
DE602005004166T2 (de) Vorrichtung, system und verfahren zur reinitialisierung einer serialisierung von dateisystemen
DE112014006605B4 (de) Speichersystem
DE602004008808T2 (de) Verfahren und vorrichtung zur durchführung von operationen an gewählten daten in einem speicherbereich
DE602005002668T2 (de) Verfahren zur Datenspeicherungskapazitätzuweisung und Verwaltung unter Verwendung eines oder mehreren Datenspeicherungslaufwerken
DE10393771T5 (de) Schnelle Datensicherungsspeicherung und schnelle Datenwiederherstellung (FBSRD)
DE602004005344T2 (de) Verfahren, system und programm zur handhabung eines failover zu einem fernspeicherort
DE69938378T2 (de) Kopieren von Daten in Speichersystemen
DE69533058T2 (de) Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung
DE60213867T2 (de) Vorrichtung zur verwaltung von datenreplikation
DE60312746T2 (de) Wiederherstellung nach fehlern in datenverarbeitungsanlagen
DE112011100112B4 (de) Pufferspeicher-platte in blitzkopie-kaskade
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE102009031923A1 (de) Verfahren zum Verwalten von Datenobjekten
DE19924822A1 (de) Verfahren und Vorrichtung für Katastrophen-Behebung von Dateisystemen
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE112009000411T5 (de) Verfahren und System zum Implementieren eines virtuellen Speicherpools in einer virtuellen Umgebung
DE112005002481T5 (de) Rekonfigurierung einer redundanten Datenspeicherung
DE112008002947T5 (de) System zum automatischen Abschatten verschlüsselter Daten und von Dateiverzeichnisstrukturen
DE10134492A1 (de) Kaskadierte Ausfallübernahme einer Datenverwaltungsanwendung für gemeinsam genutzte Plattenspeichersysteme in lose verbundenen Knotengruppierungen
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee