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

Задачи обслуживания Exchange Server

В ходе планового автоматизированного обслуживания базы данных Exchange 2003 выполняется 11 задач:

  1. Очистка индексов в хранилищах почтовых ящиков и общих папок.
  2. Обслуживание помеченных на удаление почтовых ящиков и общих папок
  3. Удаление просроченных сообщений из мусорной корзины для хранилищ почтовых ящиков и общих папок.
  4. Удаление просроченных сообщений из общих папок.
  5. Уничтожение удаленных общих папок, срок хранения которых превышает 180 дней.
  6. Устранение конфликтов сообщений внутри общих папок.
  7. Обновление информации о версии сервера в общих папках.
  8. Проверка и удаление дублированных папок сайта в хранилищах общих папок.
  9. Уничтожение удаленных почтовых ящиков в хранилищах почтовых ящиков.
  10. Проверка таблицы сообщений для сообщений-«сирот» (сообщений с нулевым значением счетчика ссылок).
  11. Оперативная дефрагментация Exchange Information Store (IS).

Очевидно, что для выполнения задачи 11 в хранилище Exchange может потребоваться немало времени, в зависимости от размера базы данных и ее состояния на момент начала цикла обслуживания. Проблема в том, что задачи обслуживания должны выполняться с минимальными неудобствами для пользователей. В большинстве случаев для этого требуется проводить обслуживание ночью, но без помех для еженощного резервного копирования. Таким образом, для обслуживания IS обычно не остается свободного времени.
Из-за временных ограничений не всегда удается проводить все операции обслуживания каждую ночь, поэтому Exchange назначает задачам приоритет. Установить приоритеты несложно. Первые 10 задач в списке имеют равные приоритеты. Но задача 11 (оперативная дефрагментация IS) считается более важной, чем остальные десять.
При первом запуске цикла обслуживания Exchange исполняется первая задача в списке, а затем столько других задач по списку, сколько удается выполнить за отведенное время. Если до окончания периода обслуживания остается только 15 минут и не все задачи завершены, Exchange должен принять решение. Если весь период обслуживания уходит на выполнение одной задачи и она еще не завершена, то остаток периода обслуживания будет отведен на нее. Но если хотя бы одна задача завершена, Exchange отмечает последнюю завершенную задачу, отменяет текущую задачу и начинает оперативную дефрагментацию. Оперативная дефрагментация считается более важной, чем прочие задачи обслуживания, и может продолжаться в течение часа после окончания срока обслуживания.
В следующем запланированном периоде обслуживания Exchange проверяет, какая задача успешно завершена последней (не считая оперативной дефрагментации), и запускает следующую задачу в списке. Благодаря тому что обработка списка задач не повторяется каждую ночь с самого начала, время от времени наступает очередь каждой из задач.

Изменение периода обслуживания

Прежде чем рассказать об изменении периода обслуживания хранилищ, необходимо отметить два обстоятельства. Во-первых, обслуживание выполняется на уровне IS. Поэтому, если в экземпляре Exchange содержится несколько хранилищ, необходимо запланировать задачи обслуживания для каждого хранилища отдельно. Во-вторых, для обслуживания IS требуется много ресурсов, в частности места на диске и времени процессора. Это необходимо учитывать при планировании. Если цикл обслуживания запускается каждую ночь во время резервного копирования, то эти два процесса будут соперничать за ресурсы диска, и оба существенно замедлятся.
Администратору хорошо известны периоды максимальной нагрузки на сервер и время начала и завершения сеанса резервного копирования. Расписание обслуживания желательно составлять с учетом этих сведений. Например, если пользователи начинают работать около 7:30 утра, а к 18:00 почти все расходятся по домам и сеанс копирования начинается в 23:00, можно запланировать обслуживание на время с 18:30 до 10:30 каждый вечер.
При подготовке расписания следует помнить, что обслуживание требует большого количества ресурсов и выполняется на уровне IS. Если в Exchange Server несколько хранилищ, рекомендуется назначить обслуживание каждого хранилища на разное время, хотя при большом числе хранилищ это не всегда выполнимо.

