Весь концепт непрерывной репликации стал отличным дополнением к Exchange Server, и немногие могут поспорить о важности его включения в этот продукт. Благодаря Local Continuous Replication (LCR) и Cluster Continuous Replication (CCR), поддерживаются резервные копии Volume Shadow Copy Service (VSS), сделанные на основе пассивных копий базы данных, хотя все еще есть возможность сделать эти копии на основе активных копий. Как на счет проверки на непротиворечивость копии базы данных, которая не была резервирована? Вдобавок, с созданием Standby Continuous Replication (SCR) компания Microsoft не поддерживает резервные копии, сделанные на основе целевой копии базы данных, активированной для SCR, так как же проверять эту копию? Противопоставьте это старым потоковым резервным копиям API, использовавшимся в ранних версиях Exchange, которые производили проверку целостности базы данных на постраничном уровне, когда резервная копия создавалась. Компания Microsoft предоставила информацию о том, что можно сделать, чтобы вручную выполнять проверку стабильности баз данных Exchange 2007, для которых была активирована непрерывная репликация, и в этой статье мы рассмотрим необходимые для этой операции шаги.
Важно отметить, что эта информация не ограничивается исключительно Exchange 2007 SP1, так как данная процедура применима и для RTM версии Exchange 2007. Всегда полезно знать, как выполнять различные задания на различных версиях Exchange, и в этой статье я уделю внимание лабораторному CCR окружению, хотя приведенные ниже шаги практически одинаковы и для других типов непрерывной репликации, включая новую характеристику SCR. Весь процесс представляет собой смесь команд в Exchange Management Shell, а также других инструментов, имеющихся в Windows 2003 и Exchange 2007. Итак, давайте приступим и посмотрим, как все же работает этот метод.
Шаг 1 ' Приостановка групп хранения (Suspend the Storage Group)
Первое, что вам нужно сделать, это временно приостановить передачу и воспроизведение журналов трансакций, которые возникают в группе хранения. Это делается посредством команды Suspend-StorageGroupCopy. Давайте возьмем пример, в котором почтовый сервер Exchange будет называться E2K7, а группа хранения, с которой мы хотим поработать, имеет название по умолчанию First Storage Group. В этом случае команда будет выглядеть так:
Suspend-StorageGroupCopy 'Identity 'E2K7\First Storage Group'
После выполнения этой команды, успешное ее выполнение может быть указано в Exchange Management Shell, если вернуться обратно к подсказкам. В данном случае отсутствие новостей – это плохая новость!
Шаг 2 ' Создание точной копии (Shadow Copy)
Следующим шагом будет создание точной копии тома, содержащего базу данных. В моем случае база данных почтовых ящиков хранилась на диске E: на обоих CCR узлах. Для создания дубликата тома можно использовать инструмент Volume Shadow Copy Service Administrative Tool (vssadmin.exe); Этот инструмент идет в комплекте с Windows 2003.
Сначала давайте посмотрим на список опций, доступных в vssadmin, просто запустив его и не определяя никаких опций. Результаты показаны на рисунке 1.
Как показано на рисунке 1, список опций довольно понятный. Например, чтобы создать новую точную копию, нам нужно просто использовать команду 'create shadow'. Запуск инструмента vssadmin с командой 'create shadow' показывает, что есть два дополнительных параметра /For={Том для копирования} и /AutoRetry={количество минут для повторной попытки}. Параметр /AutoRetry требуется только в том случае, когда нужно использовать принудительные повторные попытки, если запущен другой процесс, создающий дубликат. Очевидно, что параметр /For требуется в любом случае, и в моем примере он будет задан для тома E:, поскольку это том, содержащий базу данных. Итак, наша команда будет выглядеть следующим образом:
vssadmin create shadow /for=e:
Результаты запуска этой команды показаны на рисунке 2.
Видно, что дубликат был успешно создан и имеет ID и имя тома. Нас интересует как раз имя тома, но прежде чем мы продолжим, важно вспомнить, что наша группа хранения все еще приостановлена. Итак, давайте продолжим, поскольку теперь у нас в наличии есть наш дубликат.
Шаг 3 ' Возобновление работы группы хранения
Чтобы продолжить с передачей и воспроизведением журнала трансакций, возникающих в группе хранения, нам нужно запустить команду Resume-StorageGroupCopy. Как вы помните, имя почтового сервера Exchange будет E2K7, а группа хранения называется First Storage Group. Команда возобновления Resume-StorageGroupCopy, по сути, идентична команде приостановки Suspend-StorageGroupCopy в том, что требуемый параметр – это идентификатор группы хранения, что дает нам следующую полную команду:
Resume-StorageGroupCopy 'Identity 'E2K7\First Storage Group'
И опять, после того, как команда была успешно выполнена, это показывается в Exchange Management Shell в разделе подсказок.
Еще немного о точной копии
Следующим шагом будет запуск ESEUTIL в базе данных, чтобы проверить ее целостность. Однако прежде чем мы это сделаем, давайте немного подробнее рассмотрим точную копию, созданную с помощью vssadmin. Как вы помните из рисунка 2, дубликат, созданный с помощью vssadmin содержит имя тома, ассоциированного с ним. Это очень важно, так как мы будем использовать это имя для ссылки на нашу копию далее. Вы также можете получить много важной информации об этой точной копии, запустив следующую команду:
vssadmin list shadows
В результате у нас появится список доступных нам копий, но в этом примере у нас есть только одна копия. Результаты использования этой команды показаны на рисунке 3.
На рисунке 3 видно, что в окне отображается дополнительная информация, такая как детали оригинального тома, с которого была сделана копия, а также машина, которая выполнила копирование. Том дубликата не будет отображаться в Explorer в привычном для нас смысле, поэтому вы можете задать вполне справедливый вопрос, как посмотреть его содержимое. Благодаря блогу Adi Oltean, один из способов для выполнения этой задачи включает выполнение команды 'for /r', которая сама по себе довольно сложная и включает множество настраиваемых опций. Вы можете получить все детали об этой команде путем ввода 'for /?' в окно подсказок команд. Если вы это сделаете, вы заметите, что нужно определить нечто известное как %variable, что в нашем случае приравнивается к необходимости назначения имени переменной для тома точной копии. В своей команде я буду использовать 'SHADOWCOPY' и %s. Таким образом, нам нужно настроить 'SHADOWCOPY' так, чтобы она ссылалась на имя копии, которое мы определили ранее на рисунке 2, чего можно добиться, выполнив команду SET следующим образом:
set SHADOWCOPY=\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
Обратите внимание, что имя тома имеет число поколения в конце, которое будет увеличиваться всякий раз, когда будет выполняться точное копирование этого тома. Теперь, когда более короткая переменная SHADOWCOPY была установлена для более длинного имени тома, мы можем использовать следующую команду, чтобы посмотреть содержимое дубликата:
for /r %SHADOWCOPY% %s in (*.*) do @echo %s
Примерный результат использования этой команды показан на рисунке 4. Эта команда охватывает все файлы (*.*) в %SHADOWCOPY% (включая рекурсию подпапок с помощью опции /r), оценивая файл в параметре %s. Каждое значение, назначенное для %s, затем отображается на экране.
Как вы видите, дубликат содержит ту же структуру файлов, что и оригинальный том. В верхней строке данных вы выидите \Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group папку с Mailbox Database.edb файлом в ней. Вы также можете просматривать папки catalogdata, чтобы удостовериться, что наш дубликат содержит неповрежденные данные.
Шаг 4 ' Запуск ESEUTIL
Предпоследний шаг всего этого процесса заключается в использовании инструмента ESEUTIL в режиме контрольной суммы копии базы данных, содержащейся на томе дубликата. Режим контрольной суммы означает, что нам нужно использовать /k переключатель. Компания Microsoft также утверждает, что нужно использовать /p переключатель с добавленным значением 20, которое, если верить помощнику ESEUTIL, искусственно добавит задержку в одну секунду на каждые 20 IOs. Вписывая полный путь к файлу Mailbox Database.edb, который мы получили на рисунке 4, и не забыв вписать путь в квотах, из-за использования места, наша команда становится:
Eseutil /k /p20 '\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\
Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group\
Mailbox Database.edb'
Конечно, поскольку мы уже отвели %SHADOWCOPY% для имени тома дубликата, мы могли бы использовать более короткую команду:
Eseutil /k /p20 '%SHADOWCOPY%\Program Files\Microsoft\
Exchange Server\Mailbox\First Storage Group\Mailbox Database.edb'
Результаты запуска этой команды показаны на рисунке 5, где видно, что процесс практически завершен.
Когда процесс ESEUTIL завершен, у вас должно появится окно, как показано на рисунке 6. В этом случае процесс был успешно завершен, но вы заметили, что он выполнялся для сравнительно маленькой и чистой базы данных.
Итак, все готово ' у нас есть база данных на томе дубликата, которая была проверена с помощью инструмента ESEUTIL.
Шаг 5 ' Удаление дубликата
Теперь, когда мы убедились, что база данных стабильная и целостная, последнее, что нам нужно сделать – это удалить дубликат, так как в нем больше нет необходимости. Как вы и предполагали, для этого нужно еще раз запустить инструмент vssadmin.exe. В этот раз мы используем команду 'delete shadows', чтобы удалить наш дубликат. Обратите внимание на тот факт, что 'shadows' стоит во множественном числе, в отличие от того момента, когда мы создавали копию. Таким образом, у нас получается следующая команда:
vssadmin delete shadows /for=e:
Программа попросит вас подтвердить, что вы действительно собираетесь удалить дубликат тома, если только вы не используете команду /Quiet.
Заключение
Как я уже говорил, использование функции непрерывной репликации в Exchange 2007 может означать, что вы вручную проверяете целостность копии базы данных. Использование комбинации команд Exchange 2007 и инструментов Windows 2003 позволяет нам сделать это, как вы видели, с помощью определенной серии шагов.