Network File System (NFS) は、 リモートマシンのディスクパーティションを ローカルのハードディスクのようにマウント可能とするために開発されました。 NFS を用いると、ネットワークを介して、 高速かつシームレスなファイル共有が可能になります。
一方 NFS の設定を間違えると、 望ましくない人々があなたのハードドライブに対して ネットワーク経由でアクセスできてしまう可能性も生じます (そしてメールを読まれたり、すべてのファイルを消されたり、 システムに侵入されるかもしれません)。 ですから、NFS の設定を行うつもりなら、 この文書のセキュリティの章を注意してよく読んでください。
NFS と同様の機能を提供するシステムは他にもあります。 Samba (http://www.samba.org) は Windows クライアントにファイルサービスを提供します。 最近オープンソースになった IBM の Andrew File System (http://www.transarc.com/Product/EFS/AFS/index.html) もファイル共有機構を提供し、 さらにセキュリティや性能を向上させるための機能も追加されています。 Coda File System (http://www.coda.cs.cmu.edu/) は、この文書を書いている時点ではまだ開発の段階ですが、 接続が失われたクライアントでもうまく動作するように設計されています。 Andrew File System や Coda File System の機能の多くは、 次の版の NFS (Version 4)に取り込まれる予定です (http://www.nfsv4.org)。 今日における NFS の利点は、成熟していること、標準であること、 よく分かっていること、 たくさんのプラットフォームで堅固にサポートされていること、です。
この HOWTO は、NFS を正しくかつ効率的に設定するための、 完全なステップバイステップのガイドとなるべく執筆されています。 NFS の設定は 2 つの段階からなります。すなわち サーバの設定とクライアントの設定です。 さらにこの文書は、特定の用途に NFS を用いる人向けのヒントや、 ハードウェアの設定、セキュリティ、トラブルシュート等に 参考となる情報を提供しています。
この HOWTO は NFS の中身や下層構造を記述するものではありません。 その目的には、Erez Zadok の Linux NFS and Automounter Administration (Sybex, 2001) が良いでしょう。 また NFS の本としては古典ですが、改版された極めて有用な本として、 Hal Stern が書いた O'Reilly & Associates, Inc. の Managing NFS and NIS があります。 (訳注: 邦訳がオライリージャパンから出ています)。 NFS に関するもっとずっと高度かつ最新の技術情報は、 Brent Callaghan の NFS Illustrated に書いてあります (邦訳が『NFS バイブル』という書名でアスキーから出ています)。
この文書は完全なリファレンスマニュアルを目指したものでもなく、 Linux NFS の膨大な機能のリストすべてを含むものでもありません。 この目的には、 nfs(5), exports(5), mount(8), fstab(5), nfsd(8), lockd(8), statd(8), rquotad(8), mountd(8) などの man ページを読んでください。
この文書では PC-NFS を扱いません。 PC-NFS は古いですし、Windows マシンとファイル共有するには Samba のほうがいいです。 また NFS Version 4 はまだ開発中ですので、これも扱いません。
この HOWTO を読むには、TCP/IP ネットワークに関する基本的な知識が必要です。 自信がない場合は Networking-Overview-HOWTO (JF に 日本語訳 があります) を読んでください。
Version 2 の NFS と Version 3 の NFS との違いについては以降で説明します。 今のところは、専用の高負荷なファイルサーバをインストールする場合は NFS Version 3 が必要になるだろう、という意見を受け入れてください。 より気軽な用途には NFS Version 2 でも良いでしょう。
NFS Version 2 は、かなり長く使われています (少なくとも 1.2 カーネルシリーズから) が、 次のいずれかを必要とする場合は 2.2.18 以降の版のカーネルが必要です。
Linux の NFS を他の OS の NFS と混在させたい
NFS 越しに 信頼性の高いファイルロックを使いたい
NFS Version 3 を使いたい
2.2.14 以降のカーネルには、上記の機能を提供するパッチも存在します。 それらのいくつかは Linux NFS ホームページからダウンロードできます。 2.2.14〜2.2.17 のカーネルを使っていて、ソースコードが手元にあるなら、 NFS Version 3 サーバのサポートが設定オプションにあるかどうかで、 これらのパッチが当たっているかどうかを判断できます。 しかし、古いカーネルを使う理由が特になければ、 多くのバグが修正されているわけですから、 アップグレードをすべきでしょう。カーネル 2.2.19 では、 2.2.18 に比べ、ロック機構の改善点がいくつか追加されています。
Version 3 の機能を用いるには、nfs-utils パッケージの少なくとも バージョン 0.1.6 と、mount のバージョン 2.10m 以降が必要です。 しかし nfs-utils と mount は完全に後方互換性を保っていますし、 新しい版では多くのセキュリティやバグの修正がなされていますから、 NFS の設定を開始するところなら、 最新の nfs-utils や mount パッケージを利用しない手はないでしょう。
2.4 のすべてとそれ以降のカーネルには、 NFS Version 3 の機能がすべて含まれています。
いずれの場合でも、自分でカーネルをビルドする場合は、 NFS と NFS version 3 のサポートをコンパイル時に選ぶ必要があります。 標準的なディストリビューションのほとんど (全てではありません) には、 NFS version 3 をサポートしたカーネルが付いてきます。
2 GB より大きなファイルを扱うには、 2.4.x カーネルと glibc の 2.2.x 版が必要です。
2.2.18 以降のすべてのカーネルでは、 クライアント側での NFS over TCP をサポートしています。 この文書の執筆時点でのサーバ側 NFS over TCP ですが、 2.2.18 以降のシリーズではバグが多く、 実験的なオプションになっています。 2.4 や 2.5 カーネルへのパッチは 2.4.17 と 2.5.6 の時点から登場しました。 これらのパッチは安定していると思われていますが、 現時点ではまだ比較的新しく、 広い用途で用いられてはいないようですし、 メインストリームの 2.4 カーネルにも統合されていません。
上記の機能のほとんどがカーネルバージョン 2.2.18 で導入されたものですので、 この文書はこのバージョン以降を対象にします (2.4.x も含みます)。 古いカーネルを使っている場合は、 この文書はお手元の NFS システムを 正しく記述したものではないかもしれません。
この文書の執筆時点では、NFS version 4 はまだ プロトコルの策定がおわったばかりで、 実装はまだ完成品としては用意できていません。 ですのでここでは扱いません。
2000 年 11 月の段階では、Linux NFS ホームページは http://nfs.sourceforge.net にあります。 NFS 関係のメーリングリスト、nfs-utils の最新版、 NFS カーネルパッチ、その他 NFS 関係のパッケージ等については こちらをチェックしてください。
この文書や faq、man ページなどで扱われていない問題や質問が生じた場合は、 nfs メーリングリスト (<nfs@lists.sourceforge.net>) にメッセージを送ってください。 開発者や他のユーザたちが、あなたの問題を評価できるよう、 以下のような情報を含めるようにしてください。
用いている nfs-utils のバージョン
カーネルのバージョンと、 標準以外の拡張が適用されたカーネルである場合はその情報
用いている Linux ディストリビューション
問題に関わっている OS が他にあれば、そのバージョン
そのホストがつながっているネットワークの 設定に関する情報も助けになるでしょう。
問題の内容が、 共有のマウントやエクスポートができない、 というものでしたら、次の情報もお願いします。
/etc/exports ファイルのコピー
サーバで rpcinfo -p localhost を実行したときの出力
クライアントで rpcinfo -p servername を実行したときの出力
まずすべての文書を読み、 そして問題と一緒にこれら全ての情報を送るのが、 リストから助力を得るための最善の方法です。
nfs(5), exports(5), mount(8), fstab(5), nfsd(8), lockd(8), statd(8), rquotad(8), mountd(8) などの man ページも見ておくといいでしょう。