Экран 1 

Стандартное расписание обслуживания Exchange позволяет обрабатывать все хранилища каждую ночь с полуночи до 4 часов  утра. Чтобы изменить расписание обслуживания, следует открыть диспетчер Exchange System Manager (ESM) и перейти по дереву консоли к Administrative Groups, определенной административной группе, Servers, нужному серверу, группе хранения и конкретному хранилищу. Щелкнув правой кнопкой мыши на хранилище, для которого требуется внести изменения, следует выбрать пункт Properties из контекстного меню и вкладку Database (экран 1). Из раскрывающегося списка Maintenance interval на вкладке Database можно выбрать четырехчасовые блоки времени в качестве ежедневного (или еженощного) периода обслуживания IS.

Экран 2 

С помощью раскрывающегося списка Maintenance interval можно указать период обслуживания хранилища, но выбор администратора не ограничивается только возможностями, представленными в меню. Можно нажать кнопку Customize и создать для хранилища специальное расписание обслуживания. При этом на экране появляется окно подготовки расписания (экран 2). Настоятельно рекомендуется составить расписание, в котором на обслуживание выделяется по крайней мере 4 часа в сутки, но администратор может пропускать дни, увеличивать или сокращать сроки. Пропуская сеансы, следует помнить, что цель обслуживания — обеспечить максимальную эффективность IS и предотвратить порчу данных. В результате пропуска сеансов увеличивается вероятность снижения производительности и ошибок в IS.

Настройка оперативной дефрагментации

Управлять временем обслуживания хранилищ Exchange довольно просто. Изменив несколько параметров реестра, можно задать способ и время оперативной дефрагментации.
Как отмечалось выше, если завершена по крайней мере одна задача, оперативная дефрагментация начинается за 15 минут до окончания периода обслуживания и может продолжаться до одного часа после окончания этого периода. Однако, изменив реестр, можно продлить время дефрагментации или настроить расписание таким образом, чтобы обслуживание не мешало резервному копированию.
Местоположение параметров реестра, обеспечивающих автоматическую оперативную дефрагментацию, слегка различается для частного хранилища (хранилища почтовых ящиков) и общего хранилища (хранилища общих папок). Если нужно изменить способ дефрагментации частного хранилища, используется раздел HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISservernamePrivate-GUID, где servername — имя сервера, а GUID — глобально уникальный идентификатор (GUID). Если требуется изменить параметры оперативной дефрагментации общего хранилища, то используется раздел HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISservernamePublic-GUID. На экране 3 показано местоположение параметров реестра, определяющих способ оперативной дефрагментации.

Экран 3 

Первый прием, о котором пойдет речь, — настройка времени, отведенного для оперативной дефрагментации в конце периода обслуживания. Чтобы изменить это время, следует создать параметр типа REG_DWORD с именем OLD Minimum RunTime в одном из перечисленных выше разделов, в зависимости от хранилища. Следует задать значение параметра, которое отражает число минут, выделенное для оперативной дефрагментации в конце периода обслуживания.
Второй прием настройки реестра для управления дефрагментацией заключается в создании параметра типа REG_DWORD с именем OLD Completion Time. Этот параметр задает время, в течение которого процесс дефрагментации продолжается после окончания периода обслуживания (по умолчанию — один час). Значение параметра показывает число секунд, дополнительно выделяемых для процесса дефрагментации (3600 секунд = один час). Если изменить эти значения, анализатор Exchange Server Best Practices Analyzer (ExBPA) отметит данную конфигурацию и выдаст сообщение о нестандартных настройках. Дополнительные сведения можно найти в статье Microsoft «OLD Minimum RunTime for a public folder store is non-default» по адресу http://www.microsoft.com/technet/prodtechnol/exchange/analyzer/5ba05346-788c-4d16-8f0f-d6631e418a83.mspx?mfr=true.

Чистка удаленных почтовых ящиков

