DE69021957T2 - Verfahren und Anordnung zur Steuerung von Schattenspeichern. - Google Patents

Verfahren und Anordnung zur Steuerung von Schattenspeichern.

Info

Publication number
DE69021957T2
DE69021957T2 DE69021957T DE69021957T DE69021957T2 DE 69021957 T2 DE69021957 T2 DE 69021957T2 DE 69021957 T DE69021957 T DE 69021957T DE 69021957 T DE69021957 T DE 69021957T DE 69021957 T2 DE69021957 T2 DE 69021957T2
Authority
DE
Germany
Prior art keywords
data
storage media
host
write
pair
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 - Lifetime
Application number
DE69021957T
Other languages
English (en)
Other versions
DE69021957D1 (de
Inventor
Scott H Davis
William L Goleman
David W Thiel
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Application granted granted Critical
Publication of DE69021957D1 publication Critical patent/DE69021957D1/de
Publication of DE69021957T2 publication Critical patent/DE69021957T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/1608Error detection by comparing the output signals of redundant hardware
    • G06F11/1612Error detection by comparing the output signals of redundant hardware where the redundant component is persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/74Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)
  • Color Television Systems (AREA)

Description

    HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung betrifft ein System zur Übertragung von Daten zwischen zwei mit einem digitalen Datenverarbeitungssystem verbundenen Speichereinrichtungen. Die bevorzugte Ausführungsform ist in Verbindung mit einem System zum Einrichten und Erhalten einer oder mehrerer Duplikatkopien oder Schattenkopien von gespeicherten Daten geschrieben, um dadurch die Verfügbarkeit der gespeicherten Daten zu verbessern.
  • Ein typisches digitales Computersystem umfaßt eine oder mehrere Massenspeichersubsysteme zum Speichern von zu verarbeitenden Daten (die auch Programmbefehle beinhalten können). Bei typischen Massenspeichersubsystemen werden die Daten auf Platten gespeichert. Die Platten sind in eine Vielzahl von Spuren unterteilt, die in einem ausgewählten radialen Abstand von der Plattenmitte liegen, und in Sektoren, die bestimmte Winkelbereiche in jeder Spur definieren wobei jede Spur und jeder Satz von ein oder mehreren Sektoren einen Block, in dem die Daten gespeichert sind, umfassen.
  • Da gespeicherte Daten unbeabsichtigterweise korrumpiert oder zerstört werden können, sind Systeme entwickelt worden, die normalerweise auf separaten Speichereinrichtungen Mehrfachkopien der gespeicherten Daten schaffen, so daß die Daten, wenn sie auf einer der Einrichtungen oder Platten beschädigt sind, von einer oder mehreren verbleibenden Kopien wiederhergestellt werden können. Solche Mehrfachkopien sind als Schattensatz (shadow set) bekannt. In einem Schattensatz sind normalerweise die Daten, die in bestimmten Blöcken auf einem Element des Schattensatzes gespeichert sind, dieselben wie die, die in den entsprechenden Blöcken auf den anderen Elementen des Schattensatzes gespeichert sind. Es ist gewöhnlicherweise wünschenswert, daß Mehrfach-Hostprozessoren gleichzeitig (d.h. parallel) auf den Schattensatz für Lese- und Schreibanforderungen (I/O-Anforderungen) zugreifen können.
  • Manchmal ist es notwendig, zwei (oder mehrere) Speichereinrichtungen "abzugleichen", um einen vollständigen Schattensätz zusammenzusetzen, bei dem die Einrichtungen vorher Elemente desselben Schattensatzes waren, aber gegenwärtig Daten enthalten, die zwar gültig, aber möglicherweise nicht identisch sind. Daten in einem bestimmten Block sind gültig, wenn sie nicht fehlerhaft sind, d.h. wenn sie korrekt sind, wie von einer Fehlerkorrektionstechnik bestimmt wird, oder wenn sie nicht korrekt, aber korrigierbar unter Verwendung der Fehlerkorrektionstechnik sind. Schattensatzelemente weisen uneinheitliche Daten auf, wenn sie Blöcke haben, die einander entsprechen, deren Dateninhalte jedoch unterschiedlich sind. Wenn beispielsweise einer der Hosts fehlerhaft arbeitet (d.h. ausfällt), können offene Schreibbefehle aufgetreten sein, die in einigen Schattensatzelementen abgeschlossen wurden, nicht aber in anderen, mit dem Ergebnis, daß die Daten nicht übereinstimmen. Eine Abgleichungsoperation stellt sicher, daß die auf den entsprechenden Blöcken der Schattensatzelemente gespeicherten Daten einheitlich sind, sie bestimmt jedoch nicht die Integrität (d.h. die Genauigkeit) der in den Blöcken gespeicherten Daten, die nicht übereingestimmt haben. Die Datenintegrität wird von Techniken höheren Niveaus (beispielsweise durch Anwendungsprogrammen) verifiziert.
  • In Research Disclosures, Nr. 296, Dezember 1988, RD29647: "Data Integrity during Mirror Synchronization" ist ein System beschrieben, mit dem in Abschnitten die Inhalte eines fehlerfreien Speichergerätes in ein fehlerhaftes Speichergerät kopiert werden. Wenn die Speichergeräte eine I/O-Anforderung erhalten, vergleicht das System den von der I/O-Anforderung betroffenen Bereich der Daten mit dem Datenabschnitt, der vom fehlerfreien auf das fehlerhafte Speichergerät übertragen werden soll. Wenn es keine Überschneidungen gibt, wird die I/O- Anforderung wie üblich verarbeitet. Anderenfalls wird die Synchronisation der Daten zwischen den Speichergeräten gestoppt und erneut nach der Verarbeitung der I/O-Anforderung gestartet. Im Gegensatz zur vorliegenden Erfindung unterbricht und startet das System erneut Datenübertragungen, um die dazwischen kommenden I/O-Anforderungen zu verarbeiten.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung zeigt im allgemeinen die Merkmale eines Verfahrens und einer Einrichtung zum Verwalten eines Schattensatzes von Speichermedien wie in den Ansprüchen 1 und 16 definiert. Das bevorzugte Ausführungsbeispiel beschreibt ein verbessertes Verfahren und Einrichtung zum Abgleichen der Daten von zwei Speichermedien (beispielsweise Festplatten) in einem Schattensatz von Speichermedien. Das bevorzugte Verwaltungsverfahren eines Schattensatzes von Speichermedien, auf das von einer oder mehreren Datenquellen (beispielsweise Hostprozessoren) für I/O-Operationen zugegriffen werden kann, umfaßt die folgenden Schritte: A. Durchführen von aufeinanderfolgenden Vergleichen zwischen an jeweils entsprechenden Stellen in einer Vielzahl von Schattensatz-Speichermedien gespeicherten Daten, während der Zugriff auf die Speichermedien durch die Datenquellen für I/O-Operationen erhalten bleibt; und B. Durchführen einer Verwaltungsoperation mit mindestens einem der Speichermedien des Schattensatzes. Die Verwaltungsoperation umfaßt vorzugsweise die Schritte (a): Unterbrechen der I/O-Operationen bezüglich des mindestens einen Speichermediums des Schattensatzes, mit dem die Verwaltungsoperation durchgeführt wird; (b): Verändern der Daten auf dem Schattensatz-Speichermedium, dessen I/O unterbrochen wurde, basierend auf den Vergleichsergebnissen aus Schritt A; und (c): erneutes Verfügbarmachen des geänderten Speichermediums für I/O-Operationen durch die Datenquelle.
  • Bei der bevorzugten Ausführungsform umfaßt der Schritt des Änderns, daß die Daten auf dem geänderten Speichermedium mit den Daten auf einem anderen der Schattensatz-Speichermedien in Übereinstimmung gebracht werden dadurch daß Daten von einem der Speichermedien gelesen und die gelesenen Daten auf das geänderte Speichermedium geschrieben werden. Auf die Schattensatz- Speichermedien kann von einer Vielzahl von Datenquellen zugegriffen werden.
  • Mit der vorliegenden Erfindung können Uneinheitlichkeiten in Duplikatkopien von gespeicherten Daten korrigiert werden, während die Verfügbarkeit der Daten in den verschiedenen Kopien des Schattensatzes während des Korrekturvorgangs maximiert wird. Eine maximale Verfügbarkeit ist erreicht, da I/O-Operationen, die von den Hosts gestartet wurden, nur dann unterbrochen werden, wenn eine Uneinheitlichkeit gefunden wird, wobei sie nur für eine Zeit, die für die Korrektur der Uneinheitlichkeit benötigt wird, unterbrochen werden.
  • Weitere Vorteile und Merkmale der Erfindung gehen aus der folgenden detaillierten Beschreibung der Erfindung und den beigefügten Ansprüchen hervor.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE ZEICHNUNGEN
  • Zunächst werden kurz die Zeichnungen beschrieben.
  • Fig. 1 ist ein erfindungsgemäßes System, das einen Schattensatz verwendet.
  • Fig. 2 bis 6 stellen Datenstrukturen dar, wie sie mit der Erfindung verwendet werden.
  • Fig. 7 ist ein Flußdiagramm, das ein Verfahren der Abgleichung von zwei Elementen des Schattensatzes gemäß einem bevorzugten Ausführungsbeispiel der Erfindung darstellt.
  • STRUKTUR UND ARBEITSWEISE
  • Unter Bezugnahme auf Fig. 1 umfaßt ein die Erfindung berücksichtigendes Computersystem eine Vielzahl von Hosts 9, wobei jeder Host einen Prozessor 10 einen Speicher 12 (einschließlich Pufferspeicher) und ein Kommunikationsschnittstelle 14 (Interface) beinhaltet. Die Hosts 9 sind alle direkt über ein Kommunikationsmedium 16 (beispielsweise eine virtuelle Schaltung) mit zwei oder mehr Speichersubsystemen verbunden, die in den Darstellungen im allgemeinen mit der Bezugsziffer 17 bezeichnet sind (zwei sind gezeigt).
  • Jedes Speichersubsystem 17 umfaßt einen Platten-Controller 18, der eine oder mehrere Platten 20 steuert, die die Elemente des Schattensatzes bilden. Der Platten-Controller 18 umfaßt einen Puffer 22, einen Prozessor 24 und einen Speicher 26 (beispielsweise einen flüchtigen Speicher). Der Prozessor 24 empfängt I/O-Anforderungen von den Hosts 9 und steuert das Lesen von und das Schreiben auf die Platte 20. Der Puffer 22 speichert vorübergehend Daten, die in Verbindung mit einem Schreibbefehl empfangen wurden, bevor diese Daten auf eine Platte 20 geschrieben werden. Der Puffer 22 speichert auch Daten, die von einer Platte 20 gelesen wurden, bevor diese Daten infolge eines Lesebefehls an den Host übertragen werden. Der Prozessor 24 speichert verschiedenartige Typen von Informationen im Speicher 26, wie unten detaillierter beschrieben wird.
  • Jeder Host 9 speichert in seinem Speicher 12 eine Tabelle, die Informationen über das System, das die Hosts 9 zur Durchführung vieler Operationen benötigen, beinhaltet. Zum Beispiel führen die Hosts 9 I/O-Operationen an die Speichersubsysteme 17 durch und müssen wissen, welche Speichersubsysteme für die Verwendung zur Verfügung stehen, welche Platten in den Subsystemen gespeichert sind usw. Wie weiter unten genauer beschrieben wird, ändern die Hosts 9 die Vorgänge für I/O-Operationen geringfügig, wenn eine Abgleichungsoperation in dem System von einem bestimmten Host 9 durchgeführt wird. In der Tabelle sind daher Zustandsinformationen, die jegliche ablaufende Abgleichungsoperationen betreffen (sowie auch andere Operationen), gespeichert. Die Tabelle beihaltet ebenfalls weitere Standardoperationen.
  • Während jedes Speichersubsystem mehrere Platten 20 umfassen kann, sind die Elemente des Schattensatzes so gewählt, daß die Platten in verschiedenen Speichersubsystemen 17 umfassen. Ein Host kann daher direkt auf jedes Element des Schattensatzes über sein Interface 14 und das Kommunikationsmedium 16 zugreifen, ohne daß ein Zugreifen auf zwei Schattensatzelemente über denselben Platten-Controller 18 erforderlich wäre. Auf diese Weise wird eine "zentrale Fehlerquelle" vermieden für den Fall eines Fehlers in einem der Platten-Controller 18. Mit anderen Worten: Wenn Elemente eines Schattensatzes einen gemeinsamen Platten-Controller 18 haben und dieser Platten-Controller nicht korrekt arbeitet, können die Hosts keine I/O-Operationen erfolgreich durchführen. Im bevorzugten System sind die Schattensatzelemente "verteilt", so daß der Ausfall einer Einrichtung (z.B. eines Platten-Controllers 18) die I/O-Operationen nicht sperrt, da sie unter Verwendung eines anderen Schattensatzelements, auf das über einen anderen Platten-Controller zugegriffen wird, durchgeführt werden können.
  • In einigen Fällen beginnt ein Host 9 mit einer Abgleichungsoperation, mit der er die Daten auf zwei Platten 20, die zu einem Schattensatz gehören, in Übereinstimmung bringt. Bei einer Abgleichungsoperation startet der Host 9 mittels Schreib- und Lesebefehlen Schreib- und Leseoperationen. Bevor hier nun weiter in der Beschreibung fortgefahren wird, ist es hilfreich, diese Befehle detaillierter zu beschreiben.
  • Wenn ein Host 9 Daten auf eine Platte 20, die ein Element eines Schattensatzes sein können, schreiben will, gibt der Host einen Befehl aus, dessen Format in Fig. 2A dargestellt ist. Der Befehl umfaßt ein Feld "Befehls-Bezugsnummer", das nur den Befehl kennzeichnet, und ein Feld "Einheitsnummer", das die Einheit (z.B. die Platte 20), auf die Daten geschrieben werden sollen, kennzeichnet. Für das Vollenden von Schreiboperationen an jede Platte 20, die ein Element des Schattensatzes enthält, gibt der Host einen separaten Schreibbefehl an jede Platte 20 mit der richtigen Einheitsnummer, die die Platte 20 identifiziert, aus. Das Feld "OP- Code" kennzeichnet, daß es sich bei der Operation um eine Schreiboperation handelt. Das Feld "Bytezählung" enthält einen Wert, der die Gesamtzahl der Bytes, die die zu schreibenden Daten umfassen, kennzeichnet, und das Feld "logische Blocknummer" ("LBN") kennzeichnet die Start-Speicherstelle auf der Platte, an der die Daten geschrieben werden sollen. Der "Pufferdeskriptor" kennzeichnet die Stelle im Hostspeicher 12, die die zu schreibenden Daten enthält.
  • Die Felder "Host-Bezugsnummer", "Eintragslokalisierer" und "Eintrags-ID" werden in Verbindung mit einem Merkmal "Schreib-Protokoll" verwendet, und werden im Detail weiter unten beschrieben.
  • Das Format eines Lesebefehls ist in Fig. 2B dargestellt und umfaßt Felder, die den Feldern des Schreibbefehls ähnlich sind. Bei einem Lesebefehl enthält das Feld "Pufferdeskriptor" die Stelle im Hostspeicher 12, an der die von der Platte gelesenen Daten gespeichert werden sollen. Der Lesebefehl enthält nicht die Felder des Schreibbefehls, die mit dem Merkmal "Schreib-Protokoll" in Verbindung stehen nämlich die Felder "Host-Bezugsnummer", "Eintragslokalisierer" und "Eintrags-ID" (Fig. 2A).
  • Wenn ein Host einen Lese- oder Schreibbefehl überträgt, wird er vom Platten-Controller 18 empfangen, die die im Feld "Einheitsnummer" gekennzeichnete Platte 20 bedient. Bei einem Schreibbefehl führt der Platten-Controller 18 die Schreiboperation in Verbindung mit der gekennzeichneten Platte 20 durch und sendet seinerseits eine "Endenachricht" an den Ursprungshost 9. Das Format der Schreib-Endenachricht ist in Fig. 3A dargestellt. Die Endenachricht umfaßt eine Anzahl von Feldern, einschließlich ein Feld "Befehls-Bezugsnummer", dessen Inhalt dem Inhalt des Felds "Befehls-Bezugsnummer" des Schreibbefehls, der die Speicheroperation gestartet hat, entspricht, sowie ein Zustandsfeld, das den Host darüber informiert, ob der Befehl erfolgreich abgeschlossen wurde oder nicht. Wenn die Platte 20 die Schreiboperation nicht zuende führen konnte, kann das Zustandsfeld einen Fehlercode umfassen, der die Natur des Fehlers kennzeichnet.
  • Der Platten-Controller 18 liest infolge eines Lesebefehls die geforderten Daten von ihrer Platte 20 und überträgt diese Daten zum Speicher 12 des Ursprungshosts. Nach erfolgter Datenübertragung wird eine Endenachricht vom Platten- Controller erzeugt und an den Ursprungshost gesendet, wobei das Format der Lese-Endenachricht in Fig. 3B dargestellt ist. Die Lese-Endenachricht ist der Endenachricht eines Schreibbefehls ähnlich, mit der Ausnahme, daß die Lese-Endenachricht kein Feld "Eintragslokalisierer" oder "Eintrags-ID" verbunden mit dem weiter unten beschriebenen Merkmal "Schreib-Historienprotokoll" umfaßt.
  • Der Platten-Controller 18 unterhält auch ein Schreib-Historienprotokoll, das eine Anzahl von "Schreib-Historieneinträgen" enhält (Fig. 4), wobei jeder Eintrag Informationen bezüglich einer kurz zuvor erfolgten Schreiboperation speichert. Wie oben beschrieben umfaßt jedes der Speichersubsysteme, die ein jedes Schattensatzelement bilden, einen Prozessor 24 und einen damit verbundenen Speicher 26. Wenn eine Schreiboperation an ein Schattensatzelement durchgeführt wird, speichert der betreffende Platten-Controller 18 in einem Schreib-Historienprotokoll in seinem Speicher 26 Informationen in einem Schreib-Historieneintrag und gibt dabei die Datenblöcke des Schattensatzelementes an, in die Daten geschrieben wurden. Der Schreib-Historieneintrag speichert auch Informationen, die die Quelle der Schreib-Nachricht (beispielsweise den Ursprungshost), die die Schreiboperation initiiert hat, kennzeichnen.
  • Wenn danach eine Abgleichungsoperation nötig wird, greift ein die Abgleichungsoperation verwaltender Host 9 auf das Schreib-Historienprotokoll bezüglich eines jeden von der Abgleichungsoperation betroffenen Schattensatzelements zu und bestimmt aus den Protokolleinträgen, welche Datenblöcke unterschiedlich sein können. Wenn beispielsweise einer der Hosts 9 aus Fig. 1 fehlerhaft arbeiten sollte, während er eine Schreiboperation an die Elemente des Schattensatzes beginnt, kann ein Schattensatzelement die Schreiboperation abgeschlossen haben ein anderes Schattensatzelement jedoch nicht, so daß die Daten im Schattensatz im Ausmaß der einen Schreiboperation nicht übereinstimmen. Daher kann eine Abgleichungsoperation von einem korrekt arbeitenden Host durchgeführt werden, doch sie braucht nur für die Datenblöcke durchgeführt zu werden, die der ausgefallene Host kurz zuvor zum Schreiben freigegeben hat, weil andere Datenblöcke übereinstimmend sein werden. Daher greift der die Abgleichungsoperation durchführende Host auf das Schreib-Historienprotokoll in Verbindung mit jedem Schattensatzelement zu, bestimmt, welche Blöcke von dem ausgefallenen Host beschrieben worden sind, und führt eine Abgleichung auf den entsprechenden Blökken des Schattensatzes durch. Da nur die beschriebenen Blöcke im Schattensatz abgeglichen werden, ist die Operation viel schneller abgeschlossen als wenn ein eine Abgleichungsoperation verwaltender Host die Inhalte eines ganzen Schattensatzelements für die Kopie auf ein anderes Schattensatzelement freigäbe.
  • Zunächst wird beschrieben, wie das Schreib-Historienprotokoll geschaffen und aufrechterhalten wird, und danach, wie diese Informationen in einer Abgleichungsoperation verwendet werden. Wenn ein Schreibbefehl von einem der Platten-Controller 18 empfangen wird, bereitet der Platten-Controller einen Schreib- Historieneintrag in seinem Speicher 26 vor und speichert ihn. Das Format eines Schreib-Historieneintrag ist in Fig. 4 gezeigt. Die "Eintrags-Flags" geben den Zustand eines Schreib-Historieneintrags an. Ein Flag "zugewiesen" wird gesetzt, wenn der Schreib-Historieneintrag gegenwärtig zugewiesen wird (d.h. zum Speichern von Informationen bezüglich einer Schreiboperation verwendet wird). Die Inhalte eines Feldes "Einheitsnummer" kennzeichnen die bestimmte Platte, an die die mit dem Schreib-Historieneintrag verbundene Schreiboperation adressiert war. Ein Feld "Befehlsidentifikator/Zustand" wird zur Kennzeichnung und Angabe des Zustands eines gegenwärtigen Befehls verwendet (Beispiele der in diesem Feld gespeicherten Informationen sind weiter unten beschrieben).
  • Das Feld "Start-LBN" gibt die Adresse (Stelle) auf dem Datenträger (Zylinder) der Platte an, an der die damit verbundene Schreiboperation beginnt, und das Feld "Übertragungslänge" kennzeichnet die Byteanzahl von Daten, die auf die Platte des Elements geschrieben werden. Das heißt, diese Felder spezifizieren, welcher Teil des Schattensatzelements möglicherweise verändert worden ist. Das Feld "Host-Bezugsnummer" kennzeichnet den Host, von dem die Schreiboperation ihren Ausgang nahm.
  • Das Feld "Eintrags-ID" enthält einen von einem Host zugewiesenen Wert, um einen Schreib-Historieneintrag ausschließlich zu kennzeichnen.
  • Das Feld "Eintragslokalisierer" enthält einen vom Schattensatzelement zugewiesenen Wert, der die interne Stelle des Schreib-Historieneintrags ausschließlich kennzeichnet, d.h. die Stelle im Speicher 26.
  • Wenn ein Schattensatz-Platten-Controller 18 einen Schreibbefehl von einem Host empfängt, führt der Platten-Controller die folgenden Operationen durch. Zunächst bestätigt der Platten-Controller die Befehlsnachrichtenfelder und prüft den Zustand der Platte 20 zur Durchführung einer Schreiboperation in standardisierter Weise gemäß dem verwendeten Protokoll. Wenn die Feldbestätigung oder die Zustandsprüfung fehlschlagen, weist das Schattensatzelement den Befehl zurück, indem es eine Schreib-Endenachricht (Fig. 3A) ausgibt, deren Zustandsfeld den passenden Zustand aufweist.
  • Danach prüft der Platten-Controller ein Flag im Schreibbefehl, das angibt, ob ein neuer Schreib-Historieneintrag für den Befehl zugewiesen werden muß oder ob ein vorher zugewiesener Schreib-Historieneintrag wiederverwendet wird. Muß ein neuer Schreib-Historieneintrag zugewiesen werden, enthält das Feld "Host-Bezugsnummer/Eintragslokalisierer" die Host-Bezugsnummer. Der Platten-Controller durchsucht den Satz der Schreib-Historieneinträge im Speicher 26 nach einem Eintrag, der gegenwärtig nicht zugewiesen ist, d.h. nach einem Schreib-Historieneintrag, dessen Flag "zugewiesener Eintrag" nicht gesetzt ist.
  • Kann kein nicht-zugewiesener Schreib-Historieneintrag gefunden werden, führt der Platten-Controller 18 den Befehl durch und sendet eine Endenachricht an den Host, dessen Zustandsfeld angibt, daß das Schreib-Historienprotokoll bezüglich dieses Hosts ungültig ist. Der Platten-Controller erklärt des weiteren alle Schreib-Historieneinträge des Hosts für ungültig, der den Schreibbefehl ausgegeben hatte, um zu verhindern, daß ein anderer Host sich auf diese Einträge in einer Abgleichungsoperation stützt. Die Einträge können durch die Verwendung eines Modifikators "Historienprotokoll", der in jedem Eintrag enthalten ist und angibt, ob der Eintrag gültig oder ungültig ist, für ungültig erklärt werden.
  • Wird ein nicht zugewiesener Schreib-Historieneintrag gefunden, führt der Platten-Controller 18 die folgenden Operationen in Verbindung mit dem Schreib- Historieneintrag durch:
  • a. Setzt das Flag "zugewiesener Eintrag".
  • b. Kopiert die Inhalte des Felds "Einheitsnummer" der Befehlsnachricht in das Feld "Einheitsnummer" des Eintrags.
  • c. Kopiert die Inhalte der Felder "OP-Code" und "Modifikatoren" der Befehlsnachricht in das Feld "Befehls-ID/Zustand" des Eintrags.
  • d. Kopiert die Inhalte des Feldes "Bytezählung" (oder "logische Blockzählung") der Befehlsnachricht in das Feld "Übertragungslänge" des Eintrags.
  • e. Kopiert die Inhalte des Feldes "logische Blocknummer" (oder "Bestimmungs-LBN") der Befehlsnachricht in das Feld "Start-LBN" des Eintrags.
  • f. Kopiert die Inhalte des Feldes "Host-Bezugsnummer" der Befehlsnachricht in das Feld "Host-Bezugsnummer" des Eintrags.
  • g. Kopiert die Inhalte des Feldes "Eintrags-lD" der Befehlsnachricht in das Feld "Eintrags-ID" des Eintrags.
  • h. Fährt mit der normalen Verarbeitung des Befehls fort.
  • Soll ein vorher verwendeter Schreib-Historieneintrag wiederverwendet werden, so enthält das Feld "Host-Bezugsnummer/Eintragslokalisierer" den "Eintragslokalisierer", der die Stelle des zu verwendenden Schreib-Historieneintrag kennzeichnet. Dies kann vorkommen, wenn beispielsweise ein Host 9 eine vorherige Schreibbefehls-Nachricht erneut überträgt, die denselben Wert im Feld "Host- Bezugsnummer" aufweist. Bei der Durchführung dessen bestimmt der Platten-Controller 18 zunächst, ob der im Feld "Eintragslokalisierer" enthaltene Wert einen Schreib-Historieneintrag aus dem Satz der Schreib-Historieneinträge in seinem Schreib-Protokoll kennzeichnet. Kennzeichnen die Inhalte des Felds "Eintragslokalisierer" keinen Eintrag im Satz, weist der Platten-Controller 18 den Befehl als ungültigen Befehl zurück. Kennzeichnen die Inhalte des Feldes "Eintragslokalisierer" einen der Einträge im Satz der Schreib-Historieneinträge, verwendet der Platten-Controller 18 den Wert im Feld "Eintragslokalisierer" als einen Index für den Satz der Schreib-Historieneinträge, um den wiederzuverwendenden Schreib- Historieneintrag zu finden. Der Platten-Controller prüft dann das Setzen des Flags "Eintragszuweisung" des gefundenen Schreib-Historieneintrags. Ist dieses Flag nicht gesetzt und gibt so an, daß der Eintrag nicht tatsächlich schon zugewiesen wurde, weist der Platten-Controller 18 den Befehl mit einem Status "Schreib- Historieneintrag-Zugriffsfehler" zurück.
  • Der Platten-Controller überprüft dann das Feld "Befehlsidentifikator/Zustand" des gekennzeichneten Schreib-Historieneintrags, um festzustellen, ob der Eintrag gegenwärtig mit einem laufenden Befehl wie einem gerade ausgeführten Schreibbefehl verbunden ist, d.h. der Platten-Controller bestimmt, ob ein Flag "Codieren" innerhalb des Felds "OP-Code" nicht gesetzt ist. Das Flag "Codieren" wird gesetzt wenn eine Operation beginnt, und wird gelöscht, wenn die Operation beendet ist. Ist der Eintrag mit einem laufenden Befehl verbunden, weist der Platten-Controller den Befehl zurück und sendet eine Endenachricht an den Host, dessen Zustandsfeld einen "Schreib-Historieneintrags-Zugriffsfehler" kennzeichnet.
  • Wenn schließlich der Eintrag nicht mit einem laufenden Befehl verbunden ist führt der Platten-Controller die folgenden Operationen durch:
  • a. Kopiert die Inhalte des Felds "Einheitsnummer" der Befehlsnachricht des Befehls in das Feld "Einheitsnummer" des Eintrags.
  • b. Kopiert die Inhalte der Felder "OP-Code" und "Modifikatoren" der Befehlsnachricht des Befehls in das Feld "Befehl-ID/Zustand" des Eintrags.
  • c. Kopiert die Inhalte des Felds "Bytezählung" (oder "logische Blockzäh- lung") der Befehlsnachricht des Befehls in das Feld "Übertragungslänge" des Eintrags.
  • d. Kopiert die Inhalte des Felds "logische Blocknummer" (oder "Bestimmungs-LBN") der Befehlsnachricht des Befehls in das Feld "Start-LBN" des Eintrags.
  • e. Fährt mit der normalen Verarbeitung des Befehls fort.
  • Nachdem ein Schreibbefehl abgebrochen, beendet oder abgeschlossen ist, kopiert der Platten-Controller die Ende-Nachrichtenfelder "Codieren", "Flags" und "Zustand" in die geeigneten Felder des mit dem Befehl verbundenen Schreib- Historieneintrags und fährt dann mit der Standardverarbeitung fort.
  • Zusätzlich setzt der Platten-Controller, bevor die Endenachricht eines Schreibbefehls zurückgegeben wird, die Ende-Nachrichtenfelder "Host-Bezugsnummer", "Eintrags-ID" und "Eintragslokalisierer" gleich der Werte, die in den entsprechenden Feldern des mit dem Befehl verbundenen Schreib-Historieneintrags enthalten sind. Es ist zu beachten, daß dem eben beschriebenen Erfordernis mit einer Ausnahme ebenfalls dadurch genüge geleistet werden kann, daß diese Felder direkt von der Befehlsnachricht in die Endenachricht kopiert werden. Die einzige Ausnahme besteht darin, daß wenn ein neuer Schreib-Historieneintrag zugewiesen worden ist, der Platten-Controller das Ende-Nachrichtenfeld "Eintragslokalisierer" gleich mit dem in dem Feld "Eintragslokalisierer" des verbundenen Schreib-Historieneintrags enthaltenen Wertes setzen muß.
  • Wie unten beschrieben wird, verwendet das System eine Operation "Hostvergleich" bei der Durchführung einer Abgleichung von zwei Schattensatzelementen. Das Befehlsnachrichten-Format für die Hostvergleich-Operation ist in Fig. 6A gezeigt. Die Hostvergleich-0peration erteilt dem Platten-Controller, der die im Feld "Einheitsnummer" gekennzeichnete Platte unterstützt den Befehl die Daten, die in einem im Feld "Pufferdeskriptor" gekennzeichneten Abschnitt des Hostspeichers gespeichert sind, mit den Daten zu vergleichen, die auf der Platte an der durch die Felder "logische Blocknummer" und "Bytezählung" gekennzeichneten Stelle gespeichert sind.
  • Der Platten-Controller, der den Befehl "Hostvergleich" empfängt, führt die geforderte Operation dadurch durch, daß er die gekennzeichneten Daten vom Hostspeicher liest, daß er die Daten vom gekennzeichneten Abschnitt der Platte liest und daß er die vom Host gelesenen Daten mit den von der Platte gelesenen Daten vergleicht. Der Platten-Controller gibt dann eine Endenachricht, deren Format in Fig. 6B gezeigt ist, an den Host aus, der den Hostvergleich-Befehl ausgegeben hatte. Das Zustandsfeld der Endenachricht gibt an, ob sich die verglichenen Daten als identisch erwiesen haben.
  • Einer der Systemhosts steuert Operationen zum Abgleichen zweier Speichereinrichtungen. Das System kann jeden Host zur Durchführung der Operation auswählen. Es kann beispielsweise der Host mit dem besten Übertragungsweg zum Schattensatz (z.B. dem kürzesten Weg) ausgewählt werden.
  • Während der Abgleichungsoperation verwendet der die Abgleichung steuernde Host einen Befehl "Schreib-Historienverwaltung" zur Durchführung zahlreicher Operationen. Das Befehlsnachrichten-Format eines Befehls "Schreib-Historienverwaltung" (d.h. die vom Host an den Schattensatz gesendete Nachricht) ist in Fig. 5A gezeigt. Fig. 5B veranschaulicht das Endenachrichten-Format (d.h. die an den Host vom Platten-Controller eines Schattensatzelements zurückgegebene Nachricht). Der Host wählt eine bestimmte Operation aus, so wie die Operationen während der Abgleichung gebraucht werden, und kennzeichnet die Operation im Feld "Operation" der Befehlsnachricht. Die anderen Felder enthalten andere Informationen, die unten, wenn jede Operation erklärt wird, genauer beschrieben werden.
  • Die Operation "Alle Zuweisungen aufheben" wird für das Aufheben aller Zuweisungen in den Schreib-Historieneinträgen für die im Feld "Einheitsnummer" gekennzeichnete Platte verwendet. Die Operation "Alle Zuweisungen aufheben" macht alle Plätze des Schreib-Protokolls für neue Einträge verfügbar. Es werden beispielsweise nach einer durchgeführten Abgleichungsoperation die im Schreib- Historienprotokoll gespeicherten Einträge nicht mehr länger gebraucht, weil angenommen wird, daß die Elemente gleich nach einer Abgleichung identisch sind. Die Operation "Alle Zuweisungen aufheben" hebt alle Zuweisungen in den Schreib- Historieneinträgen auf (d.h. macht sie frei), um sie für neue Informationen verfügbar zu machen, wenn der Schattensatz neu beschrieben wird.
  • Ein Host kann unter Verwendung einer Operation "Zuweisungen aufheben durch Host-Bezugsnummer" die Zuweisung nur der Schreib-Protokolleinträge aufheben, die mit einem bestimmten Host verbunden sind. Diese Operation kann wünschenswert sein, wenn eine Abgleichung infolge eines Ausfalls eines bestimmten Hosts durchgeführt worden ist. Eine solche Abgleichung würde, wie weiter unten genauer beschrieben wird, das Abgleichen von nur den Blöcken betreffen, die mit Informationen vom ausgefallenen Host beschrieben wurden. Wenn diese Abgleichung durchgeführt ist, werden die mit diesem Host verbundenen Schreib- Historieneinträge nicht mehr weiter gebraucht und die Zuweisung kann aufgehoben werden. Es wird nicht die Zuweisung aller Schreib-Historieneinträge aufgehoben, denn, wenn ein anderer Host ausfällt, würden seine Einträge für die Durchführung einer ähnlichen Abgleichung gebraucht werden. Zur Durchführung dieser Operation hebt der Platten-Controller alle Zuweisungen der Schreib-Historieneinträge auf, die mit dem im Feld "Host-Bezugsnummer" gekennzeichneten Host für die im Feld "Einheitsnummer" gekennzeichnete Platte verbunden sind.
  • Die Zuweisung eines spezifischen Schreib-Historieneintrags kann aufgehoben werden unter Verwendung einer Operation "Zuweisung aufheben durch Eintragslokalisierer". Der Platten-Controller hebt die Zuweisung des spezifischen Schreib-Historieneintrags auf, der sich im Schreib-Protokoll an der im Feld "Eintragslokalisierer" gekennzeichneten Stelle befindet. Kennzeichnen die Inhalte des Felds "Eintragslokalisierer" keinen Eintrag innerhalb der Grenzen des Schreib- Historienprotokolls (d.h., gibt es keinen Schreib-Historieneintrag an der gekennzeichneten Stelle), wird der Befehl zurückgewiesen, und eine Endenachricht wird als ungültiger Befehl zurückgegeben. Stimmt der im Feld "Host-Bezugsnummer" enthaltene und vom "Eintragslokalisierer" gekennzeichnete Wert des Schreib- Historieneintrags nicht mit dem im Feld "Host-Bezugsnummer" der Befehlsnachricht enthaltenen Werts überein (d.h., ist der im Befehl gekennzeichnete Host auch nicht derselbe wie der im Schreib-Historieneintrag gekennzeichnete Host), wird der Befehl als ungültiger Befehl zurückgewiesen. Stimmt analog der im Feld "Eintrags-ID" enthaltene, über den ''Eintragslokalisierer" lokalisierte Wert des Schreib- Historieneintrags mit dem im Feld "Eintrags-ID" enthaltenen Wert der Befehlsnachricht nicht überein, weist der Platten-Controller den Befehls als ungültigen Befehl zurück.
  • Die Operation "Alles lesen" wird dafür verwendet, daß Informationen aus dem Schreib-Protokoll eines Schattensatzelements, das die im Feld "Einheitsnummer" gekennzeichnete Platte unterstützt gelesen werden. Wenn ein Host die Gesamtanzahl der in einem Schreib-Protokoll gespeicherten Schreib-Historieneinträgen zu bestimmen wünscht, wird das Feld "Zählung" gleich Null gesetzt, und der Platten- Controller setzt das Feld "Zählung" der Endenachricht des Befehls gleich der Anzahl von Schreib-Historieneinträgen, die mit der gekennzeichneten Einheit verbunden sind (s. Fig. 6B).
  • Die Operation "Alles lesen" wird ebenfalls zum Lesen aller Schreib-Protokolleinträge von einem gekennzeichneten Schattensatzelement verwendet. In diesem Fall ist das Feld "Zählung" ungleich Null, und der Platten-Controller überträgt die Anzahl der im Feld "Zählung" gekennzeichneten Schreib-Historieneintäge an den Hostspeicher 12 (spezifiziert im Feld "Schreib-Historienpufferdeskriptor"), wobei mit dem ersten Schreib-Historieneintrag begonnen wird. Es ist anzumerken, daß nur die Schreib-Historieneinträge, die mit der die im Feld "Einheitsnummer" gekennzeichneten Einheit verbunden sind, in die Übertragung eingeschlossen werden.
  • Die Operation "Lesen durch Host-Bezugsnummer" wird für das Lesen von Informationen von Schreib-Protokollen, die mit einem spezifischen Host verbunden sind, verwendet. Wenn die Nachricht des Feldes "Zählung" gleich Null ist, setzt der Platten-Controller das Feld "Zählung" der Befehls-Endenachricht gleich der Anzahl von Schreib-Historieneinträgen, die sowohl mit dem im Feld "Host-Bezugsnummer" gekennzeichneten Host als auch mit der im Feld "Einheit" gekennzeichneten Einheit verbunden sind. Der Platten-Controller zählt daher nur die Einträge, die das Ergebnis von Schreibbefehlen vom gekennzeichneten Host an die gekennzeichnete Einheit sind.
  • Wenn das Feld "Zählung" in einer Operation "Lesen durch Host-Bezugsnummer" ungleich Null ist, überträgt der Platten-Controller die Anzahl von Schreib- Historieneinträgen, die im Feld "Zählung" gekennzeichnet sind, an die Stelle im Hostspeicher 12, die im Feld "Schreib-Historienpufferdeskriptor" gekennzeichnet ist, wobei mit dem ersten Schreib-Historieneintrag begonnen wird, der sowohl mit dem im Feld "Host-Bezugsnummer" gekennzeichneten Host als auch mit der im Feld "Einheitsnummer" gekennzeichneten Einheit verbunden ist.
  • Wie oben angemerkt wurde, ist das Endenachrichten-Format für den Befehl "Schreib-Historienverwaltung" in Fig. 5B gezeigt. Das Feld "Einheit zugewiesen" enthält die Gesamtanzahl von gegenwärtig zugewiesenen und mit der im Feld "Einheitsnummer" der Befehlsnachricht gekennzeichneten Einheit verbundenen Schreib-Historieneinträgen. Das Feld "Server zugewiesen" enthält die Gesamtanzahl von gegenwärtig zugewiesenen Schreib-Historieneinträgen über jede Platte die von dem bestimmten Platten-Controller bedient wird. Das Feld "Server nicht zugewiesen" enthält die Gesamtanzahl von gegenwärtig verfügbaren Schreib- Historieneinträgen.
  • Nachdem nun der Befehl "Schreib-Historienverwaltung" und die damit verbundenen Operationen genau beschrieben worden sind, wird als nächstes eine Abgleichungsoperation bei der das Merkmal "Schreib-Protokoll" verwendet wird, unter Bezugnahme auf die Flußdiagramme der Fig. 7A bis C beschrieben.
  • In Schritt 1 gibt der Host einen der Befehle "Schreib-Historienverwaltung", der oben beschrieben wurde, an jedes Schattensatzelement aus, um Informationen von den im Speicher 26 eines jeden Platten-Controllers 18 gespeicherten Schreib- Protokolle zu erhalten. Die spezifischen, verwendeten Befehle hängen von den Umständen ab, die für den Bedarf an der Abgleichungsoperation verantwortlich waren. Wenn beispielsweise ein Host ausfällt und eine Abgleichung von einem der korrekt arbeitenden Hosts durchgeführt wird, erhält der die Abgleichung durchführende Host von dem mit jedem Schattensatzelement verbunden Schreib-Protokoll eine vollständige Liste aller Datenblöcke auf der Element-Platte, auf der der ausgefallene Host eine Schreiboperation durchgeführt hat. Wie oben erörtert wurde, sind die einzigen Datenblöcke, die möglicherweise nicht übereinstimmen, diejenigen, in die Daten von dem ausgefallenen Host geschrieben wurden.
  • Um diese Informationen zu erhalten, gibt der die Abgleichung durchführende Host zunächst einen Befehl "Schreib-Historienverwaltung" für die Durchführung einer Operation "Lesen durch Host-Bezugsnummer" an jede ein Schattensatzelement unterstützende Platten aus, wobei das Feld "Zählung" gleich Null gesetzt wird. Der Befehl identifiziert den ausgefallenen Host im Feld "Host-Bezugsnummer". Wie oben beschrieben, empfängt jeder Platten-Controller den Befehl und sendet eine Endenachricht an den Host, bei dem das Feld "Zählung" auf die Gesamtanzahl der Schreib-Historieneinträge im Schreib-Protokoll, die aufgrund von Schreibbefehlen vom ausgefallenen Host geschaffen wurden, gesetzt ist (Schritt 2).
  • Der Host bestimmt dann, ob er mehr "Schreib-Historienverwaltung"-Befehle ausgeben soll (Schritt 3). Im vorliegenden Beispiel hat der Host Endenachrichten empfangen, die die Anzahl von Schreib-Historieneinträgen die in jedem Schreib- Historienprotokoll für den ausgefallenen Host enthalten sind, kennzeichnet. Der die Abgleichung steuernde Host muß dann einen weiteren Befehl an jeden Platten- Controller des Schattensatzelements ausgeben, der angezeigt hat, daß er Schreib- Historieneinträge für den ausgefallenen Host aufweise. Ein Platten-Controller, der eine Endenachricht, bei der das Feld "Zählung" auf Null gesetzt ist, zurückgibt, weist keine Schreib-Historieneinträge für den ausgefallenen Host auf, und der Host sendet keinen zweiten Befehl an diesen Platten-Controller. (Zu bemerken ist, daß in dem seltenen Fall, in dem alle Platten-Controller des Schattensatzes eine gültige Endenachricht, bei der das Feld "Zählung" gleich Null gesetzt ist, zurückgeben und dadurch angegeben wird, daß kein Schattensatzelement mit Daten vom ausgefallenen Host beschrieben wurde, ist keinen Abgleichungsoperation nötig, und der Vorgang endet hier.)
  • Es wird daher ein zweiter "Schreib-Historienverwaltung"-Befehl an jeden Platten-Controller gesendet, der Schreib-Historieneinträge benötigte (Schritt 1), wobei der Befehl erneut die Operation "Lesen durch Host-Bezugsnummer" spezifiziert und den ausgefallenen Host kennzeichnet, doch nun das Feld "Zählung" gleich der Anzahl von Schreib-Historieneinträgen, die das bestimmte Schreib- Historienprotokoll für den ausgefallenen Host aufweist, gesetzt wird. Nun liest jeder Platten-Controller die Schreib-Historieneinträge aus dem Speicher 26, sendet sie an den Speicher 12 des steuernden Hosts und gibt eine Endenachricht aus (Schritt 2). Der Host empfängt die Endenachrichten und bestimmt in diesem Fall, daß er keinen weiteren Befehl "Lesen durch Host-Bezugsnummer" auszugeben braucht, da er nun die gesamten benötigten Schreib-Historieninformationen besitzt.
  • Der Host fährt mit dem Aufbau einer Tabelle "logische Clusternummer" in seinem Speicher 12 fort (Schritt 4). Die Tabelle enthält Zahlen, die die abzugleichenden "Cluster" (d.h. die Gruppen von Datenblöcken) im Schattensatz kennzeichnet.
  • Der steuernde Host stellt die Tabelle dadurch auf, daß er die logischen Clusternummern, die all die Cluster kennzeichnen, die von den von den Schattensatzelementen übertragenen Schreib-Historieneinträgen gekennzeichnet sind, auflistet.
  • Sobald einjeder Schreib-Historieneintrag empfangen ist, bereitet der Host einen neuen Eintrag vor, der jeweils von einem logische Clusterzähler (der bei 1 beginnt und nach und nach inkrementiert wird) gekennzeichnet ist. Der Eintrag enthält eine Zahl die das Cluster kennzeichnet, in das die Daten geschrieben worden sind, und eine Platten-Controller-ID, die den Platten-Controller kennzeichnet, der den Schreib-Historieneintrag gesandt hatte. Dadurch daß der Host Schritt für Schritt die logische Clusternummern-Tabelle durchgeht, kann er jedes Cluster identifizieren, in das Daten vom ausgefallenen Host geschrieben worden sind.
  • Der Host kann logische Clusternummern-Tabelleneinträge unberücksichtigt lassen, wenn sie das Ergebnis von Schreib-Historieneinträgen sind, bei denen entsprechende Einträge von jedem ein Schattensatzelement unterstützenden Platten- Controller empfangen wurden, denn, wenn ein Schreibbefehl in jedem Schattensatzelement durchgeführt worden ist, wird der Schattensatz aufgrund dieses Schreibbefehls nicht uneinheitlich sein. Mit anderen Worten: Da Uneinheitlichkeiten im Schattensatz aufgrund von Schreibbefehlen, die bei einigen Elementen erfolgreich, bei anderen Elementen jedoch ohne Erfolg durchgeführt worden sind, auftreten, ist bekannt, daß, wenn ein einen bestimmten Schreibbefehl kennzeichnender Schreib-Historieneintrag im Schreib-Protokoll, das mit jedem Schattensatzelement verbunden ist, gefunden werden kann, die Schreiboperation bei jedem Element erfolgreich durchgeführt worden ist und die logischen Clusternummern, die bei diesen Schreib-Historieneinträgen gebildet worden sind, nicht gebraucht werden.
  • Als nächstes setzt der Host in Schritt 5 einen logischen Clusterzähler gleich der ersten logischen Clusterzählnummer in der logischen Clusternummern-Tabelle. Der logische Clusterzähler wird für den Zugriff auf eine logische Clusternummer verwendet. Wenn ein Eintrag in Schritt 5 mit Eins initialisiert ist, ist der erste Eintrag in die logische Clusternummern-Tabelle identifiziert.
  • Der Host wählt dann eines der Elemente als "Quelle" und die anderen Elemente als "Ziel" (Schritt 6). Der Host gibt einen Lesebefehl an den Platten- Controller aus, der die Quelle bedient, um die Daten zu lesen, die in dem von dem laufenden logischen Clusterzähler gekennzeichneten Abschnitt der Platte gespeichert sind (Schritt 7). Der vom Host ausgegebene Lesebefehl ist oben beschrieben und in Fig. 2B gezeigt. Das Feld "Einheitsnummer" ist so gesetzt, daß es die Quelle-Platte 20 beschreibt, wobei die Felder "logische Blocknummer" und "Bytezählung" gemäß dem gegenwärtig vom logischen Clusterzähler identifizierten Cluster gesetzt sind.
  • Die Quelle-Platte empfängt den Lesebefehl und überträgt, nachdem sie die gekennzeichneten Daten von der Platte 20 in den Pufferspeicher 22 gelesen hat, die Daten an den Hostspeicher 12 in den Abschnitt, der vom Feld "Pufferdeskriptor" im Lesebefehl gekennzeichnet ist. Die Quelle-Platte überträgt dann eine Endenachricht des in Fig. 4B dargestellten Typs, die den Host über die durchgeführte Leseoperation informiert (Schritt 8).
  • Nach dem Empfang der Endenachricht durch den Host (Schritt 9), gibt der Host einen Befehl "Hostvergleich" an den Ziel-Platten-Controller aus, um die von der Quelle gelesenen Daten mit den Daten im entsprechenden Cluster in der Ziel- Platte zu vergleichen, um zu bestimmen, ob die Daten identisch sind (Schritt 10).
  • Ist das Ergebnis "JA", überprüft der Host, ob der logische Clusterzähler die letzte logische Clusternummer in der logischen Clusternummern-Tabelle identifiziert (Schritt 13). Ist das Ergebnis von Schritt 13 "JA", ist die Abgleichungsoperation beendet. Anderenfalls wird der logische Clusterzähler inkrementiert (Schritt 14) und das Verfahren wird an Schritt 7 zurückverwiesen, um das nächste Cluster zu verarbeiten.
  • War das Ergebnis "NEIN" und gibt dadurch an, daß die von den entsprechenden Clustern auf den beiden Abgleichungselementen gelesenen Daten nicht identisch sind, führt der Host die folgenden Schritte durch, um die Daten in Übereinstimmung zu bringen.
  • Der Host baut zunächst eine Gesamtsystem-Synchronisation dadurch auf, daß eine Nachricht über das Kommunikationsmedium 16 an alle anderen Hosts im System übertragen wird (Schritt 15). Jeder Host empfängt die übertragene Nachricht, bringt alle noch offenen I/O-Anforderungen an den Schattensatz zuende und verzögert neue I/O-Anforderungen. Sobald dies durchgeführt worden ist, sendet jeder Host eine Bestätigungsnachricht an den die Abgleichung steuernden Host und gibt an, daß er der Synchronisationsanforderung nachgekommen ist (Schritt 16).
  • Nach Erhalt aller Bestätigungsnachrichten gibt der Host einen weiteren Lesebefehl an die Quelle für dasselbe in Schritt 7 gelesene Cluster aus, wobei eine identische Befehlsnachricht verwendet wird (Schritt 17). Die Daten werden erneut gelesen, da ein anderer Host die Daten verändert haben kann, seit sie in Schritt 7 gelesen wurden. Die Quelle empfängt die Lesebefehlsnachricht und führt sie auf dieselbe Weise durch, wie oben im Zusammenhang mit Schritt 8 beschrieben wurde (Schritt 18). Der Host wird erneut die Endenachricht von der Quelle wie oben in Schritt 9 erhalten (Schritt 19).
  • Der Host gibt nun einen Schreibbefehl an die Ziel-Platte aus und verwendet das Schreib-Nachrichtenformat, das in Fig. 2A gezeigt und oben beschrieben ist (Schritt 20). Der Schreibbefehl befiehlt der Ziel-Platte, die von der Quelle in Schritt 18 gelesenen Daten in das vom logischen Clusterzähler gekennzeichnete Cluster in der Ziel-Platte zu schreiben. Die Ziel-Platte empfängt den Schreibbefehl, führt ihn aus und sendet eine Endenachricht an den Host (Schritt 21). Diese Schritte haben zum Ergebnis, daß die Daten in den beiden entsprechenden Clustern in der Quelle- und der Ziel-Platte übereinstimmen. Anzumerken ist, daß, weil keine I/O- Anforderungen während dieser Schritte verarbeitet wurden (d.h. das System ist synchronisiert), keine Gefahr besteht, daß die Daten in der Quelle-Platte verändert worden sind, nachdem sie in Schritt 18 gelesen wurden, so daß die in Schritt 21 in das Cluster der Ziel-Platte geschriebenen Daten mit den nun im entsprechenden Cluster in der Quelle-Platte gespeicherten Daten identisch sind.
  • Nachdem der Host die Endenachricht empfangen hat, die angibt, daß die Schreiboperation vollendet ist (Schritt 22), überträgt der Host eine Nachricht an alle anderen Hosts, um die Gesamtsystem-Synchronisation zu beenden, wobei diese Nachricht alle anderen Hosts darüber informiert, daß normale I/O-Informationen wieder aufgenommen werden können (Schritt 23). Der Host kehrt dann zu Schritt 13 zurück und fährt wie oben beschrieben fort.
  • Der Host wählt daher während einer Abgleichungsoperation ein Schattensatzelement als Quelle und vergleicht Schritt für Schritt die in jedem Datenblock gespeicherten Daten (ein Cluster nach dem anderen) mit den Daten in den entsprechenden Datenblöcken im Ziel-Element des Schattensatzes. Findet der Host eine Uneinheitlichkeit, wird das System vorübergehend synchronisiert, während der Host die Uneinheitlichkeit dadurch aufhebt, daß die uneinheitlichen Daten von der Quelle gelesen und die Daten in das entsprechende Cluster geschrieben werden. Da die Schattensatzelemente, die abgeglichen werden, normalerweise nur eine sehr geringe Anzahl von nicht übereinstimmenden Daten aufweisen, ist die Gesamtsystem-Synchronisation nur für eine kurze Zeit nötig, so daß folglich die normalen I/O-Operationen nur minimal unterbrochen werden.
  • Da die Daten auf beiden Schattensatzelementen gleichermaßen gültig sind, wird, wenn ein Cluster auf dem als Quelle ausgewählten Schattensatzelement korrumpiert ist (z.B. nicht gelesen werden kann), das entsprechende Cluster auf der Ziel-Platte verwendet, d.h. die Ziel-Platte handelt für dieses Cluster als Quelle. Aus diesem Grund kann die Datenübertragung in einer Abgleichungsoperation in beiden Richtungen auftreten.
  • Wenn ein Host im System eine Leseoperation durchführen muß, während ein anderer Host eine Abgleichung, wie oben beschrieben, durchführt, muß der Host zuerst sicherstellen, daß die bestimmte Stelle, an die sich die Leseoperation richtet, übereinstimmt. Dazu führt der Host effizient eine Abgleichungsoperation auf diesem bestimmten Abschnitt durch, indem er zunächst den Lesebefehl an die Quelle ausgibt und dann einen Hostvergleichs-Befehl an die Ziel-Platte ausgibt, um zu bestimmen, ob die Daten übereinstimmen. Stimmen die Daten überein, fährt der Host mit seiner Verarbeitung der gelesenen Daten fort. Stimmen die Daten nicht überein, synchronisiert der Host das System, liest die Daten erneut von der Quelle und schreibt die Daten in das Ziel, wie oben beschrieben wurde.
  • Da in jedem Platten-Controller-Speicher 26 ein begrenzter Platz für das Schreib-Historienprotokoll zur Verfügung steht, versucht der Host, so viele Schreib-Historieneinträge wie möglich für den Gebrauch verfügbar zu halten. Wenn ein Host daher einen Schreibbefehl an jedes Element des Schattensatzes ausgibt und eine Endenachricht von jedem Platten-Controller erhält, der anzeigt daß die Schreibanforderung erfolgreich durchgeführt worden ist, wird der Host die Schreib-Historieneinträge, die für die an alle Platten-Controller gesandten Schreibanforderungen zugewiesen wurden, wiederverwenden. Diese Einträge können wiederverwendet werden, denn, wenn ein Schreibbefehl an alle Elemente des Schattensatzes erfolgreich durchgeführt wurde, ist der Schattensatz aufgrund dieses Schreibbefehls nicht uneinheitlich. Wie oben erörtert wurde, hebt der eine Abgleichungsoperation durchführende Host die Zuweisung der Einträge auf, die in der Abgleichungsoperation verwendet wurden, sobald die Operation abgeschlossen ist.
  • Das veranschaulichende Ausführungsbeispiel beschreibt eine Zuweisungsoperation, die auf einem einzigen Ziel durchgeführt wird; es können jedoch mehrere Ziel verwendet werden, um dadurch drei oder mehr Speichermedien abzugleichen. Analog braucht das System nicht dieselbe Element-Platte als Quelle während der Abgleichungsoperation zu verwenden, sondern es kann andere Platten als Quelle verwenden.
  • Obwohl das veranschaulichende Ausführungsbeispiel die Verwendung eines Schreib-Historienprotokolls bei der Durchführung einer Abgleichungsoperation beschreibt, sollte klar verstanden werden, daß das Schreib-Historienprotokoll nicht verwendet werden muß. Die Vorteile der Erfindung können ohne die Verwendung des Merkmals "Schreib-Protokoll" erreicht werden. Die Abgleichungsoperation würde für jedes Cluster im Schattensatz durchgeführt werden oder für Cluster, die von anderen Mitteln als dem offenbarten Schreib-Historienprotokoll ausgewählt worden sind.
  • Die Erfindung soll daher nicht von dem spezifischen, oben beschriebenen veranschaulichenden Ausführungsbeispiel eingeschränkt werden, sondern sie soll nur vom Schutzumfang der beigefügten Ansprüche begrenzt werden.

