Мастер Exchange 2003 поможет правильно разместить почтовые ящики

Возможность перемещения почтовых ящиков с одного сервера на другой была предусмотрена уже в первых версиях Exchange Server. В версии Exchange Server 2003 специалисты Microsoft усовершенствовали мастер перемещения почтовых ящиков Move Mailbox Wizard; администраторы получили возможность осуществлять перемещение по расписанию, и, кроме того, была реализована многопотоковая обработка почтовых ящиков. В пакете обновления Exchange 2003 Service Pack 1 (SP1) мастер был наделен средствами перемещения почтовых ящиков между узлами и административными группами, что особенно актуально для почтовых организаций, функционирующих в смешанном режиме. Эти усовершенствования подробно описаны в статье «Exchange 2003 Move Mailbox Wizard», опубликованной в Windows IT Pro/RE № 8 за 2004. А на этот раз я расскажу о том, как применять усовершенствованную утилиту Move Mailbox Wizard и какие приемы использовать для того, чтобы операции перемещения почтовых ящиков проходили без осложнений.

Зачем перемещать почтовые ящики?

За перемещение почтовых ящиков следует браться лишь в тех случаях, когда на то есть серьезные причины. В сетях, где эксплуатируются системы Exchange Server 5.5 и более ранние версии продукта, целесообразно размещать почтовые ящики пользователей, которые регулярно посылают друг другу объемные электронные послания, на одном сервере, ибо таким образом достигается снижение объема трафика между серверами и максимально эффективно используется технология Single Instance Storage, реализованная в хранилище данных Exchange Information Store. Но поскольку сегодня многие системы Exchange 2003 и Exchange 2000 Server способны взаимодействовать с несколькими базами данных почтовых ящиков, администраторы обычно не используют Single Instance Storage. Ввиду повышения производительности, пропускной способности и коэффициента отказоустойчивости сетей размещение пользователей на серверах в соответствии с маршрутами генерируемого ими трафика уже не так актуально, как раньше.

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

Требования MAPI и емкость базы данных

Почтовые ящики можно размещать на любом сервере внутри организации Exchange, но при этом должны выполняться два условия. Во-первых, необходимо наличие достаточной полосы пропускания между исходным и целевым серверами для передачи вызовов удаленных процедур интерфейса API для обмена сообщениями (Messaging API, MAPI), которые Exchange будет использовать для пересылки содержимого почтового ящика. А во-вторых, нужно, чтобы целевой сервер был оснащен достаточно вместительными носителями для размещения этого содержимого. На каждом сервере Exchange имеется серверная версия MAPI, несовместимая с клиентской версией, реализованной в таких программах, как Outlook. Именно из-за упомянутой несовместимости версий MAPI Microsoft рекомендует воздерживаться от установки клиентов Outlook на серверах Exchange. Для выполнения административных задач на этих серверах всегда использовалась серверная версия MAPI, и, хотя Internet-протоколы, такие как SMTP и LDAP, все чаще применяются для осуществления межсерверного взаимодействия, в системах Exchange по-прежнему используются вызовы удаленных процедур MAPI для выполнения ряда административных операций, таких как перемещение почтовых ящиков.

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

В процессе перемещения почтовых ящиков объемы баз данных Store на исходном сервере не сокращаются, однако база данных на целевом сервере вполне может увеличиться в размерах. Это будет зависеть от размера перемещаемых почтовых ящиков и от объема «белого пространства» (white space), т. е. неиспользованных страниц в целевой базе данных. Существует лишь один способ сокращения объема базы данных после вывода из нее почтовых ящиков: нужно переформировать ее в автономном режиме с помощью утилиты Eseutil. Но затевать эту операцию вряд ли стоит — если только знать наверняка, что с ее помощью можно будет вернуть в эксплуатацию гигабайты и гигабайты дискового пространства. Кстати, должен предупредить, что попытка перемещения почтового ящика не увенчается успехом, если на целевом сервере установлена система Exchange Server Standard Edition и если в результате этой операции объем единственного имеющегося на данном сервере хранилища почтовых ящиков Store превысит пороговое значение в 16 Гбайт, установленное для Exchange Server Standard Edition. Microsoft планирует повысить этот 16-гигабайтный порог в системе Exchange 2003 SP2, но и после этого администраторам придется действовать с оглядкой на новый лимит.

Перемещение почтовых ящиков

Команда Move Mailbox подается из Exchange Task Wizard, который можно активизировать с помощью оснастки Active Directory Users and Computers из консоли Microsoft Management Console (MMC) (в системах Exchange 2003 и Exchange 2000) или из консоли диспетчера Exchange System Manager (ESM) (в системе Exchange 2003). Любую из этих консолей можно запустить с рабочей станции Windows XP, если система обладает достаточно скоростным соединением для протокола RPC как с исходным, так и с целевым сервером.

