Active Directory: Datenbank pflegen und reparieren

24.04.2006 von William Bosswell
Bei Active Directory handelt es sich um eine komplexe Software, deren Ausfall einen Administrator gehörig ins Schwitzen bringt. Der vierte und vorletzte Teil unserer Serie beschäftigt sich mit der Pflege und der Reparatur der Active Directory Datenbank.

Active Directory ist auf eine Reihe von Diensten und Features angewiesen, um korrekt funktionieren zu können. Wenn einer dieser Dienste ausfällt, erleben Sie ungewöhnliches oder unkontrollierbares Verhalten. Unsere Serie stellt Ihnen die häufigsten Szenarien samt Lösung vor.

Die Artikelserie basiert auf Kapitel Zehn des Standardwerks „Windows Server 2003 für Insider“ von William Boswell aus dem Verlag Markt + Technik. Sie können dieses über 1300 Seiten starke Buch auch in unserem Buchshop bestellen oder als eBook herunterladen.

Serie: Katastrophenszenarien bei Active Directory

Teil 1: Ausfall eines DNS-Servers und eines Domänencontrollers

Teil 2: Ausfall eines FSMO-Rollenmasters

Teil 3: Ausfall von zentralen Replikationskomponenten

Teil 4: Active Directory-Pflege

Teil 5: Active Directory wiederherstellen

Verzeichnis pflegen

Active Directory sollte man soviel Aufmerksamkeit schenken wie jeder anderen Datenbank. Manchmal treten in der Datenbank Lücken auf, dann ist eine Defragmentierung nötig. Manchmal gerät sie durcheinander, dann muss neu indiziert werden. Manchmal wird sie beschädigt und muss dann repariert werden. Und manchmal wird sie eben auch komplett zerschossen und muss dann wiederhergestellt werden. Das Tool für diese Aufgaben ist Ntdsutil (NT Directory Service Utility).

Für manche Dinge verwendet Ntdsutil feste Befehlsabfolgen für ein anderes Utility namens Esentutl, dem Enkel des für Exchange entwickelten Datenbankhilfsprogramms Eseutil. Esentutl kennt eine große Anzahl von Schaltern für das Festlegen und Steuern von Wiederherstellungsaufgaben und Integritätschecks. Ntdsutil bietet diese Optionen in einem Menü. Die beiden am häufigsten benutzten Optionen sind:

Active Directory-Datenbank defragmentieren

Wenn Sie je länger mit Exchange 5.5 gearbeitet haben, dann wissen Sie, wie zerbrechlich die alte ESE-Datenbank sein kann. Die neue und verbesserte ESENT-Engine benötigt nicht dermaßen viel Aufmerksamkeit. Alle 12 Stunden läuft die Garbage Collection durch und entfernt Objekte, die seit mehr als 60 Tagen getombstoned sind. Dann defragmentiert der Garbage Collector die Datenbank. Es gibt also keinen Grund für Offline-Defragmentierungen oder Reindizierungen.

Wenn Sie eine Offline-Defragmentierung mit Ntdsutil durchführen, dann komprimiert das Utility die Datenbank, indem es den Inhalt der vorhandenen Ntds.dit in eine neue Datei desselben Namens kopiert, die in einem von Ihnen benannten Temporärverzeichnis abgelegt wird. Ist die Komprimierung abgeschlossen, dann überschreiben Sie einfach mit der neuen Datei die alte, oder Sie lassen das System auf die neue Datei verweisen. Die Protokolldateien sind nicht mehr gültig und können ignoriert werden.

Offline Defragmentierung

Der einzige Grund für eine Offline-Defragmentierung ist, dass Sie Festplattenspeicher zurückhaben wollen, den Ntds.dit einnimmt. Die Online-Defragmentierung packt zwar die Datenbank, gibt aber keinen Festplattenspeicher frei. Folgendermaßen können Sie eine Offline-Defragmentierung durchführen:

  1. Fahren Sie den Domänencontroller im Verzeichnisdienst-Wiederherstellungsmodus hoch und starten Sie Ntdsutil.

  2. Geben Sie an der Eingabeaufforderung Ntdsutil: den Befehl Files ein, um die Eingabeaufforderung File Maintenance zu öffnen.

  3. Geben Sie Compact to <verzeichnis> ein, wobei <verzeichnis> der Name des Temporärverzeichnisses ist, in dem die komprimierte NTDS.DIT gespeichert wird. Die Beispielausgabe:

