Дефрагментація поштової бази 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.

Монтуємо базу:

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)