Claims (21)

1. Verfahren zum Verwalten eines Schattensatzes (shadow set) von Speichermedien, der eine Vielzahl von Speichermedien (20) umfaßt, auf die jeweils von mindestens einer Datenverarbeitungseinrichtung (10) aus für I/O-Operationen zugegriffen werden kann, wobei das Verfahren durch die folgenden Schritte gekennzeichnet ist:
A. Durchführen von aufeinanderfolgenden Vergleichen zwischen an entsprechenden Stellen in einem Paar der Vielzahl der Speichermedien (20) gespeicherten Daten, während der Zugriff auf das Speichermedienpaar für I/O-Operationen erhalten bleibt; und
B. Durchführen einer Verwaltungsoperation mit einem Speichermedium des Speichermedienpaares, wenn die Vergleiche angeben, daß die Daten an den entsprechenden Stellen nicht übereinstimmen, wobei die Verwaltungsoperation folgendes umfaßt:
a. Unterbrechen der I/O-Operationen bezüglich des einen Speichermediums des Speichermedienpaares;
b. Verändern der Daten auf dem einen Speichermedium des Speichermedienpaares, um die Daten an der entsprechenden Stelle des einen Speichermediums des Speichermedienpaares mit den Daten an der entsprechenden Stelle des anderen Speichermediums des Speichermedienpaares in Übereinstimmung zu bringen; und
c. erneutes Verfügbarmachen des einen Speichermediums des Speichermedienpaares für I/O-Operationen.
2. Verfahren nach Anspruch 1, wobei der Schritt des Veränderns das Lesen der Daten von dem anderen der Speichermedien (20) und das Schreiben der gelesenen Daten in das eine Speichermedium des Speichermedienpaares (20) umfaßt.
3. Verfahren nach Anspruch 1, wobei auf jedes Speichermedium der Vielzahl von Speichermedien (20) durch eine Vielzahl von Datenverarbeitungseinrichtungen (10) zugegriffen werden kann.
4, Verfahren nach Anspruch 1, wobei der Schritt des Ausführens der aufeinanderfolgenden Vergleiche das Vergleichen nur der Stelle der Speichermedien (20) umfaßt, die seit einer vorangegangen Verwaltungsoperation mit Daten beschrieben worden sind.
5. Verfahren nach Anspruch 4, wobei die Speichermedien (20) in Datenblöcke unterteilt sind und wobei mindestens eines der Speichermedien Informationen enthält, die angeben, welche Blöcke seit der vorangegangenen Verwaltungsoperation mit Daten beschrieben wurden.
6. Verfahren nach Anspruch 1, wobei auf die Vielzahl der Speichermedien (20) jeweils direkt durch eine Vielzahl von Datenverarbeitungseinrichtungen zugegriffen werden kann.
7. Verfahren nach Anspruch 1, wobei die Verwaltungsoperation nur mit Abschnitten mindestens des einen der Speichermedien (20) durchgeführt wird und die Abschnitte auf Grundlage der aufeinanderfolgenden Vergleiche ausgewählt werden.
8. Verfahren nach Anspruch 7, wobei die Speichermedien (20) in entsprechende Datenblöcke unterteilt sind und der Schritt des Durchführens der aufeinanderfolgenden Vergleiche das Vergleichen von entsprechenden Datenblöcken in mindesten zwei der Speichermedien umfaßt.
9. Verfahren nach Anspruch 1, wobei Schritt A des weiteren die folgenden Schritte umfaßt:
(i) Lesen der in einem Datenblock in einem der Speichermedien (20) gespeicherten Daten und Bestimmen des Datenblocks als einen laufenden Datenblock;
(ii) Vergleichen der vom laufenden Datenblock gelesenen Daten mit den im entsprechenden Datenblock im anderen der Speichermedien (20) gespeicherten Daten; und
(iii) wenn die in Schritt (ii) verglichenen Daten übereinstimmen, Lesen von in einem weiteren Datenblock eines der Speichermedien gespeicherten Daten, Bestimmen des weiteren Datenblocks als den laufenden Datenblock und Rückkehr zu Schritt (ii);
und wobei Schritt B des weiteren die folgenden Schritte umfaßt:
(iv) wenn die in Schritt (ii) verglichenen Daten nicht übereinstimmen, vorübergehendes Unterbinden der Datenveränderung im laufenden Datenblock und Verändern der in einem der entsprechenden Datenblöcke oder dem laufenden Datenblock gespeicherten Daten, so daß die in dem entsprechenden Datenblock gespeicherten Daten mit den im laufenden Datenblock übereinstimmen; und
(v) Lesen von in einem weiteren Datenblock eines der Speichermedien gespeicherten Daten; Bestimmen des weiteren Datenblocks als den laufenden Datenblock und Rückkehr zu Schritt (ii).
10. Verfahren nach Anspruch 9, wobei der weitere Datenblock ein zum laufenden Datenblock benachbarter Datenblock ist.
11. Verfahren nach Anspruch 10, wobei auf jedes der Speichermedien (20) durch mindestens eine Datenverarbeitungseinrichtung (10) direkt zugegriffen werden kann.
12. Verfahren nach Anspruch 10, wobei auf jedes der Speichermedien (20) durch jede einer Vielzahl von Datenverarbeitungseinrichtungen (10) direkt zugegriffen werden kann.
13. Verfahren nach Anspruch 9, wobei die Speichermedien Plattenspeichereinrichtungen (10) sind.
14. Verfahren nach Anspruch 9, wobei die Schritte (i), (iii) und (v) das Lesen von nur den Datenblöcken umfassen, die während einer bestimmten Zeit mit Daten beschrieben worden sind.
15. Verfahren nach Anspruch 14, wobei eines der Speichermedien (20) Informationen enthält, die angeben, welche Blöcke während einer bestimmten Zeit mit Daten beschrieben wurden.
16. Einrichtung zum Verwalten eines Schattensatzes von Speichermedien, der eine Vielzahl von Speichermedien (20) umfaßt, auf die jeweils von mindestens einer Datenverarbeitungseinrichtung (10) für I/O-Operationen zugegriffen werden kann, wobei die Einrichtung durch folgendes gekennzeichnet ist und enthält:
eine erste Einrichtung (10, 24) zum Durchführen der aufeinanderfolgenden Vergleiche zwischen an entsprechenden Stellen in einem Paar der Vielzahl von Speichermedien gespeicherten Daten, während der Zugriff auf das Speichermedienpaar für I/O-Operationen erhalten bleibt; und
eine zweite Einrichtung (10, 24) zum Durchführen einer Verwaltungsoperation mit einem Speichermedium des Speichermedienpaars, wenn die von der ersten Einrichtung durchgeführten aufeinanderfolgende Vergleiche angeben, daß die Daten an den entsprechenden Stellen nicht übereinstimmen,
wobei die zweite Einrichtung zum Durchführen der Verwaltungsoperation folgendes umfaßt:
eine dritte Einrichtung (10) zum Unterbrechen der I/O-Operationen bezüglich mindestens des einen Speichermediums des Speichermedienpaars;
eine vierte Einrichtung (24) zum Verändern der Daten auf dem einen Speichermedium des Speichermedienpaars, um die Daten an der entsprechenden Stelle des einen Speichermediums des Speichermedienpaares mit den Daten an der entsprechenden Stelle des anderen Speichermediums des Speichermedienpaares in Übereinstimmung zu bringen; und
eine fünfte Einrichtung (10), zum erneuten Verfügbarmachen des einen Speichermediums des Speichermedienpaares für I/O-Operationen.
17. Einrichtung nach Anspruch 16, wobei auf die Vielzahl von Speichermedien (20) durch eine Vielzahl von Datenverabeitungseinrichtungen direkt zugegriffen werden kann.
18. Einrichtung nach Anspruch 16, wobei die erste Einrichtung (10, 24) zum Durchführen der aufeinanderfolgenden Vergleiche nur die Stellen der Vielzahl von Speichermedien vergleicht, die seit einer vorangegangenen Verwaltungsoperation mit Daten beschrieben worden sind.
19. Einrichtung nach Anspruch 18, wobei die Speichermedien (20) in Datenblökke unterteilt sind und wobei mindestens eines der Speichermedien Informationen enthält, die angeben, welche Blöcke seit der vorherigen Verwaltungsoperation mit Daten beschrieben wurden.
20. Einrichtung nach Anspruch 16, wobei die zweite Einrichtung (10, 24) zum Durchführen einer Verwaltungsoperation diese Operation nur mit Abschnitten mindestens des einen der Speichermedien (20) durchführt und die Abschnitte auf Grundlage der aufeinanderfolgenden Vergleiche ausgewählt werden.
21. Einrichtung nach Anspruch 20, wobei die Speichereinrichtungen (20) in entsprechende Datenblöcke unterteilt sind und die Einrichtung zum Durchführen der aufeinanderfolgenden Vergleiche die entsprechenden Datenblöcken in mindesten zwei der Speichermedien vergleicht.
DE69021957T 1989-06-30 1990-06-26 Verfahren und Anordnung zur Steuerung von Schattenspeichern. Expired - Lifetime DE69021957T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/374,490 US5239637A (en) 1989-06-30 1989-06-30 Digital data management system for maintaining consistency of data in a shadow set

