Обзор фактического резервного копирования файлов
VSS позволяет инициатору запроса получать доступ к теневой копии томов, содержащих данные для резервного копирования, и копировать данные на носитель резервных копий. Обычно во время этого процесса записи продолжают нормальную работу. Дополнительные сведения см. в статье Общие сведения об обработке резервной копии в VSS.
В следующей таблице показана последовательность действий и событий, необходимых для резервного копирования файлов.
Действие инициатора запроса | Событие | Действие записи |
---|---|---|
Доступ к файлам на томе с теневым копированием (см. раздел IVssBackupComponents::GetSnapshotProperties, VSS_SNAPSHOT_PROP) | Нет | Нет |
Создайте список файлов для резервного копирования и скопируйте данные файлов на носитель резервных копий. | Нет | Нет |
Укажите успешное или неудачное резервное копирование с помощью IVssBackupComponents::SetBackupSucceeded. | Нет | Нет |
Инициатор запроса указывает, что резервное копирование завершено, вызвав IVssBackupComponents::BackupComplete. | BackupComplete | Выполните очистку после резервного копирования (см . раздел CVssWriter::OnBackupComplete, IVssWriterComponents, IVssComponent). |
Инициатор запроса ожидает подтверждения получения события IVssBackupComponents::BackupComplete с помощью IVssAsync. Он также должен проверять состояние модуля записи (см. раздел IVssBackupComponents::CollectWriterStatus, IVssBackupComponents::GetWriterStatus). Инициатор запроса должен вызвать CollectWriterStatus в настоящее время, чтобы привести сеанс записи к завершенным состояниям.
Примечание: Это необходимо только в Windows Server 2008 с пакетом обновления 2 (SP2) и более ранних версий. |
Нет | Нет |
Сохраните документ компонентов резервного копирования и каждый документ метаданных модуля записи в XML-документы, которые можно записать на носитель резервных копий (см. раздел IVssBackupComponents::SaveAsXML и IVssExamineWriterMetadata::SaveAsXML). | Нет | Нет |
Действия модуля записи во время резервного копирования файлов
После завершения теневой копии все операции ввода-вывода в системе, для которой выполняется резервное копирование, должны быть возобновлены без нарушения целостности резервной копии. Это одна из основных причин использования функции теневого копирования.
Таким образом, как и на этапе обнаружения (см. обзор этапа обнаружения резервных копий), в то время как на самом деле выполняется резервное копирование файлов, к записи предъявляется несколько требований.
После завершения резервного копирования и создания события BackupComplete инициатором запроса VSS вызовет метод CVssWriter::OnBackupComplete каждого модуля записи, виртуальный метод, который по умолчанию просто возвращает ЗНАЧЕНИЕ TRUE. Однако модули записи могут переопределить реализацию по умолчанию и выполнить такие действия, как удаление оставшихся временных файлов или использовать интерфейс IVssWriterComponents, с которым он вызывается, чтобы проверка состояние резервной копии каждого из включенных компонентов (и любого набора компонентов, которые они могут определить), извлекая соответствующий объект IVssComponent. Затем модуль записи может определить успешность или сбой резервного копирования, вызвав IVssComponent:GetBackupSucceeded. Значение, возвращаемое IVssComponent:GetBackupSucceededed, будет иметь значение TRUE только в том случае, если все явно включенные файлы в компоненте и все неявно включенные в него компоненты были успешно созданы.
После завершения вызова CVssWriter::OnBackupComplete инициатор запроса должен вызвать IVssBackupComponents::CollectWriterStatus и IVssBackupComponents::GetWriterStatus (для каждого модуля записи) в последний раз. Память состояния сеанса записи — это ограниченный ресурс, и в конечном итоге записи должны повторно использовать состояния сеанса. Этот шаг помечает состояние сеанса резервного копирования модуля записи как завершенное и уведомляет VSS о том, что этот слот сеанса резервного копирования может быть повторно использован последующей операцией резервного копирования.
Действия инициатора запроса во время резервного копирования файлов
Как указано в разделе Обзор этапа обнаружения резервных копий, не следует создавать фактический список файлов для резервного копирования до завершения теневой копии.
Объект устройства, соответствующий теневой копии заданного тома, используется для получения доступа к файлам на теневой копии тома после завершения теневой копии. Объект устройства получается из объекта VSS_SNAPSHOT_PROP , возвращенного IVssBackupComponents::GetSnapshotProperties. Каждая теневая копия набора теневых копий будет иметь собственный объект устройства.
Затем объект устройства и пути, полученные из спецификаций документа метаданных модуля записи компонентов, используются для выбора файлов для резервного копирования. Дополнительные сведения см. в разделе Запрашивающего доступ к теневым скопированным данным .
Файлы, которые будут включены в список резервных копий, зависят от характера конкретной резервной копии, от возможности выбора компонентов для резервного копирования и структуры логического пути модуля записи (см. раздел Работа с возможностью выбора для резервного копирования).
Помимо файлов, указанных в компонентах, данный модуль записи может также явно исключить файлы. Исключение файлов должно соблюдаться всегда, независимо от того, какие компоненты выбраны.
Кроме того, как указано в обзоре этапа обнаружения резервных копий, подключенная папка или точка повторного анализа могут находиться в теневой копии и создавать резервную копию. Однако подключенную папку или точку повторного анализа невозможно просмотреть на томе с теневым копированием (см. раздел Работа с подключенными папками и точками повторного анализа).
Также следует соблюдать осторожность во время операции резервного копирования, если альтернативный путь , возвращаемый IVssWMFiledesc::GetAlternateLocation , не является пустым. Альтернативный путь отличается от сопоставления альтернативного расположения тем, что он используется только во время резервного копирования, а альтернативное сопоставление расположений — только во время восстановления.
В этом случае резервное копирование данных выполняется не из обычного расположения (указанного в IVssWMFiledesc::GetPath), а из расположения, возвращаемого IVssWMFiledesc::GetAlternateLocation. При восстановлении файл должен быть возвращен в обычное расположение. Дополнительные сведения см. в разделе Расположения резервного копирования и восстановления по умолчанию .
VSS не накладывает никаких ограничений на фактический механизм резервного копирования данных на носитель хранилища или выбор этого носителя. Однако рекомендуется обрабатывать файлы каждого компонента каждого экземпляра модуля записи как единое целое. Рекомендации по созданию списка файлов резервной копии см. в разделе Создание резервного набора данных.
Успешное или неудачное резервное копирование любого из файлов, управляемых заданным компонентом и (если он определяет набор компонентов) его подкомпонентов для данного экземпляра модуля записи, должно быть сохранено в документе Компонентов резервного копирования путем вызова IVssBackupComponents::SetBackupSucceeded. Если какой-либо файл, управляемый компонентом или набором компонентов, не удается выполнить резервное копирование, сообщается, что весь компонент завершается ошибкой. Следует всегда регистрировать точные сведения о том, для какого файла не удалось выполнить резервное копирование.
Разработчикам может быть полезно хранить на носителе резервных копий, какие файлы архивируются, компоненты и набор компонентов, в которые они были включены, их спецификацию и исходные пути. Также может быть полезно хранить такие сведения, как определение каждого компонента модуля записи. Это может упростить операцию извлечения. Однако такие сведения оставляются разработчику, который запрашивает запрос.
Поскольку модули записи могут изменять документ компонентов резервного копирования при обработке события PostSnapshot , созданного вызовом инициатора запроса IVssBackupComponents::D oSnapshotSet, документ компонентов резервного копирования не следует сохранять до завершения этого асинхронного вызова.
Хотя это может произойти и раньше, это также удобное время для сохранения документа метаданных модуля записи.
Очень важно, чтобы документы компонентов резервного копирования и документы метаданных модуля записи сохранялись с помощью IVssBackupComponents::SaveAsXML и IVssExamineWriterMetadata::SaveAsXML. Если это не так, использовать VSS во время восстановления файла будет невозможно.
В дополнение к хранению исходных метаданных некоторые приложения резервного копирования могут оказаться полезными сохранить копию собственного списка файлов (в собственном оптимизированном формате) и связанные с ними записи, компоненты, процедуры восстановления и сведения о расположении на носителе резервной копии для последующего извлечения. Такой список можно использовать, чтобы избежать некоторых синтаксического анализа и сравнения документов метаданных модуля записи и документов компонентов резервной копии во время восстановления.
Резервные копии томов могут содержать данные, которые не управляются модулями записи VSS. Эти данные могут и должны создаваться из теневых копируемых томов, где они будут находиться в отказоустойчивом состоянии. Дополнительные сведения см . в статье Резервное копирование без участия модуля записи .