Exchange: Datenbank wird nicht kleiner, obwohl Daten gelöscht wurden

Nehmen wir folgendes Szenario an: Der freie Speicherplatz der Exchange Datenbanken wird immer weniger. Als Administrator fordert man nun die Mitarbeiter dazu auf, nicht mehr benötigte Elemente zu löschen. Diese kommen der Forderung zwar nach, der zur Verfügung stehende Speicherplatz auf der Festplatte wird allerdings nicht größer. Woran liegt das? Genau diese Frage möchte ich in diesem Artikel in aller Ausführlichkeit beantworten. Denn auch, wenn ein Anwender Elemente aus seinem Postfach entfernt, werden diese nicht direkt gelöscht. Auch das Thema, warum eine Datenbank in Ihrer Größe nicht schrumpft und was mit dem frei gewordenen Platz passiert, wird hier geklärt.

Diese Reihe besteht aus mehreren Artikeln, darunter:

 

In der Theorie

Exchange Datenbanken

Arbeitet man mit einem On-Premise Exchange, ist man vermutlich auch schon einmal mit der Datenbank oder sogar einem DAG (Database Availability Group) in Berührung gekommen. Die Datenbank bildet dabei den Dreh- und Angelpunkt für alle Postfächer und speichert deren gesamtes Datenaufkommen. Was passiert aber nun mit der Datenbank, wenn ich unzählige Elemente innerhalb von Postfächern oder sogar das gesamte Postfach lösche? Wird das EDB-File kleiner? Die kurze Antwort lautet: Nein – das EDB-File wird niemals kleiner und das hat auch seinen Grund. Doch rollen wir das Thema fürs bessere Verständnis von vorne auf und beginnen bei den Grundlagen.

 

Was passiert, wenn ich Daten aus einem Postfach lösche?

Als Benutzer hat man die Möglichkeit, E-Mails, Kontakte oder auch Termine aus seinem Postfach zu löschen. Diese werden zum Teil in den „Gelöschte Elemente“ Ordner verschoben und verweilen dort auf unbestimmte Dauer. Ein findiger Nutzer wird nun auch die nicht mehr benötigten Items aus dem genannten Ordner entfernen. Doch sind sie nun endgültig gelöscht? Nein! Folgende Grafik illustriert, wie Exchange mit gelöschten Items umgeht.

Nehmen wir nun folgendes Szenario an: Wir administrieren einen On-Premise Exchange mit weitestgehend standardmäßigen Einstellungen für Datenbanken und Postfächer. Ein Nutzer löscht nun Items aus dem „Gelöschte Elemente“ Ordner. Diese werden in der ersten Instanz in den unsichtbaren „Deletions“ Ordner verschoben. Dort verweilen Sie für eine Dauer von 14 Tagen (wie man diesen Wert umstellen kann, zeige ich später). Innerhalb dieser Frist können alle Elemente vom Nutzer selbständig wiederhergestellt werden. Erst nach den 14 Tagen werden die Daten unwiederbringlich vom Server gelöscht. Nun gibt es auch einige Ausnahmen, darunter:

  • Wurde „SingleItemRecovery“ für das Postfach aktiviert (siehe Microsoft Docs)
  • Wurde für das Postfach „In-Place Hold“ oder „Litigation Hold“ aktiviert (siehe Microsoft Docs)

Da eine detaillierte Auflistung der Funktionsweise den Umfang des Artikels sprengen würde, kannst du weitere Informationen direkt in der Dokumentation von Microsoft nachlesen.

 

Was passiert, wenn ich ein Postfach lösche?

Wie beim Löschen von einzelnen Elementen, bringt ein Exchange auch beim Entfernen einer gesamten Mailbox einige Sicherheitsmechanismen mit. Löscht man also eine gesamte Mailbox, wird diese standardmäßig für eine Dauer von 30 Tagen in der Datenbank belassen. Somit hat man also Administrator die Möglichkeit, das gelöschte Postfach erneut einem AD-Benutzer zuzuordnen oder direkt in ein PST-File zu exportieren. Nach diesen 30 Tagen sind aber auch hier die Daten endgültig verloren (ausgenommen Litigation Hold ist aktiviert).

 

