Дефрагментация почтовой базы Exchange 2010 | Windows для системных администраторов

Дефрагментация почтовой базы Exchange 2010

Необходимость дефрагментации почтовых баз в Exchange Server 2010 возникает из-за того, что при удалении информации из базы данных, она автоматически не сжимается (остаются пустые страницы), и соответственно размер файла базы не уменьшается. Например, если из почтовой базы размером 20 Гб перенести ящики пользователей, общим размером 5 Гб, то размер файла останется неизменным 20 ГБ. Однако, освободившиеся 5 Гб «свободного» места в дальнейшем будет использоваться новыми элементами.

Поэтому если вам необходимо уменьшить размер файла почтовой базы в Exchange 2010, удалив незанятые страницы, вы можете воспользоваться одной из следующих методик:

  • Создать новую базу данных, перенести вся ящики в нее и удалить старую базу
  • Выполнить офлайн дефрагментацию текущей базы

Каждая из указанных методик имеет свои плюсы и минусы. Офлайновая дефрагментация предполагает простой ящиков пользователей, но она является единственным доступным решением при нехватке дискового пространства (вам просто негде создать новую базу данных).

С другой стороны миграция ящиков в новую базу менее рискованная процедура, но помимо необходимости иметь достаточно свободного места для хранения двух почтовых хранилищ , генерирующая большое количество транзакций, также существенно увеличивающих требования к доступному свободному месту, и как результат, процесс переноса пользователей может занять несколько дней.

Следует четко различать процессы офлайн и онлайн (интерактивной) дефрагментации базы Exchange 2010. Интерактивная дефрагментация в Exchange выполняется постоянно при включенной опции Enable background database maintenance (24 x 7 ESE scanning). Эта процедура выполняется в фоновом режиме включает в себя удаление устаревших элементов в хранилище и оптимизацию расположения страниц. Основная задача – освободить неиспользуемое пространство за счет сжатия записей до минимально возможного количества страниц с целью сокращения количества операций ввода/вывода. Отметим, что неиспользуемое пространство не возвращается системе. Офлайн дефрагментация позволяет высвободить это пространство.

Определяем размер свободного места в базе Exchange 2010


Чтобы в Exchange 2010 узнать текущий размер базы данных и количество свободного места в ней (те самые неиспользуемые страницы), в Exchange Management Shell выполните следующую команду:

C:\>Get-MailboxDatabase -Status | ft name,databasesize, availablenewmailboxspace -auto

Name DatabaseSize AvailableNewMailboxSpace—- ———— ————————

WI-DB-01 17.26 GB (18,604,766,720 bytes) 8.544 GB (9,247,766,016 bytes)

WI-DB-02 14.63 GB (15,785,670,144 bytes) 4.696 GB (4,968,761,856 bytes)

WI-DB -Archive-01 658.1 MB (689,542,784 bytes) 234.6 MB (241,164,544 bytes)

В данном примере видно, что текущий размер базы WI-DB-01 17 Гб, причем свободного места в ней аж 8.5 Гб. И если вы хотите высвободить это место, размер файла почтовой базы можно уменьшить, выполнив дефрагментацию утилитой ESEUTIL.

Далее я покажу, каким образом можно дефрагментировать файл почтовой базы Exchange 2010 на отдельно стоящем сервере, который не является членом Database Availability Group.

ПРИМЕЧАНИЕ. Если ваш сервер входит в в группу DAG не используйте данную инструкицю!

Подготовка к дефрагментации Exchange 2010


При планировании дефрагментации базы нужно четко понимать, что для выполнения данной работы, необходимо отмонтировать нужную базу, что недоступность почты для всех пользователей, находящиеся в этой базе данных.

Далее необходимо удостовериться, что имеется достаточно свободного места для выполнения дефрагментации. В процессе дефрагментации создается новый файл базы и на диске одновременно хранятся старый и новый файл, кроме того нужно дополнительное место для временных файлов, создаваемых утилитой eseutil.

Поэтому, если вы собираетесь выполнить дефрагментацию почтовой Exchange, необходимо иметь свободное место, равному не менее 110% от текущего размера базы (без учета пустых страниц).

В моем случае это означает, что нам необходимо иметь как минимум 9,6 Гб свободного места на диске:

17.26 – 8.54 = 8.72

8.72 x 1.1 = 9.6

Если на текущем диске такого количества места нет, необходимо в параметрах eseutil указать альтернативное расположение временных файлов. Это может быть другой диск или сетевой UNC-путь, однако следует учесть, что при использовании UNC пути время дефрагментации может существенно увеличиться из-за пропускной способности и задержек сети.

Также нужно удостовериться, что вы у вас есть актуальная резервная копия дефрагментируемой базы данных, чтобы не было потом мучительно больно…

Использование ESEUtil для дефрагментации базы Exchange

Откройте командную строку Exchange Management Shell и перейдите в каталог с файлом почтовой базы:

cd D:\Data\WI-DB-01

Размонтируем базу.

Dismount-Database WI-DB-01

Запускаем дефрагментацию с помощью утилиты ESEUtil.

D:\Data\WI-DB-01>eseutil /d WI-DB-01.edb /t\\tmp_srv\exch\temp.edb

Extensible Storage Engine Utilities for Microsoft(R) Exchange Server

Version 14.01

Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating DEFRAGMENTATION mode…

Database: WI-DB-01.edb

Defragmentation Status (% complete)

