Übersicht über die Sicherungsinitialisierung

In dieser Phase der Sicherung werden sowohl der Writer als auch der Anforderer initialisiert, die internen Datenstrukturen ausgefüllt, die Sicherung angegeben und die Writer-/Anforderer-Kommunikation über den erforderlichen Aufruf von IVssBackupComponents::GatherWriterMetadata eingerichtet. Weitere Informationen finden Sie unter Übersicht über die Verarbeitung einer Sicherung unter VSS.

Die folgende Tabelle zeigt die Abfolge von Aktionen und Ereignissen, 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 das Aktivieren oder Deaktivieren von Writern im System. Keine Keine
Legen Sie optional den Kontext für Schattenkopievorgänge fest, und fragen Sie optional im System die Anbieter und Schattenkopien ab, die es unterstützt (siehe IVssBackupComponents::SetContext, IVssBackupComponents::Query). Keine Keine
Der Anforderer kann zusätzliche Informationen zur Behandlung von Sicherungs- und Wiederherstellungsvorgängen bereitstellen (siehe IVssBackupComponents::SetBackupState). Keine Keine
Initiiert asynchronen Kontakt mit Writern (siehe IVssBackupComponents::GatherWriterMetadata). Identify Erstellt ein Writer-Metadatendokument (siehe Arbeiten mit dem Writer-Metadatendokument, 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 Dokument "Sicherungskomponenten" eines Anforderers als leer initialisiert. Ein gespeichertes Sicherungskomponentendokument kann geladen werden, wenn IVssBackupComponents::InitializeForBackup aufgerufen wird, in der Regel zur Unterstützung von transportierbaren schattenkopierten Volumes. In diesem Fall unterscheidet sich die Writer-Anforderer-Kommunikation etwas von der unten beschriebenen. (Weitere Informationen finden Sie unter Importieren von transportablen schattenkopierten Volumes .)

Zum Hinzufügen von Volumes zum Schattenkopiersatz 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 verwendet, VSS_CTX_BACKUP. Informationen zum Festlegen des Schattenkopiekontexts finden Sie unter Kontextkonfigurationen für Schattenkopien.

Um den Abschluss des Setups vor der Sicherung zu beginnen, muss ein Anforderer IVssBackupComponents::SetBackupState aufrufen. Auf diese Weise gibt ein Anforderer den Writern Folgendes an:

  • Der Sicherungstyp (wie in VSS_BACKUP_TYPE definiert)
  • Gibt an, ob die Sicherung einen startbaren Systemstatus enthält.
  • Gibt an, ob der Anforderer die Auswahl einzelner Komponenten unterstützt oder ganze Volumes sichert.

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

Vor dem Aufrufen von IVssBackupComponents::GatherWriterMetadata hat ein Anforderer die Möglichkeit, bestimmte bestimmte Writer und Writer-Klassen mithilfe von IVssBackupComponents::EnableWriterClasses, IVssBackupComponents::D isableWriterInstances und 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 vor dem Aufrufen von IVssBackupComponents::GatherWriterMetadata keine Möglichkeit gibt, eine Liste von Writern auf dem System abzurufen, können Die Anforderer erwägen, eine zweite instance von IVssBackupComponents zu erstellen und dann zu löschen, um die Liste abzurufen.

Es ist nicht erforderlich, IVssBackupComponents::GatherWriterStatus nach Abschluss von IVssBackupComponents::GatherWriterMetadata aufzurufen. Writer, die das durch die Aufrufe generierte Identify-Ereignis nicht verarbeiten können, sind nicht Teil der Liste der Autoren, die Metadaten bereitstellen, die von IVssBackupComponents::GetWriterMetadataCount und IVssBackupComponents::GetWriterMetadata gefunden wurden (siehe Ermitteln 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-Metadatendokument erstellt, indem er die Standardimplementierung von CVssWriter::OnIdentify überschreibt und die IVssCreateWriterMetadata-Schnittstelle verwendet.

Beachten Sie, dass andere Anwendungen als der aktuelle Anforderer (für instance Systemanwendungen) Identifizieren-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.

Dies ist der Fall, da ein Writer bei der Verarbeitung eines Sicherungsvorgangs möglicherweise mehrere Identify-Ereignisse empfängt, sollte ein Writer niemals Zustandsinformationen im CVssWriter::OnIdentify-Handler festlegen.

Stattdessen sollte CVssWriter::OnIdentify einen konsistenten Algorithmus ausführen, um das Writer-Metadatendokument des Writers zu erstellen, insbesondere weil nach dem Erstellen des Dokuments durch einen Writer weder der Anforderer noch der Writer es ändern kann. 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 von der Verarbeitung des Identify-Ereignisses zurückkehrt.

Alle Autoren, die an VSS teilnehmen, müssen folgendes tun:

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

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

Ein Writer kann auch über eine oder mehrere leere Komponenten verfügen, also Komponenten, denen keine Dateien hinzugefügt wurden. Diese sind sehr nützlich, um die Komponenten des Writers zu organisieren. (Siehe 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 Wildcardzeichen verwendet werden können, um Dateien für die Aufnahme anzugeben (siehe Spezifikation der Ausschlussdateiliste). Beachten Sie, dass die Liste der ausschließenden Dateien Vorrang vor Komponentendateilisten hat.

IVssCreateWriterMetadata::AddAlternateLocationMapping wird verwendet, um alternative Speicherortzuordnungen für angegebene Dateisätze zu erstellen, die einer der Komponenten des Writers 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-Metadatendokument angegeben ist, kann er später nicht mehr geändert werden. Aus diesem Grund sollte ein Writer so codiert werden, dass die Definition des Dateisatzes alle Dateien enthält, die für die Sicherung erforderlich sind, entweder nach Namen oder durch Wildcardzeichen. Denkbar ist, dass dies einige Dateien umfassen kann, die nach dem Identify-Ereignis erstellt werden.