Сведения о создании теневого копирования
Как правило, создание теневого копирования зависит от типа создаваемой теневой копии, ее контекста и роли, заданной записи в операции теневого копирования. (Дополнительные сведения см. в конфигурациях контекста теневого копирования.)
Контекст теневого копирования задается путем вызова метода IVssBackupComponents::SetContext. Перед вызовом метода IVssBackupComponents::D oSnapshotSet для создания теневого копирования запросы должны вызывать методы IVssBackupComponents в порядке, указанном в следующих разделах.
Предварительные требования для всех теневых копий
Независимо от уровня участия в записи, создание любой теневой копии всегда требует инициализации запрашивающего с помощью вызовов IVssBackupComponents::InitializeForBackup и IVssBackupComponents::StartSnapshotSet.
Если этот вызов не выполнен, метод IVssBackupComponents::D oSnapshotSet возвращает ошибку.
Теневые копии с участием записи
Если контекст теневого копирования указывает участие записи (то есть IVssBackupComponents::SetContext вызывается с VSS_CTX_BACKUPили VSS_CTX_APP_ROLLBACK):
- Запросы всегда должны вызывать IVssBackupComponents::CollectWriterMetadata, когда контекст теневого копирования поддерживает участие в записи. Если контекст теневого копирования поддерживает участие записи и IVssBackupComponents::CollectWriterMetadata не вызывается до IVssBackupComponents::D oSnapshotSet, будет возвращена ошибка.
- Если запрашивающий объект хочет выбрать определенные компоненты записи, необходимо вызвать IVssBackupComponents::AddComponent перед вызовом StartSnapshotSet для создания набора теневого копирования.
- StartSnapshotSet необходимо вызвать для создания набора теневого копирования.
- Запрашивающие могут добавлять один или несколько томов в набор теневого копирования путем вызова AddToSnapshotSet. Некоторые компоненты записи могут не указывать затронутые тома. В этом случае допустимо, чтобы набор моментальных снимков был пустым (т. е. не содержит томов).
- Чтобы гарантировать согласованность метаданных записи, запрашивающий объект всегда должен вызывать IVssBackupComponents::P repareForBackup даже если компоненты не выбраны. Это приводит к созданию события PrepareForBackup, в котором VSS вызывает метод CVssWriter::OnPrepareBackup для каждого участника модуля записи.
- VSS создаст PrepareForSnapshot и заморозить события перед созданием теневой копии в ответ на IVssBackupComponents::D oSnapshotSet. Записи будут обрабатывать события с CVssWriter::OnPrepareSnapshot и CVssWriter::OnFreeze.
- VSS создаст события Thaw и postSnapshot события после создания теневой копии в ответ на IVssBackupComponents::D oSnapshotSet. Записи будут обрабатывать события с CVssWriter::OnThaw и CVssWriter::OnPostSnapshot.
Теневые копии без участия в записи
Создание теневых копий без участия записи не рекомендуется для стандартных приложений резервного копирования (см. резервные копии без участия записи).
Существуют такие способы, как быстрое резервное копирование диска, чтобы обеспечить защиту от случайного повреждения файлов, которые можно проводить без явного участия в записи. Такая теневая копия будет иметь контекст VSS_CTX_FILE_SHARE_BACKUP или VSS_CTX_NAS_ROLLBACK.
Для этого типа теневого копирования обратите внимание на следующее:
- Запросы должны по-прежнему вызывать необходимые методы, перечисленные в предварительных требованиях для всех теневых копий.
- Запросы могут вызывать IVssBackupComponents::GatherWriterMetadata, но это не обязательно.
- Если запросы вызывают IVssBackupComponents::AddComponent, IVssBackupComponents::P repareForBackupили IVssBackupComponents::BackupComplete, будет возвращена ошибка.
- Поставщики не будут создавать PrepareForSnapshot, заморозить, thaw или PostSnapshot события для этого типа теневого копирования.