Writers

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

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

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

Состояние модуля записи

Записи сохраняют свое состояние в объекте метаданных на основе XML, документе метаданных модуля записи.

Эти метаданные модуля записи являются единственной структурой данных, которая содержит набор файлов (путь, спецификацию файла и флаг рекурсии) данных для резервного копирования и восстановления.

Документ метаданных модуля записи упорядочивает наборы файлов модуля записи по группам или компонентам. Связь одного из этих компонентов во время операций резервного копирования и восстановления с другими компонентами, управляемыми модулем записи, описана в документе метаданных модуля записи по выбору компонента для резервного копирования, его выбору для восстановления и его логическим путям. (Дополнительные сведения см. в разделах Настройка организации компонентов и Работа с возможностью выбора и логическими путями.)

Дополнительные сведения о восстановлении файлов и других проблемах также содержатся в этом документе.

Инициатору запроса требуются метаданные модуля записи в сочетании с собственным документом компонентов резервного копирования для обработки резервной копии или восстановления.

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

Обработка событий записи

Операции VSS модуля записи инициируются посредством получения com-событий.

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

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

  • Если обработчик событий модуля записи (например , CVssWriter::OnFreeze) вызывает метод CVssWriterEx2::GetSessionId, CVssWriter::SetWriterFailure или CVssWriterEx2::SetWriterFailureEx , обработчик событий должен вызвать метод в том же потоке, который вызвал обработчик событий.
  • Реализация обработчика событий, такого как OnFreeze , может при необходимости разгрузить работу в рабочие потоки, если каждый рабочий поток маршалирует все необходимые отчеты об ошибках в исходный поток обработчика событий.

Обработка событий идентификации

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

Событие Identify требует, чтобы записи предоставляли системные сведения о своей конфигурации и файлах, которыми они управляют, с помощью документа метаданных модуля записи. Событие Identify создается для поддержки практически любой операции VSS, включая системные запросы, а также операции теневого копирования, резервного копирования и восстановления. Таким образом, любая реализация обработчика событий Identify CVssWriter::OnIdentify должна быть в состоянии обрабатывать событие Identify в любое время, в том числе в середине обработки другой операции VSS, такой как резервное копирование или восстановление. Событие Identify никогда не следует рассматривать как часть жизненного цикла операции VSS, хотя его создание может быть ожидаемым и обязательным до начала этой операции.

Особенно важно, чтобы сведения о состоянии операции VSS не изменялись в CVssWriter::OnIdentify, так как получение события вне порядка приведет к сбросу этих сведений.

События резервного копирования и восстановления

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

Обработка этих событий представляет собой (с точки зрения модуля записи) жизненный цикл операции резервного копирования или восстановления.

В типичной операции резервного копирования (см. общие сведения об обработке резервной копии в VSS) модуль записи будет обрабатывать следующие события (в дополнение к начальному событию Identify):

  • PrepareForBackup
  • PrepareForSnapshot
  • Freeze
  • Разморозить
  • PostSnapshot
  • BackupComplete
  • BackupShutdown

В типичной операции восстановления (см. обзор обработки восстановления в VSS) модуль записи будет обрабатывать следующие события:

  • Предварительное хранилище
  • PostRestore