Альтернативный метод восстановления удаленных объектов

Недавно один из пользователей пожаловался, что из «Календаря» его почтового ящика Exchange Server 5.5 пропали сотни записей. Хранилище (Information Store — IS) почтового ящика было настроено на сохранение удаленных объектов, но мне не удалось обнаружить никаких удаленных объектов, пригодных для восстановления. Их не было ни в одном из файлов автономного (.ost) или частного (.pst) хранилища папок, а пользователи, имевшие доступ к почтовому ящику, были убеждены, что не удаляли объектов. Наконец выяснилось, что кто-то полностью удалил объекты «Календаря», и восстановить их было невозможно, так как функция восстановления была активизирована только для папки Deleted Items («Удаленные»). Подобная ситуация рассматривается в статье Microsoft «XADM: How to Recover Items That Are Not First Transferred to the Deleted Items Folder» at http://support.microsoft.com/?kbid=178630. В результате удаленные объекты пришлось восстанавливать с резервной копии.

В нашей компании Exchange работает на сервере Windows 2000 Server со стримером, и я выполняю оперативное резервное копирование на ленту с помощью программы Backup Exec 8.6 компании VERITAS Software. Недавно я организовал тестовый сервер Windows NT Server, который можно использовать в качестве сервера восстановления, но мне не хотелось преобразовывать его в Windows 2000 Server (планировалось задействовать его в качестве горячего резерва во время перестройки другого сервера NT); кроме того, на нем не было стримера. Поэтому я решил выяснить, нельзя ли восстановить IS через сеть на сервере восстановления (хотя сервер работал с версией операционной системы и пакетом обновлений, отличным от установленного на производственном сервере Exchange), не отключая производственного сервера. Как выяснилось, такое восстановление возможно, вопреки тому, что мне было известно о процедуре восстановления Exchange 5.5 после аварии.

Я протестировал данный метод только с Exchange 5.5, используя Backup Exec; аналогичную процедуру в принципе можно выполнить и с помощью NTBackup. Следует помнить, что Microsoft не поддерживает использованный мною метод восстановления пропавших записей «Календаря». В некоторых случаях данный метод противоречит официальным рекомендациям Microsoft и обходит некоторые ограничения, накладываемые на процедуру восстановления баз данных Exchange на другом сервере. Кроме того, при использовании сервера восстановления с другой версией операционной системы и пакетом обновлений увеличивается время, необходимое для восстановления IS. Несмотря на эти оговорки, я считаю, что данный процесс полезно изучить администраторам Exchange, у которых нет свободного сервера восстановления, работающего с теми же версиями операционной системы и пакета обновлений, что и сервер Exchange, и подходящим стримером. Конечно, восстановление с резервной копии — всегда последнее средство, и обе системы должны работать с одним и тем же пакетом обновлений Exchange 5.5.

Подготовка

Прежде чем использовать Backup Exec для оперативного восстановления базы данных Exchange, необходимо лицензировать Agent for Microsoft Exchange, введя его серийный номер на сервере Backup Exec. На сервере Backup Exec нужно также указать серийный номер удаленного агента, чтобы перенаправить восстановление на другой сервер, и убедиться, что удаленный агент установлен и функционирует на сервере восстановления. Для восстановления данных Exchange через сеть на другом сервере с помощью Backup Exec необходимы как удаленный агент, так и Microsoft Exchange Agent; в обоих случаях требуются отдельные лицензии VERITAS. Для установки на удаленном объекте я использовал сценарий setupaa.cmd (в папке winntinstallengi386 taa на компакт-диске Backup Exec). Чтобы запустить службу без перезагрузки, следует ввести в командной строке net start BackupExecAgentAccelerator

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