Прежде всего, следует открыть консоль и выбрать объект почтовой системы, который требуется переместить. Важно помнить, что Exchange блокирует попытки изменять местоположение системных почтовых ящиков, а также почтовых ящиков, используемых службой SMTP, поскольку это особые объекты, привязанные к «своему» серверу. Далее требуется запустить утилиту Exchange Task Wizard и выбрать элемент Move Mailbox. Нужно нажать Next, и на следующей странице мастера можно будет выбрать целевой сервер и хранилище почтовых ящиков, как показано на экране 1.

Экран 1. Выбор целевого хранилища почтовых ящиков

На экране 2 поясняется, как настроить мастер для работы с проблемными объектами исходного почтового ящика. До выпуска Exchange 2003 перемещение почтового ящика блокировалось в том случае, если программа обнаруживала в нем поврежденный объект. С появлением версии Exchange 2003 пользователи получают возможность задавать определенную линию поведения мастера в отношении таких объектов: один вариант — при обнаружении поврежденного объекта прекратить процедуру перемещения и сформировать отчет об отказе, а второй — воздерживаться от перенесения поврежденных объектов на новое место. Администратор имеет возможность указать, какое количество поврежденных объектов программа может проигнорировать. Отметим, что мастер будет удалять поврежденные объекты при их обнаружении в процессе перемещения. По умолчанию мастер имеет право проигнорировать не более трех поврежденных объектов, однако с помощью пользовательского интерфейса этот порог можно повысить до 100. Если число поврежденных объектов в почтовом ящике превысит установленный лимит, операция перемещения закончится неудачей. Кстати, далеко не случайно, что по умолчанию применяется такое низкое пороговое значение для числа игнорируемых дефектных объектов. Если в почтовом ящике таких объектов много, перемещать его не стоит. Когда значительная часть объектов почтового ящика повреждена, это явный признак серьезных неполадок в соответствующей базе данных.

Экран 2. Обработка поврежденных объектов

Иногда данные бывают искажены вследствие нарушений во взаимодействии между клиентом и сервером, что приводит к потере MAPI-свойств объекта; в других случаях всему виной ошибки в коде Exchange или клиента либо незначительные искажения сведений в базе данных, вызванные проблемами в работе аппаратных средств (как правило, подсистемы хранения данных). Незначительные искажения можно исправить, проверив проблемную базу данных с помощью утилиты Isinteg; для ликвидации более серьезных проблем придется полностью переформировывать базу данных в автономном режиме с использованием утилиты Eseutil.

Назначение даты и времени перемещения

Система Exchange 2003 предусматривает возможность перемещения почтовых ящиков в соответствии с заданным расписанием. Более ранние версии системы обеспечивали перемещение почтовых ящиков непосредственно после того, как администратор даст команду на выполнение этой операции, а значит, тому, кто хотел перемещать почтовые ящики в период незначительной активности серверов, раньше приходилось приступать к таким действиям, предварительно дождавшись снижения активности. Если вы назначаете дату и время для перемещения почтовых ящиков в окне Task Schedule, показанном на экране 3, процесс Exchange 2003 system attendant создает поток, который выполняется в фоновом режиме до назначенного времени, после чего system attendant начинает операцию перемещения. С помощью второго параметра страницы Task Schedule (на экране 3 это поле заслоняет календарь) администратор может указать срок, в течение которого система Exchange должна завершить все выполняемые задания. К примеру, можно назначить время завершения работы на 8:30 утра, чтобы перемещение почтовых ящиков не проводилось в период наиболее частых обращений к системе. Если окажется, что на момент завершения работы перемещение почтового ящика еще не завершено, система Exchange будет продолжать передачу контента до тех пор, пока все содержимое почтового ящика не окажется на целевом сервере. Но она не будет приступать к работе с другими почтовыми ящиками, которые находятся в очереди на перемещение.

Экран 3. Назначение даты и времени перемещения

В процессе переноса

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

Экран 4. Перемещение почтового ящика

С началом переноса содержимого почтового ящика поток обработки выставляет на нем флажок MAPI PR_ IN_TRANSIT, который не сбрасывается до завершения процесса. Этот флажок указывает хранилищу Store на то, что содержимое почтового ящика переносится в другое место и что ящик закрыт для приема новых сообщений. В ходе процедуры перемещения пользователь почтового ящика может, как и прежде, обращаться к его содержимому, но не способен получать или отправлять новые сообщения. Кроме того, после начала процесса перемещения содержимого почтового ящика пользователь не имеет возможности регистрироваться для доступа к нему (в случае попытки пользователя зарегистрироваться и получить доступ к почтовому ящику в процессе перемещения последнего хранилище Store регистрирует событие с ID 9660). Во избежание возможных проблем администраторы обычно просят пользователей не обращаться к своим почтовым ящикам в ходе перемещения. Если в организации есть пользователи, работающие с клиентами Outlook 2003 в режиме Cached Exchange Mode, можно перевести их в автономный режим, и тогда они смогут обращаться к автономным копиям своих почтовых ящиков. Когда по завершении перемещения почтовых ящиков пользователи вновь подключаются к системе Exchange, Outlook автоматически обновляет их профили для того, чтобы перенаправить этих пользователей на серверы, где теперь размещаются их почтовые ящики, и синхронизировать данные (в эту процедуру входит и доставка новых почтовых сообщений). В процессе перемещения мастер выставляет флажок PR_IN_TRANSIT и на расположенном на целевом сервере новом почтовом ящике, чтобы исключить возможность доставки в него новых сообщений. Система Exchange 2003 направляет все сообщения, поступающие для доставки в перемещаемый почтовый ящик, в особую очередь Deferred Delivery. По завершении перемещения Store и механизм Advanced Queuing перенаправляют эти сообщения в перемещенный почтовый ящик. В системе Exchange 2000 реализован иной механизм обработки поступающих сообщений. Они поступают в особую папку в хранилище Store и по завершении перемещения перенаправляются в новый почтовый ящик с помощью агента передачи сообщений Message Transfer Agent (MTA). Если же перемещение по какой-либо причине срывается, поток вновь выставляет флажок PR_IN_TRANSIT, и Store доставляет адресату все ожидающие своей очереди сообщения до того, как администратор предпримет следующую попытку переместить почтовый ящик.