Publications (2)

Publication Number Publication Date
DE69021957D1 DE69021957D1 (de) 1995-10-05
DE69021957T2 true DE69021957T2 (de) 1996-05-02

Family

ID=23477069

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69021957T Expired - Lifetime DE69021957T2 (de) 1989-06-30 1990-06-26 Verfahren und Anordnung zur Steuerung von Schattenspeichern.

Country Status (7)

Country Link
US (1) US5239637A (de)
EP (1) EP0405925B1 (de)
JP (1) JP2766890B2 (de)
AT (1) ATE127253T1 (de)
AU (1) AU624966B2 (de)
CA (1) CA2020268A1 (de)
DE (1) DE69021957T2 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69029289T2 (de) * 1989-06-30 1997-06-26 Digital Equipment Corp Verfahren und Anordnung zur Steuerung von Schattenspeichern
EP0455922B1 (de) * 1990-05-11 1996-09-11 International Business Machines Corporation Verfahren und Gerät zur Ableitung des Zustandes einer gespiegelten Einheit bei Reinitialisierung eines Systems
JPH0452743A (ja) * 1990-06-14 1992-02-20 Fujitsu Ltd 2重化外部記憶装置制御方式
US5544347A (en) 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
JP3701965B2 (ja) * 1991-05-17 2005-10-05 日本電気株式会社 保護モードマイクロプロセッサ及びハードディスクのための中断/再開機能とアイドルモードの実現
JP2693292B2 (ja) * 1991-09-30 1997-12-24 三田工業株式会社 自己修復システムを有する画像形成装置
US5826075A (en) * 1991-10-16 1998-10-20 International Business Machines Corporation Automated programmable fireware store for a personal computer system
EP0551009B1 (de) * 1992-01-08 2001-06-13 Emc Corporation Verfahren zur Synchronisierung von reservierten Bereichen in einer redundanten Speicheranordnung
JP2855019B2 (ja) * 1992-02-10 1999-02-10 富士通株式会社 外部記憶装置のデータ保証方法及び外部記憶装置
US5463767A (en) * 1992-02-24 1995-10-31 Nec Corporation Data transfer control unit with memory unit fault detection capability
JPH06119253A (ja) * 1992-10-02 1994-04-28 Toshiba Corp 二重化メモリ制御装置
AU682523B2 (en) * 1993-07-01 1997-10-09 Legent Corporation System and method for distributed storage management on networked computer systems
US5909541A (en) * 1993-07-14 1999-06-01 Honeywell Inc. Error detection and correction for data stored across multiple byte-wide memory devices
KR0128271B1 (ko) * 1994-02-22 1998-04-15 윌리암 티. 엘리스 재해회복을 위한 일관성 그룹 형성방법 및 레코드갱싱의 섀도잉 방법, 주시스템, 원격데이타 섀도잉 시스템과 비동기 원격데이타 복제 시스템
WO1995034860A1 (en) * 1994-06-10 1995-12-21 Sequoia Systems, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
US5592618A (en) * 1994-10-03 1997-01-07 International Business Machines Corporation Remote copy secondary data copy validation-audit function
US5619642A (en) * 1994-12-23 1997-04-08 Emc Corporation Fault tolerant memory system which utilizes data from a shadow memory device upon the detection of erroneous data in a main memory device
US6269458B1 (en) * 1995-02-21 2001-07-31 Nortel Networks Limited Computer system and method for diagnosing and isolating faults
US5737344A (en) * 1995-05-25 1998-04-07 International Business Machines Corporation Digital data storage with increased robustness against data loss
JP3086779B2 (ja) * 1995-06-19 2000-09-11 株式会社東芝 メモリ状態復元装置
US5619644A (en) * 1995-09-18 1997-04-08 International Business Machines Corporation Software directed microcode state save for distributed storage controller
US5737514A (en) * 1995-11-29 1998-04-07 Texas Micro, Inc. Remote checkpoint memory system and protocol for fault-tolerant computer system
US5751939A (en) * 1995-11-29 1998-05-12 Texas Micro, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system using an exclusive-or memory
US5864657A (en) * 1995-11-29 1999-01-26 Texas Micro, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
US5745672A (en) * 1995-11-29 1998-04-28 Texas Micro, Inc. Main memory system and checkpointing protocol for a fault-tolerant computer system using a read buffer
US5917998A (en) * 1996-07-26 1999-06-29 International Business Machines Corporation Method and apparatus for establishing and maintaining the status of membership sets used in mirrored read and write input/output without logging
TW379298B (en) * 1996-09-30 2000-01-11 Toshiba Corp Memory updating history saving device and memory updating history saving method
US6038665A (en) * 1996-12-03 2000-03-14 Fairbanks Systems Group System and method for backing up computer files over a wide area computer network
US5794254A (en) * 1996-12-03 1998-08-11 Fairbanks Systems Group Incremental computer file backup using a two-step comparison of first two characters in the block and a signature with pre-stored character and signature sets
US6192460B1 (en) 1997-12-16 2001-02-20 Compaq Computer Corporation Method and apparatus for accessing data in a shadow set after a failed data operation
US6073221A (en) * 1998-01-05 2000-06-06 International Business Machines Corporation Synchronization of shared data stores through use of non-empty track copy procedure
US6308284B1 (en) * 1998-08-28 2001-10-23 Emc Corporation Method and apparatus for maintaining data coherency
US6490596B1 (en) 1999-11-09 2002-12-03 International Business Machines Corporation Method of transmitting streamlined data updates by selectively omitting unchanged data parts
US7194504B2 (en) * 2000-02-18 2007-03-20 Avamar Technologies, Inc. System and method for representing and maintaining redundant data sets utilizing DNA transmission and transcription techniques
US6704730B2 (en) 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US6826711B2 (en) 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US7509420B2 (en) 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
US7062648B2 (en) * 2000-02-18 2006-06-13 Avamar Technologies, Inc. System and method for redundant array network storage
US6810398B2 (en) 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US6910098B2 (en) * 2001-10-16 2005-06-21 Emc Corporation Method and apparatus for maintaining data coherency
US7464097B2 (en) * 2002-08-16 2008-12-09 Sap Ag Managing data integrity using a filter condition
US7127475B2 (en) 2002-08-15 2006-10-24 Sap Aktiengesellschaft Managing data integrity
US20050174753A1 (en) * 2004-02-06 2005-08-11 Densen Cao Mining light
US7318134B1 (en) * 2004-03-16 2008-01-08 Emc Corporation Continuous data backup using distributed journaling
US20060168410A1 (en) * 2005-01-24 2006-07-27 Andruszkiewicz John J Systems and methods of merge operations of a storage subsystem
US8293810B2 (en) * 2005-08-29 2012-10-23 Cmet Inc. Rapid prototyping resin compositions
CA2651323C (en) 2006-05-05 2016-02-16 Hybir Inc. Group based complete and incremental computer file backup system, process and apparatus
US9443114B1 (en) * 2007-02-14 2016-09-13 Marvell International Ltd. Auto-logging of read/write commands in a storage network
US20100300436A1 (en) * 2007-07-23 2010-12-02 Mckeown John S Device for locating person in emergency environment
US8756391B2 (en) * 2009-05-22 2014-06-17 Raytheon Company Multi-level security computing system
US8989904B2 (en) * 2012-02-27 2015-03-24 Fanuc Robotics America Corporation Robotic process logger
CN113708780B (zh) * 2021-08-13 2024-02-02 上海映盛网络技术股份有限公司 一种基于shadow的部分重复码构造方法

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3544777A (en) * 1967-11-06 1970-12-01 Trw Inc Two memory self-correcting system
US3668644A (en) * 1970-02-09 1972-06-06 Burroughs Corp Failsafe memory system
US4199810A (en) * 1977-01-07 1980-04-22 Rockwell International Corporation Radiation hardened register file
JPS5533321A (en) * 1978-08-30 1980-03-08 Hitachi Ltd Data transmission system
JPS5637883A (en) * 1979-09-04 1981-04-11 Fanuc Ltd Information rewrite system
US4467421A (en) * 1979-10-18 1984-08-21 Storage Technology Corporation Virtual storage system and method
US4476526A (en) * 1981-11-27 1984-10-09 Storage Technology Corporation Cache buffered memory subsystem
US4432057A (en) * 1981-11-27 1984-02-14 International Business Machines Corporation Method for the dynamic replication of data under distributed system control to control utilization of resources in a multiprocessing, distributed data base system
US4636946A (en) * 1982-02-24 1987-01-13 International Business Machines Corporation Method and apparatus for grouping asynchronous recording operations
DE3208573C2 (de) * 1982-03-10 1985-06-27 Standard Elektrik Lorenz Ag, 7000 Stuttgart 2 aus 3-Auswahleinrichtung für ein 3-Rechnersystem
JPS58163052A (ja) * 1982-03-20 1983-09-27 Nippon Telegr & Teleph Corp <Ntt> 分散形デ−タベ−スシステムの障害処理方式
US4503534A (en) * 1982-06-30 1985-03-05 Intel Corporation Apparatus for redundant operation of modules in a multiprocessing system
US4819154A (en) * 1982-12-09 1989-04-04 Sequoia Systems, Inc. Memory back up system with one cache memory and two physically separated main memories
JPS59160899A (ja) * 1982-12-09 1984-09-11 セコイア・システムス・インコ−ポレ−テツド メモリ−・バツク・アツプ・システム
JPS59142799A (ja) * 1983-02-04 1984-08-16 Hitachi Ltd バツクアツプ用蓄電装置付二重化記憶装置
JPS59165162A (ja) * 1983-03-11 1984-09-18 インタ−ナシヨナル ビジネス マシ−ンズ コ−ポレ−シヨン ボリューム回復方法
US4602368A (en) * 1983-04-15 1986-07-22 Honeywell Information Systems Inc. Dual validity bit arrays
US4600990A (en) * 1983-05-16 1986-07-15 Data General Corporation Apparatus for suspending a reserve operation in a disk drive
US4584681A (en) * 1983-09-02 1986-04-22 International Business Machines Corporation Memory correction scheme using spare arrays
US4608687A (en) * 1983-09-13 1986-08-26 International Business Machines Corporation Bit steering apparatus and method for correcting errors in stored data, storing the address of the corrected data and using the address to maintain a correct data condition
US4608688A (en) * 1983-12-27 1986-08-26 At&T Bell Laboratories Processing system tolerant of loss of access to secondary storage
US4638424A (en) * 1984-01-12 1987-01-20 International Business Machines Corporation Managing data storage devices connected to a digital computer
US4755928A (en) * 1984-03-05 1988-07-05 Storage Technology Corporation Outboard back-up and recovery system with transfer of randomly accessible data sets between cache and host and cache and tape simultaneously
JPS60191357A (ja) * 1984-03-12 1985-09-28 Fujitsu Ltd 共用デ−タの同時更新方式
US4916605A (en) * 1984-03-27 1990-04-10 International Business Machines Corporation Fast write operations
US4617475A (en) * 1984-03-30 1986-10-14 Trilogy Computer Development Partners, Ltd. Wired logic voting circuit
US4959774A (en) * 1984-07-06 1990-09-25 Ampex Corporation Shadow memory system for storing variable backup blocks in consecutive time periods
US4686620A (en) * 1984-07-26 1987-08-11 American Telephone And Telegraph Company, At&T Bell Laboratories Database backup method
JPS6150293A (ja) * 1984-08-17 1986-03-12 Fujitsu Ltd 半導体記憶装置
US4747038A (en) * 1984-10-04 1988-05-24 Honeywell Bull Inc. Disk controller memory address register
JPS61264599A (ja) * 1985-05-16 1986-11-22 Fujitsu Ltd 半導体記憶装置
US4751639A (en) * 1985-06-24 1988-06-14 Ncr Corporation Virtual command rollback in a fault tolerant data processing system
US4710870A (en) * 1985-07-10 1987-12-01 Bell Communications Research, Inc. Central computer backup system utilizing localized data bases
US4814971A (en) * 1985-09-11 1989-03-21 Texas Instruments Incorporated Virtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint state
JPS62145349A (ja) * 1985-12-20 1987-06-29 Hitachi Ltd システム間デ−タベ−ス共用方式
US4805095A (en) * 1985-12-23 1989-02-14 Ncr Corporation Circuit and a method for the selection of original data from a register log containing original and modified data
JPH0628042B2 (ja) * 1986-01-31 1994-04-13 富士通株式会社 ジャーナル版数更新方法
JPS62197858A (ja) * 1986-02-26 1987-09-01 Hitachi Ltd システム間デ−タベ−ス共用方式
JPS63140352A (ja) * 1986-12-02 1988-06-11 Nippon Steel Corp オンライン・システムのデ−タ・ベ−ス記憶装置
EP0303856B1 (de) * 1987-08-20 1995-04-05 International Business Machines Corporation Verfahren und Vorrichtung zur Instandhaltung von Duplexpaarverteilten Geräten mittels einer Doppelkopiefunktion
JPH01128142A (ja) * 1987-11-13 1989-05-19 Nec Corp 二重化ファイルの複写方式
JP2924905B2 (ja) * 1988-03-25 1999-07-26 エヌシーアール インターナショナル インコーポレイテッド フアイル・バツクアツプ・システム
US5089958A (en) * 1989-01-23 1992-02-18 Vortex Systems, Inc. Fault tolerant computer backup system

