Montag, 16. April 2012

Exchange 2010 – DB Defragmentierung?

Leute die schon länger mit Microsoft Exchange zu tun haben kennen die Problematik der Datenbanken welche immer mal wieder eine offline Defragmentierung verlangt haben. Umso schöner war es zu hören, dass unter Exchange 2010 keine offline Defragmentierung mehr nötig sein soll.
Nun habe ich mir die Sache mal genauer angeschaut und musste feststellen, dass es noch immer so ist, dass eine Datenbank nur grösser und nicht kleiner wird. Solange meine System über genug Speicherplatz verfügt ist dies ja auch kein Problem und irgendwelche Performance Probleme konnte ich bisher auch keine feststellen. Grundsätzlich ist es ja auch so, dass dieser Platz mit der Zeit wieder durch neue Elemente gefüllt wird.
Doch nachdem ich bei einigen Kunden mal nachgeschaut habe wieviel leeren Speicherplatz (Whitespace) sie in ihren Datenbanken haben, war ich zum Teil schon etwas erstaunt.



Gründe für die Fragmentierung einer Exchange Datenbank:
- Einführung einer Archivlösung
- Häufiges Verschieben von Postfächern
- Löschen vieler Elemente im Postfach duch die User

Whitespace einer Datenbank ermitteln
Wenn ermittelt werden soll, wie viel Whitespace in einer Mailboxdatenbank unter Exchange 2010 enthalten ist, muss die Exchange Shell bemüht werden:



Get-MailboxDatabase -Status | ft name,databasesize,availablenewmailboxspace –auto


Die Datenbank "Mailbox Database 03" hat den grössten Whitespace. Natürlich wäre dieser Wert auf einem produktiven System noch nicht alarmierend. Doch hier handelt es sich um ein Testsystem und wir wollen ja vor allem schauen wie sich die Sache verhält. Auf Produktiven Systemen muss erst eingegriffen werden wenn der Whitespace auf mehrere Gigabytes angewachsen ist.

Falls ihr euch das gleiche für Public Folder Datenbanken anschauen wollt, geht das mit folgendem Befehl:

Get-PublicFolderDatabase -Status | ft name,databasesize,availablenewmailboxspace–auto


 Datenbank offline Defragmentieren?

Seit Exchange 2007 sind wir in der Lage Postfächer online zu verschieben. Der User erfährt nur einen kurzen Unterbruch zum Schluss der Postfachverschiebung. Daher muss man sich gut überlegen, ob man eine DB offline nehmen will um diese zu defragmentieren. Einfacher ist es eine neue Datenbank anzulegen und die Postfächer in diese neue Datenbank zu verschieben. Nachdem alle Postfächer verschoben sind, kann dann die "alte" Datenbank gelöscht werden. Auf diese Weise haben die User keinen, oder zumindest einen sehr kurzen Unterbruch der Exchange Dienste.
In den meisten Fällen empfehle ich also, Mailboxen in eine neu Datenbank zu verschieben und nicht offline zu Defragmentieren.

Defragmentierung von DBs in einer DAG


Eine DB die sich in einer DAG befindet und Kopien auf einem anderen Mailboxserver hat, kann nicht einfach defragmentiert werden. Entweder muss die Datenbankkopie gelöscht werden oder nach der Defragmentation muss man die defragmentierte Kopie auf die nicht defragmentierte Version „seeden“.

Ich empfehle die Kopie der Datenbank zu löschen, die Datenbank zu defragmentieren und danach eine neue Kopie/en der Datenbank anzulegen. Stellt aber sicher, dass ihr vor der Aktion ein sauberes Backup habt!

Datenbank vor der Defragmentation prüfen

Eine DB kann nur defragmentiert werden wenn sie nach dem Dismounten den Status „Clean Shutdown hat. Dies kann mit Eseutil geprüft werden. Öffne die Exchange Shell und navigiere zuerst zum Verzeichnis, welches die Datenbank enthält (cd "Pfad zur Datenbank"). Danach folgenden Befehl ausführen:



eseutil /MH „MailboxDB.edb"


Datenbank Defragmentieren

Nun, nachdem geprüft worden ist ob die DB in einem „Clean Shutdown“ ist, kann sie defragmentiert werden. Dies wird mit folgendem Befehl erledigt:

eseutil /d „MailboxDB.edb“



Wenn man sich dies genauer anschaut sieht man, dass eine temporäre Datenbank erstellt worden ist und wie am Ende diese temporäre DB wieder in die eigentliche DB geschrieben wurde.

Schauen wir uns die Datenbankgrössen und den enthaltenen Whitespace nun nochmal an:



Interessant ist , dass ich in meinem Beispiel eine DB genommen habe, die 904.1MB gross war und 120.4MB freien Speicher (Whitespace oder AviableNewMailboxSpace) hatte. Nach der Defragmentierung hatte die DB eine Grösse von 664.1MB und 4MB freien Speicher. Nach meiner Rechnung müsste die DB nach der Defragmentierung aber eine Grösse von 783.7MB (904.1MB – 120.4MB) haben.
Microsoft sagt klar, eine Offline-Defragmentierung sei unter Exchange 2010 nicht mehr nötig. Was man nun von dieser Aussage halten will ist nun euch überlassen ;-)

Kommentare: