Network File System (NFS) は、 リモートマシンのディスクパーティションを ローカルのハードディスクのようにマウントできるようにするものです。 NFS を用いると、ネットワークを介して、 高速かつシームレスなファイル共有が可能になります。
一方 NFS の設定を間違えると、 望ましくない人々があなたのハードドライブに対して ネットワーク経由でアクセスできてしまう可能性も生じます (そしてメールを読まれたり、すべてのファイルを消されたり、 システムに侵入されるかもしれません)。 ですから、NFS の設定を行うつもりなら、 この文書のセキュリティの章を注意してよく読んでください。
NFS と同様の機能を提供するシステムは他にもあります。 Samba は 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 の中身や下層構造を記述するものではありません。 その目的には、Hal Stern が書いた O'Reilly & Associates, Inc. の Managing NFS and NIS がいいでしょう (旧版の邦訳がアスキーから出ています)。 この本はかなり前のものですが、NFS の構造のほとんどは変わっていませんし、 この本ではそれが非常に明晰に説明されています。 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 とファイル共有するには 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 サーバのサポートが設定オプションにあるかどうかで、 これらのパッチが当たっているかどうかを判断できます。 しかし、古いカーネルを使う理由が特になければ、 多くのバグが修正されているわけですから、 アップグレードをするべきでしょう。
Version 3 の機能を用いるには、nfs-utils パッケージの少なくとも バージョン 0.1.6 と、mount のバージョン 2.10m 以降が必要です。 しかし nfs-utils と mount は完全に後方互換性を保っていますし、 新しい版では多くのセキュリティやバグの修正がなされていますから、 NFS の設定を始めるなら、最新の nfs-utils や mount パッケージを 利用しない手はないでしょう。
2.4 のすべてとそれ以降のカーネルには、 NFS Version 3 の機能がすべて含まれています。
2.2.18 以降のすべてのカーネルでは、 クライアント側での NFS over TCP をサポートしています。 この文書の執筆時点では、サーバ側の NFS over TCP は 2.2 シリーズの後期 (しかし 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 関係のパッケージ等については こちらをチェックしてください。
nfs(5), exports(5), mount(8), fstab(5), nfsd(8), lockd(8), statd(8), rquotad(8), mountd(8) などの man ページも見ておくといいでしょう。