この投稿では、Linux で最も一般的に発生する NFS の問題とその解決方法について説明します。
1.エラー:「サーバーが応答していません」
ネットワーク ファイル システム (NFS) クライアントとサーバーは、ネットワーク経由でリモート プロシージャ コール (RPC) メッセージを使用して通信します。ホストからクライアントへの通信パスとクライアントからホストへの通信パスの両方が機能している必要があります。 ping、traceroute、tracepath などの一般的なツールを使用して、クライアント マシンとサーバー マシンが相互に到達できることを確認します。そうでない場合は、ifconfig または ethtool を使用してネットワーク インターフェイス カード (NIC) の設定を調べ、IP 設定を確認してください。
NFS ファイル システムは、サーバーまたはネットワークの負荷が高いために RPC メッセージの応答がタイムアウトした場合にも、「サーバーが応答していません」と報告します。 「timeo=N」を使用します タイムアウトを増やすには、クライアントのマウント オプションを使用します。詳細については、「マン マウント」を確認してください。
2.エラー:「ホストへのルートがありません」
クライアントがサーバーへの ping に成功した場合でも、クライアントが NFS ファイル システムをマウントしようとすると、「ホストへのルートがありません」というエラーが報告されることがあります。
# mount NFS-Server:/data /data_remote mount: mount to NFS server 'NFS-Server' failed: System Error: No route to host.
これは、ホスト ファイアウォール、クライアント ファイアウォール、またはネットワーク スイッチのいずれかによってフィルタリングされている RPC メッセージが原因である可能性があります。ファイアウォールがアクティブかどうか、および NFS トラフィックが許可されているかどうかを確認します。通常、nfs はポート 2049 を使用します。簡単なテストとして、次の方法でファイアウォールをオフにすることができます。
# service iptables stop
クライアントとサーバーの両方で。 NFS ディレクトリのマウントを再試行します。スイッチをオンに戻し、NFS トラフィックを許可するように正しく構成することを忘れないでください/
3.エラー:「マウント clntudp_create:RPC:ポート マッパーの失敗 – RPC:受信できません」
Linux NFS 実装では、NFS サービスとポートマッパー (RPC) サービスの両方がクライアントとサーバーの両方で実行されている必要があります。次のようにチェックしてください:
# rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper [portmap service is started.] 100000 2 udp 111 portmapper 100011 1 udp 881 rquotad 100011 2 udp 881 rquotad ...
# service portmap status portmap (pid 7428) is running... [portmap service is started.]
そうでない場合は、以下のコマンドで開始してください。
# chkconfig portmap on # service portmap start
4.エラー:「NFS 古いファイル ハンドル」
アプリケーションがローカル ファイルを開くのと同じ方法で、プログラムは open(2) システム コールを使用して NFS ファイルにアクセスします。このシステム コールは、ファイル記述子、または「ハンドル」を返します。これは、プログラムが後で操作するファイルを識別するために I/O コマンドで使用します。
ファイルが unlink または rm を使用して削除された場合でも、アプリケーションが開いているファイルにアクセスできる従来の Linux ファイル システムとは異なり、NFS はこの機能をサポートしていません。 NFS ファイルはすぐに削除されます。削除されたファイルに対してさらに I/O を実行しようとするプログラムは、「NFS 古いファイル ハンドル」エラーを受け取ります。たとえば、現在の作業ディレクトリが NFS ディレクトリであり、削除されている場合、次のシェル プロンプトでこのエラーが表示されます。
クライアントの状態をサーバーの状態に更新するには、マウント ポイントを強制的にアンマウントします:
# umount -f /mnt/mount_point
または、マウントされたファイル システムを参照するプロセスを強制終了します。
# fuser -k [mounted-filesystem]
5.エラー:「アクセスが拒否されました」または「許可が拒否されました」
NFS ファイル システムのエクスポート権限を確認します。クライアントからこれを行うことができます:
# showmount -e server_name
またはサーバーから:
# exportfs -a
予期しないエクスポート許可が表示された場合は、サーバー上の /etc/exports ファイルを確認してください。許可されたホストとパーミッションの間にスペースなどの構文エラーがないことを確認してください。次の行に大きな違いがあります:
/home *(ro)
そして次の行:
/home * (ro)
2 番目のエクスポートは /home をすべてのシステムに読み書きできるためです。これは意図したものではありません。この行の構文はまだ正しいため、NFS はそれについて文句を言うことはありません。
6.エラー:「rpc マウント エクスポート:RPC:タイムアウト」
エラー メッセージ:
Unable to access file system at [NFS SERVER]: rpc mount export: RPC: Timed out
これは、DNS の名前解決の問題が原因です。 NFS(RPC) は名前の逆引きが必要です。 NFS サーバーまたはクライアントが名前を解決できない場合、このエラーが発生します。エラー メッセージが表示された場合は、DNS 構成と /etc/hosts 構成を確認してください。