file maintenance: compact to C:\xxx

Die Datenbank [Current] wird geöffnet.

Folgendes Verzeichnis wird erstellt: C:\xxx

Befehl wird ausgeführt: C:\WINDOWS\system32\esentutl.exe /d"C:\WINDOWS\NTDS\ntds

.dit" /t"C:\xxx\ntds.dit" /p /o

Initiating DEFRAGMENTATION mode...

Database: C:\WINDOWS\NTDS\ntds.dit

Temp. Database: C:\xxx\ntds.dit

Defragmentation Status (% complete)

0 10 20 30 40 50 60 70 80 90 100

|----|----|----|----|----|----|----|----|----|----|

Note:

It is recommended that you immediately perform a full backup of this database. If you restore a backup made before the defragmentation, the database will be rolled back to the state it was in at the time of that backup.

Operation completed successfully in 9.304 seconds.

Erstellter Prozessbeendigungscode 0x0(0)

Wenn die Komprimierung einwandfrei durchgeführt wurde, tun Sie Folgendes:

copy "C:\xxx\ntds.dit" "C:\WINDOWS\NTDS\ntds.dit"

und die alten Protokolldateien löschen:

del C:\WINDOWS\NTDS\*.log

  1. Kopieren Sie nun die neue Ntds.dit in das ursprüngliche Verzeichnis \NTDS. Wenn Sie wollen, können Sie das neue Verzeichnis auch lassen, wo es ist, und die Verzeichniszeiger anpassen:

Set Path Backup <verzeichnis>

Set path DB <verzeichnis>

Set path logs <verzeichnis>

Set path working dir <verzeichnis>

Wenn Ihre Protokolle auf einem anderen Laufwerk liegen, lassen Sie den Befehl Set path logs an dieser Stelle weg.

Active Directory-Datenbank reparieren

Wenn die ESE-Engine auf ein Problem trifft, das aufgrund beschädigter Datenbankseiten, einer beschädigten Indexdatei oder einer Kombination aus beiden auftritt, dann müssen Sie die Datenbank reparieren. Symptome für derartige Probleme sind enstprechende Einträge im Ereignisprotokoll, Konsolenfehler oder Neustarts mit Fehlermeldungen vom LSASS (Local Security Authority Subsystem).

Active Directory kennt zwei Reparaturphasen:

Sanfte Wiederherstellung

Gehen Sie für eine sanfte Wiederherstellung wie folgt vor:

1. Öffnen Sie eine Befehlszeile.

2. Starten Sie Ntdsutil.

3. Geben Sie an der Eingabeaufforderung Ntdsutil: den Befehl Files ein, um die Eingabeaufforderung File Maintenance zu öffnen.

4. Geben Sie Recover ein. Die Beispielausgabe:

file maintenance: recover

Befehl wird ausgeführt: C:\WINDOWS\system32\esentutl.exe /redb /l"C:\WINDOWS\NTD

S" /s"C:\WINDOWS\NTDS" /8 /o

Initiating RECOVERY mode...

Logfile base name: edb

Log files: C:\WINDOWS\NTDS

System files: C:\WINDOWS\NTDS

Performing soft recovery...

Operation completed successfully in 2.243 seconds.

Erstellter Prozessbeendigungscode 0x0(0)

Es wird empfohlen, eine semantische Datenbankanalyse durchzuführen, wenn die Wiederherstellung einwandfrei abgeschlossen wurde. Dadurch wird die semantische Konsistenz gewährleistet.

Wie Sie sehen, geht dieser Vorgang relativ schmerzlos über die Bühne, solange es keine massiven Probleme gibt. Wenn jedoch ein solches entdeckt wurde, versucht das System, es zu lösen. Sie sollten von Ntdsutil aus eine semantische Datenbankanalyse durchführen, um die internen Namenverweise in der Datenbank zu prüfen und ggf. zu reparieren.

Harte Reperatur

Sollte die sanfte Wiederherstellung jedoch nicht zum Ziel führen, dann müssen Sie die harte Reparatur wählen. Zuvor könnten und sollten Sie allerdings noch den Support bei Microsoft kontaktieren – die haben vielleicht ein paar weniger radikale Vorschläge. Normalerweise gibt es wenig Gründe, überhaupt eine harte Reparatur durchzuführen. Doch wenn Sie unbedingt wollen, gehen Sie wie folgt vor:

