Windows Server 2003 R2でのDFSレプリケーションのお話。
DFSレプリケーション機能を使うと、複数のサーバーで特定のフォルダの同期を取り、完全な複製を作成・維持できる。
万が一の場合に備えて、重要なデータフォルダをレプリケーション対象にしておくと安心、ということ。
なのだが……。
DFSレプリケーション対象のデータが突然消失!
僕は、クライアントのプロファイルやフォルダリダイレクトの内容を格納しているフォルダを丸ごとDFSレプリケーションに割り当て、運用していた。
約半年は何事もなく運用できていたのだが、ある日、あるユーザーが血相を変えて僕のところにやってきた。
「フォルダの中に入っていたデータがなくなってしまったんです!」
僕はきっと、誤って削除したことにちゃんと気付いていないのだろうぐらいに思い、最新のバックアップデータ(Backup Exec)からリストアして、サポートを終えた。
と思っていたら、翌日またそのユーザーから連絡。
「復活してもらったファイルがまた消えてるんです!どうしてなんでしょうか!?」
ここで筆者はやっと異常事態が起こっていることに気づく。
フォルダリダイレクトやプロファイルの中身は各ユーザーでなければ開けないので、取り急ぎそのユーザーの席に行き、状況を確認することに。
すると、確かにどこにもない。
イベントビューアにエラーログが記録されていた
リダイレクト対象フォルダにあったもの、という点が気になり、サーバーの中を調査。
普段はDFSの警告イベントやエラーなど気にしていなかった。だが、今回原因を探るべく、イベントビューアをチェックしている最中に、「そういえばここはDFSレプリケーション対象だったな」と思い出した。
DFSレプリケーションのイベントを確認すると、ディスクの空き容量不足で正常にリプリケートできなかった等のエラーログがあるではないか。これが異常なまでにあやしい。
そこでまた思い出した。
僕の会社では、各ユーザーのプロファイルやフォルダリダイレクトの容量にクオータを設けており、ルートフォルダに新しいフォルダが作成されたら自動的にそのサブフォルダにクオータを適用するように設定していた。
そして、サーバーからの通知メールで、幾度となくサブフォルダにある「DfsrPrivate」フォルダがクオータの制限に達したと知らされていたのだった。
このフォルダの意味をよく理解していなかったことと、DFS関係のものだしスルーしても問題あるまいと考えていたのだが、一連の事件に関与している可能性を考えて、とりあえずこの「DfsrPrivate」フォルダに対するクオータを削除。
そもそもDfsrPrivateとは?
ここで、「そういえばDfsrPrivateって何が入ってるんだろか」と思い、中を見てみようと思い立つ。
しかし出てこない。エクスプローラで各ユーザー名のフォルダと同階層に並んでいるはずなのにいない。
隠しフォルダか、と気付き、アドレスバーに手打ちでEnterすると、何やらあやしげなフォルダが5つとxmlファイルが登場した。
- 「ConflictAndDeleted」
- 「Deleted」
- 「Installing」
- 「PreExisting」
- 「Staging」
というフォルダ。
今回の「ファイルが消えた」という点と「Deleted」が筆者の脳内でがっちり一致し、フォルダの中を調査してみる。
すると、
- 「ConflictAndDeleted」
- 「Deleted」
- 「Installing」
は予想外に空っぽ。
PreExsistingフォルダに消失したはずのファイルがあった!
拍子抜けしつつ「PreExisting」フォルダを開くと、あるわあるわ、260個550MBもの謎のフォルダが。
各フォルダ名は明らかにユーザーの作成した名称となっており、なおかつ末尾にGUIDのような長いIDが付加されている。ここに違いないと思い、例のユーザーが消えたと申告したフォルダ名を探すと、確かにある。フォルダを開くと、ファイルが入っている。
MSにエスカレートしても解答が出なかった……
いったいなぜこのようなことが起こってしまったのか?半年の間問題なく動いていて、いきなり寝耳に水だった。
ネットでソースを検索してもなかなか答えにたどりつけない。
サーバーの製造元デルに問い合わせて、マイクロソフトにエスカレートしてもらったが、それでもよい返答はなかった。
とりあえず、2度と同じことが起こってもらっては困るため、DFSレプリケーションを使うのはやめることにした。
データの保全という意味ではふさわしくないが、週2回バックアップを取っているし、HDDはRAID5構成。障害でデータが消失する可能性は低いと判断した。
(2010/12/19追記)
DFS利用を中止してからもう1年が過ぎたが、当時の原因ははっきりしないまま。ただ、この1年同様の事件は起きていないため、DFSのせいであることは間違いなさそうだ。
Server 2008ではよくなっているのかもしれないが、とりあえずServer 2003でDFSを使うのは、詳しい知識がないのであればおススメしない。
(2010/12/19更新内容)
文言若干追加、言い回し等修正。