Архив рубрики: Exchange Server 2003

SCDPM: Невозможно изменить Disk Allocation после переключения Exchange DAG

Симптомы:

Предположим, у вас есть Exchange 2010 с одной или несколькими Database Availability Groups и несколькими серверами в каждой из DAG. Вы настраиваете резервное копирование этих DAG при помощи DPM 2010 и выше (до 2012 R2 UR2 включительно). Через некоторое время, вы изменяете статус защищаемой копии почтовой базы с активного на пассивный или наоборот (например, переключаете активную копию базы на другой сервер в DAG). После этого, на странице Review disk allocation мастера создания/изменения групп защиты и в окне Modify Disk Allocation для баз, статус которых был изменён, вы будете получать ошибку:
"The operation failed because the data source VSS component {76fe1ac4-15f7-4bcd-987e-8e1acb462fb7} is missing.
Check to see that the protected data source is installed properly  and the VSS writer service is running.

ID: 915
Details: The operation completed successfully (0x0)»

If you’ll try to add such DB to secondary DPM server, you’ll receive same error at a disk size calculation step.

Если вы попробуете в этот момент добавить такую базу на вторичный сервер SCDPM, вы не сможете этого сделать из-за такой же ошибки в момент рассчёта дискового пространства.

Это известная Microsoft проблема, которая не будет исправлена в обозримом будущем.

Почему это происходит?

Информация о защищаемых ресурсах хранится в таблицах tbl_IM_DataSource и tbl_IM_ProtectedObject базы DPM. В столбцах ApplicationPath, LogicalPath и PhysicalPath содержится XML-документ, описывающий защищаемый ресурс. В случае с Exchange 2010 DAG он будет выглядеть примерно так:

Здесь мы видим:
DAGNODE2.example.com — имя узла DAG, с которого создаётся резервная копия почтовой базы
MAILDB01 — имя почтовой базы
Microsoft Exchange Server\Microsoft Information Store\Replica\DAGNODE2 — путь до копии базы на защищаемом сервере. Обратите внимание на слово «Replica». Оно означает, что данная копия базы — пассивная. Если вы настроили резервное копирование для активной копии базы, эта часть пути просто будет отсутствовать.

При изменении статуса копии базы с активного на пассивный и наоборот, логический путь до почтовой базы на сервере меняется, но в DPM информация об этом не передаётся и в базе DPM остаются неконсистентные данные.

Решение:

Существуют 2 обходных пути (выбирайте любой, который больше вам подходит):

На стороне DPM:

  1. Остановить защиту проблемной базы, с сохранением данных.
  2. Добавить базу обратно в группу защиты. При этом DPM обновит данные в таблицах tbl_IM_DataSource и tbl_IM_ProtectedObject.
  3. После прохождения consistency check вы сможете свободно управлять выделенным для неё местом и добавить на вторичный DPM-сервер.

На стороне Exchange:

  1. Восстановить активный/пассивный статус базы в то же состояние, в котором она была при добавлении её в SCDPM:
    1. Если защищаемая копия базы была пассивной — сделайте её пассивной.
    2. Если же она была активной, то сделайте её активной опять.

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

Unable to find the callback library jcb.dll (or one of its dependencies)

Для дефрагментации БД Exchange на компьютере, где не установлены компоненты управления Exchange, вы, вероятно, воспользуетесь статьёй Microsoft 244525: How to run Eseutil on a computer without Exchange Server. Я воспользовался этой статьёй для дефрагментации БД Exchange 2003 на свободном сервере с установленной Windows Server 2008 R2.

Через некоторое время работы eseutil (когда процесс использовал чуть больше 2 ГБ оперативной памяти), я получил ошибку, описанную в статье 273087: Error With Jcb.dll While Running Eseutil. К сожалению, описанные в ней способы мне не помогли: при нажатии кнопки Cancel, я получал ошибку «Operation terminated with error -2102 JET_errCallbackNotResolved, A callback function could not be found) after 1168.136 seconds.».

В итоге, воспользовавшись Process Monitor’ом, я выяснил, что для Windows Server 2008 R2 описанных в оригинальной статье Microsoft и в сообщении в треде «Re: JCB.DLL Not Found Error» файлов недостаточно — нужен ещё 1 файл: ntlsapi.dll. Я скопировал его из исходной системы Windows Server 2003 R2 SP2 с работающим Microsoft Exchange 2003 SP2 на целевую систему Windows Server 2008 R2 SP1, на которой производил дефрагментацию, и всё прошло нормально.