0 10 20 30 40 50 60 70 80 90 100

|—-|—-|—-|—-|—-|—-|—-|—-|—-|—-|

……………………………………………

Moving ‘\\ tmp_srv\exch\temp.edb’ to ‘WI-DB-01.edb’…

File Copy Status (% complete)

0 10 20 30 40 50 60 70 80 90 100

|—-|—-|—-|—-|—-|—-|—-|—-|—-|—-|

……………………………………………

Note:

It is recommended that you immediately perform a full backup

of this database. If you restore a backup made before the

defragmentation, the database will be rolled back to the state

it was in at the time of that backup.

Operation completed successfully in 2798.218 seconds.

Дефрагментация  Exchange 2010

Монтируем базу:

mount-Database WI-DB-01

Убедимся, что ее размер уменьшился:

Get-MailboxDatabase -Status | ft name,databasesize,availablenewmailboxspace -auto

Name DatabaseSize AvailableNewMailboxSpace

—- ———— ————————

WI-DB-01 8.328 GB (8,942,190,592 bytes) 5.219 MB (5,472,256 bytes)

WI-DB-02 14.63 GB (15,785,670,144 bytes) 4.696 GB (4,968,761,856 bytes)

WI-DB -Archive-01 658.1 MB (689,542,784 bytes) 234.6 MB (241,164,544 bytes)

Еще записи по теме: Exchange
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 18

Оставить комментарий
  1. Fanta | 08.06.2012

    Как определить приблизительное время дефрагментации?

    Ответить
  2. itpro | 08.06.2012

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

    Ответить
  3. Fanta | 08.06.2012

    30 Гб/час применять к какому размеру ДБ ?

    Ответить
  4. Fanta | 08.06.2012

    30 Гб/час применимо к какому размеру?

    Ответить
  5. antonon | 08.06.2012

    Такая схема подойдет для Exchange 2003?

    Ответить
  6. itpro | 09.06.2012

    Fanta 50 Гб база у меня дефрагментрировалась чуть меньше 2 часов

    antonon Да, в Exchange 2003 также можно выполнить дефрагментацию с помощью утилиты eseutil /d. Принципы примерно такие-же

    Ответить
  7. роь | 10.08.2012

    Если у меня база на D диске, на котором месте меньше свободного чем сама база. как мне вписать строчку правильно?
    или надо перенести базу на внешний диск и на нем делать дефрагментацию?

    Ответить
  8. itpro | 18.08.2012

    роь Внимательно перепрочтите статью, и если условие о том, что необходимо иметь свободное место, равному не менее 110% от текущего размера базы (без учета пустых страниц) не выполняется, тогда придется необходимо в параметрах eseutil указать альтернативное расположение временных файлов.
    Т.е. если база находится на диске D, но вы также подключили некое внешнее хранилище под буквой U, то дефрагментацию можно запустить командой: D:\Data\WI-DB-01>eseutil /d WI-DB-01.edb /tu:\temp_defrag.edb

    Ответить
  9. роь | 18.08.2012

    У меня база 30 Гб. сделал дефрагментацию и уменьшилось всего на 4Гб. хотя очень много ящиков было удалено и пользователей. там должно было в двое уменьшится .

    Ответить
  10. itpro | 18.08.2012

    А что команда PoSh выдает?
    Get-MailboxDatabase -Status | ft name,databasesize, availablenewmailboxspace -aut

    Ответить
  11. роь | 18.08.2012

    что это за команда и как ее вводить?
    база должна быть откреплена?

    Ответить
  12. itpro | 20.08.2012

    роь это команда Powershell. Вводится она в одноименной консоли (настоятельно рекомендую познакомится с основами Powershell, т.к. это позволяет существенно облегчить работу с Exchange 2010/2007), база должна быть смонтирована

    Ответить
  13. evdpavel | 30.08.2012

    Маленькое уточнение:
    Get-MailboxDatabase -Status | ft name,databasesize, availablenewmailboxspace -auto
    показывает статистику по всем базам в организации.
    Get-MailboxDatabase -Server Server -Status | ft name,databasesize, availablenewmailboxspace -auto
    показывает статистику по всем базам на сервере Server

    Ответить
  14. Af | 06.04.2013

    На сервере Exchange 2003 нет места, а база очень выросла, надо делать дефрагментацию.
    Могу я eseutil.exe скопировать на пользовательский компьютер вместе с базой Exchange и запустить дефрагментацию из под Windows 7?

    Ответить
    • itpro | 06.04.2013

      Да, можете

      Ответить
  15. Af | 06.04.2013

    скопировал файлы eseutil.exe, ese.dll, jcb.dll, exosal.dll и exchmem.dll из папки Exchsrvr\Bin в компьютере Exchange 2003 во временную папку,
    запустил, команду C:\Users>1\eseutil.exe /d D:\mail\priv1.edb
     
    пошел процесс, через некоторое время пишет
    unable to find callback library jcb.dll (or one of ots dependencies). Copy in the file and hit OK to retry, or hit Cancel to abort.
     
    Хотя этот файл есть. Заменил его еще раз, но сообщение так и появляется.
    Что можно сделать?

    Ответить
    • itpro | 06.04.2013

      Может нужно библиотеки зарегистрировать regsvr32…
      а Windows 7 случайно не 64 -разрядная?

      Ответить
  16. Af | 06.04.2013

    Windows 7 x32

    Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)



MAXCACHE: 0.27MB/0.00190 sec