/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 문제가 발생할 수 있습니다.
감사해요.
알렉스.