私がこれを書いている時点では、 Linux 2.2.12 が最新のカーネルバージョンです。 NFS をこのカーネルで使うのは、ちょっと面倒な作業になるかもしれません (ならないかもしれません)。
Linux 2.4 の NFS がどんなふうになるのかは、私は知りません。
Linux 2.2 における大きな更新点は、カーネル内部に置かれる nfs サーバデーモンのサポートです。これは 2.2 では knfsd と 呼ばれています。このような nfsd の実装には、速度をはじめとする メリットがあります。 knfsd を用いた Linux 2.2 マシンは、悪くない nfs サーバになります。一方では、 Linux 2.2 で以前からの nfsd を使い続けることもできます。こちらの方にも、 設定の簡単さなどのメリットがあります。
お使いのカーネルソース (またはバイナリ) パッケージが、 RedHat (6.0 以降) や SuSE (6.1 以降、のはず) などの プロフェッショナルなシステムインテグレータによって作られたものなら、 そのカーネルには "knfsd" の機構はちゃんと入っているでしょうから、 心配する必要はありません。ちゃんと動くでしょう。ほとんどの場合は。 あなたが自分自身のカーネルをコンパイルしたくなるまでは。 手を加えない、そのままの Linux 2.2 カーネルを使う場合は、 (少なくとも 2.2.12 までは) knfsd はうまく動きません。
これを自分でなんとかしたい場合は、 H.J. Lu の knfsd パッケージを 入手する必要があります。これはパッチと 2.2 に必要なユーティリティとを 集めたもので、 Lu が空き時間にメンテナンスしています。これは お近くのカーネルミラーから入手できます。マスターサイトは ftp.kernel.org:/pub/linux/devel/gcc/ です。 これは一般向けのものではありません。 このパッケージの内容に理解できない部分があったら、 自分で使おうとは思わないことです。お好みのシステムインテグレータ (つまり Red Hat や SuSE, ...) によるカーネルパッケージが登場する まで待ちましょう。
また、これに関する質問は私には送らないでください。お助けできません。 私は knfsd ベースのサーバは 1 台も使っていません。この文書に間違いや 遺漏がある場合は、お知らせください。この HOWTO を改版して再リリース しますから。
まだ読んでますか? 了解。 H.J. Lu はこのパッケージの 新しいバージョンの情報を linux-kernel メーリングリストにポストします。 2.2 の NFS に関するその他の話題もここにポストされます。講読すること。
knfsd パッケージには、書いておきたい興味深い点がひとつあります。
knfsd は、自分が NFS version 3 をサポートしているとアナウンスするの
ですが、実際にはサポートしていないんです。オプションを与えれば、
NFS3 のアナウンスを止めることができます。あるいはクライアントでの
マウントオプションリストに "vers=2
" と指定するのでも OK です。
クライアントはほぼ簡単です。適切なロック動作をさせるには、
statd
(knfsd パッケージのもの) をコンパイル・インストールし、
ブートスクリプトから起動する必要があります。
さーどうぞ。
statd が機能するには、 /var/lib/nfs
という
ディレクトリが必要です。これがないと statd はエラーメッセージを
出さずに単に停止します。ですから statd を起動する前に
このディレクトリを作っておくようにしてください。
statd が起動したら、 testlk
プログラム
(/tools/locktest
にあります) を使い、 NFS マウントされた
ファイルシステム上で、ファイルシステムのロック動作が正しく
動作しているかテストしてみましょう。しているはずです。
No locks available が表示されるようなら、 statd は
動作していません。
実際にはロックをまるっきり行わないことも可能です
(お薦めはしません)。これには mount のオプションリストに
"nolock
" を指定します。
私の知るかぎりでは、クライアントを動作させるために 必要なことはこれですべてです。
おっと、 Sparc や Alpha の NFS サーバを使っている場合には、 Linux 2.2 の nfs クライアントはまるっきりダメかもです。 サーバへの/サーバからの転送速度が無茶苦茶悪くて... きっと想像も できないでしょう。 Linux 2.0 よりもずっと悪いんです。ずっとです。 しかしもちろん修正方法はあります。 Alan Cox 系の 2.2 カーネル (これは Linus のノーマルな 2.2 カーネルより少々実験的なものです) にはパッチが含まれており、これを用いれば Linux 2.2 を Alpha や Sparc サーバと一緒に使ったときの性能が向上します。 Alan Cox の 2.2 カーネルを使いたい場合は linux-kernel メーリングリストを 読むべきです。そうすればパッチの場所もわかるでしょう。 このパッチを素の Linux カーネルに当てたい人向けのホームサイトは http://www.uio.no/~trondmy/src/ です。このパッチはおそらく Linux 2.4 に当てることはできないでしょう。 現在の開発サイクルから見ると多すぎる変更を必要とするからです。 Linux 2.5 を待ちましょう。
trondmy
にも Linux に NFS version 3 の利用を可能にさせる
パッチがあります。これは転送機構を UDP の代わりに tcp にすることも
できます。 NFSv3 は長く引っ張られたネットワークや、パケットロスが
あるネットワーク、遅延の大きいネットワークなどに非常に適しています。
これらのパッチを使う人は、 linux-kernel メーリングリストを 読むべきです。これらにはときどきひどいバグが見付かることがあるんです。 バグはあなたのファイルを食べてしまいます。どうか気をつけて。
Linux 2.2 以降での nfs サーバデーモンは "knfsd
" と
呼ばれます。設定には技がいります。これはご自分で解決していただくか、
SuSE, Red Hat などがリリースしようとしている 2.2 カーネルパッケージを
使ってください。ごめんなさい。でも Linux 2.2 でも古い nfsd を
使いつづけることは可能です。遅いですが設定は簡単です。