[Windows] ボリューム シャドウ コピー について調べてみた件について


スポンサーリンク


Windows Server 2003 で導入され、Windows サーバーのバックアップで使用される ボリューム シャドウ コピー ですが、分かっているようで分かっていなかったので、一度、きちんと調べてみることにしました。

参考にしたサイト

 
ボリューム シャドウ コピーの関連コンポーネント (登場人物) は以下の 4 つです。

表. ボリューム シャドウ コピーの関連コンポーネント
コンポーネント 機能
VSS service 実体は Windows サービスの “Volume Shadow Copy” サービス。略記は VSS 。
他の 3 つのコンポーネントの仲介役として機能する。
※ 他の 3 つのコンポーネントは直接やりとりしない。VSS を経由してやりとりを行う。
VSS requester シャドウ コピーを作成を依頼するソフトウェア。
実体はバックアップ・アプリケーション。
OS 標準機能である “Windows Server バックアップ” や “wbadmin” コマンドも、これに相当する。
VSS writer シャドウ コピーを作成する際に、データの一貫性を保障する(維持する)コンポーネント。
具体的には、(データベース製品であれば)トランザクションログを切り替えたり、メモリー上のキャッシュデータをディスクにフラッシュしたりする。
VSS Writer は SQL Server や Exchange Server といったミドルウェア製品の機能として提供されている。
オラクルも Oracle 11g から “Oracle VSS Writer” を提供している。
OS 標準機能でも、”Resitry Writer” などがある。
コマンド・プロンプトで vssadmin list writers と実行すれば、Writer の一覧を表示可能。
VSS provider シャドウ コピーの作成など、シャドウ コピーを管理するコンポーネント。
System Provider、Hardware Provider、Software Provider の 3 種類がある。
OS標準(デフォルト)では、System Provider である “Microsoft Software Shadow Copy provider” のみが存在する。
コマンド・プロンプトで vssadmin list providers と実行すれば、Provider の一覧を表示可能。

 
ボリューム シャドウ コピーというくらいなので、
シャドウ コピーの作成単位はボリューム (CドライブとかDドライブとか) です。

共有フォルダのシャドウ コピーを作成する、といった表現がありますが、この場合もシャドウ コピーの単位はボリュームです。フォルダ単位での作成はできません。

シャドウ コピーの作成方法は 3 種類ありますが、標準機能の System Provider は Copy-on-write を使用しています。

表. シャドウ コピーの作成方法
作成方法 処理内容
Complete copy シャドウ コピー作成時にボリューム全体をコピーする。
Copy-on-write シャドウ コピー作成時にボリュームのコピーは行わない。
ファイルの削除や修正など、ボリュームに対して変更が発生した場合、変更前データをシャドウ コピーのストレージ エリア (diff area) にコピーする。(オリジナルのボリュームが更新され、更新前のデータが diff area にコピーされて残る)
System Provicer である “Microsoft Software Shadow Copy provider” は、この方式を使用している。
Redirect-on-write シャドウ コピー作成時にボリュームのコピーは行わない。(Copy-on-write と同様)
ファイルの削除や修正など、ボリュームに対して変更が発生した場合、変更後データをシャドウ コピーのストレージ エリア (diff area) に書き込む。(オリジナルのボリュームは更新されず、シャドウ コピー作成時点のままとなる。変更データは diff area に記録される)

 
シャドウ コピーを作成すると、各ボリューム直下の “System Volume Information” フォルダ (C:\System Volume Information 等) に {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} (xは16進数) の名前でファイルが作成されます。

このファイルが diff area の実体です。

ボリュームに更新が発生する都度、このファイルに更新前データが保存されていきます。

“System Volume Information” フォルダは、デフォルトでは表示されません。
フォルダ オプションで以下の 2 つを変更する必要があります。

  • “ファイルとフォルダーの表示” で “隠しファイル、隠しフォルダー、および隠しドライブを表示する” を選択。
  • “保護されたオペレーティング システム ファイルを表示しない (推奨)” のチェックを外す。

 
さらに、アクセス権が “SYSTEM” ユーザーのみとなっているため、アクセス権を付与する必要があります。
具体的には、”System Volume Information” フォルダを右クリックし、”プロパティ” を選択後、”セキュリティ” タブにて、アクセスしたいユーザーを追加すればよいです。
 

コマンド・プロンプトで、シャドウ コピーを作成するには、以下のコマンドを実行します。
(Cドライブのシャドウ コピーを作成する場合)

C:\> vssadmin create shadow /For=C: 

 
シャドウ コピーの一覧を表示するには、vssadmin list shadows を実行します。

C:\> vssadmin list shadows
vssadmin 1.1 - ボリューム シャドウ コピー サービス管理コマンドライン ツール
(C) Copyright 2001-2005 Microsoft Corp.

シャドウ コピー セット ID: {d1b2a8b0-54a8-45cb-87fe-ec57e67b6f30} の内容
   1 個のシャドウ コピー、作成時刻: 2014/05/25 11:30:20
      シャドウ コピー ID: {109a08ca-78e6-4bff-9ac1-4aca45ea3547}
         元のボリューム: (C:)\\?\Volume{2ecx1246-5ba3-a1e6-b79e-70696f6e8963}\
         シャドウ コピー ボリューム: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
         元のコンピューター: xxxxxxxx
         サービス コンピューター: xxxxxxxx
         プロバイダー: 'Microsoft Software Shadow Copy provider 1.0'
         種類: ClientAccessible
         属性: 恒久, クライアント アクセス可能, 自動リリースなし, 差分, 自動回復

C:\>

 
シャドウ コピー用に、どのくらい容量を使用しているか確認するには、vssadmin list shadowstorage を実行します。

C:\> vssadmin list shadowstorage
vssadmin 1.1 - ボリューム シャドウ コピー サービス管理コマンドライン ツール
(C) Copyright 2001-2005 Microsoft Corp.

シャドウ コピーの記憶域関連付け
   ボリューム: (C:)\\?\Volume{9ecd1a16-5c13-1121-ba9a-c1c51f6e3265}\
   シャドウ コピーの記憶域ボリューム: (C:)\\?\Volume{2ecda2a6-5f23-11e1-b79e-d0aeaf60b76c}\
   シャドウ コピーの記憶域の使用領域: 10.75 MB (0%)
   シャドウ コピーの記憶域の割り当て領域: 320 MB (0%)
   シャドウ コピーの記憶域の最大領域: 3.99 GB (10%)

C:\>

 

以上、ボリューム シャドウ コピー について調べてみた件、でした。

 
スポンサーリンク