Все, что вы хотели узнать* о резервном копировании Exchange — часть 1

Исходная статья опубликована 5 июня 2012 г.

*но боялись спросить

Если вы находите внутренние механизмы резервного копирования данных Exchange, использующие теневое копирование томов (VSS), несколько загадочными, не расстраивайтесь — вы не одиноки. Администраторы могут спросить, что означают события "замораживания" и "размораживания", которые можно увидеть в журналах событий? Что такое "модуль записи VSS Exchange" и что он делает с базами данных? Как он создает моментальный снимок базы данных размером 135 ГБ меньше чем за 60 секунд?

Если вы когда-то задавали эти вопросы, но ответы привели вас в еще большее недоумение, вам поможет эта статья. Чтобы уяснить, как работает резервное копирование VSS Exchange, важно понимать основы VSS. Превосходная документация по этой теме имеется в библиотеках TechNet и MSDN, а также в блоге группы Windows Server Core: "Спросите группу Core". Мой уважаемый коллега Рэнди Монтелеоне (Randy Monteleone) очень удачно обобщил основные сведения о VSS в своей статье, а также привел ссылки (повторенные здесь) на несколько хороших руководств TechNet по VSS:

Практическое руководство: трассировка VSS. Рэнди Монтелеоне
https://blogs.technet.com/b/askcore/archive/2012/04/29/how-to-vss-tracing.aspx

Как работает служба теневого копирования томов
https://technet.microsoft.com/en-us/library/cc785914(WS.10).aspx

Служба теневого копирования томов
https://technet.microsoft.com/en-us/library/ee923636.aspx

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

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

Моментальные снимки

Решения VSS для Exchange и других приложений существенно различаются в зависимости от конфигурации оборудования и программного обеспечения. Существуют моментальные снимки клонирования и копирования при записи (COW), аппаратные и программные решения, а также множество технологий, основанных на базовой подсистеме VSS. Применительно к резервному копированию Exchange мы рассмотрим только один тип решения. Дальнейшие сведения относятся к моментальным снимкам, называемым снимками "копирования при записи" или сокращенно "COW".

При резервном копировании VSS Exchange на основе моментальных снимков COW создаются моментальные снимки дисков, на которых размещены данные Exchange. Даже если копируется лишь один файл базы данных и несколько журналов, VSS создает моментальный снимок всего диска, в котором сохраняются любые данные. Если данные распределены между несколькими дисками (например, если база данных Exchange находится на одном диске, а журналы — на другом), VSS создаст снимки всех этих дисков.

Итак, что такое "моментальный снимок"? Моментальный снимок тома — это область в так называемом "теневом хранилище" — небольшой области диска, которая находится в папке System Volume Information.

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

Моментальный снимок диска E: создается в 13.00:

image

Через минуту записывается один из блоков, но сначала данные его состояния на 13.00 сохраняются в разностной области:

image

По мере изменения диска данные его состояния на 13.00 записываются в теневое хранилище, сохраняя запись диска в его состоянии на тот момент:

image

Следующий шаг:

image

На этом рисунке сервер резервного копирования запрашивает данные из моментального снимка блоков 2 и 53. Блок 53 по состоянию на 13.00 сохранен в снимке, поэтому он копируется непосредственно из теневого хранилища. Блок 2 не изменился с 13.00, поэтому он копируется через драйвер VSS VOLSNAP.SYS, который действует как драйвер-фильтр под драйвером файловой системы NTFS.SYS. Работая в стеке IRP (это часть памяти ядра, которая управляет дисковыми операциями ввода-вывода) под файловой системой, он может считывать блоки данных, не учитывая возражения NTFS о том, что файл используется. VOLSNAP.SYS также отвечает за копирование блоков в теневое хранилище, когда для них запрашивается операция записи (отсюда и название "копирование при записи"). Дополнительные сведения о драйвере VOLSNAP.SYS можно найти в статье Тима МакМайкла (Tim McMichael):

VSS Exchange и размер разностного блока…
https://blogs.technet.com/b/timmcmic/archive/2011/07/12/exchange-vss-and-differential-block-size.aspx

