Ü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.
Anforderungsersteller warten in der Regel darauf, dass Writer die Sicherung vorbereiten und die Schattenkopie erstellen. Der Writer muss bestimmen, ob er an der Sicherung teilnehmen soll, und, falls dies der Ist, seine Dateien und sich selbst so konfigurieren, dass er für die Sicherung und Schattenkopie bereit ist. Die folgende Tabelle zeigt die Abfolge der Aktionen und Ereignisse, die zur Vorbereitung auf einen Sicherungsvorgang erforderlich sind.
| Aktion des Anfordernden | Ereignis | Writer-Aktion |
|---|---|---|
| Der Anfordernde kann Sicherungsoptionen festlegen (siehe IVssBackupComponents::SetBackupOptions). | Keine | Keine |
| Unterstützung von inkrementellen und differenziellen Sicherungsvorgängen durch Untersuchen gespeicherter Sicherungsstempel (siehe IVssComponent::GetBackupStamp, IVssBackupComponents::SetPreviousBackupStamp) | Keine | Keine |
| Benachrichtigen von Writern zur Vorbereitung auf einen Sicherungsvorgang mithilfe von IVssBackupComponents::P repareForBackup | PrepareForBackup | Writer-Vorbereitungen umfassen die Bestimmung, ob Dateien zu sichern sind, ob der Writer am Einfrieren der Schattenkopie beteiligt ist. sowie das Erstellen writerspezifischer Metadaten (siehe CVssWriter::OnPrepareBackup, CVssWriter::IsPathAffected, IVssWriterComponents, IVssComponent, IVssComponenent::GetBackupOptions, CVssWriter::AreComponentsSelected, IVssComponent::SetBackupMetadataund IVssComponent::GetPreviousBackupStamp. |
| Der Anfordernde wartet darauf, dass Writer die Sicherung mithilfe von IVssAsync einrichten. Außerdem sollte der Writerstatus überprüft werden (siehe IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus). | Keine | Keine |
| Anfordernde Anforderung einer Schattenkopie mithilfe von IVssBackupComponents::D oSnapshotSet | Keine | Keine |
| Keine | PrepareForSnapshot | CVssWriter::OnPrepareSnapshot:Setzt den Writer in einen Schattenkopiezustand. |
| Keine | Freeze | CVssWriter::OnFreeze:Endgültige Einrichtung vor der Schattenkopie. |
| Keine | Tauwetter | CVssWriter::OnThaw:Normale Funktionsweise (einschließlich E/A) kann fortgesetzt werden. |
| Keine | PostSnapshot | CVssWriter::OnPostSnapshot:Endgültige Bereinigung der Vorbereitungen für Schattenkopien. Siehe IVssComponent::AddDifferencedFilesByLastModifyTime und IVssComponent::SetBackupStamp. |
| Der Anfordernde wartet auf den Abschluss der Schattenkopie mit: IVssAsync, er sollte auch den Writerstatus überprüfen (siehe IVssBackupComponents::GatherWriterStatus, IVssBackupComponents::GetWriterStatus |
Keine | Keine |
Aufgaben vor der Sicherung des Anfordernden
Darüber hinaus kann ein An anfordernder Benutzer vor dem Erstellen eines IVssBackupComponents::P repareForBackup-Ereignisses auch Sicherungsoptionen für einzelne Writer festlegen, die IVssBackupComponents::SetBackupOptions verwenden. Dies hängt von den Besonderheiten der einzelnen Writer ab und davon, ob sie von einem Anfordernden bekannt sind.
Um inkrementelle und differenzielle Vorgänge zu unterstützen, können an diesem Punkt Anfordernde komponenten auf Zeitstempel früherer Sicherungsvorgänge überprüfen (mithilfe von IVssComponent::GetBackupStamp)und diese Informationen verwenden, um einen vorherigen Zeitstempel für die Verarbeitung durch einen Writer (mithilfe von IVssBackupComponents::SetPreviousBackupStamp)fest zu legen. Weitere Informationen finden Sie unter Inkrementelle und differenzielle Sicherungen.
Ein An anfordernde Benutzer kann die Writer des Systems nun an die Durchführung von Vorbereitungen vor der Sicherung und die Erstellung einer Schattenkopie an sie weiter richten.
Zunächst generiert der Anfordernde ein PrepareForBackup-Ereignis, indem er IVssBackupComponents::P repareForBackup aufruft.
Nachdem alle beteiligten Writer von der Behandlung des PrepareForBackup-Ereignisses (das ein An anfordernder mithilfe der Instanz der IVssAsync-Schnittstelle bestimmt, die von PrepareForBackup zurückgegeben wird) zurückgegeben haben, kann der An anfordernde Benutzer die Schattenkopie initiieren, indem er IVssBackupComponents::D oSnapshotSetaufruft, wodurch während der Bearbeitung PrepareForSnapshot-, Freeze-, Thaw-und PostSnapshot-Ereignisse für die Writer generiert werden.
Es gibt einige Fälle, in denen ein Anfordernde möglicherweise keine Schattenkopie erstellen muss. Jeder Dateisatz, der von einer der Komponenten eines bestimmten Writers verwaltet wird, verfügt über eine Dateispezifikations-Sicherungsmaske (angegeben durch ein bitweises OR von VSS _ FILE SPEC BACKUP _ _ _ TYPE-Werten), das während des Identify-Ereignisses festgelegt wird. Diese Maske gibt u. a. an, ob ein Dateisatz erfordert, dass das System vor der Sicherung schattenkopiert wird.
Wenn keine Zu sichernden Dateisätze auf Volumes eine Schattenkopie erfordern, muss IVssBackupComponents::D oSnapshotSet nicht aufgerufen werden.
Aufgaben vor der Writer-Sicherung
Beim Behandeln des PrepareForBackup-Ereignisses wird von VSS die CVssWriter::OnPrepareBackup-Methode jedes Writers, eine virtuelle Methode, die standardmäßig einfach TRUE zurückgibt, aufrufen.
Writer können diese Standardimplementierung überschreiben 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 Sicherungsvorgang ermitteln:
Ein Writer bestimmt mithilfe von CVssWriter::IsPathAffected,ob die von ihm verwalteten Dateien an der Schattenkopie beteiligt sind.
Wichtiger noch: Wenn VSS die CVssWriter::OnPrepareBackup-Methode aufruft, übergibt es eine Instanz der IVssWriterComponents-Schnittstelle, die den direkten Zugriff über die IVssComponent-Schnittstelle auf die Komponenten der Komponenten ermöglicht, die explizit im Sicherungskomponentendokument des Anfordernden enthalten sind. Der Writer verwendete die Instanzen der IVssComponent-Schnittstelle, die Komponentensätze definieren, um Zugriff auf die implizit eingeschlossene Komponente zu erhalten (siehe Auswählbarkeit und Arbeiten mit Komponenteneigenschaften).
Während der Behandlung des PrepareForBackup-Ereignisses verwenden Writer die IVssComponent-Schnittstelle, um Komponentenvorgänge (oder Komponenten, die durch Komponentensatz festgelegt sind) durchzuführen, einschließlich:
- Hinzufügen von Teildateien (sofern unterstützt) durch Aufrufen von IVssComponent::AddPartialFile.
- Festlegen von privaten Metadaten, die der Writer für die Wiederherstellung benötigt.
- Wenn der Writer inkrementelle und differenzielle Sicherungen unterstützt (siehe Inkrementelle und differenzielle Sicherungen),führen Sie folgende Schritte aus:
- Überprüfung auf vorherige Sicherungszeitstempel durch Aufrufen von IVssComponent::GetPreviousBackupStamp.
- Fügen Sie alle erforderlichen differenzierten Dateien hinzu, indem Sie IVssComponent::AddDifferencedFilesByLastModifyTime aufrufen.
- Wenn der Writer das VSS _ BS _ TIMESTAMPED-Schema unterstützt, fügen Sie Sicherungs-Zeitstempelzeichenfolgen im eigenen Format des Writers mithilfe von IVssComponent::SetBackupStamp hinzu.
- Initiieren sehr zeitaufwändiger asynchroner Vorgänge, z. B. synchronisieren von Daten über mehrere Datenträger hinweg. 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 von IVssBackupComponents::D oSnapshotSet initiiert die Schattenkopie und generiert die folgenden Ereignisse für die Writer:
Drei der Handler des Writers –CVssWriter::OnPrepareSnapshot, CVssWriter::OnFreezeund CVssWriter::OnThaw– sind reine virtuelle Methoden, und jeder Writer muss sie implementieren, anstatt sich auf Standardwerte zu verlassen. Abhängig von den Anforderungen eines Writers können sie als Dummymethoden codiert werden und geben einfach TRUE zurück.
Da es in der Regel ein schmales Zeitfenster zwischen dem Ausstellen eines Freeze-Ereignisses und dem Ausstellen eines Thaw-Ereignisses gibt, werden die meisten wichtigen Vorbereitungen für die Schattenkopie – z. B. das Herunterfahren von Prozessen, das Erstellen temporärer Dateien oder das Leeren von E/A-Warteschlangen – in CVssWriter::OnPrepareSnapshot behandelt.
Wie ein Writer CVssWriter::OnPrepareSnapshot verwenden kann, um seine E/A vor der Erstellung einer Schattenkopie zu verarbeiten, hängt stark von der architekturabhängigen Architektur des Writers ab.
Writer, die es sich leisten können, alle Schreibvorgänge zu halten und die Daten vor dem Einfrieren in einem absolut konsistenten Zustand zu halten,sollten dies tun.
Wenn der Writer seine E/A 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 Einwarteschlangen eingehender E/A-Anforderungen oder das Generieren eines doppelten Satz von 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 asynchronen Aufgaben, die von CVssWriter::OnPrepareBackup gestartet wurden, abgeschlossen wurden. Diese Methode ist die letzte Chance eines Schreibers, eine Schattenkopie zu erstellen, wenn Probleme auftreten (siehe Writer Errors and Shadowes).
Im Allgemeinen kann ein Writer den normalen Betrieb nach einem Thaw-Ereignis fortsetzen: Eine Schattenkopie ist nach dem Thaw möglicherweise nicht sofort für die Sicherung bereit, aber ein Writer sollte in der Lage sein, den normalen Betrieb wieder aufzunehmen. Daher wird CVssWriter::OnThaw in der Regel von Writern verwendet, um in einen Zustand vor dem Einfrieren zurückzukehren. Alle temporären Dateien, die zur Unterstützung der Schattenkopie erstellt wurden, sollten jedoch bis zum PostSnapshot-Ereignis erhalten bleiben. In der Regel verwenden Sie CVssWriter::OnPostSnapshot für diese Art von Bereinigung. 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.