Writers
Writer sind Anwendungen oder Dienste, die persistente Informationen in Dateien auf dem Datenträger speichern und die die Namen und Speicherorte dieser Dateien anforderern, indem sie die Schattenkopieschnittstelle verwenden.
Bei Sicherungsvorgängen stellen Writer sicher, dass ihre Daten still und stabil sind – geeignet für Schattenkopien und Sicherungen. Writer arbeiten mit Wiederherstellungen zusammen, indem sie Dateien nach Möglichkeit entsperren und bei Bedarf alternative Speicherorte angeben.
Wenn während eines VSS-Sicherungsvorgangs keine Writer vorhanden sind, kann weiterhin eine Schattenkopie erstellt werden. In diesem Fall befinden sich alle Daten auf dem schattenkopierten Volume im absturzkonsistenten Zustand.
Writer-Status
Writer behalten ihren Zustand in einem XML-basierten Metadatenobjekt, dem Writer Metadata Document, bei.
Diese Writer-Metadaten sind die einzige Datenstruktur, die den Dateisatz (Pfad, Dateispezifikation und Rekursionsflag) der zu sichernden und wiederherzustellenden Daten enthält.
Das Writer-Metadatendokument organisiert die Dateisätze des Writers in Gruppen oder Komponenten. Die Beziehung einer dieser Komponenten bei Sicherungs- und Wiederherstellungsvorgängen zu den anderen Komponenten, die vom Writer verwaltet werden, wird im Writer-Metadatendokument anhand der Auswahl der Komponente für die Sicherung, ihrer Auswählbarkeit für die Wiederherstellung und ihrer logischen Pfade beschrieben. (Weitere Informationen finden Sie unter Einrichten der Komponentenorganisation und Arbeiten mit Auswählbarkeit und logischen Pfaden.)
Weitere Informationen zur Wiederherstellung von Dateien und anderen Problemen sind ebenfalls in diesem Dokument enthalten.
Der Anforderer benötigt die Writer-Metadaten in Verbindung mit seinem eigenen Sicherungskomponentendokument, um eine Sicherung oder Wiederherstellung zu verarbeiten.
Im Gegensatz zum Dokument "Sicherungskomponenten" sollte das Writer-Metadatendokument als schreibgeschützte Struktur betrachtet werden. Sobald ein Writer es erstellt, wird das Dokument nicht geändert.
Writer-Ereignisbehandlung
Die VSS-Vorgänge eines Writers werden durch den Empfang von COM-Ereignissen initiiert.
Wenn keine Ereignisse vorhanden sind, führt ein Writer keine VSS-Vorgänge aus (z. B. eine VSS-Sicherung oder -Wiederherstellung). Stattdessen führt es seine normale Arbeit aus, z. B. das Reagieren auf Datenbankabfragen, das Verwalten von Benutzerdaten oder die Bereitstellung anderer Dienste.
Um sicherzustellen, dass die Fehlerbehandlung für mehrere parallele Sicherungs- und Wiederherstellungssitzungen ordnungsgemäß ausgeführt wird, und um sicherzustellen, dass eine Sicherungs- oder Wiederherstellungssitzung keine andere beschädigt, müssen Sie die folgenden Schritte ausführen:
- Wenn der Ereignishandler eines Writers (z. B . CVssWriter::OnFreeze) die CVssWriterEx2::GetSessionId, CVssWriter::SetWriterFailure oder CVssWriterEx2::SetWriterFailureEx-Methode aufruft, muss der Ereignishandler die -Methode im selben Thread aufrufen, der den Ereignishandler aufgerufen hat.
- Die Implementierung eines Ereignishandlers ihres Writers wie OnFreeze kann Arbeit bei Bedarf an Workerthreads auslagern, solange jeder Workerthread alle erforderlichen Fehlerberichte an den ursprünglichen Ereignishandlerthread marshallt.
Behandeln von Identifizieren von Ereignissen
Mit Ausnahme des Identify-Ereignisses hängt der Typ und die Reihenfolge der Ereignisse, die ein Writer empfängt, eindeutig vom Typ der derzeit laufenden VSS-Vorgänge ab.
Das Identify-Ereignis erfordert, dass Writer die Systeminformationen über ihre Konfiguration und die Dateien bereitstellen, die sie über ihr Writer-Metadatendokument verwalten. Ein Identify-Ereignis wird zur Unterstützung fast jedes VSS-Vorgangs generiert, einschließlich Systemabfragen sowie Schattenkopie- und Sicherungs- und Wiederherstellungsvorgängen. Daher muss die Implementierung eines Beliebigen Writers des Identify-Ereignishandlers CVssWriter::OnIdentify jederzeit in der Lage sein, ein Identify-Ereignis zu behandeln– auch während der Verarbeitung eines anderen VSS-Vorgangs, z. B. einer Sicherung oder Wiederherstellung. Ein Identify-Ereignis sollte niemals als Teil des Lebenszyklus eines VSS-Vorgangs betrachtet werden, obwohl seine Generierung vor dem Start dieses Vorgangs erwartet und erforderlich ist.
Es ist besonders wichtig, dass Zustandsinformationen zu einem VSS-Vorgang in CVssWriter::OnIdentify nicht geändert werden, da der Empfang eines Ereignisses außerhalb der Reihenfolge diese Informationen zurücksetzen würde.
Sicherungs- und Wiederherstellungsereignisse
Je nachdem, ob er an einer Sicherung oder Wiederherstellung teilnimmt, empfängt ein Writer zusätzlich zu einem anfänglichen Identify-Ereignis zwischen zwei und sieben Ereignisse.
Die Behandlung dieser Ereignisse stellt (aus sicht eines Writers) den Lebenszyklus eines Sicherungs- oder Wiederherstellungsvorgangs dar.
In einem typischen Sicherungsvorgang (siehe Übersicht über die Verarbeitung einer Sicherung unter VSS) behandelt ein Writer die folgenden Ereignisse (zusätzlich zu einem anfänglichen Identify-Ereignis):
- PrepareForBackup
- PrepareForSnapshot
- Freeze
- Reaktivieren
- PostSnapshot
- BackupComplete
- BackupShutdown
In einem typischen Wiederherstellungsvorgang (siehe Übersicht über die Verarbeitung einer Wiederherstellung unter VSS) behandelt ein Writer die folgenden Ereignisse:
- PreRestore
- PostRestore