NFS の管理

NFS デーモン

NFS アクティビティをサポートするには、システムが実行レベル 3 かマルチユーザモードで動作したときに、いくつかのデーモンを開始します。mountdnfsd の 2 つのデーモンは、NFS サーバであるシステム上で動作します。サーバデーモンの自動起動は、NFS ファイルシステムのタイプでラベル付けされた項目が /etc/dfs/sharetab に存在するかどうかで変わります。

lockdstatd の 2 つのデーモンは NFS クライアントで動作し、NFS ファイルロッキングをサポートします。NFS サーバでも動作させなければなりません。

lockd

このデーモンは NFS ファイルのレコードロックをサポートします。ロック要求をクライアントから NFS サーバに送り、NFS サーバでローカルのロックを開始します。通常は、パラメータを指定せずに起動します。使用できるオプションは 3 つあります (マニュアルページの lockd(1M) を参照してください)。

-g graceperiod オプションは、サーバがリブートした場合に、その何秒後にロックを再要求するかを示します。NFS サーバはこの秒数の間、それまでのロックの再要求処理しか実行しません。他のサービスに対する要求は、この時間が経過するまで待たされます。このオプションは NFS サーバの応答性に関係するため、NFS サーバでしか変更できません。デフォルト値は 45 秒です。この値を小さくすると、サーバをリブートしてからオペレーションに復帰するまでの時間は短縮されますが、クライアントがすべてのロックを復旧できなくなる可能性が増します。

-t timeout オプションは、ロック要求をリモートサーバに再送信するまで何秒待つかを示します。このオプションは NFS クライアントのサービスに関係します。デフォルト値は 15 秒です。この値を小さくすると、雑音の多いネットワーク上の NFS クライアントに対する応答時間を改善できますが、ロック要求が増えることによってサーバの負荷が増す可能性があります。

nthreads オプションは、サーバが 1 つの接続について同時に処理できるスレッドの数の上限を示します。この値は、NFS サーバに対して予想される負荷に基づいて決定してください。デフォルト値は 20 です。TCP を使用する NFS クライアントはそれぞれ NFS サーバと 1 つの接続を設定するため、各 TCP クライアントはサーバ上で同時に 20 までのスレッドを使うことが許されます。UDP (ユーザデーモンプロトコル) を使用する NFS クライアントは、すべてが NFS サーバと 1 つの接続を共有します。その場合、UDP 接続が使用できるスレッドの数を増やさなければならないことがあるかもしれません。簡単な目安は 1 つの UDP クライアントにつき 2 つのスレッドですが、クライアントに対する作業負荷によってはこれで不十分なこともあります。使用するスレッドを増やすことによるマイナスは、スレッドの使用によって NFS サーバで使われるメモリが増えることです。しかしスレッドが使われないならば、nthreads を大きくしても影響はありません。

mountd

これは、リモートシステムからのファイルシステムマウント要求を処理して、アクセス制御を行う RPC (リモートプロシージャコール) サーバです。/etc/dfs/sharetab を調べることによって、リモートマウントに使用可能なファイルシステムと、リモートマウントを実行可能なシステムを判断します。-v-r の 2 つのオプションが使えます (マニュアルページの mountd(1M) を参照してください)。

-v オプションは、コマンドを冗長モードで実行します。クライアントが取得すべきアクセス権を NFS サーバが決定するたびに、コンソールにメッセージが表示されます。この情報は、クライアントがファイルシステムにアクセスできない理由を調べるときに役立ちます。

-r オプションは、その後のクライアントからのマウント要求をすべて拒絶します。すでにファイルシステムがマウントされているクライアントには影響しません。

nfsd

これは、他のクライアントからのファイルシステム要求を処理するデーモンです。このコマンドに対してはいくつかのオプションが指定できます。オプションをすべて確認するにはマニュアルページの nfsd(1M) を参照してください。

-l オプションは、接続指向トランスポートでの NFS/TCP に対する接続キューの長さを設定します。デフォルト値は 25 エントリです。

-c #_conn オプションは、接続指向トランスポート 1 つあたりの接続数の上限を選択します。デフォルト値はありません。

nservers オプションは、1 台のサーバが同時に処理可能な要求の数の上限です。デフォルト値は 1 ですが、起動スクリプトでは 16 が選択されます。

このデーモンの以前のバージョンとは異なり、このバージョンの nfsd では複数のコピーを作成して要求を同時に処理することはありません。処理テーブルを ps でチェックすると、動作しているデーモンのコピーが 1 つしかないことがわかります。

statd

lockd とともに動作し、ロック管理機能にクラッシュ機能と回復機能を提供します。NFS サーバでロックを保持しているクライアントの追跡を行い、サーバがクラッシュし、リブートしているあいだに、サーバ側 statd がクライアント側 statd と連絡をとります。次にクライアント側 statd は、サーバ上のすべてのロックを再要求します。クライアントがクラッシュすると、クライアント側 statd はサーバ側 statd にそのことを伝えるので、サーバ上のロックはクリアされます。このデーモンにオプションはありません。詳細については、マニュアルページの statd(1M) を参照してください。

Solaris 7 では、statd がクライアントを追跡する方法が改善されました。Solaris 7 より前のリリースの statd では、クライアントごとにそのクライアントの修飾されていないホスト名を使用して、/var/statmon/sm にファイルが作成されました。そのため、同じホスト名の 2 つのクライアントが異なるドメインに存在する場合や、クライアントが NFS サーバと異なるドメインに存在する場合に問題が発生していました。修飾されていないホスト名にはドメインや IP アドレスの情報がないため、このようなクライアントを区別する方法がありませんでした。これに対処するため、Solaris 7 の statd では、修飾されていないホスト名に対してクライアントの IP アドレスを使用して /var/statmon/sm にシンボリックリンクを作成します。このリンクは、次のような形式です。


# ls -l /var/statmon/sm
lrwxrwxrwx   1 root          11 Apr 29 16:32 ipv4.192.9.200.1 -> myhost
--w-------   1 root          11 Apr 29 16:32 myhost

この例では、クライアントのホスト名は myhost で、IP アドレスは 192.9.200.1 です。他のホストが myhost という名前を持ち、ファイルシステムをマウントしていると、myhost というホスト名に対するシンボリックリンクは 2 つ作成されます。