Итак, вы получили основные сведения о моментальных снимках COW. Давайте посмотрим, как они работают в Exchange, а также остановимся на нескольких важных понятиях:

Модуль записи Microsoft Exchange

Мы знаем, что для любого диска, на котором хранятся данные Exchange, VSS создает моментальный снимок. Как именно приложение резервного копирования определяет, какие это диски? При выборе баз данных для резервного копирования администраторы часто не указывают, на каких дисках хранятся их файлы. Поэтому требуется механизм, предоставляющий сведения о местонахождении файлов данных, на основании которых VSS создаст снимки соответствующих дисков. Кроме того, эти сведения сообщают приложению резервного копирования (также называемому "запрашивающей стороной VSS"), какие именно файлы данных должны быть скопированы из снимков для сохранения на носителе резервных копий, поскольку мы не хотим копировать с диска ненужные данные.

В данном случае рабочим механизмом является модуль записи VSS Microsoft Exchange. Как и модули записи VSS других приложений (их довольно много; чтобы увидеть их список, выполните команду VSSADMIN LIST WRITERS), сначала он сообщает приложению резервного копирования о том, какие данные подлежат резервному копированию. К этим данным, в частности, относятся EDB-файл, журналы и файл контрольной точки для каждой запрошенной базы данных. Сведения об этих характерных для Exchange файлах данных называются метаданными модуля записи .

image

(щелкните эскиз, чтобы просмотреть полноразмерное изображение)

На этом рисунке мы видим начальные шаги резервного копирования Exchange. Модуль записи Exchange сообщает серверу резервного копирования (запросившей стороне), что база данных находится в папке на томе E:, а ее журналы транзакций — в папке на томе D:. На основании этих сведений приложение резервного копирования запросит моментальные снимки томов D: и E: в ходе выполнения задания.

Помимо предоставления метаданных запрашивающей стороне VSS, модуль записи VSS Exchange выполняет еще одну важную роль. Он отвечает за задержку операций записи в базы данных и журналы на диске (" замораживание ") на время, необходимое для создания моментальных снимков. Создание снимка COW обычно занимает немного времени, так как первоначально он содержит только обозначение области теневого хранилища, в которой будут сохраняться блоки при их изменении на действующем диске. Несмотря на относительную быстроту этой операции, на ее выполнение может уйти до минуты. Этого времени вполне достаточно, чтобы блоки данных на диске могли измениться. Таким образом, изменение блоков может произойти в интервале между началом и завершением процесса создания снимка. Поскольку у изменяющихся блоков данных нет оригиналов, сохраненных с момента начала создания снимка, они могут утратить согласованность с другими данными снимка (в частности, с файлами журналов, базы данных и контрольной точки). Поэтому модуль записи Exchange запрещает службе банка данных или службе репликации MS Exchange записывать содержимое ОЗУ в "замороженные" файлы базы данных. В случае службы банка данных текущий файл журнала транзакций (Exx.log) сворачивается и закрывается перед тем как модуль записи Exchange разрешит VSS сделать снимок. Это гарантирует, что файлы данных не будут изменяться в течение интервала времени между началом и завершением создания снимка. После завершения процесса создания снимка базы данных " размораживаются ". Когда базы данных "размораживаются", задержанные в ОЗУ операции записи на диск возобновляются.

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

Метод CVssWriter::OnFreeze
https://msdn.microsoft.com/en-us/library/windows/desktop/aa381563(v=vs.85).aspx

Последняя важная обязанность модуля записи Exchange — сообщить службе банка данных (или службе репликации MS Exchange в случае резервного копирования пассивной копии) о завершении резервного копирования и, при необходимости, выполнить задачи после резервного копирования, такие как усечение журнала, пометка базы данных маркером завершения резервного копирования и т. д.

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

Благодарю за вклад в создание этих статей Майкла Блэнтона (Michael Blanton), Тима МакМайкла (Tim McMichael), Рэнди Монтелеоне (Randy Monteleone), Дэйва Веспа (Dave Vespa) и Тома Керна (Tom Kern).

Джесс Тедофф (Jesse Tedoff)

Это локализованная запись блога. Исходная статья доступна по адресу: Everything You Need to Know About Exchange Backups* - Part 1