После настройки графика обслуживания и процесса оперативной дефрагментации рассмотрим изменения в некоторых других задачах обслуживания (не все задачи можно настроить).
Первая задача — уничтожить помеченные для удаления почтовые ящики. По умолчанию почтовый ящик, удаленный администратором, сохраняется в базе данных Exchange в течение 30 дней. После окончания периода хранения задача Clean Up Deleted Mailboxes уничтожает помеченные к удалению почтовые ящики в IS. Этот процесс отличается от хранения обычного удаленного элемента тем, что в данном случае речь идет о целых удаленных ящиках, а не просто удаленных сообщениях. Просроченные сообщения уничтожаются отдельной задачей обслуживания.
Период хранения помеченных к удалению почтовых ящиков назначается в Active Directory (AD). Для этого нужно открыть утилиту ADSI Edit, в которой есть инструментарий Windows Server 2003 Support Tools. По дереву консоли следует перейти к Configuration, конфигурации домена, содержащего Exchange Server, Services, Microsoft Exchange, организации Exchange, Administrative Groups, соответствующей административной группе, Servers, нужному Exchange Server, Information Store.
Затем требуется выбрать группу хранения (SG), где содержится хранилище, с которым предстоит работать.

Экран 4 

После того как выбран подходящий SG, хранилища внутри SG отображаются в столбце справа. Щелкнув правой кнопкой мыши на хранилище, свойства которого требуется изменить, следует выбрать пункт Properties, чтобы просмотреть атрибуты объекта хранилища. Затем нужно выбрать атрибут msExchMailboxRetentionPeriod (экран 4) и с помощью кнопки Edit задать новый период хранения (в секундах) для хранилища. Это значение по умолчанию составляет 2 592 000 секунд, или 30 дней.

Удаление просроченных сообщений из корзины

Когда пользователь удаляет сообщение, на самом деле оно не уничтожается. Клиент устанавливает флажок ptaMsgDeleted, отмечая сообщение как удаленное, и больше не показывает его.
Следующие события зависят от того, активна ли в клиентском компьютере функция Deleted Items Retention (мусорная корзина). Если корзина отключена, то удаленные сообщения окончательно уничтожаются при следующем запуске задачи удаления просроченных сообщений из мусорной корзины. Если корзина активна, то каждому удаленному сообщению назначается период хранения, и задача удаления просроченных сообщений из мусорной корзины окончательно уничтожает сообщения только после завершения периода хранения.
Чтобы задать период хранения удаленных сообщений, следует открыть редактор реестра, перейти в раздел HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISservernamePrivate-GUID или HKEY_LOCAL| MACHI- NESYSTEMCurrentControlSetServicesMSExchangeISservernamePublic-GUID и создать параметр типа REG_DWORD с именем Deletion Thread Period. Ему следует присвоить значение, соответствующее нужному периоду хранения (в секундах).

Чистка индексов

