Тони Редмонд (exchguru@windowsitpro.com) — редактор журнала Windows IT Pro, старший технический редактор Exchange & Outlook Administrator, вице-президент и главный технолог HP Services

Известия о повреждении данных почтовых ящиков повергают в ужас многих администраторов Microsoft Exchange. Их можно понять: в подобных ситуациях дело почти всегда доходит до восстановления базы данных. А все мы знаем, что восстановление базы данных — удовольствие весьма сомнительное.

На форуме TechNet Exchange 2010 Server нередко проводятся дискуссии о случаях повреждения данных в процессе перемещения почтовых ящиков, а также о потрясениях, переживаемых администраторами, когда те читают такие, например, сообщения: Error: This mailbox exceeded the maximum number of corrupted items that were specified for this move request («Ошибка: число поврежденных элементов в этом ящике превысило максимальное значение, установленное для запроса на данное перемещение»). Эта ошибка возникает в случае, когда администратор хочет уточнить статус выполняемого в данный момент перемещения почтового ящика и вводит команду Get-MoveRequestStatistics. Бывает также, что означенная ошибка фиксируется в журнале событий Application как событие 1100 из источника MSExchange Mailbox Replication.

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

Служба репликации почтовых ящиков и поврежденные элементы

На концептуальном уровне понять, в чем состоит ошибка, довольно просто. Служба репликации почтовых ящиков Exchange 2010 Mailbox Replication Service (MRS) выполняется на серверах клиентского доступа и обеспечивает перемещение содержимого почтовых ящиков в асинхронном режиме. Иными словами, служба MRS перемещает почтовые ящики без видимых проявлений, так что пользователи могут продолжать работу вплоть до появления новых почтовых ящиков и до того момента, когда MRS переключит указатели AD для пользовательской учетной записи так, чтобы они указывали на новое место хранения почтового ящика. MRS может функционировать в системах Exchange Server 2003, Exchange Server 2007, Exchange 2010 и Exchange Online (часть платформы Microsoft Office 365); иначе говоря, это вполне универсальный компонент. Кроме того, служба MRS может способствовать поддержанию баз данных Exchange в работоспособном состоянии; но об этом речь впереди.

MRS обрабатывает почтовые ящики в соответствии с запросами на перемещение. В таких запросах описывается целевая база данных и другие параметры, влияющие на то, каким образом службе репликации следует работать с почтовыми ящиками. К примеру, применение в запросе на перемещение такого параметра, как SuspendWhenReadyToComplete, дает возможность приостанавливать процесс перемещения в тот момент, когда процедура копирования почтового ящика близка к завершению. Это действие позволяет администратору просмотреть отчет о перемещении, убедиться, что все в порядке, и затем возобновить выполнение запроса на перемещение, давая возможность службе MRS переключить настройки Active Directory (AD) и перенаправить пользователя к его новому почтовому ящику еще до того, как процесс перемещения возобновится. Другой параметр представляет разрешенный предел поврежденных элементов — иными словами, максимальное число поврежденных элементов, при котором запрос на перемещение может быть выполнен до конца. В этом контексте термин «поврежденный» означает, что свойство или свойства элемента, которые относятся к категории некорректных, искаженных или по иной причине неприемлемых для Exchange, определяются службой MRS.

По умолчанию значение лимита на поврежденные элементы принимается равным 0; это значит, что служба MRS не допускает перемещений почтовых ящиков даже при минимальной потере данных. Иногда такой подход целесообразен — в ситуациях, когда требуется сохранить абсолютно все данные. Однако при этом перемещение почтовых ящиков может вообще оказаться невозможным: MRS будет раз за разом обнаруживать поврежденные данные, произойдет сбой, и вы получите упоминавшееся ранее сообщение об ошибке. По этой причине лучше всего устанавливать не столь жесткий лимит на поврежденные элементы. Кроме того, рекомендуется проверять отчеты о перемещении почтовых ящиков по завершении запросов. Так вы сможете установить, обоснован ли установленный лимит или при перемещении теряются ценные данные. По моим представлениям, значение этого параметра в пределах от 10 до 20 вполне обоснованно, но вам следует принимать решение с учетом конкретных условий эксплуатации и организационных требований.

Если вы придете к заключению, что тот или иной почтовый ящик необходимо переместить независимо от объема данных, утрачиваемых в процессе переноса, можете установить для лимита на поврежденные элементы очень высокое значение. Тогда MRS будет вынуждена переместить данный ящик, что называется, любой ценой. Максимально возможное пороговое значение составляет 2147483647, но, может быть, лучше начать со значения 100. Кстати, после того как вы установите предельное число допустимых поврежденных элементов равным или превосходящим отметку 51, вам нужно будет передать программе параметр-переключатель AcceptLargeDataLoss; таким образом вы известите службу MRS о том, что допускается потеря всех поврежденных элементов.

Требуется вмешательство оператора

