내 오류는 다음과 같습니다
mount.nfs4: access denied by server while mounting fileserver:/export/path/one
내 질문은 다음과 같습니다
서버(systemd 아래)의 자세한 로그 정보는 어디에 있나요?
추가 정보:
나는 물었다유제AskUbuntu의 Ubuntu 클라이언트 관점에서. 내 질문의 초점은 Arch Linux 서버입니다. 특히 문제를 이해하는 데 도움이 되도록 서버의 로그를 찾고 있습니다.
배경은 다음과 같습니다.
우리의 소규모 LAN은 Arch Linux NFS v4 파일 서버를 실행하고 있습니다. Ubuntu 15.10 및 16.04를 실행하는 여러 클라이언트가 있습니다. Ubuntu 14.04를 실행하는 클라이언트가 있습니다. 14.04 클라이언트는 파일 서버에 연결할 수 없습니다. 다른 모든 연결은 정상입니다. 설정은 모든 클라이언트에서 동일합니다. 모든 클라이언트는 서버의 /etc/exports에 나열됩니다.
아치리눅스 서버에서 좀 더 자세한 오류정보를 찾아봐야겠네요. 그러나 Journalctl은 nfs와 관련된 내용을 표시하지 않으며 nfs 액세스 거부 오류와 관련된 항목도 포함하지 않습니다.
14.04 클라이언트는 파일 서버를 ping하고 SSH를 통해 로그인할 수 있습니다. 사용자 이름/ID 및 그룹 일치. (클라이언트와 서버에서 동일한 사용자 계정/uid를 사용하고 있습니다. uid 1000입니다.)
추가 정보:
$ sudo mount -a (on client)
mount.nfs4: access denied by server while mounting fileserver:/export/path/one
mount.nfs4: access denied by server while mounting fileserver:/export/path/two
클라이언트는 파일 서버에 ping을 보낼 수 있습니다(또는 그 반대로).
$ ping fileserver
PING fileserver (192.168.1.1) 56(84) bytes of data.
64 bytes from fileserver (192.168.1.1): icmp_seq=1 ttl=64 time=0.310 ms
클라이언트가 LAN 기반 파일 서버에 성공적으로 로그인했습니다.
$ ssh fileserver
Last login: Tue Aug 16 14:38:26 2016 from 192.168.1.2
[me@fileserver ~]$
파일 서버의 마운트가 내보내지고 rpcinfo
클라이언트에 노출됩니다.
$ showmount -e fileserver # on client
Export list for fileserver:
/export/path/one/ 192.168.1.2
/export/path/two/ 192.168.1.2,192.168.1.3
$ rpcinfo -p fileserver (on client)
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 58344 status
100024 1 tcp 58561 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 4 tcp 2049 nfs
100003 4 udp 2049 nfs
내보내기를 직접 마운트할 때 발생하는 오류는 다음과 같습니다.
$ sudo mount -vvv -t nfs4 fileserver:/export/path/one /path/one/
mount: fstab path: "/etc/fstab"
mount: mtab path: "/etc/mtab"
mount: lock path: "/etc/mtab~"
mount: temp path: "/etc/mtab.tmp"
mount: UID: 0
mount: eUID: 0
mount: spec: "fileserver:/export/path/one"
mount: node: "/path/one/"
mount: types: "nfs4"
mount: opts: "(null)"
mount: external mount: argv[0] = "/sbin/mount.nfs4"
mount: external mount: argv[1] = "fileserver:/export/path/one"
mount: external mount: argv[2] = "/path/one/"
mount: external mount: argv[3] = "-v"
mount: external mount: argv[4] = "-o"
mount: external mount: argv[5] = "rw"
mount.nfs4: timeout set for Tue Aug 16 16:10:43 2016
mount.nfs4: trying text-based options 'addr=192.168.1.1,clientaddr=192.168.1.2'
mount.nfs4: mount(2): Permission denied
mount.nfs4: access denied by server while mounting fileserver:/export/path/one
답변1
@pgoetz가 근본적인 문제를 해결한 것 같지만, 후일을 위해 NFS 로그를 캡처하는 방법에 대한 원래 질문을 다루겠습니다(비슷한 문제에 부딪혔지만 로깅에 대한 답도 찾을 수 없었습니다!).
NFS 서버와 해당 클라이언트에 대한 자세한 로깅은 커널 로그를 생성하는 를 사용하여 얻을 수 있습니다 (예를 들어 배포판에 따라 등으로 표시 rpcdebug
됩니다 )./var/log/messages
/var/log/syslog
일반적인 형태는 다음과 같습니다 rpcdebug -m [module] -s [flags]
.
-m [module]
: 로그할 모듈을 지정합니다. 이는nfs
,nfsd
,rpc
또는 일 수 있습니다nlm
. - 서버의 일반 NFS 로그의 경우nfsd
클라이언트의 일반 NFS 로그의 경우 ;nfs
-s [flags]
: 커널이 기록할 디버그 플래그를 설정합니다. 사용 가능한 플래그는 모듈에 따라 다릅니다.
( man rpcdebug
자세한 내용은 참조)
따라서 모든 플래그 로깅을 시작하는 예제 명령은 다음과 같습니다.
- NFS 서버:
rpcdebug -m nfsd -s all
- NFS 클라이언트:
rpcdebug -m nfs -s all
참고: 이는 다음과 같습니다.매우긴. 올바른 로깅 수준을 얻기 위해 플래그를 조정할 수 있지만 all
플래그부터 시작하면 문제의 범위를 좁히는 데 도움이 될 수 있습니다.
로그 항목 수를 줄이려면 all
플래그를 지운 다음 추적할 특정 플래그를 설정하세요. 예를 들면 다음과 같습니다.
$ rpcdebug -m nfsd -c all # clear all flags to stop logging them
$ rpcdebug -m nfsd -s auth proc # set the auth and proc flags instead of logging all flags
답변2
클라이언트와 서버 Arch Linux 모두에서 똑같은 문제가 발생했습니다. 해결책은 /etc/exports
IP 주소 대신 호스트 이름을 사용하는 것입니다. 나는 이것을 변경했습니다 :
/srv/nfs 192.168.10(rw,fsid=root,no_subtree_check)
/srv/nfs/media 192.168.10(rw,no_subtree_check)
/srv/nfs/share 192.168.10(rw,no_subtree_check)
이와 관련하여:
/srv/nfs iguana(rw,fsid=root,no_subtree_check)
/srv/nfs/media iguana(rw,no_subtree_check)
/srv/nfs/share iguana(rw,no_subtree_check)
이로 인해 약간 다른 문제가 발생합니다.
[root@iguana data]# mount -t nfs4 frog:/srv/nfs/media /data/media
mount.nfs4: Protocol not supported
저는 NFS4에 대한 경험이 많지 않습니다. 분명히 mount 명령에 NFS 루트 경로를 포함해서는 안 됩니다. 이것이 마침내 효과가 있었고 볼륨을 마운트했습니다.
[root@iguana data]# mount -t nfs4 frog:/media /data/media