DE69719934T2 - Verfahren und Vorrichtung zur schnellen und sicheren Datensammlung - Google Patents
Verfahren und Vorrichtung zur schnellen und sicheren DatensammlungInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 25
- 238000013480 data collection Methods 0.000 title 1
- 239000000872 buffer Substances 0.000 claims description 26
- 230000001186 cumulative effect Effects 0.000 claims description 2
- 239000012634 fragment Substances 0.000 description 9
- 238000007726 management method Methods 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File 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
- Die Erfindung betrifft ein Verfahren zum Schreiben eines Datenstroms variabler Länge als einen Satz von Speichereinheiten in eine Protokolldatei.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1997
- 1997-08-19 DE DE69719934T patent/DE69719934T2/de not_active Expired - Lifetime
- 1997-09-22 US US08/934,583 patent/US6009502A/en not_active Expired - Fee Related
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 |