1. Geben Sie an der Eingabeaufforderung den Befehl esentutl /p c:\windows\ntds\ntds.dit /o ein. Falls sich Ihre AD-Datenbank an anderer Stelle befindet, müssen Sie natürlich den Pfad entsprechend ändern. Die Beispielausgabe sieht so aus:

C:\Dokumente und Einstellungen\Administrator>esentutl /p c:\windows\ntds\ntds.dit /o

Initiating REPAIR mode...

Database: c:\windows\ntds\ntds.dit

Temp. Database: TEMPREPAIR3180.EDB

Checking database integrity.

Scanning Status (% complete)

0 10 20 30 40 50 60 70 80 90 100

|----|----|----|----|----|----|----|----|----|----|

...................................................

Integrity check successful.

Note:

t is recommended that you immediately perform a full backup of this database. If you restore a backup made before the repair, the database will be rolled back to the state it was in at the time of that backup.

Operation completed successfully in 5.718 seconds.

2. Nehmen Sie wie weiter oben beschrieben eine vollständige Sicherung der Systemstatusdateien vor.

Active-Directory-Hilfsdateien verschieben

Wenn Sie einen Domänencontroller hochstufen, können Sie festlegen, wo die Haupt-AD-Datei Ntds.dit und die Protokolldateien abgelegt werden. Sie können diesen Ort ändern, wenn Sie der Meinung sind, dass Sie die Performance steigern könnten, wenn Sie die Protokolle auf ein anderes Array legen oder die Dateien von der Systempartition nehmen.

Um diese Dateien zu verschieben, müssen Sie in den Verzeichnisdienst-Wiederherstellungsmodus booten. Dafür müssen Sie das lokale Administratorpasswort kennen. Sie sollten die Dateien stets auf einer NTFS-Partition ablegen, um von der höheren Sicherheit und guten Random-Access-Performance zu profitieren. Wenn Sie die Dateien verschieben wollen, verwenden Sie diese Schrittfolge:

1. Booten Sie in den AD-Wiederherstellungsmodus.

2. Öffnen Sie eine Befehlszeile.

3. Geben Sie Ntdsutil ein.

4. Geben Sie files ein, um zum Prompt file maintenance: zu kommen. Mit ? erhalten Sie eine Befehlsübersicht:

?

Zeigt diese Hilfeinformationen an

Checksum

Physische Jet-Integritätsprüfung durchführen

Compact to %s

Datenbank in das angegebene Verzeichnis komprimieren

Header

Jet-Datenbankheader speichern

Help

Zeigt diese Hilfeinformationen an

Info

Informationen zu den DS-Dateien zurückgeben

Integrity

Logische Jet-Integritätsprüfung durchführen

Move DB to %s

Datenbank zum angegebenen Verzeichnis verschieben

Move logs to %s

Protokolldateien zum angegebenen Verzeichnis verschieben

Quit

Zum vorherigen Menü wechseln

Recover

Durchführen einer Datenbankwiederherstellung

Set default folder security

Sicherheitseinstellungen von NTDS-Ordnern auf Standardwerte zurücksetzen

Set path backup %s

Verzeichnispfad der Onlinesicherung festlegen

Set path DB %s

Pfad zur Datenbankdatei festlegen

Set path logs %s

Verzeichnispfad für die Protokollierung festlegen

Set path working dir %s

Pfad für das Arbeitsverzeichnis von NTDS festlegen

5. Verwenden Sie move db to %s oder move logs to %s, um die Datenbank oder die Protokolle zu verschieben. Ersetzen Sie %s mit einem vollständigen Pfad, wie D:\Windows\NTDS.

Abschluss

Im fünften und letzten Teil unserer Serie geht es um die Wiederherstellung des Active Directories.

Die Artikelserie basiert auf Kapitel Zehn des Standardwerks „Windows Server 2003 für Insider“ von William Boswell aus dem Verlag Markt + Technik. Sie können dieses über 1300 Seiten starke Buch auch in unserem Buchshop bestellen oder als eBook herunterladen. (mja)

Serie: Katastrophenszenarien bei Active Directory

Teil 1: Ausfall eines DNS-Servers und eines Domänencontrollers

Teil 2: Ausfall eines FSMO-Rollenmasters

Teil 3: Ausfall von zentralen Replikationskomponenten

Teil 4: Active Directory-Pflege

Teil 5: Active Directory wiederherstellen