Einführung in das allgemeine Protokolldateisystem

Das Common Log File System (CLFS) ist ein universeller Protokollierungsdienst, der von Softwareclients verwendet werden kann, die im Benutzer- oder Kernelmodus ausgeführt werden. In dieser Dokumentation wird die CLFS-Schnittstelle für Clients im Kernelmodus erläutert. Informationen zur Benutzermodusschnittstelle finden Sie unter Common Log File System in the Microsoft Windows SDK.

CLFS kapselt alle Funktionen des Algorithmus für Wiederherstellung und Isolation Exploiting Semantics (ARIES). Die CLFS-Gerätetreiberschnittstelle (DDI) ist jedoch nicht auf die Unterstützung von ARIES beschränkt. Es eignet sich gut für eine Vielzahl von Protokollierungsszenarien.

Die Hauptaufgabe eines Hochleistungstransaktionsprotokolls besteht darin, Protokollclients die genaue Wiederholung des Verlaufs zu ermöglichen. CLFS führt dies durch Marshalling von Clientprotokolldatensätzen in Speicherpuffer, erzwingt sie zu stabilem Speicher und liest Datensätze bei Anforderung zurück. Es ist wichtig zu beachten, dass CLFS den Datensatz über Systemfehler hinweg lesen kann, nachdem ein Datensatz in einen stabilen Speicher wechselt und das Speichermedium intakt ist.

CLFS unterstützt dedizierte Protokolle und Multiplexprotokolle. Ein dediziertes Protokoll verfügt über einen einzelnen Datenstrom von Protokolldatensätzen, der von allen Clients des Protokolls verwendet wird. Ein Multiplexprotokoll (auch als allgemeines Protokoll bezeichnet) verfügt über mehrere Streams. Jeder Stream verfügt über eigene Clients und eigene Speicherpuffer zum Marshallen von Protokolldatensätzen, aber die Datensätze aus all diesen Puffern werden in eine einzelne Warteschlange multiplext und in ein einzelnes Protokoll im stabilen Speicher geleert. Multiplexing ermöglicht die Konsolidierung der E/A-Vorgänge mehrerer Streams.

Wenn ein Client einen Datensatz in einen Stream schreibt, erhält er eine Protokollsequenznummer (Log Sequence Number, LSN), die den Protokolldatensatz zur späteren Referenz identifiziert. Die LSNs, die den Datensätzen zugewiesen sind, die in einen bestimmten Stream geschrieben werden, bilden eine zunehmende Sequenz. Das heißt, die LSN, die einem Datensatz zugewiesen ist, der in einen Stream geschrieben wird, ist immer größer als die LSN, die dem vorherigen Datensatz zugewiesen wurde, der in denselben Stream geschrieben wurde.

CLFS bietet zusätzlich zum Marshallen, Leeren und Abrufen von Protokolldatensätzen mehrere Dienste. In der folgenden Liste werden einige dieser zusätzlichen Dienste beschrieben.

  • Speicherplatz für eine Reihe verwandter Protokolldatensätze kann im Voraus reserviert werden. Dies bedeutet, dass ein Client mit einer Transaktion fortfahren kann, wenn er weiß, dass CLFS alle Datensätze, die die Transaktion beschreiben, an das Protokoll anfügen kann.

  • CLFS verwaltet einen Header für jeden Protokolldatensatz. Clients können bestimmte Felder im Header festlegen, um Ketten von verknüpften Datensätzen zu erstellen, die Sie später in umgekehrter Reihenfolge durchlaufen können.

  • CLFS löscht Protokolldatensätze gemäß seiner Richtlinie in stabilen Speicher, ermöglicht es Clients aber auch, eine Reihe von Protokolldatensätzen zu einem stabilen Speicher zu erzwingen.

  • CLFS verwaltet Metadaten für ein Protokoll und auch für jeden Stream eines Multiplexprotokolls. Clients können Metadaten anzeigen und bestimmte Teile der Metadaten festlegen.

  • Für jeden Stream verwaltet CLFS eine Basis-LSN und eine letzte LSN, die ein Client verwenden kann, um den aktiven Teil des Datenstroms zu definieren.

  • Für dedizierte Protokolle verwaltet CLFS (auf Anforderung des Clients) ein Archivfragment, das der Client verwenden kann, um den teil des archivierten Protokolls nachzuverfolgen.

Bestimmte Features von CLFS (z. B. die vorherigen LSN- und rückgängig-nächsten LSN-Felder eines Datensatzheaders) können am besten durch die Untersuchung von ARIES verstanden werden. Weitere Informationen zu ARIES finden Sie in den folgenden Artikeln.

  • C. Mohan, Don Haderle, Bruce Lindsay, Hamid Pirahesh, Peter Schwarz, ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging.

  • C. Mohan, Wiederholte Geschichte über ARIES hinaus.