Warum wird meine Datenbank nicht kleiner?

Nun kommen wir aber zum wichtigsten Punkt: Warum wird das EDB-File nach Ablauf der Fristen nicht kleiner? Das liegt ganz einfach daran, dass ein Shrinken der Datenbank nicht sinnvoll wäre und das Allozieren von neuem Speicherplatz ressourcenintensiv ist. Daher bedient sich ein Exchange an einem kleinen Trick. Der freigewordene Speicherplatz wird somit als „AvailableNewMailboxSpace“ ausgewiesen. Werden nun weitere Daten in die Datenbank geschrieben, so wird zuerst der „AvailableNewMailboxSpace“ aufgebraucht. Erst wenn dieser den Wert 0 erreicht, wird das EDB-File auf der Festplatte vergrößert.

Dazu ein kleines Beispiel: Wir löschen ein Postfach mit einer Größe von 10GB. Nach der Frist von 30 Tagen werden die Daten endgültig vom Exchange gelöscht. Nun wird innerhalb der Datenbank 10GB an „AvailableNewMailboxSpace“ frei. Dieser Platz wird genutzt, um zukünftigen Daten in die Datenbank zu schreiben, ohne, dass zusätzlicher Speicherplatz auf der Festplatte benötigt wird.


White Space in Datenbank überprüfen

Nun ist in diesem Artikel immer wieder die Rede vom „AvailableNewMailboxSpace„, also jener Platz innerhalb einer Datenbank, der für neue Daten zur Verfügung steht. Dieser Wert lässt sich einfach über die Management Shell pro Datenbank auslesen.

[PS] C:\Windows\system32>Get-MailboxDatabase -Status | select Name, DatabaseSize, AvailableNewMailboxSpace

Name                        : DB01
DatabaseSize                : 154.9 GB (166,295,764,992 bytes)
AvailableNewMailboxSpace    : 10.055 GB (10,132,462,080 bytes)

Name                        : DB02
DatabaseSize                : 104.8 GB (112,474,456,064 bytes)
AvailableNewMailboxSpace    : 89.28 MB (93,618,176 bytes)

Wie oben ersichtlich, belegt DB01 auf der Festplatte 155GB, wobei allerdings 10GB zum jetzigen Zeitpunkt nicht aktiv genutzt werden. Erhalten Benutzer mit Postfächern in dieser Datenbank neue E-Mails, wird also zuerst der freie „AvailableNewMailboxSpace“ auf 0 sinken und erst danach allokiert der Exchange weiteren Speicherplatz auf der Festplatte.

 

Retention Time pro Datenbank bestimmen

Standardmäßig bringt der Exchange folgende Einstellungen für das Wiederherstellen von Elementen mit:

  • Gelöschte Items im „Deletion“ Ordner bleiben für 14 Tage erhalten und werden anschließend gelöscht.
  • Gelöschte Postfächer bleiben für 30 Tage erhalten und werden anschließend gelöscht.

Diese zwei Werte kann man direkt über die Management Shell auslesen und verändern. Folgender Befehl zeigt die jetzige Konfiguration pro Datenbank an.

[PS] C:\Windows\system32>Get-MailboxDatabase | select Name, MailboxRetention, DeletedItemRetention

Name                                    MailboxRetention                        DeletedItemRetention
----                                    ----------------                        --------------------
DB01                                    30.00:00:00                             14.00:00:00
DB02                                    30.00:00:00                             14.00:00:00

Grundsätzlich empfehle ich auch die „DeletedItemRetention“ auf 30 Tage zu setzen. Somit gibt man Benutzern die Möglichkeit, gelöschte Items innerhalb dieser Frist selbstständig wiederherzustellen. Dafür verwendet man folgenden Befehl.

Get-MailboxDatabase | Set-MailboxDatabase -DeletedItemRetention 30.00:00:00

Das könnte Dich auch interessieren …

Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments
0
Hinterlass' doch deine Meinung zu diesem Artikelx
()
x