Übersicht über Aufgaben vor der Sicherung

Aufgaben vor der Sicherung unter VSS konzentrieren sich auf das Erstellen einer Schattenkopie der Volumes, die Daten für die Sicherung enthalten. Die Sicherungsanwendung speichert Daten aus der Schattenkopie, nicht aus dem zugrunde liegenden Volume. Weitere Informationen finden Sie unter Übersicht über die Verarbeitung einer Sicherung unter VSS.

Anforderer warten in der Regel darauf, dass sich Autoren auf die Sicherung vorbereiten und die Schattenkopie erstellen. Der Writer muss bestimmen, ob er an der Sicherung teilnehmen soll, und seine Dateien und sich selbst so konfigurieren, dass sie für die Sicherung und Schattenkopie bereit sind. Die folgende Tabelle zeigt die Abfolge von Aktionen und Ereignissen, die zur Vorbereitung eines Sicherungsvorgangs erforderlich sind.

Anfordereraktion Ereignis Writer-Aktion
Der Anforderer kann Sicherungsoptionen festlegen (siehe IVssBackupComponents::SetBackupOptions). Keine Keine
Unterstützung von inkrementellen und differenziellen Sicherungsvorgängen durch Untersuchen aller gespeicherten Sicherungsstempel (siehe IVssComponent::GetBackupStamp, IVssBackupComponents::SetPreviousBackupStamp) Keine Keine
Benachrichtigung von Writern zur Vorbereitung eines Sicherungsvorgangs mithilfe von IVssBackupComponents::P repareForBackup PrepareForBackup Writer-Vorbereitungen umfassen das Bestimmen, ob Dateien gesichert werden sollen, ob der Writer am Einfrieren von Schattenkopien teilnimmt, sowie das Erstellen von writerspezifischen Metadaten (siehe CVssWriter::OnPrepareBackup, CVssWriter::IsPathAffected, IVssWriterComponents, IVssComponent, IVssComponent::GetBackupOptions, CVssWriter::AreComponentsSelected, IVssComponent::SetBackupMetadata und IVssComponent:: GetPreviousBackupStamp.
Der Anforderer wartet darauf, dass Writer die Sicherung mithilfe von IVssAsync eingerichtet haben. Außerdem sollte writer status überprüft werden (siehe IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus). Keine Keine
Der Anforderer fordert mithilfe von IVssBackupComponents::D oSnapshotSet eine Schattenkopie an. Keine Keine
Keine PrepareForSnapshot CVssWriter::OnPrepareSnapshot: Versetzen Sie den Writer in einen Schattenkopie-bereit-Zustand.
Keine Freeze CVssWriter::OnFreeze: Endgültige Einrichtung vor der Schattenkopie.
Keine Reaktivieren CVssWriter::OnThaw: Normale Funktion (einschließlich E/A) kann fortgesetzt werden.
Keine PostSnapshot CVssWriter::OnPostSnapshot: Final sauber ups of shadow copy vorbereitungen. Siehe IVssComponent::AddDifferencedFilesByLastModifyTime und IVssComponent::SetBackupStamp.
Der Anforderer wartet mit IVssAsync auf den Abschluss der Schattenkopie. Er sollte auch writer status überprüfen (siehe IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus
Keine Keine

 

Aufgaben vor der Sicherung des Anforderers

Darüber hinaus kann ein Anforderer vor dem Erstellen eines IVssBackupComponents::P repareForBackup-Ereignisses auch Sicherungsoptionen für einzelne Writer mithilfe von IVssBackupComponents::SetBackupOptions festlegen, abhängig von den Besonderheiten der einzelnen Writer und davon, ob ein Anforderer davon kenntnis.

Um inkrementelle und differenzielle Vorgänge zu unterstützen, können Anforderer zu diesem Zeitpunkt Komponenten auf Zeitstempel früherer Sicherungsvorgänge untersuchen (mit IVssComponent::GetBackupStamp) und diese Informationen verwenden, um einen vorherigen Zeitstempel für die Verarbeitung durch einen Writer festzulegen (mithilfe von IVssBackupComponents::SetPreviousBackupStamp). Weitere Informationen finden Sie unter Inkrementelle und differenzielle Sicherungen .

Ein Anforderer kann nun die Autoren des Systems anweisen, die Vorbereitungen vor der Sicherung abzuschließen und die Erstellung einer Schattenkopie zu verarbeiten.

Zunächst generiert der Anforderer ein PrepareForBackup-Ereignis , indem er IVssBackupComponents::P repareForBackup aufruft.

Nachdem alle teilnehmenden Writer von der Behandlung des PrepareForBackup-Ereignisses (das ein Anforderer mithilfe der instance der von PrepareForBackupzurückgegebenen IVssAsync-Schnittstelle bestimmt), kann der Anforderer die Schattenkopie initiieren, indem er IVssBackupComponents::D oSnapshotSet aufruft, wodurch PrepareForSnapshot, Freeze, Thaw und PostSnapshot generiert wird. Ereignisse, die von den Writern verarbeitet werden sollen.

Es gibt einige Fälle, in denen ein Anforderer möglicherweise keine Schattenkopie erstellen muss. Insbesondere verfügt jeder Dateisatz , der von einer der Komponenten eines bestimmten Writers verwaltet wird, über eine Dateispezifikations-Sicherungsmaske (angegeben durch ein bitweises OR mit VSS_FILE_SPEC_BACKUP_TYPE Werten), das während des Identify-Ereignisses festgelegt wurde. Diese Maske gibt unter anderem an, ob für einen Dateisatz das Kopieren des Systems erforderlich ist, bevor die Sicherung durchgeführt wird.

Wenn keine Datei für die Sicherung auf Volumes eine Schattenkopie erfordert, muss IVssBackupComponents::D oSnapshotSet nicht aufgerufen werden.

Writer-Aufgaben vor der Sicherung

Bei der Behandlung des PrepareForBackup-Ereignisses ruft VSS die CVssWriter::OnPrepareBackup-Methode jedes Writers auf, eine virtuelle Methode, die standardmäßig einfach true zurückgibt.

Writer können diese Standardimplementierung außer Kraft setzen und die Behandlung verwenden, um Informationen zur bevorstehenden Sicherung zu finden und Maßnahmen zu ergreifen.

Ein Writer kann Mithilfe der folgenden Methoden Informationen zur Art des geplanten Sicherungsvorgangs ermitteln:

  1. CVssWriter::GetBackupType
  2. CVssWriter::IsBootableStateBackedUp
  3. CVssWriter::AreComponentsSelected

Ein Writer bestimmt mithilfe von CVssWriter::IsPathAffected, ob die von ihm verwalteten Dateien an der Schattenkopie beteiligt sind.

Wenn VSS die CVssWriter::OnPrepareBackup-Methode aufruft, übergibt vss eine instance der IVssWriterComponents-Schnittstelle, die direkten Zugriff über die IVssComponent-Schnittstelle auf die Komponenten ermöglicht, die explizit im Dokument sicherungskomponenten des Antragstellers enthalten sind. Der Writer verwendet die Instanzen der IVssComponent-Schnittstelle , die Komponentensätze definieren, um Zugriff auf die implizit enthaltene Komponente zu erhalten (siehe Auswählen und Arbeiten mit Komponenteneigenschaften).

Während der Behandlung des PrepareForBackup-Ereignisses verwenden Writer die IVssComponent-Schnittstelle , um Komponentenvorgänge (oder Komponentensätze nach Komponentensatz) auszuführen, einschließlich:

  1. Hinzufügen von Teildateien (sofern unterstützt) durch Aufrufen von IVssComponent::AddPartialFile.
  2. Festlegen aller privaten Metadaten, die der Writer für die Wiederherstellung benötigt.
  3. Wenn der Writer inkrementelle und differenzielle Sicherungen unterstützt (siehe Inkrementelle und Differenzielle Sicherungen), gehen Sie wie folgt vor:
  4. Initiieren sehr zeitaufwändiger asynchroner Vorgänge, z. B. das Synchronisieren von Daten auf mehreren Datenträgern. Dadurch kann der Writer weiterhin arbeiten, während der Vorgang verarbeitet wird, einschließlich der Behandlung anderer VSS-Ereignisse. Diese Vorgänge müssen vor dem Freeze-Ereignis beendet werden.

Der Aufruf des Anforderers an IVssBackupComponents::D oSnapshotSet initiiert die Schattenkopie und generiert die folgenden Ereignisse für die Writer, die behandelt werden sollen:

Drei der Handler des Writers – CVssWriter::OnPrepareSnapshot, CVssWriter::OnFreeze und CVssWriter::OnThaw – sind reine virtuelle Methoden, und jeder Writer muss sie implementieren, anstatt sich auf Standardeinstellungen zu verlassen. Abhängig von den Anforderungen eines Writers können sie als Dummymethoden codiert werden und einfach TRUE zurückgeben.

Da zwischen der Ausgabe eines Freeze-Ereignisses und der Ausgabe eines Thaw-Ereignisses in der Regel ein enges Zeitfenster besteht, werden die meisten Hauptarbeiten bei der Vorbereitung der Schattenkopie – z. B. das Herunterfahren von Prozessen, das Erstellen temporärer Dateien oder das Leeren von E/A-Warteschlangen – in CVssWriter::OnPrepareSnapshot verarbeitet.

Wie ein Writer CVssWriter::OnPrepareSnapshot verwenden kann, um seine E/A-Vorgänge vor der Erstellung einer Schattenkopie zu verarbeiten, hängt stark von der architektur des Autors ab.

Writer, die es sich leisten können, alle Schreibvorgänge zu speichern und die Daten vor dem Einfrieren in einem absolut konsistenten Zustand zu halten, sollten dies tun.

Wenn der Writer seine E/A-Vorgänge nicht einfrieren kann, sollte er Maßnahmen ergreifen, um eine stabile Quelle für die Sicherung zu erstellen und die Wiederherstellungszeit für eine Schattenkopie zu reduzieren. Beispiele hierfür sind das Warteschlangen von eingehenden E/A-Anforderungen oder das Generieren doppelter Dateien in einem alternativen Pfad , der als Quelle einer Sicherung verwendet werden soll.

Die CVssWriter::OnFreeze-Methode führt einfache, kurze Aufgaben aus, z. B. die Überprüfung, ob der CVssWriter::OnPrepareSnapshot die E/A im richtigen Zustand verlassen hat und ob alle von CVssWriter::OnPrepareBackup gestarteten asynchronen Aufgaben abgeschlossen wurden. Diese Methode ist die letzte Chance eines Writers, ein Veto gegen eine Schattenkopie einzufügen, wenn Probleme auftreten (siehe Schreibfehler und Veto).

Im Allgemeinen ist es für einen Writer möglich, den normalen Betrieb nach einem Thaw-Ereignis fortzusetzen: Eine Schattenkopie ist möglicherweise nicht sofort bereit für die Sicherung nach dem Thaw, aber ein Writer sollte in der Lage sein, den normalen Betrieb fortzusetzen. Daher wird in der Regel CVssWriter::OnThaw von Writern verwendet, um in einen vorab fixierten Zustand zurückzukehren. Alle temporären Dateien, die zur Unterstützung der Schattenkopie erstellt wurden, sollten jedoch bis zum PostSnapshot-Ereignis beibehalten werden. In der Regel würden Sie CVssWriter::OnPostSnapshot für diese Art von Bereinigung verwenden. Da viele Anwendungen diese Art von Bereinigung nicht erfordern, ist CVssWriter::OnPostSnapshot eine virtuelle Methode mit einer Standardimplementierung, die einfach TRUE zurückgibt. Wenn eine inkrementelle oder differenzielle Sicherung ausgeführt wird, kann der Writer IVssComponent::GetPreviousBackupStamp und IVssComponent::SetBackupStamp aufrufen. Weitere Informationen finden Sie unter Writer-Rolle beim Sichern komplexer Speicher. Eine weitere Methode, die zu diesem Zeitpunkt aufgerufen werden kann, ist IVssComponent::AddDifferencedFilesByLastModifyTime.