Уменьшение размера базы почтового сервера Microsoft Exchange путём дефрагментации единственно возможным способ вернуть стремительно кончающиеся места на жестком диске не добавляя новый HDD. Необходимость дефрагментации неминуемое мероприятие, возникающие из-за «энтерпрайз» подхода в организации хранения данных в EDB (Exchange DataBase), когда удаленные почтовые ящики и письма не освобождают зарезервированное за ними место и автоматическое сжатие базы данных Exchange не происходит. Для примера, 10 почтовых ящиков весят 10ГБ, удаляем 9 ящиков, объем базы остался без изменений и сохранил свой размер в 10ГБ.
В первую очередь следует оценить масштаб бедствия, выясняем сколько можно освободить места. Запускаем командную консоль Exchange (Exchange Management Shell) и выполняем ниже указанную команду.
Get-MailboxDatabase -Status | ft name,databasesize,availablenewmailboxspace -auto
Переходим в папку где расположен файл базы данных, путь нужно заключить в кавычки, если в нём есть пробелы. Как узнать где расположена база данных можно из этой статьи. Следующей командой отключаем базу указав имя базы, а не название файла edb. Появится предупреждение, о том что все находящиеся в ней почтовые ящики будут недоступны, соглашаемся на отключение.
cd "E:\Exchange Server\V15\Mailbox\"Mailbox Database 0719125227" Dismount-Database -Identity Database1
Начнём выполнять нашу главную цель. Инструментом послужит служебная программа командной строки сервера Exchange — ESEUTIL. Это многофункциональная утилита не ограничивающаяся только дефрагментацией, но так же ей по силам восстановление, исправление ошибок, проверка целостности и проверка контрольных сумм базы данных. Но нам потребуется лишь одно ее умение.
Ключ /d требует указать имя файла edb, а ключ /t расположение временного файла базы данных. Внимательно отнеситесь к этому, процесс дефрагментации представляет из себя копирование из одного файла в другой и в процессе дефрагментации хранятся два файла одновременно, плюс временные файлы самой утилиты eseutil. Поэтому размер свободного пространства на диске должен быть больше размера самой базы данных c небольшим запасам в 10% для временных файлов.
С учетом этого, следует для ключа \t указать расположение где будет достаточно свободного места, это может быть любой жесткий диск (пропишем T:\tmp.edb), сетевое диск (T:\tmp.edb) или сетевое расположение (пропишем UNC-путь \\srv-tmp\tmp.edb). Стартуем!
eseutil /d "Mailbox Database 0719125227.edb" /t T:\tmp.edb
Под конец вернем базу в рабочее состояние.
Mount-Database Database1