Затем я развернул Exchange на сервере восстановления, запустив setup.exe из папки serversetupi386 на установочном компакт-диске Exchange 5.5. Я не применял режим Setup /R, предназначенный для полного восстановления на том же сервере или новом сервере с тем же именем. Я выбрал параметр Complete/Custom и использовал служебную учетную запись Exchange для существующего сайта, чтобы установить только Exchange Server и Administrator. Кроме того, я воспользовался именами организации и сайта производственного сервера, чтобы создать новый сайт. В процессе установки Exchange я не стал присоединять новый сайт к существующему (режим Join an existing site), так как не хотел репликации данных между восстановительным и производственным серверами.

Я установил пакет обновлений Exchange 5.5 Service Pack 4 (SP4) на сервере восстановления, так как восстановленная версия базы данных должна соответствовать версии Exchange, работающей на сервере восстановления. Я остановил все службы Exchange, за исключением System Attendant и Directory (служба Directory, которая зависит от System Attendant, необходима для Backup Exec, чтобы распознать сервер восстановления в качестве доступного сетевого сервера для перенаправленного восстановления). Таким образом, сервер восстановления был готов к приему данных.

Восстановление данных

Я открыл консоль Backup Exec на производственном сервере и выбрал резервный набор, содержащий экземпляр IS, который я хотел восстановить. Затем я выбрал IS и щелкнул на Restore Selections. На вкладке Redirection в диалоговом окне Restore Job Properties необходимо установить флажок Redirect Exchange sets, а затем ввести имя сервера восстановления в текстовом поле Restore to server. В разделе Exchange v5.5 вкладки Exchange я сбросил флажок No loss restore (do not delete existing job logs), так как невозможно выполнить восстановление без потери данных при перенаправлении восстановительной операции на другой сервер (журналы заданий для каждого сервера свои). Необходимо также установить флажки Restore public folder и Restore private mailboxes (в противном случае Backup Exec выдаст сообщение об ошибке). Затем я щелкнул на кнопке Run Now. Поскольку операция восстановления была перенаправлена на другой сервер, Backup Exec выдал сообщение, показанное на экране 1. Я нажал OK, чтобы запустить процедуру восстановления.

Экран 1. Сообщение об ошибке при перенаправлении

Хотя данные IS были переданы на сервер восстановления, я не восстановил каталог Exchange. Поскольку оперативная копия каталога Exchange 5.5 содержит атрибуты данных, привязанные к имени сервера, Backup Exec (или NTBackup, или любой другой инструмент резервного копирования, обеспечивающий оперативное резервное копирование Exchange 5.5) требует восстановить каталог на том же сервере или на новом сервере с тем же именем. По этой причине невозможно перенаправить процесс восстановления каталога Exchange через сеть на другой сервер. Я обошел это ограничение с помощью описанной ниже процедуры ручного импорта и экспорта, вполне пригодной для оперативного восстановления.

Восстановить данные Exchange на другом сервере можно и посредством NTBackup (см. главу «Restoring an Information Store to a Different Server в разделе Restoring a Server» в руководстве по Exchange 5.5). Однако при восстановлении на компьютере с другими версиями операционной системы и пакета обновлений необходимо сбросить флажок Start Services After Restore; в противном случае службы не могут быть запущены до тех пор, пока не будет выполнена автономная дефрагментация баз данных IS.

Запуск IS на восстановленном сервере

