問題
NFS クライアントで CentOS/RHEL NFS サーバーから nfs 共有をマウントすると、次のようなエラーが発生します:
# mount -t nfs x.x.x.x:/share /mnt mount.nfs: access denied by server while mounting x.x.x.x:/share
詳細オプションを指定してマウント コマンドを実行すると、問題に関する詳細なエラーを取得できます。
# mount -t nfs -vvvv server.example.com:/share /mnt mount.nfs: timeout set for Fri Mar 9 17:56:57 2018 mount.nfs: trying text-based options 'vers=4.1,addr=x.x.x.x,clientaddr=x.x.x.x' mount.nfs: mount(2): Protocol not supported mount.nfs: trying text-based options 'vers=4.0,addr=x.x.x.x,clientaddr=x.x.x.x' mount.nfs: mount(2): Protocol not supported mount.nfs: trying text-based options 'addr=x.x.x.x' mount.nfs: prog 100003, trying vers=3, prot=6 mount.nfs: trying x.x.x.x prog 100003 vers 3 prot TCP port 2049 mount.nfs: prog 100005, trying vers=3, prot=17 mount.nfs: trying x.x.x.x prog 100005 vers 3 prot UDP port 300 mount.nfs: mount(2): Permission denied mount.nfs: access denied by server while mounting server.example.com:/share
解決策
これは、クライアントでの NFS マウントに関する一般的な問題であり、多くの問題が原因で発生する可能性があります。以下は、最も一般的に発生する問題の一部です。
1. NFSv3 でマウントしてみる
NFS サーバーが NFSv3 接続のみをサポートする場合があります。デフォルトでは、mount コマンドは NFSv4 を使用するため、エラーが発生する場合があります。これを回避するには、共有のマウント時に NFSv3 を指定してください。
# mount -t nfs -o nfsvers=3 x.x.x.x:/share /mnt
2. /etc/exports で正しい共有オプションを確認してください
/etc/exports が、アクセスを提供するための正しい NFS クライアント情報を適切に参照していることを確認してください。一部の NFS サーバーでは、NFS クライアント名を IP に解決できる必要があるため、DNS 経由で解決できるか、NFS サーバーの /etc/hosts で指定する必要があります。/etc/exports の形式 ファイルは:
dir client1 (options) [client2(options)...]
クライアント オプションには以下が含まれます (デフォルトが最初に表示されます):
ro / rw :
a) ro :クライアントに共有への読み取り専用アクセスを許可します。
b) rw :クライアントに共有への読み取り/書き込みアクセスを許可します。
sync / async :
a) sync :NFS サーバーは、前の要求によって行われた変更がディスクに書き込まれた後にのみ要求に応答します。
b) async :サーバーが待機する必要がないことを指定します。
wdelay / no_wdelay
a) wdelay :NFS サーバーは、別の書き込み要求が差し迫っていると思われる場合、書き込み要求のコミットを遅らせます。
b) no_wdelay :このオプションを使用して、遅延を無効にします。 no_wdelay オプションは、デフォルトの 同期 の場合にのみ有効にできます オプションが有効です。
no_all_squash / all_squash :
a) no_all_squash :リモート ユーザーのマッピングを変更しません。
b) all_squash :root を含むすべてのリモート ユーザーをスカッシュします。
root_squash / no_root_squash :
a) root_squash :リモートで接続している root ユーザーが root アクセスできないようにします。リモートの root 権限を効果的に押しつぶします。
b) no_root_squash :root の押しつぶしを無効にします。
例:
# vi /etc/exports /test nfs_client(rw)
3. NFS サーバーの権限を確認してください
– NFS 共有を共有する NFS サーバーに問題がある可能性があります。 NFS サーバーで問題が発生する可能性を排除するために、問題のある共有を別の NFS クライアントにマウントしてみてください。
– サーバー側で nfs エクスポートの権限を (ro,no_root_squash,sync) に設定し、コマンドを実行します:
# exportfs -r
次に、NFS 共有ディレクトリのマウントを試みます。 /etc/exports で NFS クライアントをドメインまたはホスト名で指定する場合は、ドメイン名が正しい IP にマップされていることを確認してください。 たとえば、アクセスが拒否される可能性があります。
4. tcpdump の使用
ごくまれに、tcpdump を使用してマウント操作の tcpdump をキャプチャする必要がある場合があります。最初に以下のコマンドを実行して、ネットワーク パケットのキャプチャを開始します。別のターミナルで、NFS マウント操作を開始します。
# tcpdump -s0 -i [eth#] host [nfs_server_ip] -w /tmp/tcpdump.pcapLinux での一般的な NFS の問題のトラブルシューティング
CentOS / RHEL 7 :NFS サーバーと NFS クライアントの構成