Photo by Brett Jordan / Unsplash
Défragmenter une base de données Exchange 2010/2013/2016/2019

Défragmenter une base de données Exchange 2010/2013/2016/2019

Published on 04 Sep 2019

Bastien Perez
Bastien Perez

Clap

La suppression d’une boîte aux lettres ne libère pas d’espace sur le disque

Lors de la suppression d’une boîte aux lettres Exchange, celle-ci est marquée pour suppression et elle est conservée durant la durée de rétention (30 jours par défaut).
Une fois cette durée de rétention passée, la boîte aux lettres est supprimée de la base de données Exchange (EDB – Exchange DataBase) et non récupérable à moins d’utiliser un backup Exchange.

Ben que la boîte soit supprimée, l’espace consommé par celle-ci dans la base de données Exchange (et donc sur le disque dur) n’est pas libéré.

En effet la base de données contient juste des « espaces blancs » à la place des données de la boîte aux lettres. Le fonctionnement est le même lorsque des utilisateurs suppriment des éléments de leur boîtes aux lettres.

Il y a alors deux méthodes de récupérer l’espace :

  • Soit créer une nouvelle base de données Exchange, migrer toutes les boîtes dessus et supprimer l’ancienne base de données Exchange. Bien que fonctionnel et non impactant pour les utilisateurs, cette solution peut s’avérer longue et fastidieuse
  • Soit défragmenter la base de données Exchange en mode hors ligne. C’est cette action qui sera présentée dans la suite de l’article.

Identifier l’espace disque

Depuis Exchange Management Shell, exécuter la commande suivante :

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

La commande retournera la liste de toutes les bases de données de boîtes aux lettres disponibles sur le serveur, avec la taille actuelle DatabaseSize et le nouvel espace de boîte aux lettres disponible AvailableNewMailboxSpace.
Cet espace est essentiellement composé des fameux « espace blanc » de la base de données. Cette valeur indique la quantité d’espace qui peut être récupérée pour chaque base de données via la défragmentation.

Défragmenter hors ligne la base de données Exchange

Une défragmentation hors ligne (offline defrag) d’une base de données Exchange ne peut être exécutée que lorsque la base de données Exchange est démontée. Cela implique que les utilisateurs avec une boîte sur cette base de données ne pourront plus accéder à leur boite aussi longtemps que la base est démontée.

Afin de limiter les impacts utilisateurs, le processus est donc de le faire par base de données :

  1. Démonter la base de données Exchange DB0
  2. Exécuter la défragmentation de la base de données Exchange DB0
  3. Remonter la base de données Exchange DB0
  4. Démonter la base de données Exchange DB1
  5. Exécuter la défragmentation de la base de données Exchange DB1
  6. Remonter la base de données Exchange DB1
  7. Autres bases

Comme pour toute opération sur un environnement de production, il est fortement conseillé d’avoir une sauvegarde fonctionnelle en cas d’échec de la défragmentation.

Depuis le serveur Exchange, exécuter Exchange Management Shell en mode administrateur. Si la console est lancée en mode non admin, l’erreur suivante sera indiquée :

Operation terminated with error -1032 (JET_errFileAccessDenied, Cannot access file, the file is locked or in use) after 10.31 seconds.

Démonter la base de données sur laquelle réalisée la défragmentation. Ne pas oublier de prévenir les utilisateurs qui ne pourront plus accéder à leurs boîtes aux lettres :

Dismount-Database databaseName

Se déplacer dans le dossier qui contient le fichier de base de données Exchange(fichier .EDB). Si vous ne savez pas où il est, vous pouvez lister les base de données et l’emplacement du fichier .edb correspondant :

Get-MailboxDatabase | Select Name,EdbFilePath
cd <edbFilePath>

Lancer la défragmentation hors ligne :

eseutil /d edbFilePath.edb

Patienter durant le processus.

Une fois la défragmentation terminée, remonter la base de données :

Mount-Database databaseName

Si vous exécutez la commande initiale, la taille de la base de données occupée sur le disque DatabaseSize a diminué et l’espace blanc AvailableNewMailboxSpace doit être proche de zéro.

Get-MailboxDatabase -Status | select Name, DatabaseSize, AvailableNewMailboxSpace
Name           DatabaseSize                        AvailableNewMailboxSpace
----           ------------                        ------------------------
DB             104.6 GB (112,340,238,336 bytes)     104.4 GB (112,140,877,824 bytes)

Comments

banner-Bastien Perez
Bastien Perez

Freelance Microsoft 365 - Active Directory - Modern Workplace

France