База Exchange может занимать на диске заметно больше места, чем реально используют почтовые ящики. После удаления большого объёма данных внутри .edb появляется белое пространство. Exchange использует его повторно, но сам файл обычно не уменьшается.
Если нужно уменьшить именно размер файла .edb, используют offline defrag через eseutil /d. Это операция с простоем: базу придётся отключить.
Когда сжатие оправдано
- удалили или перенесли много ящиков;
- нужно вернуть место на томе;
- есть окно обслуживания и свежий бэкап;
- вы понимаете, что база будет offline до завершения операции.
Проверяем размер и пути
Get-MailboxDatabase -Status | Select-Object Name, Mounted, DatabaseSize, AvailableNewMailboxSpace, EdbFilePath, LogFolderPath
AvailableNewMailboxSpace показывает, сколько места внутри базы Exchange может использовать повторно.
Отключаем базу
Dismount-Database -Identity 'Mailbox Database 01' Get-MailboxDatabase -Status 'Mailbox Database 01' | Select-Object Name, Mounted
Запускаем eseutil /d
Укажите путь к .edb. На диске должен быть большой запас места под временную базу.
eseutil /d "D:\ExchangeDatabases\DB01\DB01.edb"
Если рядом с базой мало места, временный файл можно вынести на другой быстрый том.
eseutil /d "D:\ExchangeDatabases\DB01\DB01.edb" /t"E:\Temp\DB01-temp.edb"
Проверяем состояние базы
eseutil /mh "D:\ExchangeDatabases\DB01\DB01.edb"
Смотрите, чтобы состояние было Clean Shutdown. Если база в Dirty Shutdown, сначала разбирайтесь с логами и восстановлением.
Монтируем базу обратно
Mount-Database -Identity 'Mailbox Database 01' Get-MailboxDatabase -Status 'Mailbox Database 01' | Select-Object Name, Mounted, DatabaseSize Test-MapiConnectivity -Database 'Mailbox Database 01'
Риски
- нет свежего бэкапа;
- недостаточно места под временную базу;
- операция запущена в рабочее время;
- процесс eseutil прервали вручную;
- администратор перепутал белое пространство с размером файла на диске.
Альтернатива
Во многих случаях безопаснее создать новую mailbox database и перенести ящики в неё. Это дольше, зато без длительного offline defrag одной большой базы.
Сколько свободного места нужно
Для eseutil /d нужен временный файл. В безопасной оценке держите свободного места не меньше размера текущей базы, а лучше с запасом. Если база 500 ГБ, пытаться сжимать её на томе с 80 ГБ свободного места бессмысленно.
Временный файл можно вынести на другой диск через /t, но этот диск должен быть быстрым и надёжным. Медленный USB-диск или сетевой ресурс превратят обслуживание в лотерею.
Что делать с логами Exchange
Не удаляйте transaction logs вручную, чтобы освободить место перед сжатием. Логи Exchange чистятся штатным бэкапом или после корректных операций обслуживания. Ручное удаление логов может усложнить восстановление базы.
После операции
- проверьте, что база смонтировалась;
- проверьте доступ к нескольким почтовым ящикам;
- убедитесь, что новые логи создаются нормально;
- запустите или дождитесь штатного бэкапа;
- зафиксируйте новый размер базы и свободное место на томе.
Если цель — долгосрочно навести порядок, одного сжатия мало. Проверьте лимиты ящиков, retention, архивирование и рост баз за последние месяцы.
FAQ
Можно ли сжать базу Exchange онлайн? Именно уменьшить файл .edb через eseutil /d онлайн нельзя. База должна быть отключена. Если простой недопустим, чаще выбирают создание новой базы и перенос ящиков.
Почему после удаления писем файл не уменьшился? Exchange оставляет свободное место внутри базы и использует его повторно. Это нормально. Размер файла на диске уменьшается только после offline defrag или после переноса ящиков в новую базу.
Нужно ли запускать eseutil регулярно? Нет. Регулярный offline defrag для Exchange обычно не нужен. Если база постоянно растёт, ищите причину: лимиты, retention, архивирование, большие ящики и политику хранения.


