Exchange 2003: Дефрагментация базы данных

Столкнулся с тем, что на почтовом сервере закончилось свободное место. Причиной оказалась база данных exchange в которой храниться содержимое почтовых ящиков. За нее отвечают два файла: priv1.edb и priv1.stm, у меня они занимали 90 ГБ и 16 ГБ соответственно. В таких случаях первое что нужно сделать - это посмотреть какие ящики заняли больше всего места и почистить их содержимое, удалить не нужные почтовые ящики (например ящики не работающих/уволенных сотрудников). Я таким образом освободил  более 50 ГБ. И сделать оффлайн дефрагментацию.

Посмотреть занимаемое пространство и удалить не нужные ящики можно в Exchange System Manager - Administrative Group - First Adminisrative Group - Servers - ВашСервер - First Storage Group - MailboxStore.

Стоит знать что после такой "чистки" вы отнюдь не уменьшите саму базу priv1.edb, пока Вы только удалили в этой базе не нужные данные/содержимое. Для того чтоб уменьшился размер самого файла priv1.edb необходимо сделать оффлайн дефрагментацию.

Есть два вида дефрагментации: онлайн и офлайн.

Онлайн дефрагментация просто перемещает данные в базе данных, то есть перемещает данные в начало файла, а незанятое пространство в конец файла, это напоминает дефрагментацию логического диска - если в нем занято 50% объема, то это не значит что после дефрагментации он уменьшиться до 50% от начального объема, в нем просто данные переместятся в начало логического диска, а свободное пространство в конец. Онлайн дефрагментация выполняется exchange сервером автоматически.

Итак, для того, чтоб уменьшить размер файлов priv1.edb и priv1.stm необходимо выполнить оффлайн дефрагментацию. Для этого нам нужно отключить базу данных от exchange (потому дефрагментация и называется "оффлайн") -  в Exchange System Manager жмем правой кнопкой на Mailbox Store и выбираем пункт Dismount Store. Содержимое базы данных будет недоступно до тех пор, пока она отключена, то есть личные почтовые ящики будут недоступны/нерабочие.

Для офлайн дефрагментации нам понадобиться утилита eseutil, которая находиться в папке "C:\Program Files\Exchsrvr\bin".

Мне посоветовали сначала проверить базу данных сервера Exchange на наличие ошибок, прежде чем приступить к ее дефрагментации. Делается это все той же утилитой eseutil в "оффлайн режиме". Покажу как выполнять проверку на наличие ошибок на своем примере. В консоли переходим в папку "C:\Program Files\Exchsrvr\bin" и вводим такую команду

eseutil.exe /g "c:\Program Files\Exchsrvr\MDBDATA\priv1.edb" /t e:\privedbintegrity.edb

Параметр /g отвечает за проверку на наличие ошибок (читайте справку на Microsoft), для этого может понадобиться 20% свободного пространства на диске от объема базы данных (создается временный файл). Но у меня нет свободного пространства, потому я подключил usb-диск и использовал параметр /t в котором указал чтоб временный файл создался на подключенном диске:

/t e:\privedbintegrity.edb

Проверка на ошибки у меня длилась полтора часа. Ошибок нет, можно приступать к дефрагментации.

Для оффлайн дефрагментации используется утилита eseutil и параметр /d (справка от Microsoft). Для дефрагментации понадобиться 120%  свободного пространства от объема дефрагментируемой базы: на локальном диске создается временный файл, в него записывается дефрагментированная база данных, после чего исходный файл базы данных заменяется тем, который был временным. Но так, как у меня на локальном диске нет свободного пространства я использовал параметры /p и /t. Параметр /p - дает команду чтобы временный файл создавался, но не замещался, а с помощью /t можно указать где этот временный файл сохранять, в моем случае на подключенном usb-диске e:

eseutil.exe /d /p "c:\Program Files\Exchsrvr\MDBDATA\priv1.edb" /t e:\priv1tmp.edb

После того, как дефрагментация закончиться файлы priv1.edb и priv1.stm можно на всякий случай куда-либо переместить, а временные файлы priv1tmp.edb и priv1tmp.stm переименовать и скопировать в c:\Program Files\Exchsrvr\MDBDATA\ вместо старых. Осталось в Exchange System Manager подключить Mailbox Store - правая кнопка мышки и пункт "Mount". Дефрагментация закончена.

Дефрагментация длилась 6.5 часов, уменьшила суммарный размер файлов priv1.edb и priv1.stm с 105 ГБ до 38 ГБ, потребляла максимум 25% CPU 4-х ядерного процессора и не более 2 ГБ ОЗУ из 4 ГБ доступных, заметил что ненужно допускать блокировки экрана, иначе процесс приостанавливается.

Я проводил дефрагментацию в выходной день по удаленке (чтоб не "куковать" за компьютером), все таки для организаций доступность почты достаточно критична. Прежде чем провести дефрагментацию личных почтовых ящиков, я в будний день потренировался на общих почтовых папках (Exchange System Manager - Administrative Group - First Adminisrative Group - Servers - ВашСервер - First Storage Group - Public Folder Store ), отключение которых не так критично. За них отвечают файлы pub1.edb и pub1.stm, они уменьшились с 2 ГБ до 40 МБ, тем самым освободил 2 ГБ чтобы безболезненно "дожить" до выходных.

Понравилось? =) Поделись с друзьями:

Обсудить