シャドウ コピー作成の詳細
一般に、シャドウ コピーの作成方法は、作成するシャドウ コピーの種類、そのコンテキスト、およびシャドウ コピー操作でライターに提供されるロールによって異なります。 (詳細については、「 シャドウ コピー コンテキストの構成」 を参照してください)。
シャドウ コピー コンテキストは、 IVssBackupComponents::SetContext メソッドを 呼び出すことによって設定されます。 IVssBackupComponents::D oSnapshotSet メソッドを呼び出してシャドウ コピーを作成する前に、要求者は次のセクションで指定した順序で IVssBackupComponents メソッドを呼び出す必要があります。
すべてのシャドウ コピーの前提条件
ライターの参加レベルに関係なく、シャドウ コピーを作成するには、 IVssBackupComponents::InitializeForBackup と IVssBackupComponents::StartSnapshotSet の呼び出しでリクエスタを初期化する必要があります。
この呼び出しが行われなかった場合、 IVssBackupComponents::D oSnapshotSet メソッドはエラーを返します。
ライター参加によるシャドウ コピー
シャドウ コピー コンテキストでライター参加が指定されている場合 (つまり、 IVssBackupComponents::SetContext は VSS_CTX_BACKUP または VSS_CTX_APP_ROLLBACK で呼び出されます)。
- シャドウ コピー コンテキストでライター参加がサポートされている場合、要求者は常に IVssBackupComponents::GatherWriterMetadata を呼び出す必要があります。 シャドウ コピー コンテキストがライター参加をサポートしていて、 IVssBackupComponents::GatherWriterMetadata が IVssBackupComponents::D oSnapshotSet より前に呼び出されない場合は、エラーが返されます。
- リクエスターが特定のライター コンポーネントを選択する場合は、StartSnapshotSet を呼び出してシャドウ コピー セットを作成する前に、IVssBackupComponents::AddComponent を呼び出す必要があります。
- シャドウ コピー セットを作成するには、StartSnapshotSet を呼び出す必要があります。
- 要求者は、 AddToSnapshotSet を呼び出すことによって、シャドウ コピー セットに 1 つ以上のボリュームを追加できます。 一部のライター コンポーネントでは、影響を受けるボリュームを指定しない場合があります。 この場合、スナップショットが空に設定されている (つまり、ボリュームを含まない) ことが許容されます。
- ライター メタデータの一貫性を保証するには、コンポーネントが選択されていない場合でも、リクエスターは常 に IVssBackupComponents::P repareForBackup を呼び出す必要があります。 これにより、VSS は PrepareForBackup イベントを生成し、VSS は参加しているライターごとに CVssWriter::OnPrepareBackup メソッドを呼び出します。
- VSS は、IVssBackupComponents::D oSnapshotSet に応答してシャドウ コピーを作成する前に、PrepareForSnapshot イベントと Freeze イベントを生成します。 ライターは、 CVssWriter::OnPrepareSnapshot と CVssWriter::OnFreeze を使用してイベントを処理します。
- VSS は、IVssBackupComponents::D oSnapshotSet に応答してシャドウ コピーを作成した後、Thaw イベントと PostSnapshot イベントを生成します。 ライターは、 CVssWriter::OnThaw と CVssWriter::OnPostSnapshot を使用してイベントを処理します。
ライター参加なしのシャドウ コピー
標準のバックアップ アプリケーションでは、ライター参加なしでシャドウ コピーを作成することはお勧めしません (ライター 参加なしのバックアップに関するページを参照してください)。
ディスクの高速バックアップなどの用途があり、偶発的なファイル破損に対するセーフティ ネットを提供します。これは、明示的なライター参加なしで実行できます。 このようなシャドウ コピーには、 VSS_CTX_FILE_SHARE_BACKUP または VSS_CTX_NAS_ROLLBACKのいずれかのコンテキストがあります。
この種類のシャドウ コピーでは、次の点に注意してください。
- 要求者は、「 すべてのシャドウ コピーの前提条件」に記載されている必要なメソッドを引き続き呼び出す必要があります。
- リクエスターは IVssBackupComponents::GatherWriterMetadata を呼び出す場合がありますが、これは必須ではありません。
- 要求者が IVssBackupComponents::AddComponents、 IVssBackupComponents::P repareForBackup、または IVssBackupComponents::BackupComplete を呼び出すと、エラーが返されます。
- プロバイダーは、この種類のシャドウ コピー に対して PrepareForSnapshot、 Freeze、 Thaw、または PostSnapshot イベントを生成しません。