Windows XP (NT/2000系OS共通) で 外付HDD(USB)の共有ができない件 | 鯖管Changelog。--アメブロ支店

鯖管Changelog。--アメブロ支店

主に地方のサーバ管理者の日常と管理記録、トラブルサポート事例、趣味のPC自作に関する情報、ほか雑談などを、気の向いたときに好きなように、勝手気ままに書きなぐるブログです。

主に会社のRedhatLinux9やRHEL/CentOS、その他Solarisなど管理しています。

自作ネタというか、サポートネタですが備忘録として記録します。

[システム環境]
・coregaのブロードバンドルータに2台のWindowsXP機(いずれもHomeEdition)が接続されている。
・IPアドレスの取得はいずれもルータからのDHCPである。
・マシンAにはSymantecのAntiVirusがインストールされている。このマシンAに本体USB2.0ポート直結にて外付けUSB-HDD接続。これを共有。これ以外にもシステムドライブの一部フォルダを共有設定。
・マシンBにはMcafeeのセキュリティスイートがインストールされている。
・MSファイル共有関連ポートについては、いずれのマシンも所属するサブネットに対して許可設定(Windowsファイアウォール/Mcafeeとも)
・ワークグループはMSHOME
・HomeEditionなので、ユーザー名レベルのアクセス制御は不可能なはず。(簡易ファイル共有のみ可能。)

[現象]
・マシンBから、マシンAのシステムドライブ上の共有フォルダにはアクセスできる。
・マシンBから、マシンAの外付USBハードディスク内共有フォルダにアクセスすると、
「このコマンドを処理するのに必要な記憶域をサーバーに確保できません」
というエラーになり、共有フォルダを参照できない。
(ファイアーウォールをすべて切ってもダメ。そもそも内蔵ディスクの共有はアクセスできるので問題は別のところにある)

[解決法]
結局googleさんのお世話になり、定番のWinFAQに解決策 がありました。
また、マイクロソフトのKB(KnowledgeBase)にも情報がありました。
KB177028 ウイルス対策ソフトウェアが原因でイベントID2011が発生することがある。
KB198386 LANMANサーバーでのIRPスタックサイズの変更

シマンテックのTechnical Support Knowledge Baseにも出ていました。
文書番号:20020504002150949 WindowsNT/2000環境でIRPStackSizeの値を変更する方法

以下、WinFAQから引用
----ここから----
1. 共有フォルダを持つ Windows 2000/XP に管理者でログオンします。
2. [スタート]-[ファイル名を指定して実行] から regedit を起動します。
3. HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services \LanmanServer \Parameters を展開します。
4. [編集]-[新規]-[DWORD 値] をクリックし、IRPStackSize 値を作成します。
5. IRPStackSize 値をダブルクリックし、データに 11 よりも大きい数値を記入して「OK」します。
6. Windows を再起動します。

この現象は、Windows 2000/XP で USB や IEEE1394 経由で接続したドライブを共有している場合によく発生します。
----ここまで----
ということでビンゴ。

このマシンでは、Symantec AntiVirusを入れており、場合によっては7などに設定されてしまうことがあるようです。このマシンには上記の"IRPStackSize"キーが存在していませんでした。規定値は11ですが、これでは不足していた模様。マイクロソフトのKBによれば最大許容値は50です。また3づつ増やすようにすることが推奨されています。また、このIRPStackSize値を作成したときには、15以上を設定せよとあります。手始めに、15にセットしてだめ。18でもダメで、21でOKになりました。

※IRPStackSize規定値補足と訂正
SymantecのKBではWindows2000の規定値は10進で15、値を作成したときは11~20が設定できる、とあります。
一方、MSのKBでは、Windows2000の規定値は10進で15、最大値は50(16進表記で0x32)までと記載されています。
ここはメーカーであるMSのKBを信じるべきでしょうか。
なお、WindowsNT4.0の規定値は0x04で0x0C(4~12)まで設定可。NT4.0 SP5以降では0x07より小さい値は無視される。
WindowsXPおよびServer 2003では規定値はWindows2000と同じ15で設定可能範囲も同じく11~50。
IRPStackSize値は、インストール後初期状態では設定されていません。

メッセージから仮想記憶の不足を疑って仮想記憶域の量をふやしたりしましたが、原因は「Serverサービスのスタック領域不足」なので解決しません。こんなところに落とし穴があるとは。

それにしてもWinFAQ様々です。結構現場で助かっています。

今回は、ファイルバックアップソフトを使って、共有したUSB外付HDDにネットワーク経由のバックアップを行おうとしてハマりました。結構こういう予期せぬトラップにはめられることが多々あります。

なお、このIRPスタックサイズの問題はMSのKBを読むと分かりますが、古くはWindowsNT 4.0の頃からあった由緒正しく伝統的なトラップのようです。