DFSが遅延した原因は。。。。
Windows Server の DFS(分散ファイルシステム) を構築してたんですが、DFS上のファイルを開くのに数十秒かかるという問い合わせが殺到しました。
たしかに自機でもファイルを開くのに時間がかかる時と、そうでない時がありました。
DFSはドメインベースで構築してます。
ドメインコントローラ(ActiveDirecotory用DNSサーバも兼用)は3台構成で、ちょうど別拠点用のドメインコントローラ(DC)の構築が終わって、配送待ちにしている状態でした。
DFSは当初2台のドメインコントローラ上に配置してので、ネットワーク負荷が原因かと思い別サーバに構築し直したり、キャッシュの時間を長くしたり、パケット解析をしたりしましたが、どうにも原因が分かりませんでした。
で、別拠点用のDCを設置すると、とたんに現象が置きなくなったのです。
原因はどうやら、そのDCをセットアップ後、設置まで電源を切っていたことのようです。
DFSの名前解決の具体的なプロセスを知らないため何とも言えませんが、おそらくDFSクライアントがDCにアクセスしに行くんだと思いますが、その時にその別拠点用のDCを参照しに行き、見つからないためタイムアウトしてから別DCに接続し、名前解決をしてファイルオープンという感じではないかなと思います。
この別拠点はサイトを分ける予定だったため、この別拠点用DCも別サイトに設定したんですが、どうやら参照されようとしていたようですね。
同様の現象は下記のようにいくつかWEBに載っていました。
@IT:DFSを利用したファイル共有でパフォーマンスが出ません DCを一台停止したら、遅くなったようです。やはりDFSクライアントが停止DCを参照してたようですね。
@IT:Win2000ServerでDFSにアクセスできたりできなかったりします
となると、もし1台DC壊れたらどうなるんでしょうか。。。その壊れたサーバをDCとして参照しないようにActiveDirectory上から削除しないといけませんが、"ドメインコントローラ 削除"でググるといろいろ方法が出てきます。しかし、結構面倒なようですね。
結局起動してないDCが原因というのは分かりましたが、具体的になぜクライアントが停止DCを見に行くのか、またそれを制御する方法が分からなかったのが心残りです。
サポートツールを入れると DFSUtil.exe というコマンドが使えるようになるわけですが、これの詳しい使い方も情報としてあまり載っていませんでした。
ただクライアントから、ドメインベースの名前空間にアクセスできるドメインコントローラを特定するには spcinfo オプションを使えばいいようです。
例えば下記のような感じだと、+のついているドメインコントローラが現在アクティブになっているものらしいです。
C:\>DFSUtil /spcinfo
[*][dc01.hogedomain.jp]
[*][HOGEDOMAIN]
[*][hogedomain.jp]
[+][HOGEDOMAIN]
[-DC02]
[+DC01]
[-DC03]
[+][hogedomain.jp]
[-dc02.hogedomain.jp]
[+dc01.hogedomain.jp]
[-dc03.hogedomain.jp]
Done processing this command.
ただDFSサーバでパケットキャプチャしてると、
NT Trans Request, NT IOCTL FILE_SYSTEM Function:0x002a, FID: 0x800f
というリクエストに対して、
NT Trans Response, FID: 0x800f, NT IOCTL, Error: STATUS_NOT_A_REPARSE_POINT(0xC0000275)
というように、レスポンスパケットでエラーを吐いています。
NTSTATUSエラーコード一覧によると、このエラーは「NTFS ファイルまたはディレクトリは再解析ポイントではありません。」とのことです。調べましたが、結局よくわからないエラーでした。。
DFSは簡単なようで結構ハマる部分が多いので、参考先、特によく寄せられる質問は熟読しておいた方がいいです。
参考先:
MSサポート:Windows 分散ファイル システム名前空間のアクセス エラーのトラブルシューティング方法 原因の切り分けに役立ちます(翻訳おかしいですが)
MSサポート:紹介で完全修飾ドメイン名を使用するように DFS を構成する方法
MSサポート:Windows XP クライアントの DFS クエリの頻度を制御するポリシー クライアントは15分置きにDCにクエリしてるようです。このクエリの結果がキャッシュに残り上記のDFSUtil /spcinfoで確認できるようです。
MSサポート:DFS 名前空間のサービスと Windows Server 2003 または Windows Server 2008 を実行しているコンピューターで構成データについて
Active Directory ドメインコントローラの 1台を強制的に入れ替える / DFS 名前空間を強制削除 - Nire.Com 古い DFS 名前空間情報を削除する方法です。