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

  • 質問

  • 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