シャドウ コピー(ボリューム スナップショット サービス[ 1 ] 、ボリューム シャドウ コピー サービス[ 2 ]、またはVSS [ 2 ]とも呼ばれます) は、使用中のコンピューターファイルやボリュームのバックアップ コピーまたはスナップショットを作成できるMicrosoft Windowsに含まれるテクノロジーです。これは、ボリューム シャドウ コピーサービスと呼ばれるWindows サービスとして実装されています。ソフトウェアVSS プロバイダーサービスも Windows の一部として含まれており、Windows アプリケーションで使用できます。シャドウ コピー テクノロジーでは、シャドウ コピーを作成して保存するために、Windows NTFSまたはReFSファイルシステムが必要です。シャドウ コピーは、スケジュールされたWindows バックアップや自動システム復元ポイントの作成など、このテクノロジーを使用する Windows コンポーネントによって、ローカル ボリュームと外部 (リムーバブル ボリュームまたはネットワーク ボリューム) に作成できます。
VSSはボリュームのブロックレベルで動作します。
スナップショットとは、ボリュームの特定時点における読み取り専用のコピーです。スナップショットを使用することで、ボリュームの一貫性のあるバックアップを作成でき、バックアップ作成中にボリュームの内容が変更されたり、ロックされたりすることがなくなります。
シャドウコピーの中核となるコンポーネントはボリュームシャドウコピーサービスであり、スナップショット作成プロセスを開始および監視します。必要なすべてのデータ転送を実行するコンポーネントはプロバイダーと呼ばれます。Windowsにはデフォルトのシステムプロバイダーが付属していますが、ソフトウェアおよびハードウェアベンダーは独自のソフトウェアまたはハードウェアプロバイダーを作成し、ボリュームシャドウコピーサービスに登録できます。各プロバイダーには、スナップショット生成を完了するための最大10秒の時間があります。[ 3 ]
スナップショット作成プロセスに関与するその他のコンポーネントはライターです。Shadow Copy の目的は、一貫性のある信頼性の高いスナップショットを作成することです。しかし、保留中のすべてのファイル変更操作を完了するだけでは、必ずしもこの目的を達成できるとは限りません。場合によっては、複数の関連ファイルに対して一連の相互に関連する変更を完了する必要があります。たとえば、データベース アプリケーションがデータをあるファイルから別のファイルに転送する場合、ソース ファイルからデータを削除し、宛先ファイルにデータを作成する必要があります。したがって、スナップショットは最初の削除とそれに続く作成の間にあってはならず、そうでなければ無意味です。スナップショットは削除前か作成後になければなりません。この意味的一貫性を強制するのがライターの役割です。各ライターはアプリケーション固有であり、プロバイダがスナップショットの作成を開始する前に、バックアップが安全な状態を確立するために 60 秒の猶予があります。ボリューム シャドウ コピー サービスがこの時間枠内に対応するライターから成功の確認を受信しない場合、操作は失敗します。[ 3 ]
デフォルトでは、スナップショットは一時的なものであり、再起動すると失われます。永続的なスナップショットを作成する機能は、Windows Server 2003以降で追加されました。Windows 8では、スナップショットを参照するために必要なGUI部分が削除されましたが、後のWindowsバージョンで復元されました。(§ 履歴)
VSS をサポートする Windows ソフトウェアおよびサービスには、Windows フェールオーバー クラスター[ 4 ]、Windows Server バックアップ[ 5 ]、 Hyper-V [ 6 ] 、仮想サーバー[ 7 ] 、Active Directory [ 8 ] 、SQL Server [ 9 ] 、Exchange Server [ 10 ]、SharePoint [ 11 ]などがあります。
Acronis True Imageなどの他のバックアップソフトウェアは、バックアップの実行時にVSSを使用してオンラインスナップショットを作成する場合があります。[ 12 ]
最終的な結果はバージョン管理ファイルシステムに似ており、スナップショットが作成された時点のファイルの状態を復元できます。ただし、真のバージョン管理ファイルシステムとは異なり、ユーザーは個々のファイルの新しいバージョンの作成をトリガーすることはできず、ボリューム全体のみをトリガーできます。副作用として、バージョン管理ファイルシステムではファイルの所有者が新しいバージョンを作成できますが、新しいスナップショットを作成(または新しいスナップショットの取得タイミングを制御)できるのはシステム管理者またはバックアップオペレーターのみです。これは、個々のファイルではなくボリューム全体の制御が必要となるためです。また、多くのバージョン管理ファイルシステム( VMSなど)は、ファイルが変更されるたびに暗黙的にファイルのバージョンを保存しますが、Windowsのようなスナップショット方式を採用しているシステムでは、状態を定期的にキャプチャするだけです。
ボリューム スナップショット サービス(VSS) は、 Windows XPで初めて Microsoft Windows に追加されました。これは一時的なスナップショットのみを作成でき、編集のために開かれた (そのためロックされている) ファイルの安定したディスク上のバージョンにアクセスするために使用されます。このバージョンの VSS はNTBackupで使用されています。
永続スナップショットの作成(明示的に削除されるまで再起動後も利用可能)はWindows Server 2003で追加され、同じボリュームに対して最大 512 個のスナップショットを同時に存在できるようになりました。Windows Server 2003 では、VSS を使用して、時間の経過とともに変更されたファイルのデータの増分定期スナップショットが作成されます。最大 64 個のスナップショットがサーバーに保存され、ネットワーク経由でクライアントからアクセスできます。この機能は共有フォルダーのシャドウ コピーとして知られており、クライアント/サーバー モデル向けに設計されています。[ 13 ]クライアント コンポーネントは Windows XP SP2 以降に含まれており、 Windows 2000 SP3 以降、および Windows XP RTM または SP1にインストール可能でした。 [ 14 ]
Windows XP [ 15 ]vssadmin以降には、ボリュームシャドウコピーを一覧表示、作成、削除したり、インストールされているシャドウコピーライターとプロバイダーを一覧表示したりできるコマンドラインユーティリティが含まれています。 [ 16 ]
Microsoft は、シャドウ コピーを利用するために、Windows のコンポーネントをいくつか更新しました。Windows Vista、Windows Server 2008、Windows 7 、およびWindows Server 2008 R2のバックアップと復元では、ファイル ベースとセクター単位のバックアップの両方でファイルのシャドウ コピーが使用されます。システム保護コンポーネントは、同じローカル ボリューム上にシステム データとユーザー データの定期的なコピーを作成および維持する際に VSS を使用します (Windows Server の共有フォルダーのシャドウ コピー機能と同様)。VSS を使用すると、システムの復元でこれらのデータにローカルでアクセスできます。
システムの復元では、復元ポイントと呼ばれる以前のシャドウコピーのセット全体に戻すことができます。[ 17 ] [ 18 ] Windows Vista より前は、システムの復元は、特定の拡張子を持つファイルの変更を監視し、上書きされる前にファイルをコピーするファイルベースのフィルターに依存していました。[ 19 ] [ 20 ] [ 21 ]さらに、Windows エクスプローラーの「以前のバージョン」と呼ばれる部分では、スナップショットの時点で存在していた復元ポイントから個々のファイルやフォルダーをローカルに復元できるため、ファイルの以前のバージョンを取得したり、誤って削除したファイルを復元したりできます。
最後に、Windows Server 2008 では、diskshadow20 種類のコマンドを通じて VSS 機能を公開するユーティリティが導入されました。[ 22 ]
システムは、1 日 1 回、または復元ポイントを作成するバックアップ ユーティリティまたはインストーラ アプリケーションによってトリガーされたときに、自動的にシャドウ コピーを作成します。[ 23 ] [ 24 ] 「以前のバージョン」機能は、Windows Vista のBusiness、Enterprise、および Ultimateエディション[ 25 ]と、すべてのWindows 7 エディションで使用できます。Vista の Home エディションには、ボリューム スナップショット サービスが含まれ実行されているにもかかわらず、「以前のバージョン」機能がありません。サードパーティ ツールを使用すると、ローカル ボリューム上のファイルの以前のバージョンを復元することは可能です。[ 26 ] これらのツールの中には、ユーザーが定義した間隔でスナップショットをスケジュールしたり、ボリューム シャドウ コピーで使用されるストレージを構成したり、スナップショットを使用して異なる時点のファイルやディレクトリを比較したりできるものもあります。[ 27 ] Windows 7 では、ボリューム シャドウ コピーで使用されるストレージを構成するための GUI によるネイティブ サポートも追加されています。
Windows 8は永続シャドウ コピーをサポートしていますが、それらを参照するために必要な GUI 部分が欠けています。そのため、ローカル ボリュームでは、ファイルのプロパティダイアログの [以前のバージョン]タブを使用してファイルの古いバージョンを参照、検索、または復元する機能が削除されました。ただし、サードパーティ ツール (ShadowExplorer など) を使用すると、その機能を復元できます。この機能はWindows Server 2012で完全に利用可能です。[ 28 ]
Windows 10 では、Windows 8 で削除された [以前のバージョン] タブが復活しました。ただし、以前のビルドではボリューム シャドウ コピーではなくファイル履歴機能に依存していました。現在のビルドでは、ボリューム シャドウ コピーを使用するファイル履歴とシステム保護 (システムの復元) ポイントの両方からの復元が可能になっています。[ 29 ]
Windows 11 は、Windows 10 で導入された以前のバージョンとファイル履歴機能を維持していますが、デフォルトでは無効になっています。[ 30 ]
Linux 上のSambaは、 LVMベースのストレージ、または基盤となるZFSやbtrfs上でシャドウコピーサービスを提供できます。[ 31 ] [ 32 ] [ 33 ]
NTFS の各バージョンにはある程度の前方互換性と後方互換性がありますが、永続シャドウ コピーを含む新しい NTFS ボリュームを古いバージョンの Windows にマウントすると、いくつかの問題が発生します。これは、デュアル ブートや外付けポータブル ハード ドライブに影響します。具体的には、Windows Vista によって NTFS ボリューム上に作成された永続シャドウ コピーは、Windows XP または Windows Server 2003 がその NTFS ボリュームをマウントすると削除されます。これは、古いオペレーティングシステムが新しい形式の永続シャドウ コピーを理解できないためです。[ 34 ]同様に、Windows 8 によって作成されたシステム復元スナップショットは、以前のバージョンの Windows に公開されると削除されます。[ 35 ]
は Shared Protection Point の略で、Windows が復元ポイントに関する情報を保存するために使用されます。
[...] エラーの原因は、ボリューム シャドウ コピー サービス (VSS)、共有保護ポイント (SPP)、または VSS フレームワークにプラグインするその他のアプリケーションなどの基盤レイヤーにあります。
Windows 8 で実行されているシステム復元によって作成されたブート ボリュームのスナップショットは、そのスナップショットが以前のバージョンの Windows によって後で公開された場合、削除される可能性があります。