Exchange DAG: Datenbank und Logfile Pfad ändern

Es kann durchaus mal vorkommen, dass die Pfade bzw. der Speicherort von Exchange Datenbaken und Logfiles geändert werden müssen, dies kann zum Beispiel beim Wechsel des Speichersystems vorkommen. Auf Frage eines Lesers, wie man dies mit möglichst wenig Downtime hinbekommt, folgt nun dieser Artikel.

Für das Verschieben der Datenbank- und Logfilepfade gibt es mehrere Optionen, die Möglichkeiten sind im folgenden beschrieben.

Die Umgebung

Für diesen Artikel muss wieder meine kleine Exchange Testumgebung herhalten. Die Testumgebung eignet sich hervorragend, da hier die Datenbank und Logfile Pfade denkbar schlecht konfiguriert sind. Datenbank und Logfiles liegen hier auf dem Laufwerk C. Daher kann ich dieses Artikel auf verwenden zum die Umgebung gerade zu ziehen.

Es gibt zwei Exchange Server, beide sind Mitglied einer DAG, beide Server hosten jeweils eine aktive Datenbank und eine passive Datenbank. Hier einmal eine Übersicht:

Exchange DAG: Datenbank und Logfile Pfad ändern

Hier noch eine Übersicht der Datenbanken:

Exchange DAG: Datenbank und Logfile Pfad ändern

Die Pfade der Datenbank für EDB-Datei und Logfiles liegen also jeweils unter “C:\Program Files\Microsoft\Exchange Server\V15\Mailbox”.

Beide Exchange Server haben nun noch einen weitern Datenträger für die zukünftigen Pfade der Datenbank und Logfiles bekommen. Ziel ist es, dass Datenbank und Logfiles auf Datenträger 1 gespeichert werden:

Exchange DAG: Datenbank und Logfile Pfad ändern

Die Server laufen hier zwar mit Exchange Server 2019 auf Windows Server 2019, die im folgenden beschriebenen Möglichkeiten funktionieren aber auch ab Exchange Server 2010 und entsprechend früheren Betriebssystemen.

Möglichkeit 1: Neue Datenbank

Anstatt die Pfade einer Datenbank zu ändern, lässt sich auch einfach eine neue Datenbank anlegen und die Postfächer in die neue Datenbank migrieren. Diese Vorgehensweise ist zwar deutlich zeitaufwändiger als die Pfade zu verändern, aber immerhin ist keine Downtime nötig.

Die Vorgehensweise:

  • Neue Datenbank und Datenbankkopien erstellen
  • Postfächer in die neue Datenbank verschieben
  • Alte Datenbank löschen, wenn alle Postfächer verschoben wurden

Ich denke ich brauche die Vorgehensweise hier nicht im Detail zu beschreiben. Wenn dies gewünscht wird, kann es es gerne noch nachreichen.

Hinweis: Exchange Server 2016/2019 in der Standard Edition kann maximal 4 aktive Datenbanken hosten. Wenn neue Datenbanken angelegt werden, muss man hier also das Limit im Kopf haben.

Möglichkeit 2: Pfade verschieben

Die zweite Möglichkeit ist, die Pfade der Datenbank zu ändern. Via Exchange Management Shell ist dies sehr einfach möglich. In diesem Fall wird die Datenbank allerdings offline geschaltet. Während die Datenbank verschoben wird, kann sich Outlook also nicht mit dem Postfach verbinden.

Zu bedenken ist, dass es sich hier technisch um einen Kopiervorgang handelt. Es muss also entsprechend viel Speicherplatz zur Verfügung stehen (Wichtig wenn die Datenbank auf dem gleichen Datenträger in einen anderen Ordner verschoben wird).

Das verändern der Pfade kann je nach Größe der Datenbank und Geschwindigkeit des Speichers durchaus etwas länger dauern. Daher sollte hier ausreichend Zeit und Downtime eingeplant werden.

Die Vorgehensweise:

  • Vollsicherung der Datenbank durchführen
  • Passive Datenbankkopien entfernen
  • Datenbank verschieben
  • Datenbankkopie wieder hinzufügen

Unmount der Datenbank, verschieben der Daten und mounten der Datenbank übernimmt Exchange, das Entfernen der Kopie, sowie das Hinzufügen der Datenbankkopie ist aber ein manueller Task.

Die Vollsicherung der Datenbank dient hier übrigens weniger der Sicherheit, sondern eher der Geschwindigkeitsoptimierung. Nach der Vollsicherung werden die Transaktionsprotokolle der Datenbank gelöscht, somit sind nach der Vollsicherung nur wenige Logfiles vorhanden. Beim Verschieben der Datenbank müssen also nicht mehr viele kleine Dateien verschoben werden, sondern im wesentlichen nur noch die eine große EDB Datei.

Die Vorgehensweise im Detail:

Zunächst müssen die neuen Datenträger auf beiden Exchange Servern partitioniert und formatiert werden (der Laufwerksbuchstabe oder Mountpoint muss auf allen Exchange Servern gleich sein). Ich habe für diese Umgebung den Datenträger mit NTFS formatiert (ReFS ist ebenfalls möglich) und als Laufwerk E: eingebunden:

Exchange DAG: Datenbank und Logfile Pfad ändern 

Auf beiden Servern wurde auf dem Laufwerk E: jeweils ein Ordner mit den Namen “DB1” erstellt. Dies ist der neue Zielpfad der Datenbank.

Jetzt müssen alle passiven Kopien der Datenbank entfernt werden:

Exchange DAG: Datenbank und Logfile Pfad ändern

Hinweis: Passive Datenbank und Logfiles werden hier nur aus der Konfiguration entfernt. Die Dateien bleiben auf dem Filesystem liegen und müssen manuell gelöscht werden.

Die Datenbank DB1 hat nun keine Kopien mehr:

Exchange DAG: Datenbank und Logfile Pfad ändern

Jetzt kann die Datenbank auf das neue Volume E: verschoben werden. Während die Datenbank verschoben wird, ist die Datenbank offline. Verbindungen von Clients zur Datenbank sind also nicht möglich. Je Nach Größe der Datenbank, der Geschwindigkeit des Speichers und der Anzahl der Logfiles muss hier eine längere Downtime eingeplant werden.

Das Verschieben der Datenbank kann mit folgendem Befehl durchgeführt werden:

Move-DatabasePath DB1 -EdbFilePath E:\DB1\DB1.edb -LogFolderPath e:\DB1

Exchange DAG: Datenbank und Logfile Pfad ändern

Nachdem die Datenbank verschoben wurde, wird die Datenbank auch direkt wieder eingebunden. Jetzt kann die Kopie wieder hinzugefügt werden:

Exchange DAG: Datenbank und Logfile Pfad ändern

Die Datenbank wird nun von aktiven Server zum passiven Server übertragen, dies kann ebenfalls wieder eine gewisse Zeit in Anspruch nehmen.

Möglichkeit 3: Mountpoints

Für die letzte Methode ist zwar etwas mehr manueller Aufwand erforderlich, dafür lassen sich die Pfade einer Datenbank aber ändern, ohne diese offline schalten zu müssen. Nur für die Kosmetik kann die Datenbank einmal kurz offline geschaltet, da aber kein kopieren von Daten mehr erforderlich ist, ist die Datenbank schnell wieder online.

Für diese Methode kann man sich Mountpoints zu Nutze machen. Die grobe Vorgehensweise:

  • Eine Kopie der Datenbank wird entfernt
  • Der neue Datenträger wird anstatt mit einem Laufwerksbuchstaben in den alten Pfad der Datenbank gemountet
  • Die Kopie wird wieder hinzugefügt
  • Wiederholen für alle Datenbank Kopien

Schönheitsfehler korrigieren

Für Möglichkeit 3 wird zunächst die aktive Datenbank auf die passive Kopie geschwenkt (Schwitch-Over):

Exchange DAG: Datenbank und Logfile Pfad ändern

Die passive Kopie der Datenbank wird nun entfernt. In diesem Fall wird also die Kopie auf Server EX1 entfernt:

Exchange DAG: Datenbank und Logfile Pfad ändern

Nun wird auf Server EX1 in den Ordner der Datenbank gewechselt, hier liegen noch die Daten der Kopie die soeben entfernt wurde:

Exchange DAG: Datenbank und Logfile Pfad ändern

Der komplette Inhalt des Ordners muss nun gelöscht werden, sodass der Ordner komplett leer ist:

Exchange DAG: Datenbank und Logfile Pfad ändern

Der Pfad aus der Adresszeile kann nun kopiert werden. Jetzt wird auf dem leeren Datenträger 1 ein neues Volume angelegt:

Exchange DAG: Datenbank und Logfile Pfad ändern

Die Partition bekommt nun keinen Laufwerksbuchstaben, sondern wird in den leeren Ordner gemountet (wo bis eben noch die Datenbank lag, der aber geleert wurde):

Exchange DAG: Datenbank und Logfile Pfad ändern

Nachdem die Partition formatiert wurde, stellt es sich nun wie folgt im Explorer dar:

Exchange DAG: Datenbank und Logfile Pfad ändern

Wichtig ist, dass der Pfad und der Name des Ordners nicht verändert werden.

Jetzt kann für die Datenbank DB1 wieder eine Kopie hinzugefügt werden:

Exchange DAG: Datenbank und Logfile Pfad ändern

Die Kopie wird nun wieder auf dem Server EX1 gespeichert (Die Kopie die eingangs entfernt wurde):

Exchange DAG: Datenbank und Logfile Pfad ändern

Nach erfolgreicher Replikation (unbedingt die vollständige Replikation abwarten), sind beide Kopien wieder fehlerfrei:

Exchange DAG: Datenbank und Logfile Pfad ändern

Auch im Explorer sind Daten wieder sichtbar (nun liegen die Daten aber auf Datenträger 1):

Exchange DAG: Datenbank und Logfile Pfad ändern

Der Pfad “C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1960189437” zeigt jetzt also nicht mehr auf Datenträger 0 (Laufwerk C) sondern auf Datenträger 1, welcher nur unter diesem Pfad gemountet wurde.

Damit nun beide Server den Datenträger 1 verwenden, wird die Datenbank DB1 nun wieder auf Server EX1 aktiviert (Wieder Switch-Over, bzw. Switch-Back):

Exchange DAG: Datenbank und Logfile Pfad ändern

Dann wird die Kopie auf Server EX2 entfernt:

Exchange DAG: Datenbank und Logfile Pfad ändern

Nun wird der Ordner auf EX2 geleert und der Pfad in die Zwischenablage kopiert:

Exchange DAG: Datenbank und Logfile Pfad ändern

Datenträger 1 wird wieder in den lokalen Ordner gemountet:

Exchange DAG: Datenbank und Logfile Pfad ändern

Zum Schluss wird auch hier wieder die Kopie auf Server EX2 hinzugefügt, nach Replikation der Datenbank werden beide Kopien wieder als Fehlerfrei angezeigt:

Exchange DAG: Datenbank und Logfile Pfad ändern

Die hier gezeigt Methode funktioniert nahezu ohne Downtime, denn es finden nur zwei Switch-Over der Datenbank statt. Hier verliert Outlook je nach Umgebung also maximal kurz die Verbindung (Online Modus), stellt diese aber wieder her.

Ganz elegant und sauber ist dieser Weg zwar nicht, aber man kann ja noch in einer ruhigen Minute und mit minimaler Downtime nacharbeiten und den Schönheitsfehler korrigieren, hier gibt es dann wieder zwei Möglichkeiten. Beide Wege benötigen nur wenige Minuten Downtime.

Möglichkeit 3.1: Mountpoint verschieben

Um den Mountpoint von Datenträger 1 (C:\Program Files\Microsoft…) in einen etwas einfacheren Pfad zu verlagern, kann beispielsweise eine neue Ordnerstruktur angelegt werden, für die DB1 habe ich hier den Pfad “C:\Mountpoints\DB1” vorgesehen und diese Ordner entsprechend auf beiden Exchange Servern angelegt:

Exchange DAG: Datenbank und Logfile Pfad ändern

Diese Ordnerstruktur muss auf beiden Exchange Servern angelegt werden. Sobald die Ordnerstruktur existiert, kann die Datenbank DB1 offline geschaltet werden (dies sollte natürlich innerhalb eines Wartungsfensters passieren):

Exchange DAG: Datenbank und Logfile Pfad ändern

Nun kann der Pfad für Datenträger 1 geändert werden:

Exchange DAG: Datenbank und Logfile Pfad ändern

