ファイルの実際のバックアップの概要

VSS を使用すると、リクエスターはバックアップ用のデータを含むボリュームのシャドウ コピーにアクセスし、データをバックアップ メディアにコピーできます。 ライターは通常、このプロセス中に通常の操作を続行します。 詳細については、「 VSS でのバックアップの処理の概要」を参照してください。

次の表は、ファイルのバックアップに必要な一連のアクションとイベントを示しています。

リクエスター アクション イベント ライター アクション
シャドウ コピーされたボリューム上のファイルにアクセスする (「IVssBackupComponents::GetSnapshotProperties,VSS_SNAPSHOT_PROP」を参照してください) なし なし
バックアップするファイルの一覧を生成し、ファイル データをバックアップ メディアにコピーします。 なし なし
IVssBackupComponents::SetBackupSucceeded を使用してバックアップの成功または失敗を示します。 なし なし
リクエスターは、 IVssBackupComponents::BackupComplete を呼び出すことによってバックアップが完了したことを示します。 BackupComplete バックアップ後のクリーンアップを実行します ( 「CVssWriter::OnBackupCompleteIVssWriterComponentsIVssComponent」を参照してください)。
要求者は、IVssAsync を使用して、すべてのライターが IVssBackupComponents::BackupComplete イベントの受信を確認するのを待機します。 ライターの状態も確認する必要があります ( 「IVssBackupComponents::GatherWriterStatus,IVssBackupComponents ::GetWriterStatus」を参照してください)。 ライター セッションが完了状態に設定されるようにするには、リクエスターはこの時点で GatherWriterStatus を呼び出す必要があります。 メモ: これは、Service Pack 2 (SP2) 以前の Windows Server 2008 でのみ必要です。
なし なし
バックアップ コンポーネント ドキュメントと各ライター メタデータ ドキュメントを XML ドキュメントに保存します。これは、バックアップ メディアに書き込むことができます ( 「IVssBackupComponents::SaveAsXML 」および「 IVssExamineWriterMetadata::SaveAsXML」を参照してください)。 なし なし

 

ファイルのバックアップ中のライター アクション

シャドウ コピーが完了すると、バックアップされているシステム上のすべての I/O 操作を、バックアップの整合性を中断することなく再開できる必要があります。 これは、シャドウ コピー機能を持つ主な動機の 1 つです。

そのため、探索フェーズと同様に ( バックアップ検出フェーズの概要を参照)、ファイルが実際にバックアップされている間、ライターに対する要求はほとんどありません。

バックアップが完了し、リクエスターが BackupComplete イベントを生成すると、VSS は各ライターの CVssWriter::OnBackupComplete メソッドを呼び出します。これは、既定では 単に TRUE を返す仮想メソッドです。 ただし、ライターは既定の実装をオーバーライドして、残りの一時ファイルを削除するなどのアクションを実行したり、呼び出される IVssWriterComponents インターフェイスを使用して、対応する IVssComponent オブジェクトを取得することによって、含まれる各コンポーネント (および定義する可能性のあるコンポーネント セット) のバックアップの状態をチェックできます。 ライターは、 IVssComponent:GetBackupSucceeded を呼び出すことによって、バックアップの成功または失敗を特定し、対処できます。 IVssComponent:GetBackupSucceeded によって返される値は、コンポーネントに明示的に含まれるすべてのファイルと、そのサブコンポーネント暗黙的に含まれるすべてのファイルが正常にバックアップされた場合にのみ TRUE になります。

CVssWriter::OnBackupComplete の呼び出しが完了したら、リクエスターは IVssBackupComponents::GatherWriterStatusIVssBackupComponents::GetWriterStatus (ライターごとに) を最後に 1 回呼び出す必要があります。 ライター セッション状態メモリは限られたリソースであり、ライターは最終的にセッション状態を再利用する必要があります。 この手順では、ライターのバックアップ セッション状態を完了としてマークし、このバックアップ セッション スロットを後続のバックアップ操作で再利用できることを VSS に通知します。

ファイルのバックアップ中のリクエスター アクション

バックアップ検出フェーズの概要に関するページで説明したように、シャドウ コピーが完了するまで、バックアップするファイルの実際の一覧を生成しないでください。

シャドウ コピーが完了すると、特定のボリュームのシャドウ コピーに対応する デバイス オブジェクト を使用して、シャドウ コピーされたボリューム上のファイルにアクセスできます。 デバイス オブジェクトは、IVssBackupComponents::GetSnapshotProperties によって返されるVSS_SNAPSHOT_PROP オブジェクトから取得されます。 シャドウ コピー セットの各シャドウ コピーには、独自のデバイス オブジェクトがあります。

