Übersicht über die Sicherungsinitialisierung

Diese Phase der Sicherung initialisiert sowohl den Writer als auch den Anforderer, füllt seine internen Datenstrukturen auf, gibt die Sicherung an und stellt die Kommunikation zwischen Writer und Anforderer über den erforderlichen Aufruf von IVssBackupComponents::GatherWriterMetadataher. Weitere Informationen finden Sie unter Übersicht über die Verarbeitung einer Sicherung unter VSS.

Die folgende Tabelle zeigt die Abfolge der Aktionen und Ereignisse, die für die Sicherungsinitialisierung erforderlich sind.

Anfordereraktion Ereignis Writer-Aktion
Erstellt eine IVssBackupComponents-Schnittstelle und initialisiert sie, um eine Sicherung zu verwalten (siehe CreateVssBackupComponents, IVssBackupComponents::InitializeForBackup) und optional Writer auf dem System zu aktivieren oder zu deaktivieren. Keine Keine
Legen Sie optional den Kontext für Schattenkopievorgänge fest, und fragen Sie optional das System nach den unterstützten Anbietern und Schattenkopien ab (siehe IVssBackupComponents::SetContext, IVssBackupComponents::Query). Keine Keine
Der Anforderer kann zusätzliche Informationen zur Verarbeitung von Sicherungs- und Wiederherstellungsvorgängen bereitstellen (siehe IVssBackupComponents::SetBackupState). Keine Keine
Initiiert den asynchronen Kontakt mit Writern (siehe IVssBackupComponents::GatherWriterMetadata). Identifizieren Erstellt ein WriterMetadatendokument (siehe Arbeiten mit dem Writer Metadata Document, CVssWriter::OnIdentify, IVssCreateWriterMetadata)

Anfordereraktionen während der Sicherungsinitialisierung

Ein IVssBackupComponents-Objekt kann nur für eine Sicherung verwendet werden. Daher muss ein Anforderer bis zum Ende der Sicherung fortfahren, einschließlich der Freigabe der IVssBackupComponents-Schnittstelle. Wenn die Sicherung vorzeitig beendet werden muss, muss der Anforderer IVssBackupComponents::AbortBackup aufrufen und dann das IVssBackupComponents-Objekt freigeben (weitere Informationen finden Sie unter Abbrechen von VSS-Vorgängen). Versuchen Sie nicht, die IVssBackupComponents-Schnittstelle fortzusetzen.

In der Regel wird das Sicherungskomponentendokument eines Anfordernden als leer initialisiert. Ein gespeichertes Sicherungskomponentendokument kann geladen werden, wenn IVssBackupComponents::InitializeForBackup aufgerufen wird, in der Regel zur Unterstützung transportierbarer Schattenkopievolumes. In diesem Fall unterscheidet sich die Kommunikation zwischen Writer und Anforderer etwas von der unten beschriebenen. (Weitere Informationen finden Sie unter Importing Transportable Shadow Copied Volumes.)

Um dem Schattenkopiesatz Volumes hinzuzufügen, muss ein Anforderer zuerst den Kontext für den Schattenkopievorgang festlegen, indem er IVssBackupComponents::SetContext aufruft. Wenn diese Methode nicht aufgerufen wird, wird der Standardkontext für Schattenkopien, VSS _ CTX _ BACKUP, verwendet. Informationen zum Festlegen des Schattenkopiekontexts finden Sie unter Kontextkonfigurationen für Schattenkopien.

Um mit dem Abschluss des Setups vor der Sicherung zu beginnen, muss ein Anforderer IVssBackupComponents::SetBackupStateaufrufen. Dadurch gibt ein Anforderer den Writern Folgendes an:

  • Der Sicherungstyp (wie in VSS _ BACKUP _ TYPEdefiniert)
  • Ob die Sicherung einen startbaren Systemstatus enthält
  • Gibt an, ob der Anforderer die Auswahl einzelner Komponenten unterstützt oder ganze Volumes gesichert.

Alle Anforderer, die an Sicherungs- und Wiederherstellungsvorgängen teilnehmen, müssen immer IVssBackupComponents::GatherWriterMetadataaufrufen. Diese Methode initiiert die Kommunikation zwischen Writer und Anforderer, indem ein VSS Identify-Ereignis generiert wird, als Reaktion darauf, auf das ein Writer sein Metadatendokument erstellt.

Vor dem Aufrufen von IVssBackupComponents::GatherWriterMetadatahat ein Anforderer die Möglichkeit, bestimmte Writer- und Writerklassen mithilfe von IVssBackupComponents::EnableWriterClasses, IVssBackupComponents::D isableWriterInstancesund IVssBackupComponents::D isableWriterClasses explizit zu aktivieren oder zu deaktivieren (standardmäßig sind alle Klassen aktiviert). Nachdem IVssBackupComponents::GatherWriterMetadata aufgerufen wurde, haben diese Aufrufe keine Auswirkungen.

Da es keine Möglichkeit gibt, vor dem Aufrufen von IVssBackupComponents::GatherWriterMetadataeine Liste von Writern auf dem System abzurufen, können Anfordernde erwägen, eine zweite Instanz von IVssBackupComponents zu erstellen und dann zu löschen, um die Liste abzurufen.