Каждый раз при сортировке информации в базе данных Exchange Server механизм Extensible Storage Engine (ESE) динамически выполняет индексацию для сортированного представления. Если эти индексы со временем не уничтожаются, в конечном итоге у каждого хранилища могут образоваться тысячи индексов. Чтобы предотвратить подобную ситуацию, каждому индексу Exchange назначается срок действия. В Exchange 2003 этот срок истекает спустя 40 дней после создания индекса (восемь дней в Exchange Server 5.5).
После того как построен индекс, Exchange добавляет ссылку на индекс и срок действия во внутреннюю таблицу, именуемую таблицей старения индекса (index aging table). Когда Exchange выполняет задачу очистки индекса, эту таблицу используют для того, чтобы выяснить, срок каких индексов (если они есть) истек, и удалить их.
AD управляет временем хранения индексов. Чтобы изменить данный параметр, можно запустить утилиту ADSI Edit и перейти к Configuration, конфигурации домена, содержащего сервер Exchange, Services, Microsoft Exchange, организации Exchange, Administrative Groups, соответствующей административной группе, Servers, нужному Exchange Server, Information Store. Следует выбрать SG, в котором содержится хранилище. Обычно этот параметр изменяют, только если не хватает ресурсов сервера.
Время хранения индекса управляется атрибутом msExchAgingKeepTime. По умолчанию это значение не установлено, но администратор может задать число секунд для хранения индексов. Атрибуту не присваивается значение по умолчанию, так как изначально для управления временем хранения индекса использовался реестр. Управлять временем хранения можно по-прежнему через реестр, но атрибут AD весомее параметров, установленных в реестре.
Чтобы изменить время хранения индекса через реестр, можно создать необходимый параметр в HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISParametersSystem. Существует два параметра, изменяя которые можно управлять хранением индекса. Первый — Aging Keep Time (типа REG_DWORD). Функция этого параметра — такая же, как у объекта AD. С его помощью можно задать число секунд, в течение которых сохраняются индексы. По умолчанию индексы в Exchange 2003 хранятся 40 дней.
Второй параметр, который можно создать, — Aging Clean Interval (типа REG_DWORD). Этот параметр управляет интервалом (в секундах) между попытками Exchange очистить просроченные индексы. По умолчанию Exchange 2003 пытается очистить просроченные индексы через каждые 24 часа.
Как правило, оба параметра реестра лучше оставить без изменений. Иногда целесообразно уменьшить значение Aging Keep Time относительно стандартного значения 40 дней. Если в папке слишком много кэшированных операций поиска, обратных ссылок, ограничений и других элементов, время отклика клиента сильно замедляется.
Если время отклика клиента становится чрезвычайно медленным и появляются сообщения об ошибках Messaging API (MAPI), содержащие фразу Client Operation Failed, можно решить проблему, уменьшив значение Aging Keep Time. Еще один симптом, указывающий на целесообразность сокращения периода Aging Keep Time, — увеличение времени отклика при доступе к некоторым папкам в хранилище при нормальной скорости обращения к другим папкам в том же хранилище.
Можно уменьшить интервал Aging Clean Interval, чтобы чаще удалять просроченные индексы, но делать это рекомендуется только по совету специалистов службы Microsoft Product Support Services (PSS), так как чистка просроченных индексов может потребовать много ресурсов.

Разрешение конфликтов сообщений внутри общих папок

Одна из малоизвестных задач обслуживания Exchange — разрешение конфликтов сообщений в общих папках. Суть проблемы заключается в том, что общие папки можно реплицировать между несколькими серверами. Если в общей папке одновременно изменяются две или несколько реплицированных копий сообщения, то для данного сообщения возникает конфликт.
Exchange предоставляет владельцу общей папки определенное время, чтобы устранить конфликт вручную. Этот период времени называется предельным возрастом конфликта. Если владелец общей папки не устраняет конфликт в установленное время, то задача разрешения конфликтов сообщений автоматически устраняет конфликт в соответствии с внутренним набором правил.
Предельный возраст конфликта можно установить или изменить, настраивая параметры реестра. Для этого необходимо перейти в раздел HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSExchangeISservernamePublic-GUID и создать параметр типа REG_DWORD с именем Replication Folder Conflict Age Limit. Ему следует присвоить значение, которое показывает допустимый срок существования конфликта сообщений (в днях).

Уничтожение просроченных сообщений из общих папок

Последняя задача обслуживания, о которой будет рассказано в данной статье, — удаление просроченных сообщений из общих папок. Срок хранения сообщений назначается для каждой папки, поэтому не существует такого параметра реестра, чтобы глобально настроить этот период. Однако можно создать параметр реестра, чтобы управлять частотой удаления просроченных сообщений из общих папок. Применять этот параметр следует с осторожностью, так как он может нарушить другие задачи обслуживания. Чтобы задать частоту удаления сообщений, нужно перейти к разделу HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesMSExchangeISservernamePublic-GUID и создать параметр типа REG_DWORD с именем Replication Expiry. Ему необходимо задать значение, которое показывает число миллисекунд между операциями удаления сообщений.

Автоматически — не значит «руки прочь»

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

Брайен Поуси (http://www.brienposey.com) — вице-президент по исследованиям компании Relevant Technologies. Автор статей на технические темы для различных изданий и Web-узлов