トップ回答者
VSS対応のバックアップソフトを実行中、VSS非対応のアプリがどうなるか?

質問
-
VSS対応のバックアップを実行した際に、対象ドライブをアクセスしている
古いアプリがエラーになる現象がたまに発生して困っており、質問させて
頂きます。
VSSの仕組みは、WEBで大体理解したのですが、
VSS対応のバックアップソフトを利用して、ドライブのバックアップを実行中に、
対象となるドライブをアクセスしているアプリケーションはどうなるのでしょうか。
ボリューム・スナップ・ショットが一瞬だという記述は見つけたのですが、
一瞬であっても、対象ドライブは排他されるように考えています。
この場合、VSS非対応(Windows2000時代にコンパイルしたような)アプリケーションが
該当するドライブにある、ファイルまたはディレクトリに対して書き込みオープンをした
場合に、もし、その排他にタイミング悪くぶつかった場合に、ファイルのオープンが
エラーになるように思えます。この理解は間違っているのでしょうか?
また、VSS対応以前ですと、アプリケーションがアクセスしているフォルダを
バックアップ対象から除外することにより、バックアップソフト自体との競合を
回避することができたのですが、VSSはボリューム単位でスナップをすると記載されて
います。 バックアップソフトで、対象除外するという手段をとった場合でも、
やはり、上述の競合はおきるものなのでしょうか?
このあたりを、WEBで調べたのですが、情報をみつけられずに書き込みさせて頂きました。
ご存知の方がおられたら情報を頂けますようお願いいたします。2010年1月7日 8:18
回答
-
こんにちは。
まず、ご質問を拝見すると誤った認識があるようです。
VSS対応のバックアップとボリュームスナップショットは、別物です。
( 内部的に Volume Shadow Copy Service を使用している、と言う共通点はあります )ボリュームスナップショットは、共有フォルダのスナップショットを取る機能です。
VSSバックアップは、VSS(Volume Shadow Copy Service)を利用してバックアップを取得します。VSS非対応のバックアップの場合、使用中のファイルはバックアップできませんし、バックアップ中のファイルへアクセスする事はできません。VSS対応のバックアップの場合、使用中のファイルはバックアップできます。またバックアップ中のファイルへアクセスする事ができます。
バックアップ中のファイルへのアクセスが発生した場合は、VSSはシャドーコピーを作成し、実際のファイルをバックアップ用に、シャドーコピーをアクセスしたアプリケーション用に使います。例を挙げます。
Step1.VSSバックアップ中の状態
ファイルAAABBB.mdbがバックアップ中のため、排他的にロックされています。Step2.アプリケーションがAAABBB.mdbにアクセスしました。
この時、内部的にAAABBB.mdbと全く同じ内容のシャドーコピーが作成されます。Step3.引き続きAAABBB.mdbはバックアップされます。アプリケーションはAAABBB.mdb(シャドーコピー版)に対してアクセスします。アプリケーションがどのような変更を行っても、バックアップには影響しません。
Step4.VSSパックアップが終了すると、AAABBB.mdb(シャドーコピー版)を実際のAAABBB.mdbに反映させます。
投稿内容に答えると、以下のようになります。
>ボリューム・スナップ・ショットが一瞬だという記述は見つけたのですが、
一瞬であっても、対象ドライブは排他されるように考えています。間違いです。VSSバックアップとボリューム・スナップ・ショットは別物です。また、VSSバックアップ中はファイル単位で排他はされますが、排他されているファイルに対しても任意のアプリケーションからのアクセスは可能です。
>この場合、VSS非対応(Windows2000時代にコンパイルしたような)アプリケーションが
該当するドライブにある、ファイルまたはディレクトリに対して書き込みオープンをした
場合に、もし、その排他にタイミング悪くぶつかった場合に、ファイルのオープンが
エラーになるように思えます。この理解は間違っているのでしょうか?間違いです。排他されているファイルに対しても任意のアプリケーションからのアクセスは可能です。
>また、VSS対応以前ですと、アプリケーションがアクセスしているフォルダを
バックアップ対象から除外することにより、バックアップソフト自体との競合を
回避することができたのですが、VSSはボリューム単位でスナップをすると記載されて
います。間違いです。VSSバックアップとボリューム・スナップ・ショットは別物です。また、VSSバックアップ中はファイル単位で排他されます。
>バックアップソフトで、対象除外するという手段をとった場合でも、
やはり、上述の競合はおきるものなのでしょうか?間違いです。バックアップソフトで除外すれば、バックアップならびにVSSからのアクセス/排他は発生しません。
元々の問題の"対象ドライブをアクセスしている古いアプリがエラーになる現象がたまに発生して"については、この情報だけでは何とも言えません。少なくとも、どのようなエラーなのかは最低限必要です。Sharing_Violationであれば排他を疑うのは理にかなってますが,例えばTime_out(この場合OnFreezeの影響かもしれません)やInsufficient_resource(この場合pool不足かもしれません)であれば、また別の話になります
"VSSの仕組みは、WEBで大体理解したのですが、"という部分は再確認する必要があります。VSSについては以下が参考になります。
http://msdn.microsoft.com/en-us/library/aa384649(VS.85).aspx- 回答としてマーク 白角 2010年1月21日 0:39
2010年1月15日 12:42
すべての返信
-
こんにちは。
まず、ご質問を拝見すると誤った認識があるようです。
VSS対応のバックアップとボリュームスナップショットは、別物です。
( 内部的に Volume Shadow Copy Service を使用している、と言う共通点はあります )ボリュームスナップショットは、共有フォルダのスナップショットを取る機能です。
VSSバックアップは、VSS(Volume Shadow Copy Service)を利用してバックアップを取得します。VSS非対応のバックアップの場合、使用中のファイルはバックアップできませんし、バックアップ中のファイルへアクセスする事はできません。VSS対応のバックアップの場合、使用中のファイルはバックアップできます。またバックアップ中のファイルへアクセスする事ができます。
バックアップ中のファイルへのアクセスが発生した場合は、VSSはシャドーコピーを作成し、実際のファイルをバックアップ用に、シャドーコピーをアクセスしたアプリケーション用に使います。例を挙げます。
Step1.VSSバックアップ中の状態
ファイルAAABBB.mdbがバックアップ中のため、排他的にロックされています。Step2.アプリケーションがAAABBB.mdbにアクセスしました。
この時、内部的にAAABBB.mdbと全く同じ内容のシャドーコピーが作成されます。Step3.引き続きAAABBB.mdbはバックアップされます。アプリケーションはAAABBB.mdb(シャドーコピー版)に対してアクセスします。アプリケーションがどのような変更を行っても、バックアップには影響しません。
Step4.VSSパックアップが終了すると、AAABBB.mdb(シャドーコピー版)を実際のAAABBB.mdbに反映させます。
投稿内容に答えると、以下のようになります。
>ボリューム・スナップ・ショットが一瞬だという記述は見つけたのですが、
一瞬であっても、対象ドライブは排他されるように考えています。間違いです。VSSバックアップとボリューム・スナップ・ショットは別物です。また、VSSバックアップ中はファイル単位で排他はされますが、排他されているファイルに対しても任意のアプリケーションからのアクセスは可能です。
>この場合、VSS非対応(Windows2000時代にコンパイルしたような)アプリケーションが
該当するドライブにある、ファイルまたはディレクトリに対して書き込みオープンをした
場合に、もし、その排他にタイミング悪くぶつかった場合に、ファイルのオープンが
エラーになるように思えます。この理解は間違っているのでしょうか?間違いです。排他されているファイルに対しても任意のアプリケーションからのアクセスは可能です。
>また、VSS対応以前ですと、アプリケーションがアクセスしているフォルダを
バックアップ対象から除外することにより、バックアップソフト自体との競合を
回避することができたのですが、VSSはボリューム単位でスナップをすると記載されて
います。間違いです。VSSバックアップとボリューム・スナップ・ショットは別物です。また、VSSバックアップ中はファイル単位で排他されます。
>バックアップソフトで、対象除外するという手段をとった場合でも、
やはり、上述の競合はおきるものなのでしょうか?間違いです。バックアップソフトで除外すれば、バックアップならびにVSSからのアクセス/排他は発生しません。
元々の問題の"対象ドライブをアクセスしている古いアプリがエラーになる現象がたまに発生して"については、この情報だけでは何とも言えません。少なくとも、どのようなエラーなのかは最低限必要です。Sharing_Violationであれば排他を疑うのは理にかなってますが,例えばTime_out(この場合OnFreezeの影響かもしれません)やInsufficient_resource(この場合pool不足かもしれません)であれば、また別の話になります
"VSSの仕組みは、WEBで大体理解したのですが、"という部分は再確認する必要があります。VSSについては以下が参考になります。
http://msdn.microsoft.com/en-us/library/aa384649(VS.85).aspx- 回答としてマーク 白角 2010年1月21日 0:39
2010年1月15日 12:42 -
回答ありがとうございます。
ようやく、喉につかえていたものが取れた気分です。
なるほど、VSSの説明にあった、リクエスタとライターの関係の図は、ファイル単位(ブロック?)だったのですね^^;
私は、ボリュームのスナップを取った後、処理をしていると見てしまっていました。
(なぜ、一瞬でできるのかが・・・不満でしかたなかったのですが)
そのため、一瞬でもボリューム全体が排他されるイメージを持っていたため、バックアップの対象を選択をしても
排他に引っかかるのかなと考えてしまいました。
今回のアプリが、アプリ専用フォルダ内の情報を自分だけがアクセスする前提で、他とプロセスと競合をおこすと、
即時にOPENエラーで終了してしまう構造ののため、なんとか回避策がないのか無い知恵を絞っていました。
今回の回答からすると、単純にバックアップ対象外にすれば大丈夫そうなので、試してみます。
どうも、有難うございました。2010年1月21日 0:39