Es ist nicht erforderlich, IVssBackupComponents::GatherWriterStatus nach dem Abschluss von IVssBackupComponents::GatherWriterMetadataaufzurufen. Writer, die das von den Aufrufen generierte Identify-Ereignis nicht verarbeiten können, sind nicht Teil der Liste der Writer, die Metadaten bereitstellen, die von IVssBackupComponents::GetWriterMetadataCount und IVssBackupComponents::GetWriterMetadata gefunden wurden (siehe Bestimmen des Writerstatus).

Writeraktionen während der Sicherungsinitialisierung

Als Reaktion auf das Identify-Ereignis ruft VSS die virtuelle Handlermethode jedes Writers auf, CVssWriter::OnIdentify. Ein Writer erstellt sein Writer Metadata Document, indem er die Standardimplementierungen von CVssWriter::OnIdentify überschreibt und die IVssCreateWriterMetadata-Schnittstelle verwendet.

Beachten Sie, dass andere Anwendungen als der aktuelle Anforderer (z. B. Systemanwendungen) Identify-Ereignisse generieren können, die vom Writer behandelt werden müssen. Darüber hinaus gibt es für einen Writer keine Möglichkeit, innerhalb von CVssWriter::OnIdentify zu bestimmen, welche Anwendung das Identify-Ereignis generiert hat.

Da ein Writer während der Verarbeitung eines Sicherungsvorgangs mehrere Identify-Ereignisse empfangen kann, sollte ein Writer niemals Zustandsinformationen im Handler CVssWriter::OnIdentify festlegen.

Stattdessen sollte CVssWriter::OnIdentify einen konsistenten Algorithmus ausführen, um das Writer Metadata Document des Writers zu erstellen. Dies liegt insbesondere daran, dass weder der Anforderer noch der Writer das Dokument ändern können, nachdem ein Writer das Dokument erstellt hat. Ab diesem Zeitpunkt handelt es sich um ein schreibgeschütztes Dokument.

Dies bedeutet, dass die Anzahl und der Typ der Komponenten, die einem Writer zugeordnet sind, welche Dateien Teil jeder Komponente sind, und der explizite Ausschluss von Dateien aus Sicherungs- oder Wiederherstellungsvorgängen nicht geändert werden kann, nachdem ein Writer das Identify-Ereignis verarbeitet hat.

Alle Writer, die an VSS teilnehmen, müssen folgende Schritte ausführen:

  1. Geben Sie eine Wiederherstellungsmethode für alle Komponenten an, die vom Writer mithilfe von IVssCreateWriterMetadata::SetRestoreMethodverwaltet werden.
  2. Fügen Sie mindestens eine Komponente mithilfe von IVssCreateWriterMetadata::AddComponent hinzu (weitere Informationen zur Komponentenspezifikation finden Sie unter Definition of Components by Writers ( Definition of Components by Writers).

Ein Writer gibt die Dateien an, die an einem Sicherungs- oder Wiederherstellungsvorgang teilnehmen sollen, indem er Dateisätze– eine Kombination aus Pfad, Dateispezifikation und Rekursionsflag – einer bestimmten Komponente mithilfe von IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFilesoder IVssCreateWriterMetadata::AddDatabaseLogFilesje nach Typ hinzufügt (siehe Hinzufügen von Dateien zu Komponenten).

Ein Writer kann auch über eine oder mehrere leere Komponenten verfügen, denen keine Dateien hinzugefügt wurden. Diese sind sehr nützlich, um die Komponenten des Writers zu organisieren. (Weitere Informationen finden Sie unter Logisches Pfading von Komponenten.)

Ein Writer verwendet IVssCreateWriterMetadata::AddExcludeFiles, um explizit zu verhindern, dass Dateien in die Sicherung eingeschlossen werden. Dieser explizite Ausschluss ist nützlich, da Platzhalterzeichen verwendet werden können, um Dateien für die Aufnahme anzugeben (siehe Exclude File List Specification). Beachten Sie, dass die Ausschlussdateiliste Vorrang vor Komponentendateilisten hat.

IVssCreateWriterMetadata::AddAlternateLocationMapping wird verwendet, um alternative Speicherortzuordnungen für angegebene Dateisätze zu erstellen, die einer der Writerkomponenten hinzugefügt wurden. Diese Zuordnungen werden während der Dateiwiederherstellung verwendet, wenn die Wiederherstellung am ursprünglichen Speicherort einer Datei nicht möglich oder wünschenswert ist. (Siehe Übersicht über die tatsächliche Dateiwiederherstellung und nicht standardmäßige Sicherungs- und Wiederherstellungsspeicherorte.)

Da der Sicherungsdateisatz im Writer Metadata Document angegeben ist, kann er später nicht mehr geändert werden. Daher sollte ein Writer so codiert werden, dass die Definition des Dateisatzes alle dateien enthält, die in der Sicherung benötigt werden, entweder anhand des Namens oder durch Platzhalterzeichen. Dies kann einige Dateien umfassen, die nach dem Identify-Ereignis erstellt werden können.