Also Published As

Publication number Publication date
EP0405925B1 (de) 1995-08-30
EP0405925A3 (en) 1991-12-11
ATE127253T1 (de) 1995-09-15
JP2766890B2 (ja) 1998-06-18
CA2020268A1 (en) 1990-12-31
EP0405925A2 (de) 1991-01-02
AU5806690A (en) 1991-01-03
US5239637A (en) 1993-08-24
AU624966B2 (en) 1992-06-25
DE69021957D1 (de) 1995-10-05
JPH03135639A (ja) 1991-06-10

Similar Documents

Publication Publication Date Title
DE69021957T2 (de) Verfahren und Anordnung zur Steuerung von Schattenspeichern.
DE69031443T2 (de) Verfahren und Anordnung zur Steuerung von Schattenspeichern
DE69224589T2 (de) Speicherplattenanordnung und Verfahren zur Bestimmung des Vorhandenseins korrekter Speichervorrichtungen
DE69801112T2 (de) Dateispeicherverwaltungssystem für schnappschusskopieroperationen
DE69031926T2 (de) Instandhaltung von Dateiattributen in einem verteilten Datenverarbeitungssystem
DE3689664T2 (de) Verfahren und Gerät zur Verwaltung von veralteten Datenobjekten.
DE60031064T2 (de) Kopierverfahren zwischen logischen Speicherplatten, Speicherplattensystem und Programm dafür
DE69710578T2 (de) Verfahren zum unabhängigen und gleichzeitigen zugriff auf eine gemeinsame datensammlung
DE69022716T2 (de) Mehrrechnersystem mit verteilten gemeinsamen Betriebsmitteln und dynamischer und selektiver Vervielfältigung globaler Daten und Verfahren dafür.
DE69311952T2 (de) Verfahren und System zur inkrementalen Datensicherung
DE3805107C2 (de)
DE69403192T2 (de) Vorrichtung und verfahren zur datensicherung von speichereinheiten in einem rechnernetzwerk
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE69801655T2 (de) System mit schreibbenachrichtigung während eines datensatzkopiervorgang
DE69730449T2 (de) Erzeugung einer spiegeldatenkopie (bild) unter verwendung von referenzetiketten
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE69116065T2 (de) Datenrückgewinnung in massenspeicherdatenbanksystemen
DE60312746T2 (de) Wiederherstellung nach fehlern in datenverarbeitungsanlagen
DE69225296T2 (de) Datenrekonstruktion in einem Speichergerätanordnungssystem
DE69025232T2 (de) Verfahren zur Aufrechterhaltung der Cache-Speicherkohärenz in einem Mehrrechnersystem
DE69033540T2 (de) Verfahren zur Verwaltung von in Familien aufgeteilten mehrfachen virtuellen Speichern und entsprechende Struktur
DE69913984T2 (de) Verteiltes transaktionales verarbeitungssystem und verfahren
DE69132511T2 (de) Verfahren und vorrichtung zur zuordnung von erkennungszeichen an die glieder einer gruppe von massenspeichern
DE2806045A1 (de) Dv-system mit pufferspeicher
DE2806024A1 (de) Speichersystem mit fehlerfeststell- und korrekturmoeglichkeit

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN