Exchange : optimiser l’espace des bases de données


Exchange 2013 Exchange 2016 Exchange 2019

Dans ce tutoriel, je vais vous expliquer comment optimiser l’espace disque utilisé par les bases de données (MailboxDatabase) d’Exchange.

Ce qu’il faut savoir, c’est que la taille des bases de données Exchange ne fait qu’augmenter et au fil du temps, des espaces « vides » sont créés dans les fichiers de bases de données. L’espace vide est normalement réutilisé pour stocker d’autre données.

Malgré cette réutilisation, il arrive que la perte d’espace est importante et donc je vais vous expliquer comment récupérer de l’espace disque.

Il existe plusieurs solutions, certaines nécessite un arrêt de service , car il faut démonter la base de données, interrompre Exchange n’est pas toujours facile, voir même impossible, je vais donc vous expliquer comment faire sans arrêt de service.

La première étape avant de vous lancer dans cette manipulation, c’est de voir l’espace que vous pouvez potentiellement récupérer.

Depuis une fenêtre PowerShell (EMS), entrer la commande ci-dessous :

Get-MailboxDatabase -Status | Select Name, DatabaseSize, AvailableNewMailboxSpace

Cette commande va nous retourner la taille des fichiers des bases de données ainsi que l’espace « vide ».

Sur la capture, ci-dessus, on peut voir que la base B100 fait 130 GB et qu’il y a 100 GB d’espace disponible. Dans la base de données, il y a seulement 30 GB de données et 100 GB d’espace vide.

On va donc voir comment faire pour récupérer cette espace vide.

En faite, on ne va pas pouvoir récupérer l’espace vide de la base de données comme on le ferait pour une base de données SQL Server avec un simple que droit sur la base de données.

Le seul moyen de récupérer l’espace vide sans interruption de service va être de déplacer toutes les boites aux lettres dans une nouvelle base de données.

La première étape va être de créer une nouvelle base de données et de la configurer avec les même paramètres (limites) et mise en haute disponibilité que la base de données source.

Une fois la base de données prête, déplacer les boites aux lettres de base de données :

Get-Mailbox -Database "SRC_MXDB" -ResultSize Unlimited | New-MoveRequest -TargetDatabase "NEW_MXDB"

Patienter pendant le déplacement des boites aux lettres.

Il est possible de suivre l’avancement avec la cmdlet :

Get-MoveRequest

Une fois, les boites aux lettres déplacées nettoyer les demandes de déplacement :

Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest

Si la base de données contient d’autre type de boites de lettres (Arbitrage, Archive …), les déplacer également.

# Vérifier les autres types de boites :
Get-Mailbox -Database SRC_MXDB Name -Arbitration
Get-Mailbox -Database SRC_MXDB Name -Archive
Get-Mailbox -Database SRC_MXDB Name -Auditlog
Get-Mailbox -Database SRC_MXDB Name -Monitoring

# Deplacer les boites aux lettres
Get-Mailbox -Database SRC_MXDB Name -Arbitration | New-MoveRequest -TargetDatabase "NEW_MXDB" 
Get-Mailbox -Database SRC_MXDB Name -Archive | New-MoveRequest -TargetDatabase "NEW_MXDB"
Get-Mailbox -Database SRC_MXDB Name -Auditlog | New-MoveRequest -TargetDatabase "NEW_MXDB"
Get-Mailbox -Database SRC_MXDB Name -Monitoring | New-MoveRequest -TargetDatabase "NEW_MXDB"
Get-Mailbox -Database SRC_MXDB Name -PublicFolder| New-MoveRequest -TargetDatabase "NEW_MXDB"

Une fois toutes les boites aux lettres déplacées, vous pouvez supprimer l’ancienne base de données.