DFS と Excel の情報に関して

次のKBについて調べてもらったことがありましたので備忘録として載せておきます。

KB968102「DFSR が有効に設定されている共有フォルダに Excel ファイルを上書き保存した場合にファイルが消失することがある」

現象

Windows Server 2008 R2、Windows Server 2008、または Microsoft Windows Server 2003 R2 で、DFS Replication (DFSR) が有効に設定されている共有フォルダー上の Excel など一時ファイルを利用するアプリケーションのファイルを開き、上書き保存を実施した場合に、オリジナルのファイルが消失し、一時ファイルのみが残されることがあります。

原因

この現象は、DFSR による複製処理と Excel などによるファイルの上書き処理が、干渉するために発生します。
ポイントをまとめると・・・。

この問題は、ファイルサーバー上の Excelファイルを直接開いて編集し、保存しようとするときに発生するようです。Excelファイルをクライアントコンピュータにダウンロードし、手元で編集してファイルサーバーにアップするのであれば、問題ありません。

なぜこの問題が発生するのかというと・・・。

Excel は次のようにファイルの上書き保存を実施します。

  1. Excel にて xls ファイルを開くと、一時ファイルが作成されます。
  2. ファイルの上書き保存を実施した場合、その変更内容はまず一時ファイルに書き込まれます。
  3. 書き込みが完了した後、一時ファイルと元ファイルの置き換えが行われます。

一方、DFSR はファイルに加えられた変更を複製するために、一時ファイルと元ファイルの両ファイルに対するハンドルを確保します。これにより一時ファイルがDFSRに占有され、使用中となるため、Excel はファイル保存の操作を正常に終えることができず、最終的には元ファイルが削除され、一時ファイルのみが残ってしまう状態となります。

ただし、この問題は Excel 2003 以前のバージョンでは発生するものの、Excel 2007 以降では発生しないとのこと。Excel 2007 以降の一時ファイルは既定で DFSR の複製対象外となるため、一時ファイルがロックされることはないからです

ちなみに、DFSRでの複製対象外となるファイルは下記のとおりです。
(下記サイトから抜粋)
http://technet.microsoft.com/ja-jp/library/cc772778.aspx

DFSRでレプリケートされないファイル

  • レプリケート フォルダのローカル パスにある、NTFS でマウントされたドライブ
    (ただし、レプリケート フォルダのローカル パスが、マウントされたドライブの階層、またはその下位の階層であってもかまいません)
  • 暗号化ファイル システム (EFS) で暗号化されたファイル。
  • DFS 名前空間に関連付けられたポイントを除く、すべての再解析ポイント。ファイルに、階層記憶域管理 (HSM) または単一インスタンス ストア (SIS) に使用する再解析ポイントがある場合、DFS レプリケーションによって基礎ファイルはレプリケートされますが、再解析ポイントはレプリケートされません。
  • 一時ファイル属性が設定されているファイル。
  • UNIX 対応アプリケーションを使用して作成し、NFS共有フォルダに保存した、大文字と小文字を区別する名前を持つファイル (NTFS は POSIX 標準をサポートしています。POSIX では、大文字と小文字の組み合わせが異なる点以外は同じ名前を持つ 2 つのファイルを作成できます)。たとえば、FILE.doc と File.doc という 2 つのファイルを NFS 共有フォルダに作成しても、DFS レプリケーションでレプリケートされるのは最初のファイルのみで、2 番目のファイルはレプリケートされません。

Excel 2007 以降の一時ファイルは「一時ファイル属性が設定されているファイル」に該当します。

まあ・・・あまり一時ファイルをDFSRで複製する必要は無いとは思いますが、もし複製したければ、robocopyを使っていちいち一時ファイル属性を外すしかないという話が
http://blogs.technet.com/b/jpntsblog/archive/2010/05/07/dfs.aspx
にありました。

スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*