Datenträger 1 wird jetzt in den Ordner “C:\Mountpoints\DB1\” gemountet:

Exchange DAG: Datenbank und Logfile Pfad ändern

Die Daten stehen nun im neuen Ordner zur Verfügung, es muss also nichts mehr verschoben werden, sondern nur noch die Konfiguration der Datenbank angepasst werden. Dies kann mit folgenden Befehl erfolgen:

Move-DatabasePath DB1 -EdbFilePath "C:\Mountpoints\DB1\Mailbox Database 1960189437.edb" -LogFolderPath "C:\Mountpoints\DB1" -ConfigurationOnly

Exchange DAG: Datenbank und Logfile Pfad ändern

Sobald der Konfiguration der Datenbank angepasst wurde, kann die Datenbank wieder gemountet werden:

Exchange DAG: Datenbank und Logfile Pfad ändern

Der Pfad der Datenbank zeigt nun auf “C:\Mountpoints\DB1\”:

Exchange DAG: Datenbank und Logfile Pfad ändern

Der Vorgang dauert nur wenige Minuten, da keine Daten mehr verschoben/kopiert werden.

Möglichkeit 3.2: Mountpoint in Laufwerksbuchstaben ändern

Wer Mountpoints nicht mag, kann auch auf einen normalen Laufwerksbuchstaben wechseln. Die Vorgehensweise ist recht ähnlich, zunächst wird die Datenbank offline geschaltet:

Exchange DAG: Datenbank und Logfile Pfad ändern

Danach wird der Mountpoint entfernt und ein Laufwerksbuchstabe zugewiesen, in diesem Fall ist es E:\:

Exchange DAG: Datenbank und Logfile Pfad ändern

Um es ganz ordentlich zu machen, wird jetzt unter E:\ ein neuer Ordner DB1 auf beiden Exchange Servern angelegt (dies ist nötig, da die Logs nicht im Root E:\ liegen dürfen):

Exchange DAG: Datenbank und Logfile Pfad ändern

Die Daten aus E:\ werden und alle in den Unterordner DB1 verschoben. Somit liegen alle Daten die vorher direkt unter E:\ lagen nun im Ordner E:\DB1. Das Verschieben ist normalerweise binnen weniger Sekunden erledigt, da sich die Daten ja bereits auf Datenträger 1 befinden:

Exchange DAG: Datenbank und Logfile Pfad ändern

Jetzt kann die Konfiguration der Datenbank wieder angepasst werden, diesmal auf den neuen Laufwerksbuchstaben und Ordner:

Move-DatabasePath DB1 -EdbFilePath "E:\DB1\Mailbox Database 1960189437.edb" -LogFolderPath "E:\DB1" -ConfigurationOnly

Datenbank mounten und fertig:

Exchange DAG: Datenbank und Logfile Pfad ändern

Wäre ich hier ganz ordentlich gewesen, hätte ich auch noch das EDB File zu DB1.edb umbenannt und erst dann den Pfad/Konfiguration geändert.

Fazit

Man muss nicht lange auf das Verschieben der Datenbank per Shell warten (Möglichkeit 2) oder erst eine neue Datenbank anlegen und die Postfächer verschieben (Möglichkeit 1). Es gibt durchaus einen kleinen Trick (Möglichkeit 3).

Noch ein kleiner Hinweis: Möglichkeit 3 lässt immer nur eine Datenbank pro Datenträger zu, wenn nun auch Datenbank DB2 umgezogen werden soll, muss hierfür ein neuer Datenträger bereit gestellt werden. Datenträger 1 lässt sich hier nicht mehr verwenden. Es sei denn, ihr wollt beide Datenbanken zeitgleich umziehen, dann wäre dies schon möglich…

3 thoughts on “Exchange DAG: Datenbank und Logfile Pfad ändern”

  1. Die Anleitung funktioniert auch, wenn man kein DAG hat – hier fallen (denke ich) nur die Schritte zu den passiven Datenbanken raus. Ich bin nach Möglichkeit 2 vorgegangen und konnte das Skript in der Exchange Management Shell wunderbar durchführen. Hat alles von selbst verschoben, Datenbank und Logs – liegen nun auf separaten, via iSCSI angebundenen ReFS-formatierten Targets. Dankeschön für diese Hilfestellung!

    Reply

Leave a Comment