По завершении оперативного восстановления Exchange заполняет параметры раздела реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesMSExchangeISRestore In Progress значениями, необходимыми для успешного восстановления (более подробные сведения об этих параметрах приведены в статье Microsoft «XADM: How the Restore in Progress Registry Key Works» по адресу http://support.microsoft.com/?kbid=200941). Я хотел запустить IS на сервере восстановления без каких-либо ссылок на производственный сервер и поэтому отредактировал с помощью программы regedt32.exe параметр реестра EDB_RstMap так, чтобы все четыре пути к файлам базы данных Exchange указывали на сервер восстановления.

Экран 2. Указание на несоответствие версии пакета обновлений Windows

Затем я попытался запустить IS, но безуспешно из-за ошибки в службах. После неудачной попытки я проверил раздел Restore In Progress и убедился, что параметр реестра EDB Database Recovered равен 1. Значит, все журналы транзакций базы данных IS воспроизведены успешно. Я проверил журнал событий Application event, который указывал, что версии операционной системы и пакета обновлений изменились (экран 2) и мне следует выполнить автономную дефрагментацию, чтобы перестроить индекс (экран 3).

Экран 3. Требование дефрагментации базы данных

В ходе автономной дефрагментации я остановил все службы Exchange, открыл окно командной строки, перешел в папку exchsrvrin на сервере восстановления и последовательно выполнил следующие команды, чтобы дефрагментировать частную (priv.edb) и общую (pub.edb) базы данных IS, соответственно:

eseutil /d /ispriv

eseutil /d /ispub

Заполнение каталога Exchange на сервере восстановления

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

Чтобы обойти эту проблему, я открыл Exchange Administrator на производственном сервере и выбрал из меню пункты Tools, Directory Export. Я выделил контейнер Recipients, выбрал все экспортируемые типы объектов и режим Include hidden objects. В результате был создан файл с разделением запятыми (comma-separated value, CSV), содержащий копию каталога Exchange производственного сервера для контейнера Recipients. Чтобы использовать эту копию каталога на сервере восстановления, необходимо везде заменить имя производственного сервера на имя сервера восстановления. Я открыл файл в Notepad и заменил имена с помощью функции Edit and Replace, а затем сохранил измененный CSV-файл на сервере восстановления.

На сервере восстановления я открыл Exchange Administrator и выбрал из меню пункты Tools, Directory Import. Затем я щелкнул на Import File и выбрал измененный CSV-файл. После завершения процедуры импорта я смог просмотреть объекты в контейнере Recipients на сервере восстановления. В ходе этой процедуры могут быть допущены ошибки, так как экземпляр импортируемого каталога не синхронизирован с экземпляром восстановленной IS, однако этой операции должно быть достаточно для доступа к отдельным почтовым ящикам, которые не были удалены после резервного копирования.

Получение данных от сервера восстановления

Завершая процесс восстановления, я зарегистрировался на сервере восстановления с использованием служебной учетной записи Exchange и создал профиль Outlook, с его помощью открыл почтовый ящик, из которого хотел восстановить пропавшие объекты «Календаря». Я экспортировал почтовый ящик в файл .pst и импортировал его назад в IS на производственном сервере. Можно было бы копировать объекты напрямую с сервера восстановления на производственный сервер с помощью инструмента ExMerge, но, поскольку я имел дело лишь с одним почтовым ящиком, делать это было необязательно.

Помните об ограничениях

Microsoft не поддерживает восстановление данных на сервере с другими версиями операционной системы и пакетов обновлений, так что этот метод не следует использовать для восстановления данных непосредственно на производственном сервере. Метод пригоден только для доступа к IS на сервере восстановления. Процедура может занимать много времени, в зависимости от размера IS и быстродействия сервера, сети, стримера и других аппаратных средств. Кроме того, восстановить удаленный почтовый ящик сложно, если не отредактировать CSV-файл и не вставить вручную строку, содержащую данные каталога для удаленного почтового ящика. Как указывалось ранее, ручной экспорт каталогов из производственного сервера и импорт его в сервер восстановления не всегда возможен. Но в аварийной ситуации это решение позволяет восстановить потерянные данные из оперативной резервной копии IS. Дополнительная информация приведена в материалах, перечисленных во врезке «Статьи по теме».


Билл Стюарт (bill.stewart@frenchmortuary.com) — системный и сетевой администратор компании French Mortuary, Нью-Мехико


Статьи по теме

Simpler-Web — Вопросы и ответы по Exchange 5.5

http://www.swinc.com/resource/exch_faq.htm

«Белые» страницы Microsoft Exchange Server Disaster and Recovery Planning

http://www.microsoft.com/exchange/techinfo/ administration/55/disaster.asp

Microsoft Exchange Server 5.5 Disaster Recovery

http://www.microsoft.com/exchange/techinfo/ administration/55/backuprestore.asp