Если выполнение запроса на перемещение прекращается потому, что служба MRS обнаруживает слишком большое количество поврежденных элементов, в процесс может вмешаться администратор. Он внесет поправки в параметры запроса на перемещение, и выполнение запроса возобновится. С помощью команды Set-MoveRequest внесите изменения в параметр BadItemLimit и увеличивайте пороговое значение для поврежденных элементов до тех пор, пока MRS не будет в состоянии осуществить перемещение почтового ящика; после этого дайте службе MRS указание возобновить перемещение.

Представим для примера, что перемещение почтового ящика пользователя TRedmond застопорилось по той причине, что служба MRS обнаружила слишком большое число поврежденных элементов. Первым делом просмотрите отчет о перемещении. С помощью консоли управления Exchange Management Console (EMC) проанализируйте свойства запроса на перемещение и выявите элементы, вызывающие проблему. Возможно, целесообразно рассмотреть вопрос, стоит ли каким-либо образом модифицировать почтовый ящик перед тем, как продолжать операцию перемещения. Подробные инструкции относительно того, как обращаться к отчету о перемещении почтового ящика, можно найти в статье Microsoft «View Move Request Properties» (http://technet.microsoft.com/en-us/library/dd876924.aspx).

Пусть значение лимита на поврежденные элементы для рассматриваемого запроса на перемещение первоначально составляло 10, а служба MRS в процессе копирования данных с исходного почтового ящика на целевой обнаружила более 10 таких элементов. Мы можем, внимательно просмотрев отчет о перемещении почтового ящика, определить, насколько далеко продвинулась служба MRS по состоянию на тот момент, когда упомянутый лимит был исчерпан. Дело в том, что в процессе функционирования MRS регулярно выставляет контрольные точки. Это нужно для того, чтобы служба могла возобновлять выполнение запроса на перемещение без повторного выполнения уже проделанной работы. Так вот, MRS сообщает о состоянии контрольной точки, точнее сказать — о проценте выполненной на данный момент работы. Эта процентная доля отражает общий ход перемещения и в ней учитываются и другие виды работ: подключение к исходному и целевому серверам, установка целевого почтового ящика и подготовка к процедуре копирования. Промежуток, ограниченный отметками в 25 и в 90 % общего процесса перемещения, включает копирование данных почтового ящика. Если MRS зафиксирует достижение лимита на количество поврежденных элементов, это случится именно в указанном диапазоне.

Вернемся к нашему примеру. Допустим, в отчете о перемещении почтового ящика указывается, что служба MRS прекратила процесс перемещения при выполнении 80 % от общего объема работ. Последние 10 % мероприятий по перемещению почтового ящика (или около того) уходят на выполнение окончательной инкрементной синхронизации содержимого почтового ящика и на переключение указателей почтового ящика в AD. По достижении отметки в 80 % в почтовом ящике остается совсем немного данных для копирования. И если вы увеличите максимально допустимое число поврежденных элементов до 20, вероятность того, что MRS сможет закончить копирование данных с исходного почтового ящика, будет довольно высока. Изменить указанную настройку вы сможете, выполнив в окне командной консоли Exchange Management Shell (EMS) следующие команды:

Get-MoveRequest -Identity «TRedmond»
Set-MoveRequest -BadItemLimit 20
Resume-MoveRequest

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

Место удаленных MRS данных пусто не бывает

Перед тем как повышать предельное значение для числа приемлемых поврежденных элементов, следует четко осознать, что MRS отбрасывает все обнаруженные поврежденные элементы; эти данные не копируются из исходного почтового ящика в целевой. Таким образом, при лимите в 20 элементов служба MRS может удалить из пользовательского почтового ящика до 20 различных объектов, предназначенных для перенесения по новому адресу. Это могут быть малозначительные данные, скажем, запрос на календарь совещаний за прошлый период. Но среди них может быть сообщение, содержащее присоединенный файл Excel с деталями бюджета на текущий год. К счастью, в 99,9999 % случаев поврежденные элементы искажены, что называется, до неузнаваемости, и потому вероятность обращения к ним со стороны клиента весьма невысока.

Итак, в ходе перемещения почтовых ящиков службе репликации MRS предоставляется возможность избавляться от больших объемов поврежденных данных. Возможно, кто-то считает такое решение неудачным. Но ведь поврежденные элементы — это брак, и если мы будем время от времени подвергать почтовый ящик процедурам очистки для удаления накопившегося хлама, это может принести только пользу. Кстати, сотрудники входящей в состав Microsoft «облачной» службы Exchange Online часто перемещают почтовые ящики из одной базы данных в другую. При этом, с одной стороны, осуществляется балансировка нагрузки по имеющимся серверам, а с другой — обеспечивается безупречная чистота почтовых ящиков. Накопление дефектных данных, которые могли бы поставить под удар эффективность службы баз данных, исключается.

Источники появления дефектных элементов многообразны. Прежде всего, это ошибки, которые отмечаются и на серверах, и на клиентах. Надо сказать, что Exchange сегодня является вполне зрелым продуктом. Его разработчики годами занимались устранением потенциальных проблем, которые могли бы вызывать порчу данных на уровне базы данных. Поэтому при перемещении почтовых ящиков с серверов Exchange 2003 поврежденные элементы встречаются чаще, чем в случаях, когда в роли исходных серверов выступают Exchange 2007 или Exchange 2010.

Скорее всего, главная причина повреждения элементов связана не с серверами, а с клиентами. Существует множество клиентов, способных подключаться к Exchange с помощью большого набора методов подключения, включая дополнительные модули, интегрирующиеся с такими клиентами, как Microsoft Outlook. Конфликты и повреждение данных могут иметь место, когда несколько клиентов пытаются одновременно обратиться к одному и тому же элементу. Если принять во внимание число мобильных устройств, способных подключаться к Exchange, сам факт повреждения данных не будет вызывать удивления — особенно когда речь идет о календарных элементах.

На основании исключительно неофициальных данных, публикуемых в Интернет-форумах, можно заключить, что пользователи разработанных корпорацией Research In Motion (RIM) устройств BlackBerry чаще имеют дело с поврежденными элементами календаря, чем пользователи, обращающиеся к системам Exchange только с помощью устройств Outlook или Microsoft ActiveSync. Для выявления проблем, таких, как явно пустые элементы или элементы с множественными версиями (то есть конфликты) часто бывает достаточно просмотреть элементы календаря в почтовом ящике (воспользуйтесь списочным представлением Outlook). Подобные элементы могут создавать проблемы в работе службы MRS, и по этой причине их лучше удалять до начала процедуры перемещения почтового ящика.

Общее правило таково: чем больше времени прошло с момента создания элемента, тем выше вероятность того, что он будет вызывать проблемы. Если в вашем (как, кстати, и в моем) почтовом ящике можно обнаружить элементы, сформированные еще в 1996 году, не стоит удивляться, что отдельные свойства элемента, заполняемые, в соответствии с ожиданиями Exchange, надежными клиентами MAPI, возможно, не были корректно введены в базу данных.

Другие ограничения на количество поврежденных элементов

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

Рассмотрим такой пример. Допустим, вы с помощью команды New-MailboxImportRequest импортируете данные из личной папки в систему Exchange 2010 либо в архивный почтовый ящик. А может быть, напротив, вы экспортируете данные из почтового ящика в личную папку с помощью команды New-MailboxExportRequest. В любом случае вы сможете указать лимит на количество поврежденных элементов. По умолчанию будет использоваться все то же нулевое значение, и если вы решите задать значение лимита выше отметки 51, вам нужно будет указать параметр AcceptLargeDataLoss. Команда New-MailboxRestoreRequest, реализованная специалистами Microsoft в версии Exchange 2010 SP1 в качестве предпочтительного метода восстановления обратимо удаленных или отсоединенных почтовых ящиков, также допускает использование лимитов на поврежденные элементы. Эта команда может понадобиться вам для восстановления содержимого почтового ящика с копии, хранящейся в базе архивных данных и данных для восстановления.

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

Когда возникает проблема повреждения элементов, особенно большие трудности вызывают файлы PST более старого формата ANSI, и для обеспечения успешного импорта данных мне часто приходится задавать высокие значения лимитов на поврежденные элементы (т.е. свыше 50). По-видимому, проблема стоит не столь остро при использовании более современного UNICODE-формата PST, созданного после выхода системы Outlook 2003. Но как бы то ни было, мне редко встречались случаи импорта больших личных папок (объемом более 1 Гбайт), в которых поврежденные данные отсутствовали бы вовсе.

Иногда и правила подводят

Многие пользователи с удовольствием создают правила для почтовых ящиков, которые помогают обрабатывать поступающие сообщения в автоматическом режиме. Пользователям так нравится обработка данных с помощью правил, что они порой создают для одного почтового ящика набор правил общим объемом свыше 32 Кбайт. За обработку ящиков с таким набором правил MRS не берется. Единственное решение состоит в том, чтобы при формировании запроса на перемещение указывать параметр IgnoreRuleLimitErrors или вносить изменения в существующий запрос на перемещение с помощью команды Set-MoveRequest. Данный параметр дает службе MRS возможность переместить соответствующий почтовый ящик, но, к сожалению, не позволяет перемещать заданные пользователем правила. Поэтому, приступая к работе с новым почтовым ящиком, пользователь должен формулировать правила заново. Будем надеяться, что эта проблема найдет решение в новых версиях Exchange.

Повод для оптимизма

Нельзя не порадоваться тому, что почтовый ящик, успешно перемещенный в систему Exchange 2010, свободен от поврежденных элементов — таково, по крайней мере, заключение MRS. Ответ на вопрос о том, сколь долго этот почтовый ящик будет сохранять чистоту, полностью зависит от программных средств, которые обращаются к ящику и обновляют его. А поскольку программы тоже совершенствуются, число вновь создаваемых поврежденных элементов сокращается. Благодаря этому сочетанию современного программного обеспечения и мер «санобработки» средствами MRS количество поврежденных элементов почтовых ящиков в дальнейшем будет сведено к минимуму. Во всяком случае, таковы планы!