NFS サービスがエラーになった場所を判断するには、いくつかの手順を踏まなければなりません。以下の項目をチェックしてください。
クライアントとサーバがソフトウェア的に接続されているかどうか。
クライアントが NFS サービスを受けられるかどうか。
NFS サービスがサーバ上で動作しているかどうか。
上記の項目をチェックする過程で、ネームサービスやネットワークのハードウェアなど、ネットワークの他の部分が機能していないことが判明する場合があります。NIS+ ネームサービスのデバッグ手順については、『Solaris ネーミングの管理』を参照してください。問題がクライアント側のものではないことが判明することもあります (たとえば作業領域の各サブネットから、最低 1 つのトラブルコールがある場合など)。このような場合は、問題がサーバかサーバ周辺のネットワークハードウェアで発生しているとみなし、クライアントではなく、サーバでデバッグを開始するほうがよいでしょう。
クライアントと NFS サーバが、ソフトウェア的に接続されていることを確認します。以下のコマンドをクライアントで入力してください。
% /usr/sbin/ping bee bee is alive |
コマンドを入力した結果、サーバが動作していることがわかったら、NFS サーバをリモートでチェックしてください (「NFS サーバをリモートでチェックする方法」 参照)。
クライアントとサーバがソフトウェア的に接続されていない場合は、ローカルネームサービスが動作していることを確認してください。NIS+ クライアントでは、以下を入力します。
% /usr/lib/nis/nisping -u Last updates for directory eng.acme.com. : Master server is eng-master.acme.com. Last update occurred at Mon Jun 5 11:16:10 1995 Replica server is eng1-replica-58.acme.com. Last Update seen was Mon Jun 5 11:16:10 1995 |
ネームサービスが実行されている場合は、クライアントが正しいホスト情報を受け取るために次のように入力します。
% /usr/bin/getent hosts bee 129.144.83.117 bee.eng.acme.com |
ホスト情報に誤りがなく、クライアントからサーバに接続できない場合は、別のクライアントから ping コマンドを実行します。
ping コマンドが失敗したら、「サーバで NFS サービスを確認する方法」 を参照してください。
別のクライアントとサーバがソフトウェア的に接続されている場合は、ping コマンドを使用して元のクライアントとローカルネット上の他のシステムとの接続性をチェックしてください。
エラーになる場合は、そのクライアントのネットワークソフトウェアの構成をチェックします (/etc/netmasks、/etc/nsswitch.conf など)。
ソフトウェアに問題がない場合は、ネットワークハードウェアをチェックしてください。
クライアントをネットワークの別の場所へ移動してチェックしてください。
NFS サーバで NFS サービスが実行されていることを、次のコマンドを入力することによって確認します。
% rpcinfo -s bee|egrep 'nfs|mountd' 100003 3,2 tcp,udp nfs superuser 100005 3,2,1 ticots,ticotsord,tcp,ticlts,udp mountd superuser |
サーバで nfsd プロセスが応答することをチェックしてください。クライアントで以下のコマンドを入力します。
% /usr/bin/rpcinfo -u bee nfs program 100003 version 2 ready and waiting program 100003 version 3 ready and waiting |
サーバで mountd が応答することをチェックしてください。以下のコマンドを入力します。
% /usr/bin/rpcinfo -u bee mountd program 100005 version 1 ready and waiting program 100005 version 2 ready and waiting program 100005 version 3 ready and waiting |
-t オプションを使用すると、TCP 接続を検査できます。エラーになる場合は、「サーバで NFS サービスを確認する方法」 に進んでください。
ローカル autofs サービスを使用していた場合は、それをチェックしてください。
% cd /net/wasp |
/net か /home マウントポイントのうち、適切に動作する方をチェックします。動作しない場合は、以下のコマンドをルートとしてクライアントから入力し、autofs サービスを再起動してください。
# /etc/init.d/autofs stop # /etc/init.d/autofs start |
サーバのファイルシステムの共有が正常に行えることを確認します。
% /usr/sbin/showmount -e bee /usr/src eng /export/share/man (everyone) |
すべてのローカルファイルを調べて、マウント情報を含むエントリをすべて検査します。リストには、/etc/vfstab とすべての /etc/auto_* ファイルが含まれています。
サーバに root としてログインします。
サーバとクライアントがソフトウェア的に接続されていることを確認します。
# ping lilac lilac is alive |
サーバとクライアントがソフトウェア的に接続されていない場合は、ローカルネームサービスが動作していることを確認します。NIS+ クライアントで以下のコマンドを入力してください。
% /usr/lib/nis/nisping -u Last updates for directory eng.acme.com. : Master server is eng-master.acme.com. Last update occurred at Mon Jun 5 11:16:10 1995 Replica server is eng1-replica-58.acme.com. Last Update seen was Mon Jun 5 11:16:10 1995 |
ネームサービスが動作している場合は、サーバにあるネットワークソフトウェアの構成をチェックしてください (/etc/netmasks、/etc/nsswitch.conf など)。
以下のコマンドを入力し、nfsd デーモンが動作していることをチェックします。
# rpcinfo -u localhost nfs program 100003 version 2 ready and waiting program 100003 version 3 ready and waiting # ps -ef | grep nfsd root 232 1 0 Apr 07 ? 0:01 /usr/lib/nfs/nfsd -a 16 root 3127 2462 1 09:32:57 pts/3 0:00 grep nfsd |
rpcinfo の -t オプションを使用し、TCP 接続を確認してください。エラーになる場合は、NFS サービスを再起動してください (「NFS サービスの再起動」 参照)。
以下のコマンドを入力し、mountd デーモンが動作していることを確認します。
# /usr/bin/rpcinfo -u localhost mountd program 100005 version 1 ready and waiting program 100005 version 2 ready and waiting program 100005 version 3 ready and waiting # ps -ef | grep mountd root 145 1 0 Apr 07 ? 21:57 /usr/lib/autofs/automountd root 234 1 0 Apr 07 ? 0:04 /usr/lib/nfs/mountd root 3084 2462 1 09:30:20 pts/3 0:00 grep mountd |
rpcinfo に -t オプションを指定し、TCP 接続もチェックしてください。エラーになる場合は、NFS サービスを再起動します (「NFS サービスの再起動」 参照)。
以下のコマンドを入力し、rpcbind デーモンが動作していることを確認します。
# /usr/bin/rpcinfo -u localhost rpcbind program 100000 version 1 ready and waiting program 100000 version 2 ready and waiting program 100000 version 3 ready and waiting |
rpcbind がハングしている場合は、サーバをリブートするか、「rpcbind のワームスタート」 に示す作業を行ってください。
# /etc/init.d/nfs.server stop # /etc/init.d/nfs.server start |
/etc/dfs/dfstab に項目がある場合、デーモンは停止してから再起動します。
何らかのプログラムが動作しているために NFS サーバをリブートできない場合は、以下のようにワームスタートすることで、RPC を使用するすべてのサービスを再起動せずに rpcbind を再起動できます。
root としてサーバにログインし、rpcbindno の PID を調べます。
ps を実行すると、PID の値が第 2 カラムに表示されます。
# ps -ef |grep rpcbind root 115 1 0 May 31 ? 0:14 /usr/sbin/rpcbind root 13000 6944 0 11:11:15 pts/3 0:00 grep rpcbind |
SIGTERM シグナルを rpcbind プロセスに送ります。
以下の例では、送信するシグナルは term で、プログラムの PID は 115 です (kill(1) のマニュアルページ参照)。これにより、rpcbind は /tmp/portmap.file と /tmp/rpcbind.file に現在登録されているサービスのリストを作成します。
# kill -s term 115 |
-s term オプションを使って rpcbind プロセスを終了させないと、rpcbind のワームスタートを完了できません。その場合は、サーバを再起動することによってサービスを再開する必要があります。
rpcbind を再起動します。
rpcbind のワームスタートを実行すると、kill コマンドの実行で作成されたファイルが参照されるので、すべてのRPCサービスを再起動せずにプロセスを再起動できます (rpcbind(1M) のマニュアルページ参照)。
# /usr/sbin/rpcbind -w |
-m オプションを指定して nfsstat コマンドを実行し、最新の NFS 情報を取得します。
現在のサーバの名前は、 "currserver=" の後に表示されます。
% nfsstat -m /usr/local from bee,wasp:/export/share/local Flags: vers=3,proto=tcp,sec=sys,hard,intr,llock,link,synlink, acl,rsize=32768,wsize=32678,retrans=5 Failover: noresponse=0, failover=0, remap=0, currserver=bee |