Share via


Erstellen, Ändern und Löschen eines Änderungsjournals

Administratoren können Änderungsjournale nach Be willen erstellen, löschen und neu erstellen. Ein Administrator sollte ein Journal löschen, wenn sich der aktuelle USN-Wert (Update Sequence Number) dem maximal möglichen USN-Wert nähert, wie durch das MaxUsn-Element der USN_JOURNAL_DATA-Struktur angegeben. Ein Administrator kann auch ein Änderungsjournal löschen und erneut erstellen, um Speicherplatz zurückzugeben. Um diese und alle anderen nicht programmgesteuerten Änderungsjournalvorgänge auszuführen, müssen Sie über Systemadministratorberechtigungen verfügen. Das heißt, Sie müssen Mitglied der Gruppe Administratoren sein.

Um ein Änderungsjournal auf einem angegebenen Volume programmgesteuert zu erstellen oder zu ändern, verwenden Sie den FSCTL_CREATE_USN_JOURNAL-Steuerelementcode.

Wenn Sie ein neues Änderungsjournal erstellen oder ein vorhandenes ändern, legt das NTFS-Dateisystem Informationen für dieses Änderungsjournal aus Informationen in der CREATE_USN_JOURNAL_DATA-Struktur fest, die FSCTL_CREATE_USN_JOURNAL als Eingabe übernimmt. CREATE_USN_JOURNAL_DATA verfügt über die Member MaximumSize und AllocationDelta.

MaximumSize ist die maximale Zielgröße für das Änderungsjournal in Bytes. Das Änderungsjournal kann größer als dieser Wert sein, aber bei NTFS-Dateisystemprüfpunkten untersucht das NTFS-Dateisystem das Journal und schneidet es, wenn seine Größe den Wert von MaximumSize plus den Wert von AllocationDelta überschreitet. (An NTFS-Dateisystemprüfpunkten schreibt das Betriebssystem Datensätze in die NTFS-Dateisystemprotokolldatei, mit denen das NTFS-Dateisystem bestimmen kann, welche Verarbeitung zur Wiederherstellung nach einem Fehler erforderlich ist.)

AllocationDelta ist die Anzahl der Bytes, die am Ende hinzugefügt und jedes Mal vom Anfang des Änderungsjournals entfernt werden, wenn Arbeitsspeicher zugewiesen oder zugeordnet wird. Anders ausgedrückt: Die Zuordnung und Die Zuordnung erfolgen in Einheiten dieser Größe. Ein ganzzahliges Vielfaches einer Clustergröße ist ein vernünftiger Wert für dieses Element.

Wenn ein Administrator ein vorhandenes Änderungsjournal so ändert, dass es einen größeren MaximumSize-Wert aufweist, z. B. wenn ein Volume zu oft neu indiziert wird, empfängt das Änderungsjournal einfach neue Einträge, bis es die neue maximale Größe überschreitet.

Um ein Änderungsjournal zu löschen, verwenden Sie den FSCTL_DELETE_USN_JOURNAL-Steuerelementcode. Wenn Sie diesen Vorgang verwenden, durchläuft er alle Dateien auf dem Volume und setzt den USN für jede Datei auf 0 zurück. Anschließend löscht der Vorgang das vorhandene Änderungsjournal. Dieser Vorgang bleibt bei systemübergreifenden Neustarts bestehen, bis er abgeschlossen ist. Jeder Versuch, das Änderungsjournal während dieses Prozesses zu lesen, zu erstellen oder zu ändern, schlägt mit dem Fehlercode ERROR_JOURNAL_DELETE_IN_PROGRESS fehl.

Sie können auch den FSCTL_DELETE_USN_JOURNAL-Steuerelementcode verwenden, um zu bestimmen, ob ein Löschvorgang ausgeführt wird, der von einem anderen Prozess gestartet wurde. Beispielsweise kann Ihre Anwendung beim Starten ermitteln, ob ein Löschvorgang ausgeführt wird. Da Journallöschungen über Systemneustarts hinweg bestehen bleiben, sollten Dienste und Anwendungen, die beim Systemneustart gestartet wurden, nach einem fortlaufenden Löschen suchen.

Änderungsjournale werden nicht unbedingt beim Start erstellt. Um ein Änderungsjournal zu erstellen, kann ein Administrator dies explizit tun oder einen anderen Dienst starten, der ein Änderungsjournal erfordert.