Роль инициатора запроса в добавочных и разностных резервных копиях VSS

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

  1. Определите, какая степень поддержки модуля записи доступна (с помощью IVssBackupComponents::GetWriterMetadata для получения доступа к информации в документах метаданных модуля записи), в частности, определите, какая схема резервного копирования поддерживается (VSS_BACKUP_SCHEMA).
  2. Задайте соответствующее состояние резервного копирования.
  3. Получите спецификации уровня файлов и наборов файлов для добавочной или разностной резервной копии.
  4. Выполните резервное копирование.

Определение инкрементной и разностной поддержки и конфигурации инициатора запроса

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

Определение поддержки записи

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

Маска схемы резервного копирования модуля записи, поддерживающего методы инкрементной или дифференциальной обработки VSS, будет содержать либо VSS_BS_INCREMENTAL , либо VSS_BS_DIFFERENTIAL, либо и то, и другое. Авторы могут также указывать ограничения на их участие с флагом VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL . (Дополнительные сведения о схемах резервного копирования см. в разделе VSS_BACKUP_SCHEMA .

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

Инициатор запроса указывает, что резервная копия является добавочной или разностной резервной копией, устанавливая тип резервной копии VSS_BT_INCREMENTAL или VSS_BT_DIFFERENTIAL с помощью метода IVssBackupComponents::SetBackupState перед формированием события PrepareForBackup .

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

Получение спецификаций модуля записи для добавочных и разностных резервных копий

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

Однако модуль записи может добавлять разностные файлы или запрашивать частичную поддержку файлов до успешной обработки события PostSnapshot .

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

Получение сведений о спецификации резервного копирования файлов

Сведения о спецификации резервного копирования файлов на уровне набора файлов (VSS_FILE_SPEC_BACKUP_TYPE) содержатся в документе метаданных модуля записи каждого модуля записи и могут быть проверены сразу после успешного возвращения IVssBackupComponents::CollectWriterMetadata.

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

Инициатор запроса может определить, какой документ метаданных модуля записи должен запрашиваться с помощью IVssBackupComponents::GetWriterComponentsCount и IVssBackupComponents::GetWriterComponents. Экземпляр интерфейса IVssWriterComponentsExt , возвращаемый IVssBackupComponents::GetWriterComponents , предоставляет сведения о записи с помощью метода IVssWriterComponentsExt::GetWriterInfo .

Запрашивающий объект получает сведения о компоненте через экземпляры интерфейса IVssWMComponent , соответствующие включенного компонента, управляемого заданным модулем записи, с помощью IVssExamineWriterMetadata::GetComponent.

Сведения о наборах файлов, управляемых компонентом, соответствующим интерфейсу IVssWMComponent , получаются с помощью вызовов IVssWMComponent::GetFile, IVssWMComponent::GetDatabaseFile или IVssWMComponent::GetDatabaseLogFile (в соответствующих случаях).

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

Тип резервного копирования спецификации файлового набора можно получить путем вызова IVssWMFiledesc::GetBackupTypeMask.

Получение сведений о частичном и разностных файлах

Инициатор запроса получает частичные и разностные сведения о файлах через интерфейс IVssComponent .

Инициатор запроса может выполнять итерацию всех модулей записи, включенных в резервную копию, с помощью IVssBackupComponents::GetWriterComponentsCount и IVssBackupComponents::GetWriterComponents.

Экземпляр интерфейса IVssWriterComponentsExt , возвращаемый IVssBackupComponents::GetWriterComponents , предоставляет доступ ко всем экземплярам интерфейса IVssComponent , соответствующим явно включенным компонентам модуля записи, с помощью методов IVssWriterComponentsExt::GetComponents и IVssWriterComponentsExt::GetComponentCount .

Инициатору запроса потребуется пройти через все экземпляры IVssComponent для всех модулей записи, схема которых поддерживает добавочное или разностное резервное копирование, т. е. средства записи, маска схемы резервного копирования которых возвращается IVssExamineWriterMetadata::GetBackupSchema, включает VSS_BS_INCREMENTAL , когда тип резервной копии VSS_BT_INCREMENTAL, или VSS_BS_DIFFERENTIAL , когда тип резервного копирования VSS_BS_DIFFERENTIAL.

Сведения о частичном файле получаются путем вызова IVssComponent::GetPartialFileCount и IVssComponent::GetPartialFile (см. раздел Работа с частичными файлами).

Для модулей записи, которые поддерживают операции резервного копирования на основе данных последнего изменения файла (записи, маска схемы резервного копирования которых возвращается IVssExamineWriterMetadata::GetBackupSchema, включает VSS_BS_LAST_MODIFY), разностные сведения о файле получаются путем вызова IVssComponent::GetDifferencedFilesCount и IVssComponent::GetDifferencedFile.

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

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

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

Реализация добавочных или разностных резервных копий

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

Неподдерживающие записи

Модули записи, схема которых не поддерживает добавочное или разностное резервное копирование (средства записи, маска схемы резервного копирования которых возвращается IVssExamineWriterMetadata::GetBackupSchema, включает VSS_BS_INCREMENTAL , когда тип резервного копирования VSS_BT_INCREMENTAL или не включает VSS_BS_DIFFERENTIAL , когда тип резервной копии VSS_BS_DIFFERENTIAL), не может обеспечить прямую поддержку добавочной или разностной операции резервного копирования.

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

  • Резервное копирование файлов, не принадлежащих неподдерживаемой записи (четко укажите это пользователю)
  • Резервное копирование всех файлов неподдерживаемых модулей записи
  • Выполните добавочное резервное копирование с помощью данных файловой системы и собственных журналов запрашивающего объекта.

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

Вспомогательные записи

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

  1. Резервное копирование разностных файлов:

    Для модулей записи, поддерживающих операции резервного копирования на основе данных последнего изменения (записи, маска схемы резервного копирования которых возвращается IVssExamineWriterMetadata::GetBackupSchema, включает VSS_BS_LAST_MODIFY), инициатор запроса использует путь, спецификацию файла и сведения о флаге рекурсии, возвращаемые IVssComponent::GetDifferencedFile , чтобы создать список файлов в качестве кандидатов для добавочного резервного копирования или восстановления.

    IVssComponent::GetDifferencedFile также может возвращать время последнего изменения (выраженное в виде структуры FILETIME ).

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

    Например, если время последнего изменения файла, возвращенное модулем записи, было следующим:

    • После последней полной резервной копии файл должен быть включен в добавочные и разностные резервные копии.
    • После последней полной резервной копии, но до последней добавочной резервной копии файл должен быть включен в операции добавочного резервного копирования, но не разностные резервные копии.

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

  2. Использование операций с частичными файлами:

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

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

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

  3. Работа с типом резервного копирования спецификации файла:

    Обработав все разностные файлы и частичные операции с файлами, инициатор запроса теперь обрабатывает все оставшиеся файлы в резервном наборе на основе типа резервной копии спецификации файла (VSS_FILE_SPEC_BACKUP_TYPE).

    Существует три значения перечисления VSS_FILE_SPEC_BACKUP_TYPE , которые влияют на разностные и добавочные резервные копии:

    • VSS_FSBT_ALL_BACKUP_REQUIRED
    • VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED
    • VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED

    Существует три значения "требуется теневое копирование":

    • VSS_FSBT_ALL_SNAPSHOT_REQUIRED
    • VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED
    • VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED

    Наборы файлов, помеченные типом резервного копирования спецификации файла "требуется теневое копирование", указывают на то, что инициатору запроса необходимо копировать данные из теневой копии при выполнении операций резервного копирования INCREMENTAL, DIFFERENTIAL или ALL (включая как добавочные, так и разностные операции) резервного копирования.

    Флаг "требуется резервное копирование", применяемый к операциям резервного копирования INCREMENTAL, DIFFERENTIAL или ALL, указывает, что модуль записи ожидает, что копия текущей версии набора файлов будет доступна после восстановления любой операции резервного копирования. Как правило, это означает, что если набор файлов помечен как "требуется резервное копирование", инициатор запроса копирует все его члены на носитель резервных копий во время добавочного или разностного резервного копирования, независимо от того, когда в последний раз выполнялось резервное копирование или изменение.

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

Метки резервных копий

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

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

Вспомогательные средства записи сохраняют метку резервного копирования в документе компонентов резервного копирования в виде строки с помощью метода IVssComponent::SetBackupStamp .

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