Для повышения быстродействия Exchange использует MAPI-функцию IMapiProp:: CopyTo (), которая не передает объекты почтового ящика по отдельности, а перемещает его целиком. Кстати, то обстоятельство, что Exchange использует при этом функцию, трактующую почтовый ящик как один объект, не означает, что Exchange пытается «пропихнуть» весь ящик на целевой сервер, что называется, одним махом. Оно лишь говорит о том, что Exchange безостановочно осуществляет перемещение всех объектов ящика от начала до конца и не делает при этом пауз для того, чтобы получить санкцию на передачу следующего объекта.

В базе данных хранилища Store размещается по одной копии содержимого каждого объекта (включая присоединенные файлы). Указатели содержат имена почтовых ящиков, в которых присутствует данный объект. Достоинства такой модели очевидны: если направить электронное письмо с приложением в 10 Мбайт в 10 почтовых ящиков одной и той же базы данных, оно будет занимать всего 10 Мбайт дискового пространства (а не 110 Мбайт, которые потребовались бы в случае, если бы в Store хранились все сообщения от каждого отправителя для каждого получателя). В процессе перемещения содержимого почтового ящика Store с помощью уникального идентификатора сообщения проверяет, не было ли это сообщение ранее сохранено в целевой базе данных. Если оно там присутствует, Store не передает новую копию сообщения, а ограничивается созданием нового указателя на него.

В зависимости от рабочих характеристик сервера, и в первую очередь от производительности его дисковой подсистемы, скорость передачи данных для одного почтового ящика может колебаться в пределах от 400 Мбайт до 2 Гбайт в час; причем, когда Exchange передает информацию в несколько потоков, этот показатель возрастает (хотя зависимость и не линейная).

Если мастеру удается переместить почтовый ящик, он обновляет в каталоге (в Active Directory, AD, — для почтовых ящиков Exchange 2003 и Exchange 2000 и в Directory Store — для почтовых ящиков Exchange 5.5) соответствующую информацию, включая атрибут HomeMDB (имя владеющего почтовым ящиком хранилища) и атрибут HomeMTA (имя владеющего агента пересылки сообщений — MTA), а также атрибут msExchHomeServerName на серверах Exchange 2003 и Exchange 2000. При перемещении почтового ящика с сервера Exchange 2003 на сервер Exchange 2000 или Exchange 5.5 соответствующий поток удаляет атрибуты, используемые Exchange, для взаимодействия со службой Outlook Mobile Access (OMA), поскольку такие атрибуты несовместимы с более ранними версиями. Если мастеру не удается обновить каталог, он квалифицирует перемещение как завершившееся неудачей и возвращает почтовый ящик в прежнее состояние.

Затем мастер выставляет на почтовом ящике, расположенном на целевом сервере, флажок PR_IN_TRANSIT, чтобы пользователь мог обращаться к своему почтовому ящику, и завершает перемещение, удаляя содержимое «старого» почтового ящика с исходного сервера. По завершении обработки всех почтовых ящиков мастер отображает экран Task Summary, на котором показан журнал процесса перемещения. На экране 5 журнал представлен в формате XML; его можно просматривать в необработанном виде или преобразовать с помощью таблицы стилей XML в нечто более удобочитаемое.

Экран 5. Просмотр итогов перемещения

Журналы регистрации транзакций

Каждый перемещенный объект почтового ящика Store регистрируется в текущем журнале транзакций как на исходном, так и на целевом сервере. Обычно считается, что для определения числа журналов транзакций, генерируемых при выполнении операции по перемещению почтовых ящиков, нужно разделить размер перемещенных почтовых ящиков на 5 Мбайт (размер журнала регистрации) и прибавить 5% этого объема (накладные расходы). Пример: в случае перемещения почтового ящика объемом в 100 Мбайт на исходном и целевом серверах генерируется по меньшей мере 21 журнал регистрации.

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

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


Тони Редмонд - Внештатный редактор Windows IT Pro, старший технический редактор Exchange & Outlook Administrator, вице-президент и главный технолог HP Services. Автор выпущенной издательством Digital Press книги Microsoft Exchange Server 2003 with SP1. exchguru@windowsitpro.com