다시 시작된 서버에 nfs 폴더 세트를 다시 마운트하려고 시도했지만 이제 "서버 액세스 거부" 오류가 발생합니다. 클라이언트 서버(clientserver.co.local)에서 다음을 실행합니다.
[root@clientserver ~]# mount -t nfs -vvvv 172.18.4.97:/datalake/raw/org /datalake/org/raw/
mount.nfs: timeout set for Wed Dec 30 19:41:35 2020
mount.nfs: trying text-based options 'vers=4.1,addr=172.18.4.97,clientaddr=172.18.4.98'
mount.nfs: mount(2): Permission denied
mount.nfs: trying text-based options 'vers=4.0,addr=172.18.4.97,clientaddr=172.18.4.98'
mount.nfs: mount(2): Permission denied
mount.nfs: trying text-based options 'addr=172.18.4.97'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 172.18.4.97 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 172.18.4.97 prog 100005 vers 3 prot UDP port 20048
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 172.18.4.97:/datalake/raw/org
위에 표시된 오류를 수신합니다. (다른 버전의 nfs를 모두 시도했지만 여전히 실패했습니다.) 어떤 보안 스타일을 사용해야 할지 잘 모르겠습니다(이전에 이것을 지정한 기억이 없습니다. SSSD를 사용하여 Windows AD 계정을 클라이언트 및 nfs 서버에 연결하므로 이것이 기본값이라고 가정합니다). 어쨌든 -o sec=sys
및 -o sec=krb5
옵션을 모두 사용해 보았습니다. 동일한 결과를 얻습니다.
tcmpdump
설치 명령 중에 패킷 트래픽 모니터링을 실행했습니다(제안 사항에 따라) .여기), 그러나 로그를 해석하는 방법을 모릅니다(도움이 된다면 마지막 10줄과 같은 내용을 게시할 수 있음).
클라이언트의 호스팅된 nfsserver.co.local 서버에서 네트워크의 설치를 확인하면 다음이 표시됩니다.
[root@clientserver ~]# showmount -e
Export list for clientserver.co.local:
[root@clientserver ~]# showmount -e 172.18.4.97
Export list for 172.18.4.97:
/datalake/raw/org/HI_BRFSS clientserver.co.local,otherclient.co.local
/datalake/raw/org clientserver.co.local,otherclient.co.local
/datalake/analytics/org clientserver.co.local,otherclient.co.local
[root@clientserver ~]# service nfs status
Redirecting to /bin/systemctl status nfs.service
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Active: active (exited) since Wed 2020-12-30 18:32:09 HST; 11min ago
Process: 93274 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
Process: 93271 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
Process: 93266 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
Process: 93307 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
Process: 93290 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 93288 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 93290 (code=exited, status=0/SUCCESS)
Tasks: 0
CGroup: /system.slice/nfs-server.service
Dec 30 18:32:09 clientserver.co.local systemd[1]: Starting NFS server and services...
Dec 30 18:32:09 clientserver.co.local systemd[1]: Started NFS server and services.
그래서 모든 것이 제가 상상했던 것과 같습니다( showmount
마운트하려는 nfs 폴더가 표시됩니다).
명령을 실행 한 후 mount
스트림 파일에 표시되는 것은 /var/log/messages
다음과 같은 메시지입니다.
Jan 4 18:37:12 clientserver gssproxy: gssproxy[2557]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS failure. Minor code may provide more information, Client 'host/[email protected]' not found in Kerberos database
이것이 무엇을 의미하는지 잘 모르겠지만 gssproxy.conf 파일을 확인하면 다음과 같습니다.
[root@mclientserver ~]# cat /etc/gssproxy/gssproxy.conf
[gssproxy]
과거에 (nfs 마운트가 여전히 작동했을 때) 이것과 상호 작용한 기억이 없기 때문에 이것이 무엇을 의미하는지 잘 모르겠습니다.
우리는 Windows AD 계정을 컴퓨터에 연결하기 위해 SSSD(설정하지 않고)를 사용하지만 이것이 여기서 관련된 것인지 아니면 단지 다른 것인지는 알 수 없습니다. 어쨌든 sssd.conf는 다음과 같습니다
[root@clientserver ~]# cat /etc/sssd/sssd.conf
[sssd]
domains = co.local
config_file_version = 2
services = nss, pam
[domain/co.local]
ad_domain = co.local
ad_server = adserver.CO.local
ad_backup_server = adserverbackup.CO.local
krb5_realm = CO.LOCAL
realmd_tags = manages-system joined-with-samba
cache_credentials = False
enumerate = true
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = False
use_fully_qualified_names = False
override_homedir = /home/%u
access_provider = ad
하지만 그 외에는 명령 오류에서 본 것 외에는 로그에 많은 정보가 없는 것 같습니다...
[root@clientserver ~]# grep mount -rnw /var/log/messages* -e "nfs"
grep: mount: No such file or directory
/var/log/messages:2782:Jan 4 17:21:23 clientserver kernel: FS-Cache: Netfs 'nfs' registered for caching
/var/log/messages:2844:Jan 4 17:21:24 clientserver mount: mount.nfs: access denied by server while mounting nfsserver.co.local:/datalake/analytics/org
/var/log/messages:2845:Jan 4 17:21:24 clientserver mount: mount.nfs: access denied by server while mounting nfsserver.co.local:/datalake/raw/org
/var/log/messages-20201227:3590:Dec 23 17:46:04 clientserver kernel: FS-Cache: Netfs 'nfs' registered for caching
[root@clientserver ~]#
[root@clientserver ~]#
[root@clientserver ~]#
[root@clientserver ~]# grep mount -rnw /var/log/messages* -e "mount"
grep: mount: No such file or directory
/var/log/messages:2380:Jan 4 17:20:55 clientserver kernel: XFS (dm-3): Ending clean mount
/var/log/messages:2530:Jan 4 17:21:07 clientserver kernel: XFS (sda1): Ending clean mount
/var/log/messages:2537:Jan 4 17:21:07 clientserver kernel: XFS (dm-5): Ending clean mount
/var/log/messages:2844:Jan 4 17:21:24 clientserver mount: mount.nfs: access denied by server while mounting nfsserver.co.local:/datalake/analytics/org
/var/log/messages:2845:Jan 4 17:21:24 clientserver mount: mount.nfs: access denied by server while mounting nfsserver.co.local:/datalake/raw/org
/var/log/messages:2846:Jan 4 17:21:24 clientserver systemd: datalake-org-analytics.mount mount process exited, code=exited status=32
/var/log/messages:2847:Jan 4 17:21:24 clientserver systemd: Failed to mount /datalake/org/analytics.
/var/log/messages:2850:Jan 4 17:21:24 clientserver systemd: Unit datalake-org-analytics.mount entered failed state.
/var/log/messages:2851:Jan 4 17:21:24 clientserver systemd: datalake-org-raw.mount mount process exited, code=exited status=32
/var/log/messages:2852:Jan 4 17:21:24 clientserver systemd: Failed to mount /datalake/org/raw.
/var/log/messages:2853:Jan 4 17:21:24 clientserver systemd: Unit datalake-org-raw.mount entered failed state.
/var/log/messages:3014:Jan 4 17:21:27 clientserver dracut: Executing: /usr/sbin/dracut --hostonly --hostonly-cmdline --hostonly-i18n -o "plymouth dash resume ifcfg" --mount "/dev/mapper/centos_mapr001-root /sysroot xfs defaults,x-systemd.device-timeout=0" --no-hostonly-default-device -f /boot/initramfs-3.10.0-862.6.3.el7.x86_64kdump.img 3.10.0-862.6.3.el7.x86_64
/var/log/messages-20201227:3669:Dec 23 17:47:35 clientserver systemd: mapr.mount mounting timed out. Stopping.
/var/log/messages-20201227:3823:Dec 23 17:47:37 clientserver systemd: Unit mapr.mount entered failed state.
[root@clientserver ~]#
[root@clientserver ~]#
[root@clientserver ~]#
[root@clientserver ~]# tail -n 15 /var/log/dmesg
[ 148.561016] piix4_smbus 0000:00:01.3: SMBus Host Controller at 0x700, revision 0
[ 148.643519] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 148.643580] sd 0:0:1:0: Attached scsi generic sg1 type 0
[ 148.643639] sd 0:0:2:0: Attached scsi generic sg2 type 0
[ 148.643846] sd 0:0:3:0: Attached scsi generic sg3 type 0
[ 148.643907] sd 0:0:4:0: Attached scsi generic sg4 type 0
[ 148.643962] sd 0:0:5:0: Attached scsi generic sg5 type 0
[ 148.644030] sr 1:0:0:0: Attached scsi generic sg6 type 5
[ 148.718917] ppdev: user-space parallel port driver
[ 148.723858] Adding 8900604k swap on /dev/mapper/centos_mapr001-swap. Priority:-1 extents:1 across:8900604k FS
[ 148.865301] XFS (sda1): Mounting V5 Filesystem
[ 149.497874] XFS (sda1): Ending clean mount
[ 150.110208] XFS (dm-5): Mounting V5 Filesystem
[ 150.190558] XFS (dm-5): Ending clean mount
[ 150.966314] type=1305 audit(1609816868.676:4): audit_pid=2500 old=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:auditd_t:s0 res=1
ping
클라이언트의 이름과 IP 주소를 통해 nfsserver 시스템에 액세스 할 수 있습니다 (nfsserver 시스템에서는 그 반대도 마찬가지입니다).
SE Linux 설정을 확인해보니...
[root@clientserver /]$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
나는 이것을 설정하지 않았지만 (또는 실제로 SE Linux에 대한 많은 경험이 있습니다) "용서"는 이것이 방화벽 문제가되어서는 안된다고 생각하게 만듭니다.
포트 문제로 인해 이 문제가 발생할 수 있다고 들었습니다. 사용하다 rpcinfo
보니
[root@clientserver ~]# rpcinfo -p
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 34584 status
100024 1 tcp 53605 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 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 36667 nlockmgr
100021 3 udp 36667 nlockmgr
100021 4 udp 36667 nlockmgr
100021 1 tcp 39608 nlockmgr
100021 3 tcp 39608 nlockmgr
100021 4 tcp 39608 nlockmgr
그러나 나는 이것이 정상적인지 알 수 있을 만큼 네트워킹에 대해 충분히 알지 못합니다.
nfsserver 서버를 보면 다음과 같습니다.
[root@nfsserver ~]# cat /etc/exports
/datalake/analytics/org otherclient(rw,no_root_squash,sync) clientserver(rw,root_squash,sync)
/datalake/raw/org otherclient(rw,no_root_squash,sync) clientserver(ro,root_squash,sync)
/datalake/raw/org/HI_BRFSS otherclient(ro,no_root_squash,sync) clientserver(ro,root_squash,sync)
[root@nfsserver ~]# exportfs -rav
exporting otherclient.co.local:/datalake/raw/org/HI_BRFSS
exporting clientserver.co.local:/datalake/raw/org/HI_BRFSS
exporting otherclient.co.local:/datalake/raw/org
exporting clientserver.co.local:/datalake/raw/org
exporting otherclient.co.local:/datalake/analytics/org
exporting clientserver.co.local:/datalake/analytics/org
[root@nfsserver ~]# systemctl status nfs
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Active: active (exited) since Wed 2020-12-30 18:38:00 HST; 22min ago
Process: 135417 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
Process: 135414 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
Process: 135412 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
Process: 135447 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=
0/SUCCESS)
Process: 135430 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 135428 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 135430 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
Dec 30 18:38:00 nfsserver.co.local systemd[1]: Starting NFS server and services...
Dec 30 18:38:00 nfsserver.co.local systemd[1]: Started NFS server and services.
다시 말하지만 모든 것이 필요에 따라 구성된 것 같습니다. (특정 구성을 제안하는 몇 가지 답변을 보았지만 /etc/exports
그대로 두는 것을 선호하며 이 구성은 지금까지 작동했습니다.) 그리고 nfsserver 파일의 DNS 이름을 IP로 변경 /etc/exports
하고 실행해도 exportfs -rav
상황은 바뀌지 않았습니다.
더 많은 경험을 가진 사람이 여기서 무엇이 잘못될 수 있는지 알고 있습니까? 이 문제를 개선할 수 있는 추가 디버깅 제안/정보(예: 누구든지 이 게시물에서 어떤 가능성에 대한 추가 조사가 필요한 내용을 볼 수 있습니까?)
답변1
NFS 서버에 시스템 드라이브 공간이 부족한 경우:
mount.nfs: access denied by server while mounting
고객에 대한 메시지를 받게 됩니다.- nfs 서비스가 좋아 보이고 통과했습니다.
systemctl status nfs-kernel-server
- 로그에 오류가 표시되지 않을 수 있습니다(단, 공간이 부족하여 로그에 명백한 오류가 있을 수 있음).
증상이 매우 유사하기 때문에 이 답변을 게시합니다(핑에 응답하고 정상으로 보이는 서버에 정상적인 NFS 서버 리소스를 마운트하려고 할 때 갑자기 설명할 수 없는 "액세스 거부" 오류 발생).
공간이 부족할 때 해결 방법은 로그, Docker 컨테이너 등 일반적인 모든 것입니다.