Exchange Datenbanken offline defragmentieren

Der Exchange Server nutzt in allen Versionen sogenannte ESE (Extensible Storage Engine) Datenbanken um Informationen abzuspeichern. Der Aufbau und die Struktur der Exchange Datenbanken hat sich seit der ersten Version 4.0 nur unwesentlich verändert. Mit Einführung von Exchange Server 2000 hat Microsoft der eigentlichen Datenbank mit der Endung EDB einen zusätzlichen Speicher mit der Endung STM, der Streaming „Datenbank“ zur Seite gestellt. Allerdings hat man diese STM-Datenbank in der aktuellen Version Exchange 2007  wieder aufgegeben.

Die Grundtechnologie der Datenbank, die Daten in 4 KB-Blöcken innerhalb der Datenbank abzulegen, führt ähnlich einem Dateisystem unweigerlich im Laufe des Betriebs zu einer Defragmentierung. Je länger die Datenbank in Betrieb ist, desto größer ist also die Wahrscheinlichkeit, dass eigentlich inhaltlich zusammenhängende Datenblöcke nicht mehr optimal hintereinander abgelegt werden können bzw. abgelegt sind. Microsoft hat dieses Problem bereits von Beginn an adressiert und mit der Online-Defragmentierung im Maintenance-Fenster Abhilfe geschaffen (Wartungsintervall).

 052007-bild2.GIF

Allerdings ist eine Online-Defragmentierung eben nicht in der Lage die Datenbankgröße (Dateigröße) zu reduzieren, sondern optimiert lediglich die Anordnung der zusammenhängenden Blöcke innerhalb der Datenbank. Eine Exchange Datenbank kann im laufenden Betrieb solange der Datenträger es hergibt zwar jederzeit wachsen, jedoch ist eine Reduzierung der Dateigröße der Datenbank im laufenden Betrieb unmöglich. Löschen wir nun beispielsweise eine Reihe von Postfächern vollständig von unserem Exchange Server, so wird deren Speicherplatz zwar intern freigegeben, aber die Dateigröße muss „von Hand“ freigegeben werden.

Microsoft stellt hierfür das Tool ESEUTIL zur Verfügung, das bereits mit dem Exchange Server ausgeliefert wird. ESEUTIL stellt eine Reihe von Funktionen, wie Datenbankprüfungen und Datenbankreparatur-Mechanismen, bereit. Wir wollen uns in unserem Workshop lediglich auf die Offline-Defragmentierung konzentrieren.

 ESEUTIL /d <database name> [options]

Die Offline-Defragmentierung setzt voraus, dass zumindest der betroffene Postfachspeicher oder Öffentliche Informationsspeicher nicht bereitgestellt ist. ESEUTIL liest die Datenbank aus und kopiert die Einträge in eine temporäre Datenbank. Abschließend wird die Originaldatenbank gelöscht und durch die temporäre Datenbank ersetzt. In der neuen Datenbank sind alle Einträge optimal geordnet und die Datei belegt auf dem Datenträger nur noch den letztlich notwendigen Speicherplatz. Wir müssen hier nun aber beachten, dass auf jeden Fall genügend freier Platz auf dem Datenträger für die temporäre Datenbank verfügbar sein muss. Daher auch die Empfehlung von uns Profis: „Halten Sie immer mindestens soviel Speicherplatz auf dem Datenträger frei, die der Größe der größten Exchange-Datenbank entspricht“. Ein Puffer sollte selbstverständlich noch eingerechnet werden, damit die Datenbank im Betrieb auch wachsen kann.

Wann ist denn nun eine Offline-Defragmentierung notwendig? Hier ist zum Einen das Beispiel mit der Löschung oder dem Verschieben von Postfächern zu nennen, zum Anderen sollte der Exchange Administrator auch die entsprechenden Hinweise von Exchange selbst beachten. Der Exchange Server meldet nach abgeschlossener Online-Defragmentierung über die Ereignisanzeige (Anwendung) mit der ID 1221 die Größe des freien Speicherbereiches. Damit entscheiden wir selbst, ob und wann der Einsatz von ESEUTIL notwendig wird.

052007-bild1.GIF

ESEUTIL findet sich in Exchange 2000 und Exchange 2003 im Ordner „[Lw]:\ Exchsrvr/Bin“. Für den Aufruf direkt auf dem Datenträger der Datenbanken ist es sinnvoll, diesen Pfad in die Umgebungsvariable PATH aufzunehmen. Der Aufruf ESEUTIL zeigt die verschiedenen Optionen des Tools an. Um nun z.B. den Standard Privaten Informationsspeicher eines Exchange Servers zu defragmentieren starten wir ESEUTIL mit der Option /D sowie dem zugehörigen Dateinamen der Datenbank direkt aus dem Verzeichnis MDBDATA. Über die Optionen kann auch der direkte Pfad zur Datenbank oder ein anderen Ort für die temporäreren Dateien angegeben werden.

D:\exchsrvr\mdbdata>eseutil /d priv1.edb

Microsoft(R) Exchange Server Database Utilities
Version 6.5
Copyright (C) Microsoft Corporation. All Rights Reserved
.

Folgende Fehlermeldung bedeutet, dass die Datenbank noch gemountet ist und daher die Bereitstellung zuvor aufgehoben werden muss.

Error: Access to source database ‚priv1.edb‘ failed with Jet error -1032

Auch wenn beim Aufruf nur die Endung EDB angegeben wird, erzeugt das Tool während des Durchlaufes auch eine neue STM-Datei.

Initiating DEFRAGMENTATION mode…
Database: priv1.edb
Streaming File: priv1.STM
Temp. Database: TEMPDFRG6700.EDB
Temp. Streaming File: TEMPDFRG6700.STM

Defragmentation Status (% complete)

0    10   20   30   40   50   60   70   80   90  100
|—-|—-|—-|—-|—-|—-|—-|—-|—-|—-|
………………………………………………………

Moving ‚TEMPDFRG6700.EDB‘ to ‚ priv1.edb’… DONE!

Moving ‚TEMPDFRG6700.STM‘ to ‚ priv1.stm’… DONE!

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 56.125 seconds.

Wie an diesem Beispiel erkennbar, werden wir permanent über den Fortschritt der Operation informiert. Zum Abschluss ersetzen die temporären Dateien die Originaldatenbank und anhand der Dateigrößen können wir den Erfolg messen.

Wo ist das Risiko? Sicherlich stellt sich jeder Administrator diese Frage. Allerdings ist das Risiko bei dieser Vorgehensweise äußerst gering, denn während der Defragmentierung auftretende Fehler führen nicht zum Datenverlust, da die Originaldatenbank bis zum Schluß verfügbar bleibt. Selbstverständlich sollte man stets zuvor eine vollständige Datensicherung durchgeführt haben. Die sprichwörtliche Angst vor solchen, tiefgreifenden Operationen kann dem Administrator natürlich nicht ganz genommen werden, aber wer wie ich bereits solche Aktion zu Hunderten durchgeführt hat, der darf von einer „sicheren“ Aktion sprechen.