Если вы пропустили первую часть этой серии статей, прочтите Перемещение почтовых ящиков в Exchange 2007, часть 1
В первой части этой статьи мы рассматривали помощника перемещения ящиков (Move Mailbox wizard), расположенного в консоли управления Exchange Management Console, а также различное содержимое журнала событий, которое записывается туда при перемещении почтовых ящиков в Exchange 2007. Хотя помощник Move Mailbox обладает понятным интерфейсом для упрощения процесса перемещения почтовых ящиков между различными базами данных и серверами, ему недостает некоторых настроек, которые требуются администраторам время от времени. Такие параметры можно получить с помощью оболочки Exchange Management Shell во время перемещения ящиков. Далее, во второй части этой статьи мы рассмотрим некоторые ключевые параметры, которые вы сможете использовать. Сейчас, давайте рассмотрим журнал событий, создаваемый в процессе перемещения почтовых ящиков.
Журнал событий перемещения ящиков (Move Mailbox Log Files)
Процесс перемещения ящиков в Exchange 2007 каждый раз сопровождается созданием соответствующих XML и LOG файлов. Эти файлы находятся в папке\Program Files\Microsoft\Exchange Server\Logging\MigrationLogs по умолчанию, как показано на рисунке 14.
Оба этих типа файлов содержат информацию о только что выполненном процессе переноса ящика. Примеры .log и .xml файлов показаны на рисунках 15 и 16.
Чтение .log файлов более понятно, чем чтение XML файлов в их сыром формате, поскольку это не самая простая задача. Одним из решений этой проблемы может стать применение таблицы стилей. Я собираюсь вернуться ненадолго к Exchange 2003, поскольку могу показать вам отличный пример. Процесс перемещения ящиков в Exchange 2003 сопровождается созданием XML файлов подобно перемещению ящиков в Exchange 2007. Комплект разработки ПО Exchange Server 2003 SDK, который можно загрузить здесь, включает в себя таблицу стилей XSLT, которую можно использовать для преобразования способа просмотра XML файлов, созданных в процессе переноса. Это поможет вам понять, что можно сделать с таблицей, если вы выберите этот путь. Конечно, эта таблица стилей с комплектом SDK применима только к Exchange 2003 XML файлам, поэтому для Exchange 2007 XML файлов вам потребуется создавать собственную таблицу, или, возможно, со временем компания Microsoft выпустит такую таблицу. Если вы загрузите и установите Exchange Server 2003 SDK, вы найдете таблицу стилей с названием TaskWizardRun.xslt, в папке по умолчанию \Program Files\Exchange SDK\SDK\Samples\TaskWizard. Чтобы применить эту таблицу к XML файлу вам нужно лишь внести изменение в XML файл. Например, рисунок 17 показывает изначальный Exchange 2003 XML файл, открытый в блокноте.
Обратите внимание на вторую строчку, начинающуюся с
Теперь XML файл должен выглядеть, как показано на рисунке 18, добавленный текст выделен.
Это означает, что теперь, если вы откроете XML файл с помощью Internet Explorer, он будет выглядеть как пример, показанный на рисунке 19. Обращайте внимание на исправление орфографических ошибок в таблице стилей.
Перемещение почтовых ящиков с помощью оболочки Exchange Management Shell
При использовании оболочки Exchange Management Shell для перемещения почтовых ящиков требуется следующая команда: Move-Mailbox. При использовании данной команды администратору доступны многие другие параметры, недоступные во время выполнения этого процесса с помощью консоли управления Exchange Management Console. В этом разделе статьи мы рассмотрим наиболее интересные параметры, которые вы можете использовать. Я не собираюсь охватывать абсолютно все параметры, поэтому уделите достаточно времени для тщательного изучения команды Move-Mailbox cmdlet.
Прежде всего, давайте рассмотрим процесс прямого переноса почтового ящика с сервера Exchange 2003 на Exchange 2007 в одной и той же области. В своем базовом формате команда переноса ящика, принадлежащего пользователю User3, выглядит так:
Move-Mailbox User3 'TargetDatabase 'E2K7\First Storage Group\Mailbox
Database' 'Confirm:$false
Очевидно, что ключевым параметром здесь является 'TargetDatabase, который в предыдущем примере настроен на перемещение почтового ящика в почтовую базу данных с названием Mailbox Database внутри группы хранения First Storage Group на сервере Exchange 2007 под названием E2K7. Если вы выполните эту команду, вы будет видеть статус прохождения по папкам и перемещения сообщений. Это показано на рисунке 20. Обратите внимание на использование параметра Confirm:$false, который отключает подсказку 'Вы уверены (Are you sure)?', прежде чем ящик будет перемещен.
Параметр 'ValidateOnly полезен, когда вы желаете посмотреть, можно ли переместить ящик, до того как вы это сделаете. На рисунке 21 видно, что после запуска команды Move-Mailbox с параметром 'ValidateOnly, атрибут Status Message показан как 'Этот почтовый ящик можно переместить в нужную базу данных (This mailbox can be moved to the target database).'
После успешного перемещения атрибут Status Message поменяется на 'этот почтовый ящик был перемещен в нужную базу данных (This mailbox has been moved to the target database).'
Помните, в первой части этой статьи я упомянул о том, что помощник Move Mailbox, которого вы запускаете из консоли Exchange Management Console, многопоточный, но ограничен до четырех потоков максимум. Вы можете увеличить количество потоков, если используете Exchange Management Shell для переноса почтовых ящиков. Специальный параметр, который вам нужно использовать - это 'MaxThreads, максимальное значение которого составляет 30. Однако прежде чем установить значение этого параметра на максимум, подумайте над тем, где будет критический элемент, а, следовательно, будет ли вам это полезно. Может оказаться так, что после тестирования своей сети, вы не получите должного эффекта от производительности с настройкой параметра 'MaxThreads, скажем, более 10.
Давайте теперь рассмотрим случай, когда вам нужно переместить все почтовые ящики из стандартной директории сервера Exchange 2003 под названием DCEXCH на сервер Exchange 2007 с названием E2K7. Название стандартной директории хранения почтовых ящиков на сервере Exchange 2003 в данном примере будет Mailbox Store (DCEXCH). В этом случае нам нужно одновременно переместить 10 почтовых ящиков. Используем следующую команду:
Get-Mailbox 'Database 'DCEXCH\First Storage Group\Mailbox Store (DCEXCH)'
| Move-Mailbox 'TargetDatabase 'E2K7\First Storage Group\Mailbox Database'
'MaxThreads 10
Первая часть использует команду Get-Mailbox для получения всех почтовых ящиков, хранящихся в базе данных сервера Exchange 2003. За ней, как обычно, следует команда Move-Mailbox, однако обратите внимание на дополнительный параметр 'MaxThreads 10 в конце. В результате у нас появится окно, как показано на рисунке 22.
В начале этой статьи мы подробно разобрали XML файлы, сопровождающие процесс переноса ящиков, и по умолчанию они хранятся в папке \Program Files\Microsoft\Exchange Server\Logging\MigrationLogs. Если вы хотите изменить место сохранения XML файлов журнала событий, вы можете сделать это в Exchange Management Shell с помощью параметра 'ReportFile. Обратите внимание, что вам нужно полностью прописать путь и имя файла в данном параметре. Если папки с указанным именем не существует, программа создаст ее. Примерная команда перемещения ящика User3 и загрузки результатов в C:\MigLogs\mailboxes.xml будет:
Move-Mailbox User3 'TargetDatabase 'E2K7\First Storage Group\Mailbox Database'
'ReportFile C:\MigLogs\mailboxes.xml 'Confirm:$false
Наконец, вы помните, что помощник Move Mailbox, находящийся в консоли Exchange Management Console, позволяет вам определять количество ошибок, которые вы допускаете при переносе ящика. Конечно, такая же настройка существует и в Exchange Management Shell в форме параметра 'BadItemLimit. Как я уже говорил в первой части этой статьи, максимальное значение, которое вы можете установить, составляет 2,147,483,647, что довольно много, если не сказать больше. Минимальное значение - это 0, а это еще один способ удостовериться в том, что ни один поврежденный объект не проскочил.
Заключение
В заключении первой части этой статьи я сказал, что перемещение почтовых ящиков с помощью консоли Exchange Management Console - очень простое задание. Не менее простой задачей будет перемещение почтовых ящиков с помощью Exchange Management Shell, и нет никаких сомнений в том, что такой способ переноса будет более популярным среди многих администраторов благодаря дополнительным параметрам, которыми он располагает.
Если вы пропустили первую часть этой серии статей, прочтите Перемещение почтовых ящиков в Exchange 2007, часть 1