作家
寫入器 是應用程式或服務,這些應用程式或服務會將持續性資訊儲存在磁碟上的檔案中,並使用陰影複製介面將這些檔案的名稱和位置提供給要求者。
在備份作業期間,寫入器可確保其數據靜止且穩定,適用於陰影複製和備份。 寫入器會盡可能解除鎖定檔案,並在必要時指出替代位置,以與還原共同作業。
如果在 VSS 備份作業期間沒有寫入器存在,仍然可以建立陰影複製。 在這裡情況下,陰影複製磁碟區上的所有資料都會處於 損毀一致狀態。
寫入器狀態
寫入器會在 XML 型元資料物件中維護其狀態,寫入器元資料檔案。
此寫入器元數據是唯一包含要備份和還原之數據檔案集的數據結構,也就是路徑、檔案規格和遞歸旗標。
寫入器元資料檔案會將寫入器的檔案集組織成群組或 元件,。 在備份和還原作業期間,其中一個元件與寫入器所管理之其他元件的關係,會以元件的備份 可選取性、還原的可選取性,以及其 邏輯路徑描述。 (如需詳細資訊,請參閱 設定元件組織 和 使用可選取性和邏輯路徑。
此檔也包含管理檔案還原和其他問題的其他資訊。
要求者需要寫入器元數據,以及它自己的備份元件檔,才能處理備份或還原。
不同於備份元件檔,寫入器元數據文件應該視為唯讀結構。 一旦寫入器建立它,就不會改變檔。
寫入器事件處理
寫入器的 VSS 作業會透過收到 COM 事件來起始。
當沒有任何事件存在時,寫入器不會執行 VSS 作業(例如 VSS 備份或還原)。 相反地,它會執行其正常工作,例如響應資料庫查詢、管理用戶數據或提供其他服務。
若要確保已正確執行多個平行備份和還原會話的錯誤處理,並確保一個備份或還原會話不會損毀另一個,您必須執行下列動作:
- 如果寫入器的事件處理程式 (例如 CVssWriter::OnFreeze)呼叫 CVssWriterEx2::GetSessionId,CVssWriter::SetWriterFailure或 CVssWriterEx2::SetWriterFailureEx 方法,事件處理程式必須在呼叫事件處理程式的相同線程中呼叫 方法。
- 寫入器的事件處理程式實作,例如 OnFreeze 可以視需要將工作卸除給背景工作線程,只要每個背景工作線程封送處理任何必要的錯誤回報回原始事件處理程式線程。
處理識別事件
除了Identify事件之外,寫入器接收的事件類型和順序會根據目前進行中的VSS作業類型唯一而定。
識別事件需要寫入器提供其組態的系統資訊,以及他們透過其 寫入器元數據檔所管理的檔案,。 「識別」事件會產生支持幾乎所有 VSS 作業,包括系統查詢,以及陰影複製和備份和還原作業。 因此,任何寫入器的識別事件處理程式實作 CVssWriter::OnIdentify 都必須能夠隨時處理 Identify 事件,包括處理另一個 VSS 作業的中間,例如備份或還原。 識別事件絕不應視為 VSS 作業生命週期的一部分,即使該作業開始之前可能預期且需要其產生。
CVssWriter::OnIdentify中不會修改 VSS 作業的狀態信息特別重要,因為收到順序錯亂的事件會重設該資訊。
備份和還原事件
根據它是否參與備份或還原,寫入器除了初始識別事件之外,還會在兩到七個事件之間接收。
處理這些事件會構成備份或還原作業的生命週期(從寫入器的觀點來看)。
在一般備份作業中(請參閱 VSS 下處理備份的概觀),寫入器會處理下列事件(除了初始識別事件):
- PrepareForBackup
- PrepareForSnapshot
- 凍結
- 解凍
- PostSnapshot
- BackupComplete
- BackupShutdown
在一般還原作業中(請參閱 在 VSS下處理還原的概觀),寫入器會處理下列事件:
- PreRestore
- PostRestore