/etc/exports
CentOS 7.2で実行されているNFSサーバーがあり、エクスポートする必要がありますが、エクスポートしないファイルで宣言したサーバー(パス/クライアントホスト)に問題があります。
私の/etc/exports
ファイル:
/mnt/data/ host1(rw,all_squash,anonuid=1001,anongid=1001)
/mnt/data/ host2(rw,all_squash,anonuid=1001,anongid=1001)
/mnt/data/ host3(rw,all_squash,anonuid=1001,anongid=1001)
/mnt/data/ host3(rw,all_squash,anonuid=1001,anongid=1001)
nfsサーバーを再起動しましたが、exportfs -a
結果がcat /var/lib/nfs/etab
正確でした。
/mnt/data host1(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=1001,anongid=1001,sec=sys,rw,secure,root_squash,all_squash)
/mnt/data host2(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=1001,anongid=1001,sec=sys,rw,secure,root_squash,all_squash)
/mnt/data host3(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=1001,anongid=1001,sec=sys,rw,secure,root_squash,all_squash)
/mnt/data host4(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=1001,anongid=1001,sec=sys,rw,secure,root_squash,all_squash)
ただし、次の実行時にshowmount -e
host1は表示されません。
/mnt/data host2 host3 host4
/mnt/data
実際、私はhost1からマウントできません:
[root@host1 ~]# mount -a
mount.nfs: access denied by server while mounting nfs-server:/mnt/data/
ホスト 2、3、4 は正常にマウントされます。
PS:詳細については、以下を参照してください。
- host1 ... hostnはNFSサーバーを確認してpingできます。
- テストのためにSElinuxを無効にしました。
- サーバーとクライアントの両方にファイアウォールはありません(仮想マシンは互いに複製されています)。
編集する:
ご回答ありがとうございます。
strace
あまり表示されません。
stat("/run", {st_mode=S_IFDIR|0755, st_size=960, ...}) = 0
stat("/run/mount/utab", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
getcwd("/root", 4095) = 6
readlink("/root/nfs-server:", 0x7ffe3a9ee090, 4096) = -1 ENOENT (No such file or directory)
readlink("/mnt", 0x7ffe3a9edf70, 4096) = -1 EINVAL (Invalid argument)
readlink("/mnt/data", 0x7ffe3a9edf70, 4096) = -1 EINVAL (Invalid argument)
stat("/sbin/mount.nfs", {st_mode=S_IFREG|S_ISUID|0755, st_size=113400, ...}) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fd1b08f6b50) = 51633
wait4(-1, mount.nfs: access denied by server while mounting nfs-server:/mnt/data/
[{WIFEXITED(s) && WEXITSTATUS(s) == 32}], 0, NULL) = 51633
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=51633, si_status=32, si_utime=0, si_stime=0} ---
close(1) = 0
close(2) = 0
exit_group(0) = ?
+++ exited with 0 +++
Host1側でサービスを実行したときにnfsv4.0-svc
サービスが実行されていないことを確認しました。
[root@host1 ~]# ps -aux --forest | grep nfs
root 1199 0.0 0.0 0 0 ? S< Feb15 0:00 \_ [nfsiod]
そして、正常にマウントされた他のホストで実行されています。/mnt/data
[root@host2 ~]$ ps -ef | grep nfs
root 1296 2 0 févr.15 ? 00:00:00 [nfsiod]
root 1302 2 0 févr.15 ? 00:00:00 [nfsv4.0-svc]
しかし、これが原因なのか結果なのかはわかりません(つまり、nfsv4.0-svc
インストールが成功したため実行中です...):pbのソースになることができますか?
ベストアンサー1
最後の投稿の返信を受け取っていないので申し訳ありません。私はstackexchangeに初めて触れました。
ついに問題が見つかりました。showmount -e
または を実行しているときにshowmount -e [nfs-server DNS]
表示されるエクスポートは悪いです。
ただし、ランタイムshowmount -e localhost
の程度にはshowmount -e [nfs-server IP]
正しいエクスポート(host1を含む)が表示されます。
したがって、nfs-server IPを使用してホスト1でマウントを実行すると問題が解決しました(複製されたVMのDNSベースの自動化には悪すぎます...)。
私たちはAzureまたはインフラストラクチャで実行されているため、このDNSの問題が発生する可能性があります。
ありがとうございます。
アレックス。