DE69719934T2 - Verfahren und Vorrichtung zur schnellen und sicheren Datensammlung - Google Patents

Verfahren und Vorrichtung zur schnellen und sicheren Datensammlung

Info

Publication number
DE69719934T2
DE69719934T2 DE69719934T DE69719934T DE69719934T2 DE 69719934 T2 DE69719934 T2 DE 69719934T2 DE 69719934 T DE69719934 T DE 69719934T DE 69719934 T DE69719934 T DE 69719934T DE 69719934 T2 DE69719934 T2 DE 69719934T2
Authority
DE
Germany
Prior art keywords
storage unit
key
log file
storage
storage units
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
DE69719934T
Other languages
English (en)
Other versions
DE69719934D1 (de
Inventor
Patrick Boeuf
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69719934D1 publication Critical patent/DE69719934D1/de
Publication of DE69719934T2 publication Critical patent/DE69719934T2/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/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
    • 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/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • 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/99951File or database maintenance
    • Y10S707/99956File allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

    GEBIET DER ERFINDUNG
  • Die Erfindung betrifft ein Verfahren zum Schreiben eines Datenstroms variabler Länge als einen Satz von Speichereinheiten in eine Protokolldatei.
  • HINTERGRUND DER ERFINDUNG
  • Der Einsatz von Protokolldateiservern ist in einer verteilten Umgebung zum Protokollieren von gleichzeitig von verschiedenen Netzadressen gesendeten Netzinformationen erforderlich. Es können beliebige Netzinformationen gespeichert werden, wie beispielsweise Netzverwaltungsinformationen oder Client- Abrechnungsdaten, die beide von großer Bedeutung sind. Dieser erste Umstand macht den Einsatz einer zuverlässigen Protokollserveranwendung im Netz erforderlich. Wenn der Server unabsichtlich angehalten wird, sollte nur eine minimale Datenmenge verloren gehen, und diese beschädigten Daten müssen beim Neustart des Servers wieder gefunden werden.
  • Andererseits nimmt der Datenumfang mit der Größe des Netzes zu. Bei modernen Netzen, wie zum Beispiel Netzen für standortübergreifende Hochgeschwindigkeitskommunikation, müssen auf dem Server große, gleichzeitig von vielen Netzadressen gesendete Datenmengen gespeichert werden. Dieser zweite Umstand bedingt die Notwendigkeit einer Protokollanwendung. Die Protokollanwendungen weisen eine geringe Leistungsfähigkeit auf, wenn zwischen zwei Netz- Clients gleichzeitig eine Schreiboperation erfolgt. Bei ausreichend hoher Leistungsfähigkeit kann optional ein zuverlässiges Protokoll zwischen der Anwendung und einem Client verwendet werden, um zu verlangen, dass keine Daten mehr gesendet werden sollen. Dadurch wird der Umfang der verloren gegangenen Daten verringert.
  • Wegen der sinkenden Kosten für Speicherplatz basiert die heute eingesetzte Lösung auf einem Mehrdateien-Dateiserver. Wenn bei der ersten Datei des Servers ein Pufferüberlauf eintritt, wird eine neue Datei geöffnet. Diese Lösung nach dem Stand der Technik wird in dem über Internet frei zugänglichen Dokument "draft-ietf-atommib-acct-03.txt" von Keith McCloghrie, Juha Heinanen, Wedge Green und Anil Prasad vom 31. Juli 1996 beschrieben, in dem eine verbindungsorientierte Abrechnungs- MIB (management Information base, Verwaltungsinformationsdatenbank) offengelegt wird. In diesem Dokument weist die durch die SNMP-Agenten eines TCP/IP-Netzes gesendete Datei gesammelter Abrechnungsdaten einen Maximalumfang auf, und wenn die Datei diesen Umfang erreicht, wechselt entweder der Agent automatisch zu einer neuen Version der Datei, oder weitere Datensätze werden ignoriert. Dieses Dokument regt an, einen Minimalumfang zu verwenden, da festgestellt wird, dass der Maximalumfang bei manchen Agenten kleiner als ca. 2 MB ist.
  • Mit dem Verwenden von Mehrfachdateien nach dem Stand der Technik wird eine Lösung vorgeschlagen, die einen wachsenden Umfang an Protokolldaten unterstützt. Bei dieser Lösung kann das Schreiben durch Verwenden einer neuen Datei fehlerfrei erfolgen, wenn eine vorangehende Datei voll ist; im Gegensatz dazu müsste man Verarbeitungszeit für den Versuch aufwenden, in der früheren Datei nach unbelegtem Speicherplatz zu suchen. Trotzdem wird die Systemleistung im Endeffekt eingeschränkt, da einige ziemlich komplexe Dateiverwaltungsoperationen (Verwaltung der Dateinamenübereinkunft, Schließen der vorangehenden Datei, Öffnen der neuen Datei und Löschen der ältesten Datei) vor jeder Schreiboperation erforderlich sind und der Plattenspeicher während der Lebensdauer dieser Mehrfachdateien fragmentiert wird.
  • Es werden keine Merkmale zur Steigerung der Zuverlässigkeit der Daten vorgeschlagen. Um die Mehrdateienanwendung des Protokollservers gegen Unstimmigkeiten zwischen Dateien zu schützen, wenn nach einer unerwarteten Unterbrechung ein Neustart erfolgen muss, müssen Sicherungsdateien verwaltet werden. Diese Verwaltungsvorgänge für die Sicherungsdateien wirken sich ebenfalls negativ auf die Leistungsfähigkeit der Anwendung aus. Wenn eine der Mehrfachdateien abgerufen wurde und nach einem Systemfehler erneut abgerufen werden soll, kann die gesamte Datei danach gelöscht sein, wenn der Speicherplatz für eine neue Datei verwendet worden ist. Selbst wenn die neue Datei nur für einen Datensatz erzeugt wurde, könnten die wichtigen Daten der gesamten Datei nicht abgerufen werden.
  • In der Beschreibung mit dem Titel "Queueing Mechanism for Bi- Processor Communication" im IBM Technical Disclosure Bulletin, Bd. 40, Nr. 05, vom Mai 1997 verwenden zwei Prozessoren zirkuläre Puffer zum Protokollieren ausgetauschter Basiselemente im zyklischen Tauschverfahren. Dieses Protokollierverfahren weist den Vorteil auf, dass fortlaufend derselbe gemeinsame Speicherpuffer verwendet wird, ohne dass es zum Datenüberlauf oder Übertragungsunterlauf kommt. In dieser Beschreibung werden keine Betrachtungen zur Verbesserung der Zuverlässigkeit der gemeinsam genutzten Daten angestellt. Desgleichen werden keine Merkmale zum Schutz gegen Unstimmigkeiten in den gespeicherten Daten genannt, wenn nach einer unerwarteten Unterbrechung der Protokollierung der Prozessoren ein Neustart erfolgen muss.
  • Es ist eine erste Aufgabe der vorliegenden Erfindung, die Leistungsfähigkeit der Protokollanwendung des Datenservers zu verbessern.
  • Es ist eine zweite Aufgabe der vorliegenden Erfindung, die Zuverlässigkeit der Anwendung zu verbessern.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Die vorliegende Erfindung beschreibt ein Verfahren zum Schreiben eines Datenstroms variabler Länge als Satz von (M) Speichereinheiten in eine Protokolldatei, wobei die Protokolldatei (N) vorab zugeordnete zusammenhängende Speichereinheiten eines Speicherbereichs mit Direktzugriff umfasst, und die Protokolldatei ferner einen Kopfschlüssel umfasst, der gleich der kumulierten Anzahl der durch die vorangehenden Schreiboperationen in die Protokolldatei geschriebenen Speichereinheiten gesetzt wird, wobei das Verfahren die folgenden Schritte umfasst:
  • (a) Lesen des durch die letzte Schreiboperation in der Protokolldatei gespeicherten Kopfschlüssels;
  • (b) Bereitstellen eines Schlüssels der Speichereinheitennummer für jede Speichereinheit des Datensatzes von (M) Speichereinheiten, wobei der Schlüssel der Speichereinheitennummer gleich dem für die erste Speichereinheit des Datensatzes von (M) Speichereinheiten um 1 erhöhten Kopfschlüssel gesetzt und fortlaufend für jede der nachfolgenden Speichereinheiten des Datensatzes von (M) Speichereinheiten um 1 erhöht wird;
  • (c) Empfangen des Datenstroms variabler Länge als Datensatz von (M) Speichereinheiten in einem Schreibpuffer;
  • (d) Schreiben einer Gruppe von Schlüsseln in jede der Speichereinheiten des Datensatzes von (M) Speichereinheiten im Schreibpuffer, wobei die Schlüssel Folgendes umfassen:
  • den für die Speichereinheit bereitgestellten Schlüssel der Speichereinheitennummer,
  • den Schlüssel der Speichereinheitennummer der ersten Speichereinheit des Datensatzes von (M) Speichereinheiten und
  • den Schlüssel der Speichereinheitennummer der letzten Speichereinheit des Datensatzes von (M) Speichereinheiten;
  • (e) Berechnen einer Anfangsposition, die eine in Vielfachen von Speichereinheiten in der Protokolldatei ausgedrückte relative Adresse ist:
  • Anfangsposition = Kopfschlüssel, wenn der Kopfschlüssel kleiner als N ist;
  • Anfangsposition = Rest (Kopfschlüssel/N), wenn der Kopfschlüssel größer als oder gleich N ist;
  • (f) Schreiben des im Schreibpuffer befindlichen Datensatzes von (M) Speichereinheiten in die Protokolldatei durch Ausführen der folgenden Schritte:
  • Schreiben der ersten Speichereinheit des Datensatzes von (M) Speichereinheiten in die Anfangsposition in der Protokolldatei,
  • Berechnen einer Endposition durch Addieren der Anzahl (M) zu schreibender Speichereinheiten zur Anfangsposition,
  • wenn die letzte Adresse kleiner als oder gleich N ist, soll der folgende Schritt ausgeführt werden:
  • Schreiben aller Speichereinheiten des Datensatzes von (M) Speichereinheiten in die Protokolldatei, beginnend mit der relativen Adresse der Anfangsposition bis zur (N)ten Speichereinheit, und Schreiben der folgenden Speichereinheiten des Datensatzes von (M) Speichereinheiten in die Protokolldatei, beginnend mit der relativen Adresse 0;
  • (g) Aktualisieren des Kopfschlüssels durch Berechnen des neuen Kopfschlüssels = Kopfschlüssel + (M);
  • (h) Speichern des neuen Kopfschlüssels als Kopfschlüssel in der Protokolldatei.
  • Das Verfahren der vorliegenden Erfindung ermöglicht auch das Lesen eines in eine Protokolldatei geschriebenen Datensatzes anhand eines vorgegebenen Schlüssels gemäß Anspruch 1 und das Prüfen der Konsistenz des Datensatzes, wobei das Verfahren die folgenden Schritte umfasst:
  • Lesen des während der letzten Schreiboperation gespeicherten Kopfschlüssels und Prüfen, ob dieser Schlüssel kleiner als oder gleich dem Kopfschlüssel ist;
  • Berechnen einer Anfangsposition des Datensatzes, die eine in Vielfachen von Speichereinheiten in der Protokolldatei ausgedrückte relative Adresse ist:
  • Anfangsposition = vorgegebener Schlüssel - 1, wenn der vorgegebene Schlüssel kleiner als N ist, Anfangsposition = Rest (vorgegebener Schlüssel/N) - 1, wenn der vorgegebene Schlüssel größer als oder gleich N ist;
  • Lesen der der Anfangsposition entsprechenden Speichereinheit in einem Lesepuffer;
  • Prüfen, ob die soeben gelesene Speichereinheit die richtige Speichereinheit ist, durch Prüfen in der Gruppe von Schlüsseln, ob der Schlüssel der Speichereinheitennummer dieser Speichereinheit der vorgegebene Schlüssel ist;
  • Prüfen, ob die soeben gelesene Speichereinheit die erste Speichereinheit des Datensatzes ist, durch Prüfen in der Gruppe von Schlüsseln, ob der Schlüssel der Speichereinheitennummer dieser Speichereinheit gleich dem Schlüssel der Speichereinheitennummer der ersten Speichereinheit ist.
  • Wie in den Ansprüchen 3 bis 9 beansprucht, werden einige Merkmale des Verfahrens der vorliegenden Erfindung hinzugefügt, um die Störanfälligkeit der Protokolldaten zu verringern, damit sie nach einer unerwarteten Unterbrechung, die zu Unstimmigkeiten in den Protokolldaten führt, wiederhergestellt werden können.
  • Die vorliegende Erfindung beschreibt auch ein Rechnersystem, das die Schritte des Verfahrens gemäß Anspruch 10 implementiert.
  • Die Erfindung verbessert die Leistungsfähigkeit durch Verwendung einer einzigen Datei und die damit entfallende Notwendigkeit der Verwaltungsoperationen von Mehrfachdateien. Außerdem wird der physische Zugriff auf den Plattenspeicher bei Schreib- und Leseoperationen durch das vorherige Zuweisen eines zusammenhängenden Speicherbereichs optimiert.
  • Die Zuverlässigkeit wird durch die Kohärenzprüfung optimiert; die Kohärenzqualität wird verbessert, weil sie auf Datensatzebene erfolgt. Die Leistungsfähigkeit der Kohärenzprüfung wird ebenfalls optimiert, da die zum Ausführen dieser Prüfung erforderlichen Informationen auf Basis eines Systems von Schlüsseln und relativen Adressen innerhalb der Datensätze selbst gespeichert sind.
  • Durch vorheriges Zuweisen eines überdimensionierten Speicherbereichs und unter Berücksichtigung der sinkenden Speicherpreise bewahrt der Systemadministrator die Protokollierung vor der Gefahr des Datenumbruchs, selbst wenn die Spitzenschreibgeschwindigkeit höher als die Spitzenlesegeschwindigkeit ist.
  • Daher kann bei diesem Verfahren zum Optimieren der Systemleistung bei Schreib- und Leseoperationen ein Protokoll zwischen den Protokollserver und den Client eingefügt werden. Durch dieses Merkmal wird das Senden von Daten, die im Problemfall durch den Server nicht aufgenommen werden können, verhindert und die Menge der verloren gegangenen und für den Client wichtigen Daten begrenzt.
  • Das beanspruchte Verfahren kann auch auf jedes Speichermedium mit Direktzugriff (FLASH-RAM-Einheiten, Computerspeicher usw.) angewendet werden. Es wird betont, dass das beanspruchte Verfahren auf preisgünstigen Servern eingesetzt werden kann, da es keine aufwendigen Zuarbeiten seitens des Betriebssystems und keine speziellen Merkmale des Direktzugriffspeichers erfordert.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 veranschaulicht das physische Modell einer Protokolldatei;
  • Fig. 2 zeigt eine normale Schreiboperation in die Protokolldatei;
  • Fig. 3 veranschaulicht den Datensatz der Protokolldatei mit einem Überschreiben der relativen Adresse 0 einer normalen Schreiboperation;
  • Fig. 4 veranschaulicht den Datensatz der Protokolldatei, wenn während der Schreiboperation eine Unterbrechung aufgetreten ist; hier fehlt der letzte Block;
  • Fig. 5 veranschaulicht den Datensatz der Protokolldatei, wenn während der Schreiboperation eine Unterbrechung aufgetreten ist; hier ist der erste Block unvollständig;
  • Fig. 6 veranschaulicht einen ungültigen Datensatz, der nach einem Überschreiben gefunden wurde;
  • Fig. 7 zeigt einen ungültigen Datensatz, der während des Arbeitsschritts des Sektoraustauschs gefunden wird; dem System gelingt es, eine konstante Dateigröße einzuhalten;
  • Fig. 8 ist ein Ablaufdiagramm des gesamten Vorgangs der Gültigkeitsprüfung des Datensatzlesens.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSART
  • Bei der bevorzugten Ausführungsart besteht die betrachtete Anwendung im Speichern und Abrufen von Daten von einem mit Plattenspeicherlaufwerken ausgestatteten Server sowie im Empfangen von Nachrichten von Clients im Netz. Im Folgenden werden die Dateistruktur und die zugehörigen Schreib- und Leseoperationen beschrieben, wobei die Letzteren die Kohärenzprüfung umfassen. Dieselbe Lösung kann für Daten verwendet werden, die in beliebigen anderen Direktzugriffs- Speichermedien gespeichert sind.
  • In Fig. 1 ist die Unterstützung des Datenumbruchs des Dateimodells der bevorzugten Ausführungsart veranschaulicht.
  • Der Ring stellt den zuvor zugewiesenen Umbruchspeicherbereich mit der relativen Adresse 0 dar. Der zusammenhängende Speicherbereich wird mittels einer Einheit zugewiesen, die auf die am häufigsten protokollierte Datengröße eingestellt ist, in diesem Beispiel sind dies Blöcke mit 512 Bytes. In Fig. 1 ist die Protokolldatei dargestellt, nachdem ein erster logischer Datensatz (A, nicht sichtbar) eines Blocks in die relative Adresse 0 und zwei nachfolgende Datensätze, nämlich Datensatz B mit 2 Blöcken und Datensatz C mit einem Block, geschrieben wurde. Datensatz C ist an die Stelle des ersten Datensatzes A geschrieben worden, sodass die Daten umgebrochen wurden. Jeder Block wird unter Verwendung einer relativen Dateiadresse adressiert und bei jedem Erreichen eines neuen benachbarten Blocks um die Blockgröße erhöht. Jeder durch einen Datensatz verwendete Block erhält einen erhöhten Schlüssel. Der erste Schlüssel ist 1 und soll auf Unendlich zeigen. Der Kopfschlüssel der Protokolldatei ist der letzte Block des letzten geschriebenen Datensatzes. Der Fußschlüssel ist der kleinste durch den ältesten Datensatz verwendete Blockschlüssel. Wenn der Datensatz A in die relative Adresse 0 geschrieben wird, ist der Fußschlüssel gleich 1 und der Kopfschlüssel ebenfalls gleich 1; wenn der Datensatz B in die Adresse 512 geschrieben wird, ist der Fußschlüssel gleich 1 und der Kopfschlüssel gleich 3; wenn der Datensatz C in die Adresse 0 geschrieben wird, ist der Fußschlüssel gleich 2 und der Kopfschlüssel gleich 4. Es wird betont, dass der Adressenwert immer ein relativer Adressenwert ist. In dem Beispiel von Fig. 1 wird als erste Adresse die Adresse 0 festgelegt.
  • Für die Adresse 0 wird ein Basisschlüssel festgelegt.
  • In Fig. 2 sind die Konfigurationsparameter der zuvor zugewiesenen Protokolldatei festgelegt worden (240). Diese Informationen sind der Schreibanwendung bekannt. In diesem Beispiel besteht die Einheit der Parameterwerte aus 1024 Bytes. Die Schreiboperation enthält auch drei Variablen (260), die die Informationen zum Adressieren des ältesten und zuletzt geschriebenen Blocks der Protokolldatei enthalten. Es werden zwei Wertegruppen gezeigt, die erste Gruppe (3, 1, 1) stellt die Parameterwerte vor der Schreiboperation und die zweite Gruppe (6, 4, 4) die Parameterwerte nach der Schreiboperation dar.
  • Fig. 2 zeigt das Ergebnis der Schreiboperation eines logischen Datensatzes C in der Protokolldatei. Ein Puffer (250) ist so eingerichtet, dass er 10 Sektoren (210) umfasst, wobei ein Block (200) 4 Sektoren umfasst. Da der Block die für die Protokolldatei vorgesehene Einheit ist, benutzt der logische Datensatz in der Protokolldatei 3 Blöcke, die immer miteinander verbunden sind. In jeden durch den logischen Datensatz verwendeten Block sind eine Kopfzeile (220) am Blockanfang und eine Fußzeile (230) geschrieben. Die Kopfzeile umfasst den Blocknummernschlüssel (221), den oberen Schlüssel, den oberen Schlüssel des ersten Blocks des logischen Datensatzes und den oberen Schlüssel des letzten Blocks des logischen Datensatzes. Die Fußzeile (230) umfasst den Blocknummernschlüssel des Blocks, in den der logische Datensatz geschrieben wurde. Der obere Schlüssel des ersten Blocks ist der um eins erhöhte erste Schlüssel (Kopfschlüssel + 1) aus der Gruppe von drei Variablen (260). Sobald der Schreibpuffer bereit ist, wird der Kopfschlüssel (erste Variable der Gruppe von drei Variablen (260)) um die Anzahl der Blöcke des Schreibpuffers erhöht. Der Fußschlüssel als zweite Variable wird wie folgt aktualisiert:
  • NTK = OTK + WBnb (modulo LFnb),
  • wobei NTK (4) der neue Fußschlüssel, OTK (1) der alte Fußschlüssel, WBnb (3) die Anzahl der Blöcke im Schreibpuffer und LFnb (3) die Anzahl der Blöcke der Protokolldatei ist.
  • Der neue Basisschlüssel als dritte Variable der Gruppe von drei Variablen (260) wird wie folgt aktualisiert:
  • NBK = OBK + LGnb · f(NHK),
  • wobei OBK der alte Basisschlüssel, NBK der neue Basisschlüssel und LGnb die Anzahl der Blöcke des Schreibpuffers und f eine Funktion des neuen Kopfschlüssels (NHK) ist:
  • f(neuer Kopfschlüssel) = 0, wenn NHK ein Vielfaches von LGnb ist,
  • f(neuer Kopfschlüssel) = 1, wenn NHK kein Vielfaches von LGnb ist.
  • Der erste Block des Schreibpuffers wird in die Blockadresse in der Protokolldatei geschrieben, die wie folgt berechnet wird:
  • Blockadresse = (oberer Schlüssel - neuer Basisschlüssel) · Blockgröße
  • Mit dem Wert von Fig. 2 erhält man:
  • Blockadresse = (4 - 4) 4 = 0.
  • In Fig. 2 ist der logische Datensatz (270) mit den entsprechenden Adressen (275) in der Protokolldatei dargestellt. In dieser logischen Darstellung wird die Datei vom Betriebssystem wahrgenommen.
  • Es wird betont, dass nur der Kopfschlüssel bei jeder Schreiboperation gespeichert werden muss, damit die Protokolldatei später gelesen werden kann. Der Fußschlüssel und der Basisschlüssel können auf Wunsch ebenfalls verwendet werden. Die Berechnung des an den Anfang der Protokolldatei zu setzenden Fußschlüssels kann jedoch unter Verwendung des Kopfschlüssels und der Anzahl der Blöcke der Protokolldatei erfolgen:
  • Fußschlüssel = Kopfschlüssel - N + 1
  • Die Adresse eines Blocks, dessen Kopfschlüssel bekannt ist, kann auch ohne Verwendung des Basisschlüssels berechnet werden:
  • Adresse = (Kopfschlüssel - 1) Blockanzahl (Ausdruck 1), wenn der Kopfschlüssel kleiner als N ist,
  • Adresse = (Rest (Kopfschlüssel/N) - 1) Blockanzahl, wenn der Kopfschlüssel nicht kleiner als N ist.
  • Einfacher ist es, wenn man anstelle des Kopfschlüssels, des Basisschlüssels und des Fußschlüssels nur den Kopfschlüssel verwendet. Bei der bevorzugten Ausführungsart jedoch, bei der die Lösung auf preiswerte Geräte angewendet wird, kann die Berechnung des Ausdrucks 1 zu einem Überlauf im Computer führen, insbesondere wenn der größte mögliche Schlüssel groß ist (bei einer großen Protokolldatei), wie beispielsweise 2**64 Bits für einen Schlüssel mit 8 Bytes. In diesem Fall ist es günstiger, die Divisionen durch Subtraktionsschritte zu ersetzen. In demselben Zusammenhang kann durch den folgenden Ausdruck der Basisschlüssel berechnet werden, wenn der Blockschlüssel bekannt ist:
  • Basisschlüssel = 1 + (ganzzahliger Teil((bekannter Schlüssel - 1)/N) · N.
  • Wenn die Protokollanwendung der Protokolldatei zuvor den Speicherplatz zuweist, wird der erste Block des ersten logischen Datensatzes nicht unbedingt beim Blockschlüssel 1 geschrieben. Optional könnte ein erster Schlüssel festgelegt und der Anwendung als Anfangsschlüssel vorgegeben werden. Der erste Schlüssel kann der letzte Schlüssel einer vorangehenden Protokolldatei sein, wofür die Schlüsselreihenfolge gespeichert wird. Der Systemadministrator ist immer in der Lage, das Volumen der in der Vergangenheit in der Protokolldatei protokollierten Daten nachzuvollziehen. Das Initialisieren einer einen ersten Schlüssel (FK) ungleich 1 unterstützenden Protokolldatei erfolgt durch das Schreiben eines leeren Datensatzes mit einem einzigen Block und einer Datenlänge (Datenlänge im Block, in der oberen Kopfzeile zu speichernde Information) gleich null in die dem Schlüssel FK entsprechende Adresse. Der Kopfschlüssel wird gleich FK gesetzt.
  • Fig. 3 zeigt das Ergebnis einer Schreiboperation mit einer Konstellation des Schreibpuffers wie in Fig. 2. Der Unterschied besteht darin, dass der logische Datensatz mit einer physischen Überlagerung in die Protokolldatei geschrieben wird. Es wird angenommen, dass der Kopfschlüssel vor dem Einbringen des Datensatzes A in den Puffer gleich 2 gesetzt ist. Dieser Kopfschlüssel entspricht dem jüngsten gültigen Datensatz für diese Datei und erfüllt die Gültigkeitsprüfung. Dieser Kopfschlüssel wird dazu verwendet, die nächsten Adressen zum Schreiben der nächsten Datensätze festzulegen. Dieser Kopfschlüssel muss jedoch nicht unbedingt der jüngste sein. Der jüngste geschriebene Datensatz könnte infolge einer vorausgegangenen Unterbrechung nicht vollständig erkannt werden. In diesem Fall könnte der jüngste verbliebene Datensatz nicht der jüngste Datensatz, sondern der jüngste gültige Datensatz sein. Wenn der Fußschlüssel gleich 1 gesetzt ist, entspricht er dem Fall, dass die Datei noch nicht umgebrochen ist. Normalerweise entspricht der Fußschlüssel dem ältesten Datensatz, der nicht unbedingt die Gültigkeitsprüfung besteht. Der älteste Fußschlüssel ist der Kopfschlüssel minus der Blockanzahl plus 1, wenn die Datei umgebrochen ist, bzw. der älteste Fußschlüssel ist gleich dem Basisschlüssel und gleich 1, wenn die Datei noch nicht umgebrochen ist. Der Wert des Fußschlüssels kann größer als der älteste Fußschlüssel sein, wenn ein Lesevorgang oder die Kombination der unteren Schlüsselwerte mehrerer Lesevorgänge den Empfang von Datensätzen bestätigt haben. Angenommen, der der Adresse 0 entsprechende Basisschlüssel ist gleich 1 gesetzt. Der Basisschlüssel wird bei jedem Dateiumbruch während des Schreibvorgangs um 1 erhöht. Es gibt einen Fall, bei dem der Basisschlüssel verwendet wird und ein früherer Basisschlüssel wiederhergestellt werden muss. Dieser Fall kann bei der Berechnung der Adresse des Fußschlüssels eintreten, wenn der aktuelle zur Berechnung der Adresse verwendete Schlüssel kleiner als der Basisschlüssel ist. Ein empfangener Datensatz A wird in 2 zusammenhängende Blöcke aufgeteilt. Die Anzahl 2 der Fragmente ergibt über die Beziehung Kopfschlüssel plus 1 die Zahl 3 als ersten oberen Schlüssel. Der letzte obere Schlüssel, also Kopfschlüssel plus die Anzahl der Fragmente ergibt für den letzten Blockschlüssel die Zahl 4. Dann wird der Kopfschlüssel gleich dem letzten Datensatzschlüssel gesetzt, was den Wert 4 ergibt. Dann wird in einer Schleife die Anzahl der Fragmente durchlaufen und der Pufferspeicher gefüllt, der Datensatzschlüssel gleich 3 gesetzt, in der oberen Kopfzeile der obere Schlüssel gleich 3, der erste obere Schlüssel gleich 3, der letzte Schlüssel gleich 3 und die Länge des ersten einem vollständigen Datenraum dieses Blocks entsprechenden Datenfragments gesetzt. Dann wird das erste Datenfragment kopiert und der untere Header als letzte Bytes dieses Blocks gleich dem Datensatzschlüssel 3 gesetzt. Im nächsten und letzten Fragment ist der obere Schlüssel gleich 4, somit wird im oberen Header der obere Schlüssel gleich 4, der erste obere Schlüssel gleich 4, der letzte obere Schlüssel gleich 4 und die Länge des letzten Datenfragments gesetzt; dann wird das letzte Datenfragment kopiert und der untere Header als die letzten Bytes dieses Blocks gleich dem oberen Schlüssel mit dem Wert 4 gesetzt. Der vorangehende obere Schlüssel kann der erste obere Schlüssel sein, wenn der Datensatz mehrere Fragmente oder Blöcke aufweist, und der obere Schlüssel ist der Kopfschlüssel, wenn der Datensatz aus einem einzigen Block besteht.
  • Die erste Schreibadresse wird nun wie folgt berechnet:
  • Anzahl der Blöcke = 4 - 3 + 1 = 2
  • Schreibadresse = (3 - 1) · 4 = 8
  • nächster Basisschlüssel = 1 + 3 = 4.
  • Da die nächste Adresse nicht die Adresse 0 ist und da der obere Schlüssel des zweiten zu schreibenden Blocks (4) größer als oder gleich dem Basisschlüssel (4) ist, überschreibt der zu beschreibende Puffer die Adresse 0. Für diesen Fall werden zwei Schreiboperationen benötigt; eine erste Schreiboperation mit der ersten Schreibadresse und der wie folgt zu berechnenden ersten Länge:
  • erste Länge = (4 - 3) · 4 = 4
  • sowie eine zweite Schreiboperation mit der zweiten Adresse 0 und der zweiten Länge:
  • (4 - 4 + 1) · 4 = 4
  • Der neue Basisschlüssel ist gleich 4.
  • Die Schreiboperation wird durch das Ablaufdiagramm von Fig. 8 veranschaulicht. Diese Operation wird ausgeführt, wenn ein Client eine (einmalige) Anforderung zum Aufrufen der Protokolldatei (LF, logging file) sendet. Der Satz aus drei Variablen (260) wird zuerst gelesen und zum Starten der Leseoperation der Protokolldatei verwendet. Die Leseoperation verläuft blockweise. Gemäß einer Aufgabe der Erfindung führt die Leseoperation die Kohärenzprüfung des logischen Datensatzes aus: Wenn ein Block des einen logischen Datensatzes nicht kohärent zu allen anderen logischen Datensätzen ist, wird er verworfen.
  • Wenn die Werte des Fuß- und des Kopfschlüssels nicht kohärent sind (Fußschlüssel > Kopfschlüssel) oder kein Block geschrieben wurde (Fußschlüssel = Kopfschlüssel) (800), wird die Leseoperation angehalten (810); ist der Kopfschlüssel größer oder gleich, werden hinten (mit dem ältesten Block der Datei) beginnend der obere Header und der untere Header des Blocks gelesen (815); besteht zwischen dem oberen Schlüssel und dem unteren Schlüssel eine Unstimmigkeit (820), wird der logische Datensatz ausgelassen (Fußschlüssel + 1) und der nächste Block gelesen. Wenn dies nicht der Fall ist, wird der Fall betrachtet, bei dem der Schlüssel gleich 0 ist (Prüfung 822, Ja-Zweig): Das bedeutet, dass nur ein einziger Block vorhanden ist.
  • Es muss erwähnt werden, dass die Möglichkeit, im ersten Block eines logischen Datensatzes mit lediglich einem Block den ersten und den letzten Schlüssel des oberen Headers gleich 0 zu setzen, frei gewählt werden kann. Eine andere Möglichkeit besteht darin, die beiden Schlüssel gleich identischen Werten zu setzen: 1,1 oder 2,2 oder ... n,n. Diese zweite Lösung wird nicht bevorzugt, da hier die Variablen unnütz aktualisiert werden müssen. Mit der Lösung (0,0) werden die Leistungsreserven geschont.
  • Der Datensatz in Fig. 8 ist vollständig und gültig (865), und der Fußschlüssel wird im nächsten Block (870) aktualisiert. Wenn der erste Schlüssel ungleich 0 ist (Nein-Zweig in Prüfung 822), bedeutet dies, dass der logische Datensatz mehr als einen zusammenhängenden Block umfasst. Die Anzahl der Blöcke in dem logischen Datensatz wird berechnet (830); dann wird bis zum Erreichen des letzten Blocks (835) der aktuelle Schlüssel erhöht und der entsprechende Block gelesen (840). Zum Lesen wird die Adresse nach folgender Formel berechnet:
  • Blockadresse = (oberer Schlüssel - neuer Basisschlüssel) · Blockgröße.
  • Dieser Block wird direkt aus der Speichereinheit (Platten- oder Cachespeicher usw.) gelesen. Die interne Blockkohärenz wird geprüft (845), und bei negativem Ergebnis (Nein-Zweig der Prüfung 845) wird der Fußschlüssel gleich dem aktuellen Schlüssel + 1 gesetzt und der logische Datensatz übergangen. Wenn die interne Kohärenz als gültig erkannt wird (Ja-Zweig der Prüfung 845), ist der Block intern gültig, und der erste und der letzte Schlüssel werden auf Gleichheit geprüft (850, 855). Wenn der erste oder der zweite oder beide Schlüssel ungleich sind (Nein-Zweig der Prüfung 855), wird die Leseoperation übergangen und der Fußschlüssel gleich dem aktuellen Schlüssel gesetzt, jedoch nicht um 1 erhöht, da dieser soeben gelesene Block gültig sein kann. Wenn der erste temporäre Schlüssel gleich dem ersten Schlüssel und der letzte temporäre Schlüssel gleich dem ersten Schlüssel ist (Ja-Zweig der Prüfung 855), ist dieser Block Bestandteil eines gültigen Datensatzes; daher wird die Datensatznummer verringert (860), und es kann mit dem Lesen des nächsten benachbarten Blocks fortgefahren werden (gemäß 835 endet die Schleife erst, wenn die Anzahl der Blöcke gleich null ist). Sobald die Anzahl der gelesenen Blöcke erreicht ist, wird dieser logische Datensatz für gültig erklärt (865) und kann zur Verarbeitung oder zur Lieferung freigegeben werden. Dann kann der Fußschlüssel um die Anzahl der soeben gelesenen Blöcke erhöht werden.
  • Fig. 4 veranschaulicht einen infolge eines ersten Fehlers ungültigen Datensatz. Dieses Ereignis kann eintreten, wenn es während einer Schreiboperation zu einer unerwarteten Unterbrechung der Protokollanwendung kommt. Bei dem in Fig. 4 veranschaulichten Fall fehlt der letzte Block. Die Leseoperation stellt fest, dass der zweite Block nicht zu demselben logischen Datensatz wie der vorangehende benachbarte Block gehört (855). Dieser logische Datensatz wird bei der Leseoperation der Protokolldatei verworfen. Das bedeutet, dass die Schreiboperation unterbrochen worden ist, bevor der letzte Block geschrieben werden konnte. Aus der Logikdatei erkennt das Betriebssystem, dass der dritte benachbarte Block nicht geschrieben worden ist (Adresse 8).
  • Fig. 5 veranschaulicht einen infolge eines zweiten Fehlers ungültigen Datensatz. Dieses Ereignis kann eintreten, wenn es während einer Schreiboperation zu einer unerwarteten Unterbrechung der Protokollanwendung kommt. Bei dem in Fig. 5 dargestellten Fall ist der erste Block unvollständig. Die Leseoperation stellt diesen fehlenden Block bei ihrer Kohärenzprüfung innerhalb des Blocks fest (820). Das bedeutet, dass die Schreiboperation unterbrochen worden ist, bevor der letzte Block geschrieben werden konnte. Aus der Logikdatei erkennt das Betriebssystem, dass der dritte benachbarte Block nicht geschrieben worden ist (Adresse 8).
  • Fig. 6 veranschaulicht einen ungültigen Block B. Ein erster Block ist in den Lesepuffer gelesen worden. Die interne Kohärenz ist gewahrt (820), da der obere Schlüssel im oberen Header (220) gleich 3 gesetzt und auch in den unteren Header (230) der Schlüssel gleich 3 gelesen wird. Die beiden anderen Schlüssel 2 und 3 des oberen Headers zeigen jedoch an, dass der obere Schlüssel des ersten Blocks des logischen Datensatzes nicht gleich 3, sondern gleich 2 ist. Das bedeutet, dass der erste Block im logischen Datensatz der Protokolldatei fehlt. Diese Prüfung erfolgt während der Leseoperation (825).
  • Fig. 7 veranschaulicht ein weiteres wahlweise anzuwendendes Merkmal der bevorzugten Ausführungsart der Erfindung zum Unterstützen der Kohärenzprüfung innerhalb eines Blocks zum Auffinden ungültiger logischer Datensätze während der Leseoperationen. Diese Figur zeigt eine Leseoperation eines logischen Datensatzes in der Protokolldatei, der drei Blöcke mit den Daten C umfasst. Die zum Erstellen der Protokolldatei verwendete Speichereinheit kann physisch aus einer ganzzahligen Anzahl einer kleineren adressierbaren Speichereinheit bestehen. Wenn die kleinere adressierbare Speichereinheit die kleinste adressierbare Speichereinheit ist, vermag das Betriebssystem normalerweise das Ersetzen der fehlerhaften kleinsten Speichereinheit so zu verwalten, dass dies für die E/A-API (Eingabe/Ausgabe- Anwendungsprogrammierschnittstelle) transparent ist. Bei der bevorzugten Ausführungsart (240) besteht die zum Erstellen der Protokolldatei gewählte Einheit aus einem Block mit 4096 Byte mit 4 Sektoren zu je 1024 Byte, wobei der Sektor für das betreffende Betriebssystem die kleinste adressierbare Einheit darstellt.
  • In jedem Block erhält jeder Sektor zwischen dem ersten und dem letzten Sektor des Blocks einen Sektoranzeigeschlüssel. Praktisch werden diese zwischen den beiden Sektoren des Blocks liegenden Bereiche durch die Leseoperation nicht auf Kohärenz geprüft, da diese nur den oberen und den unteren Schlüssel des Blocks prüft. Der Sektoranzeigeschlüssel eines Blocks ist gleich dem oberen Schlüssel.
  • Wenn nach der ersten Stufe der Gültigkeitsprüfung (Ablaufdiagramm von Fig. 7) die Kohärenz des logischen Datensatzes festgestellt worden ist, wird zusätzlich während der Leseoperation im Lesepuffer die Reihenfolge der Sektoren der gelesenen Blöcke geprüft. In Fig. 7 ist der erste Block ungültig, da im Sektor zwei (210) der erwartete Sektoranzeigeschlüssel (4) nicht gefunden wird. Durch diesen inkohärenten Block wird der gesamte logische Datensatz ungültig.

Claims (10)

1. Verfahren zum Schreiben eines Datenstroms variabler Länge als Satz von (M) Speichereinheiten in eine Protokolldatei, wobei die Protokolldatei (N) vorab zugeordnete zusammenhängende Speichereinheiten eines Speicherbereichs mit Direktzugriff umfasst, und die Protokolldatei ferner einen Kopfschlüssel umfasst, der gleich der kumulierten Anzahl der durch die vorangehenden Schreiboperationen in die Protokolldatei geschriebenen Speichereinheiten gesetzt wird,
wobei das Verfahren die folgenden Schritte umfasst:
(a) Lesen des durch die letzte Schreiboperation in der Protokolldatei gespeicherten Kopfschlüssels;
(b) Bereitstellen eines Schlüssels der Speichereinheitennummer für jede Speichereinheit des Satzes von (M) Speichereinheiten, wobei der Schlüssel der Speichereinheitennummer gleich dem für die erste Speichereinheit des Satzes von (M) Speichereinheiten um 1 erhöhten Kopfschlüssel gesetzt und fortlaufend für jede der folgenden Speichereinheiten des Satzes von (M) Speichereinheiten um 1 erhöht wird;
(c) Empfangen des Datenstroms variabler Länge als Satz von (M) Speichereinheiten in einem Schreibpuffer;
(d) Schreiben einer Gruppe von Schlüsseln in jede der Speichereinheiten des im Schreibpuffer befindlichen Satzes von (M) Speichereinheiten, wobei die Schlüssel Folgendes umfassen:
den für die Speichereinheit bereitgestellten Schlüssel der Speichereinheitennummer,
den Schlüssel der Speichereinheitennummer der ersten Speichereinheit des Satzes von (M) Speichereinheiten und
den Schlüssel der Speichereinheitennummer der letzten Speichereinheit des Satzes von (M) Speichereinheiten;
(e) Berechnen einer Anfangsposition, die eine in Vielfachen von Speichereinheiten in der Protokolldatei ausgedrückte relative Adresse ist:
Anfangsposition = Kopfschlüssel, wenn der Kopfschlüssel kleiner als N ist,
Anfangsposition = Rest(Kopfschlüssel/N), wenn der Kopfschlüssel größer als oder gleich N ist;
(f) Schreiben des Satzes von (M) Speichereinheiten in den Schreibpuffer der Protokolldatei durch Ausführen der folgenden Schritte:
Schreiben der ersten Speichereinheit des Satzes von
(M) Speichereinheiten in die Anfangsposition in der Protokolldatei,
Berechnen einer Endposition durch Addieren der Anzahl (M) zu schreibender Speichereinheiten zur Anfangsposition,
Ausführen des folgenden Schritts, wenn die Endposition kleiner als oder gleich N ist:
Schreiben aller Speichereinheiten des Satzes von (M) Speichereinheiten in die Protokolldatei, beginnend mit der relativen Adresse der Anfangsposition bis zur Speichereinheit (N), und Schreiben der folgenden Speichereinheiten des Satzes von (M) Speichereinheiten in die Protokolldatei, beginnend mit der relativen Adresse 0;
(g) Aktualisieren des Kopfschlüssels durch die folgende Berechnung: neuer Kopfschlüssel = Kopfschlüssel + (M);
(h) Speichern des neuen Kopfschlüssels als Kopfschlüssel in der Protokolldatei.
2. Verfahren zum Lesen eines in eine Protokolldatei geschriebenen Datensatzes anhand eines vorgegebenen Schlüssels gemäß Anspruch 1 und zur Konsistenzprüfung des Datensatzes, wobei das Verfahren die folgenden Schritte umfasst:
Lesen des während der letzten Schreiboperation gespeicherten Kopfschlüssels und Prüfen, ob der vorgegebene Schlüssel kleiner als oder gleich dem Kopfschlüssel ist;
Berechnen einer Anfangsposition des Datensatzes, die eine relative in Vielfachen von Speichereinheiten in der Protokolldatei ausgedrückte Adresse darstellt:
Anfangsposition = vorgegebener Schlüssel - 1, wenn der vorgegebene Schlüssel kleiner als N ist,
Anfangsposition = Rest(vorgegebener Schlüssel/N) - 1, wenn der vorgegebene Schlüssel größer als oder gleich N ist;
Lesen der der Anfangsposition entsprechenden Speichereinheit in einem Lesepuffer;
Prüfen, ob die soeben gelesene Speichereinheit die richtige Speichereinheit ist, durch Prüfen in der Gruppe von Schlüsseln, ob der Schlüssel der Speichereinheitennummer für die Speichereinheit gleich dem vorgegebenen Schlüssel ist;
Prüfen, ob die soeben gelesene Speichereinheit die erste Speichereinheit des Datensatzes ist, durch Prüfen in der Gruppe von Schlüsseln, ob der Schlüssel der Speichereinheitennummer für die Speichereinheit gleich dem Schlüssel der Speichereinheitennummer der ersten Speichereinheit ist.
3. Verfahren nach Anspruch 2, das ferner die folgenden Schritte umfasst:
Prüfen, ob es in dem Datensatz mehr als eine Speichereinheit gibt, durch Prüfen in der Gruppe von Schlüsseln der soeben gelesenen Speichereinheit, ob die Differenz zwischen dem Schlüssel der Speichereinheitennummer der letzten Speichereinheit und dem Schlüssel der Speichereinheitennummer der ersten Speichereinheit größer als null ist; und
Wiederholen der folgenden Schritte, wenn es in dem Datensatz mehr als eine Speichereinheit gibt und die Anfangsposition zur aktuellen Position wird, bis das Ergebnis des nachfolgenden Prüfschritts negativ ist:
- Erhöhen der aktuellen Position um eins, wodurch die aktuelle Position zur vorigen Position und die erhöhte aktuelle Position zur aktuellen Position wird, und Lesen der der aktuellen Position entsprechenden Speichereinheit in einem Puffer,
- Prüfen, ob die soeben gelesene Speichereinheit gleich der Speichereinheit ist, die auf die für die vorangehende Position gelesene Speichereinheit folgt, durch Prüfen, ob der "Schlüssel der Speichereinheitennummer der letzten Speichereinheit" der Gruppe von Schlüsseln der an der vorigen Position gelesenen Speichereinheit gleich dem "Schlüssel der Speichereinheitennummer der ersten Speichereinheit" der Gruppe von Schlüsseln der an der aktuellen Position gelesenen Speichereinheit ist.
4. Verfahren nach einem der Ansprüche 1 bis 3, bei dem der Schreibschritt (d) einer Gruppe von Schlüsseln aus den folgenden Schritten besteht:
- Schreiben eines oberen Headers der Speichereinheit, der den für die Speichereinheit bereitgestellten Schlüssel der Speichereinheitennummer, den Schlüssel der Speichereinheitennummer der ersten Speichereinheit des Satzes von (M) Speichereinheiten und den Schlüssel der Speichereinheitennummer der letzten Speichereinheit des Satzes von (M) Speichereinheiten umfasst;
- Schreiben eines unteren Headers der Speichereinheit, der den für die Speichereinheit bereitgestellten Schlüssel der Speichereinheitennummer umfasst.
5. Verfahren nach Anspruch 4, das ferner den folgenden Schritt umfasst: Prüfen der Kohärenz innerhalb der soeben gelesenen Speichereinheit durch Prüfen, ob der Schlüssel der Speichereinheitennummer im oberen Header gleich dem Schlüssel der Speichereinheitennummer im unteren Header ist.
6. Verfahren nach einem der Ansprüche 1 bis 5, bei dem der Schreibschritt (d) einer Gruppe von Schlüsseln ferner die folgenden Schritte umfasst: Schreiben eines Anzeigeschlüssels, der gleich dem für die Speichereinheit bereitgestellten Schlüssel der Speichereinheitennummer ist, in jede kleinste adressierbare Speichereinheit zwischen der ersten und der letzten kleinsten adressierbaren Speichereinheit innerhalb jeder Speichereinheit des Satzes von (M) Speichereinheiten im Schreibpuffer.
7. Verfahren nach einem der Ansprüche 2 bis 6, das ferner die Schritte des Prüfens in jeder kleinsten adressierbaren Speichereinheit jeder zwischen der ersten und der letzten kleinsten adressierbaren Speichereinheit jeder der Speichereinheiten des Satzes von (M) befindlichen Speichereinheiten im Schreibpuffer umfasst, ob der Anzeigeschlüssel gleich dem für die Speichereinheit bereitgestellten Schlüssel der Speichereinheitennummer ist.
8. Verfahren nach den Ansprüchen 1 bis 7, das ferner einen zusätzlichen Schritt umfasst, in dem immer dann eine Bestätigung gesendet wird, wenn ein Datensatz in die Protokolldatei geschrieben wurde.
9. Verfahren nach einem der Ansprüche 1 bis 8, bei dem die Gruppe von Schlüsseln ferner einen Datenlängenparameter umfasst, und bei dem der erste Schlüssel der Speichereinheitennummer der Protokolldatei gleich dem Schlüssel einer Anfangsnummer ist, und ein erster Satz von (M) Speichereinheiten in die Protokolldatei geschrieben wird, wobei dieser Satz nur eine Speichereinheit umfasst und in seinem oberen Header einen auf null gesetzten Datenlängenparameter aufweist, wobei der Satz in der Protokolldatei an der folgenden relativen Adresse steht:
relative Adresse = (Schlüssel der Anfangsnummer - 1) Speichereinheiten, wenn der Schlüssel der Anfangsnummer kleiner als N ist,
relative Adresse = (Rest(Schlüssel der Anfangsnummer/N)) - 1 Speichereinheiten, wenn der Schlüssel der Anfangsnummer nicht kleiner als N ist.
10. Rechnersystem zum Schreiben eines Datenstroms variabler Länge in eine Protokolldatei, wobei das Rechnersystem für die Implementierung der Schritte des Verfahrens gemäß einem der Schritte 1 bis 9 angepasste Mittel umfasst.
DE69719934T 1996-12-20 1997-08-19 Verfahren und Vorrichtung zur schnellen und sicheren Datensammlung Expired - Lifetime DE69719934T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP96480128 1996-12-20

Publications (2)

Publication Number Publication Date
DE69719934D1 DE69719934D1 (de) 2003-04-24
DE69719934T2 true DE69719934T2 (de) 2003-11-27

Family

ID=8225479

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69719934T Expired - Lifetime DE69719934T2 (de) 1996-12-20 1997-08-19 Verfahren und Vorrichtung zur schnellen und sicheren Datensammlung

Country Status (2)

Country Link
US (1) US6009502A (de)
DE (1) DE69719934T2 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US6665784B2 (en) * 1999-09-03 2003-12-16 Roxio, Inc. Method for writing and reading data to and from a compact disc media
US6606628B1 (en) * 2000-02-14 2003-08-12 Cisco Technology, Inc. File system for nonvolatile memory
JP3631680B2 (ja) * 2001-02-06 2005-03-23 株式会社ビーコンインフォメーションテクノロジー データ処理システム、データ処理方法及びコンピュータプログラム
US7149892B2 (en) * 2001-07-06 2006-12-12 Juniper Networks, Inc. Secure sockets layer proxy architecture
US7228412B2 (en) * 2001-07-06 2007-06-05 Juniper Networks, Inc. Bufferless secure sockets layer architecture
US7908472B2 (en) * 2001-07-06 2011-03-15 Juniper Networks, Inc. Secure sockets layer cut through architecture
EP1413960A4 (de) * 2001-07-06 2006-08-23 Sony Corp Aufzeichnungsgerät, aufzeichnungsverfahren, speichermedium, programm und kommunikationsgerät
US7853781B2 (en) * 2001-07-06 2010-12-14 Juniper Networks, Inc. Load balancing secure sockets layer accelerator
US7584279B1 (en) * 2002-07-02 2009-09-01 Netapp, Inc. System and method for mapping block-based file operations to file level protocols
US20060123194A1 (en) * 2004-12-02 2006-06-08 Claudio Alex Cukierkopf Variable effective depth write buffer and methods thereof
US8832039B1 (en) 2011-06-30 2014-09-09 Amazon Technologies, Inc. Methods and apparatus for data restore and recovery from a remote data store
US10754813B1 (en) * 2011-06-30 2020-08-25 Amazon Technologies, Inc. Methods and apparatus for block storage I/O operations in a storage gateway
US8706834B2 (en) 2011-06-30 2014-04-22 Amazon Technologies, Inc. Methods and apparatus for remotely updating executing processes
US9294564B2 (en) 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway
US8806588B2 (en) 2011-06-30 2014-08-12 Amazon Technologies, Inc. Storage gateway activation process
US8793343B1 (en) 2011-08-18 2014-07-29 Amazon Technologies, Inc. Redundant storage gateways
US8789208B1 (en) 2011-10-04 2014-07-22 Amazon Technologies, Inc. Methods and apparatus for controlling snapshot exports
US9635132B1 (en) 2011-12-15 2017-04-25 Amazon Technologies, Inc. Service and APIs for remote volume-based block storage
US11169962B2 (en) * 2016-03-17 2021-11-09 Rakuten Group, Inc. File management system, file management method, collection program, and non-transitory computer-readable information recording medium

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146575A (en) * 1986-11-05 1992-09-08 International Business Machines Corp. Implementing privilege on microprocessor systems for use in software asset protection
US5371885A (en) * 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
CA2055295C (en) * 1991-11-12 2000-05-23 Jean Gilles Fecteau Logical mapping of data objects using data spaces

Also Published As

Publication number Publication date
DE69719934D1 (de) 2003-04-24
US6009502A (en) 1999-12-28

Similar Documents

Publication Publication Date Title
DE69719934T2 (de) Verfahren und Vorrichtung zur schnellen und sicheren Datensammlung
DE69116065T2 (de) Datenrückgewinnung in massenspeicherdatenbanksystemen
DE69728178T2 (de) Vorrichtung und verfahren zur fernen datenrückgewinnung
DE69700574T2 (de) Verfahren zum Cache-Speichern von Netzwerk- und CD-ROM-Zugriffen unter Verwendung einer lokalen Festplatte
DE69413977T2 (de) Anordnung und verfahren zur verteilten datenverwaltung in vernetzten rechnersystemen
DE2726488C2 (de) Adressenübersetzungseinrichtung
DE69031926T2 (de) Instandhaltung von Dateiattributen in einem verteilten Datenverarbeitungssystem
DE60025043T2 (de) Vorrichtung und verfahren mit verwendung von anwendungabhängigkeitsinformation für eine sicherungskopieherstellung in einem computersystem
DE10112941B4 (de) System und Verfahren für das parallele Lesen von primären und sekundären Sicherungen zur Wiederherstellung mehrerer gemeinsam benutzter Datenbankdateien
DE602005001041T2 (de) Speicherauszugssystem
DE19740525C1 (de) Verfahren zur Abspeicherung und Wiedergewinnung von Daten in einem Steuersystem, insbesondere in einem Kraftfahrzeug
DE60316783T2 (de) Erkennung von Speichermangel und Feinabschaltung
DE10348326A1 (de) Permanentspeichervorrichtung, die an eine Kommunikationsverbindung angeschlossen ist
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
EP0966169B1 (de) Sicherungsverfahren für Betriebsdaten eines Netzelementes und Steuerungseinrichtung für ein Netzelement
DE112013000900T5 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE2721599C2 (de) Schaltungsanordnung zur Verhinderung der Ausgabe von Datenworten aus einer EDV-Anlage ohne Sicherheitsverifizierung
EP3619638B1 (de) Verfahren zum gesicherten zugriff auf daten
DE112019000849T5 (de) Hostorientierter Aktualisierungsschreibvorgang
DE10115722A1 (de) Effiziente Echtzeitverwaltung von Speicherbetriebsmitteln
DE112012005635T5 (de) Inkrementelles Modifizieren eines Fehlererkennungscodes
DE19826091A1 (de) Verfahren zum gesicherten Ändern von in einer Datenbank gespeicherten Daten, Datenbanksystem und damit ausgestattetes Netzelement
DE69812257T2 (de) Verfahren zur Datenübertragung zwischen Rechnern über ein Speichersubsystem
DE19905541B4 (de) Verfahren zum Steuern des Speicherzugriffs in einer Maschine mit einem Speicher mit ungleichmäßigem Zugriff und Maschine zur Ausführung eines solchen Verfahrens
EP3885957A1 (de) Vorrichtung zur speicherung von daten in einem nichtflüchtigen speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
8328 Change in the person/name/address of the agent

Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7