こんにちは。 Windows テクノロジー サポートの松田です。
Windows Server 2003 R2 以降のシステムでは、Windows コンポーネントの一部として NFSサービスが提供されています。Unix や Linux 環境において広く用いられているネットワークファイル共有の NFS (Network File System) に対応するためのもので、このサービスを利用することで Unix/Linux 環境と Windows 環境との間で NFS プロトコルを介したファイル共有が出来るようになります。
Unix/Linux と Windows が混在するネットワーク環境をお持ちのユーザー様にご活用いただいていますが、Windows Server 2008 (Windows Vista) に SP2 を適用することにより NFS が利用出来なくなる問題が生じています。なお、同様の現象は Windows Server 2008 R2 では発生いたしません。
この問題の原因について説明させていただくとともに、問題を解決するための修正プログラムをご案内させていただきます。
-----
Windows では、Unix/Linux 環境からエクスポートされた NFS 共有領域に対してアクセスするための方法として、以下の二つの方法を提供しています。
- mount や net use コマンドを利用してドライブ文字にマウントする - UNC (Universal Naming Convention) 形式で直接アクセスする
ただし、ドライブ文字にマウントを行った場合でも、内部処理上は UNC 形式に変換してからアクセスされることも多く、結局のところ大多数の状況下で UNC 形式によるアクセスが行われています。
この UNC 形式には、リモート共有領域に関するファイル システムの種類やネットワーク プロバイダの情報を含まないため、UNC 形式でファイルへのアクセスが行われると MUP (MultipleUNC Providers) にてネットワーク プロバイダの選択が行われます。
選択の仕組みはシンプルなもので、MUP はすべてのネットワーク プロバイダを利用して対象領域へのアクセスを行い、アクセスに成功したネットワーク プロバイダが有効なものであると判断します。
また、Windows には DFS (Distributed File System) と呼ばれる機能があり、クライアントでは既定で有効になっています。この DFS を利用する場合のパスにも UNC 形式を利用します。このため、UNC 形式によるアクセスが行われると、まず最初にその UNC パスが DFS のものであるのかどうかを確認します。
DFS としての有効性を確認する方法は先述の MUP と似た処理を行いますが、これまでの DFSではネットワーク プロバイダが SMB (CIFS) であることを前提に動作していました。これに対して Windows Server 2008 (Windows Vista) に SP2 を適用すると、DFS に対しても MUP と同様にすべてのネットワーク プロバイダが探索されるように変更されました。
これは、任意の UNC 形式が DFS のものであるのかどうかを確認する際に、NFS が有効化されていた環境においては NFS のネットワーク プロバイダも含めて探索されることを意味します。
この際、NFS は DFS に対応していないために STATUS_NOT_IMPLEMENTED のエラー ステータスを返しますが、DFS がこのエラーを理解出来ず、DFS として有効な UNC 形式であると誤って判断してしまうという問題があることがわかりました。
その結果、NFS 上のファイルを UNC 形式でアクセスした際、DFS のものだと誤って判断されてしまうことにより、"Incorrect Function" のエラーにてファイルのアクセスに失敗してしまいます。
この問題については、下記のサポート技術情報にて修正プログラムが公開されています。
FIX: Error message when you access an NFS share from a computer that is running Windows Vista SP2 or Windows Server 2008 SP2: "Incorrect Function"http://support.microsoft.com/kb/978845
なお、通常は "Incorrect Function" のエラーが返されますが、ファイルのアクセス方法などによっては "Permission Denied" のエラーが返される場合があります。SP2 が適用された環境において、ファイル パーミッションに問題がないにもかかわらず "Permission Denied" が記録される場合にも、修正プログラムの適用をお試しください。
松田