Поделиться через


Обзор инициализации резервного копирования

На этом этапе резервного копирования инициализируются как компонент записи, так и компонент запроса, заполняются их внутренние структуры данных, указывается резервная копия и устанавливается связь между компонентами записи и запроса через обязательный вызов функции IVssBackupComponents::GatherWriterMetadata. Дополнительные сведения см. в разделе Обзор обработки резервного копирования вVSS.

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

Действие запрашивающего Событие Действие автора
Создает интерфейс IVssBackupComponents и инициализирует его для управления резервным копированием (см. CreateVssBackupComponents, IVssBackupComponents::InitializeForBackup) и при необходимости позволяет включать или отключать службы записи данных в системе. Никакой Нет
При необходимости задайте контекст для операций теневого копирования и при необходимости запросите систему о поддерживаемых поставщиках и теневых копиях, см. раздел IVssBackupComponents::SetContext, IVssBackupComponents::Query. Нет Никакой
Запрашивающий может предоставить дополнительные сведения об обработке операций резервного копирования и восстановления (см. IVssBackupComponents::SetBackupState) Никакой Никакой
Инициирует асинхронный контакт с писателями (см. IVssBackupComponents::GatherWriterMetadata) Определить Создает документ метаданных Writer (см. Работа с документом метаданных Writer, CVssWriter::OnIdentify, IVssCreateWriterMetadata)

 

Действия запрашивающего устройства во время инициализации резервного копирования

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

Как правило, документ компонентов резервного копирования для запрашивающего инициализируется как пустой. Сохраненный документ компонентов резервного копирования можно загрузить, когда вызывается IVssBackupComponents::InitializeForBackup, обычно для поддержки переносимых теневых копируемых томов. В этом случае общение между автором и заказчиком будет несколько отличаться от того, что описано ниже. (Дополнительные сведения см. в разделе импортирование переносимых томов с теневыми копиями.)

Чтобы добавить тома в набор теневого копирования, запрашивающий должен сначала задать контекст для операции теневого копирования путем вызова IVssBackupComponents::SetContext. Если этот метод не вызывается, используется контекст по умолчанию для теневых копий, VSS_CTX_BACKUP. Сведения о настройке контекста теневого копирования см. в разделе Конфигурации контекста теневого копирования.

Чтобы начать завершение установки перед резервной копией, запрашивающий должен вызвать IVssBackupComponents::SetBackupState. При этом запрашивающий указывает авторам:

  • Тип резервного копирования (как определено в VSS_BACKUP_TYPE)
  • Включает ли резервное копирование загрузочное состояние системы
  • Поддерживает ли запрашиватель выбор отдельных компонентов или выполняет резервное копирование целых томов.

Все запросчики, участвующие в операциях резервного копирования и восстановления, всегда должны вызывать IVssBackupComponents::GatherWriterMetadata. Этот метод инициирует связь писателя-запросчика, создавая событие VSS Идентификация, в ответ на которое писатель создает документ метаданных.

Перед вызовом IVssBackupComponents::GatherWriterMetadata, у запрашивающего есть возможность явно включить или отключить определенные писатели и классы писателей с помощью IVssBackupComponents::EnableWriterClasses, IVssBackupComponents::DisableWriterInstancesи IVssBackupComponents::DisableWriterClasses (по умолчанию все классы включены). После вызова IVssBackupComponents::GatherWriterMetadata эти вызовы больше не оказывают влияния.

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

Не требуется вызывать IVssBackupComponents::GatherWriterStatus после завершения IVssBackupComponents::GatherWriterMetadata. Писатели, которые не смогут обработать событие Identify, созданное вызовами, не будут частью списка писателей, предоставляющих метаданные, найденные IVssBackupComponents::GetWriterMetadataCount и IVssBackupComponents::GetWriterMetadata (см. Определение состояния писателя).

Действия записи во время инициализации резервного копирования

В ответ на событие Идентификации VSS вызывает метод виртуального обработчика записи CVssWriter::OnIdentify. Писатель создает свой документ метаданных писателя путем переопределения реализации CVssWriter::OnIdentify и использования интерфейса IVssCreateWriterMetadata.

Обратите внимание, что приложения, отличающиеся от текущего запрашивающего (например, системные приложения), могут генерировать события идентификации, которые должны обрабатываться автором. Кроме того, автор не может определить из CVssWriter::OnIdentify, какое приложение создало событие идентификации.

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

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

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

Все авторы, участвующие в VSS, должны сделать следующее:

  1. Укажите метод восстановления для всех компонентов, управляемых писателем, с помощью IVssCreateWriterMetadata::SetRestoreMethod.
  2. Добавьте по крайней мере один компонент с помощью IVssCreateWriterMetadata::AddComponent (см. определение компонентов писателями для получения дополнительной информации о спецификации компонентов).

Письменная программа указывает файлы, которые должны участвовать в операции резервного копирования или восстановления, добавляя наборы файлов—сочетание пути, спецификации файла и флага рекурсии—для данного компонента с помощью IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFilesили IVssCreateWriterMetadata::AddDatabaseLogFiles, в зависимости от типа (см. Добавление файлов в компоненты).

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

Писатель использует IVssCreateWriterMetadata::AddExcludeFiles, чтобы явно предотвратить включение файлов в резервную копию. Это явное исключение полезно, так как подстановочные знаки можно использовать для указания файлов для включения (см. раздел Исключение спецификации списка файлов). Обратите внимание, что список файлов исключения имеет приоритет над списками файлов компонентов.

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

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