デバイス オブジェクトと、コンポーネントのライター メタデータ ドキュメント仕様から取得したパスを使用して、バックアップ用のファイルを選択します。 詳細については、「 シャドウ コピーされたデータへのリクエスター アクセス 」を参照してください。

バックアップ リストに含めるファイルは、特定のバックアップの性質、バックアップのコンポーネント の選択可能性、およびライターの論理パス構造によって異なります (「 バックアップの選択性の使用」を参照)。

特定のライターは、コンポーネントで指定されたファイルに加えて、明示的に除外されたファイルを持つ場合もあります。 どのコンポーネントが選択されているかに関係なく、ファイルの除外は常に考慮する必要があります。

また、「 バックアップ検出フェーズの概要」で説明されているように、マウントされたフォルダーまたは再解析ポイントはシャドウ コピーに表示され、バックアップできます。 ただし、マウントされたフォルダーまたは再解析ポイントは、シャドウ コピーされたボリューム上で走査できません (「 マウントされたフォルダーと再解析ポイントの操作」を参照してください)。

IVssWMFiledesc::GetAlternateLocation によって返される代替パスが空白でない場合は、バックアップ操作中にも注意する必要があります。 代替パスは、バックアップ中にのみ使用されるのに対し、代替 の場所マッピング は復元時にのみ使用されるという点で、代替の場所マッピングとは異なります。

この場合、データは通常の場所 ( IVssWMFiledesc::GetPath によって示されます) からバックアップされるのではなく、 IVssWMFiledesc::GetAlternateLocation によって返される場所からバックアップされます。 復元時に、ファイルは通常の場所に返されます。 詳細については、「 既定以外のバックアップと復元の場所 」を参照してください。

VSS では、データをストレージ メディアにバックアップする実際のメカニズムや、そのメディアの選択に制限はありません。 ただし、各 ライター インスタンス の各コンポーネントのファイルは、1 つのユニットとして処理することをお勧めします。 バックアップ ファイルの一覧 を生成する 際のベスト プラクティスについては、「バックアップ セットの生成」を参照してください。

特定のコンポーネントによって管理されるファイルと ( コンポーネント セットが定義されている場合)、特定のライター インスタンスの サブコンポーネント をバックアップ コンポーネント ドキュメントに保持するには、 IVssBackupComponents::SetBackupSucceeded を呼び出します。 コンポーネントまたはコンポーネント セットによって管理されるファイルがバックアップに失敗すると、コンポーネント全体が失敗したと言われます。 バックアップに失敗したファイルに関する正確な情報は、常にログに記録する必要があります。

開発者は、バックアップ対象のファイル、メンバーであったコンポーネントとコンポーネント セット、仕様、および元のパスの内容をバックアップ メディアに保存すると役立つ場合があります。 また、各ライターのコンポーネント定義などの情報を格納すると便利な場合もあります。 これを行うと、取得操作が簡単になる可能性があります。 ただし、このような詳細は要求元の開発者に任されています。

ライターは、要求者による IVssBackupComponents::D oSnapshotSet の呼び出しによって生成された PostSnapshot イベントの処理中にバックアップ コンポーネント ドキュメントを変更できるため、バックアップ コンポーネント ドキュメントは、その非同期呼び出しが完了するまで保存しないでください。

これは以前に行われる可能性がありますが、これはライター メタデータ ドキュメントを保存するのに便利な時期でもあります。

バックアップ コンポーネント ドキュメントとライター メタデータ ドキュメントの両方を IVssBackupComponents::SaveAsXMLIVssExamineWriterMetadata::SaveAsXML を使用して保持することが非常に重要です。 そうでない場合は、ファイルの復元中に VSS を使用することはできません。

一部のバックアップ アプリケーションでは、元のメタデータを格納するだけでなく、(独自に最適化された形式で) ファイルの独自のリストのコピーと、関連するライター、コンポーネント、復元手順、および場所情報のコピーを後で取得するためにバックアップ メディアに保存すると便利な場合があります。 このようなリストを使用すると、復元中にライター メタデータ ドキュメントとバックアップ コンポーネント ドキュメントの解析と比較の一部を回避できます。

バックアップされるボリュームには、VSS ライターによって管理されていないデータが含まれる場合があります。 このデータは、シャドウ コピーされたボリュームからバックアップでき、バックアップする必要があります。このボリュームは クラッシュ整合性状態になります。 詳細については、「 ライター参加なしのバックアップ 」を参照してください。