나는 한동안 NFS에서 이상한 문제에 직면했습니다. 겉으로는 임의의 디렉토리 하위 집합(항상 동일함) 이 NFS 마운트 이후 /
오래된 파일 핸들로 계속 표시되는 것입니다 .
무작위로 보이는 문제 디렉터리 집합을 명시적으로 내보내 문제를 해결할 수 있었지만, 가끔 내보내기에 무작위 디렉터리를 추가할 필요가 없도록 문제를 더 완전히 해결할 수 있는지 확인하고 싶습니다. 테이블.
아래에서는 열린 파일 핸들이 표시되지 않는 파일 시스템을 마운트한 ls
다음 lsof
. 명확성을 위해 명령 사이에 빈 줄이 추가되었습니다.
# mount -t nfs -o vers=4,noac,hard,intr 192.168.0.2:/ /nfs -vvv
mount.nfs: trying text-based options 'vers=4,noac,hard,intr,addr=192.168.0.2,clientaddr=192.168.0.4'
192.168.0.2:/ on /nfs type nfs (rw,vers=4,noac,hard,intr)
# lsof | grep /nfs
# ls -lh /nfs
ls: cannot access /nfs/usr: Stale file handle
ls: cannot access /nfs/root: Stale file handle
ls: cannot access /nfs/etc: Stale file handle
ls: cannot access /nfs/home: Stale file handle
lrwxrwxrwx 1 root root 7 Mar 27 2017 bin -> usr/bin
drwxr-xr-x 6 root root 16K Jan 1 1970 boot
drwxr-xr-x 438 i336 users 36K Feb 28 12:12 data
drwxr-xr-x 2 root root 4.0K Mar 14 2016 dev
d????????? ? ? ? ? ? etc
d????????? ? ? ? ? ? home
lrwxrwxrwx 1 root root 7 Mar 27 2017 lib -> usr/lib
lrwxrwxrwx 1 root root 7 Mar 27 2017 lib64 -> usr/lib
drwxr-xr-x 15 root root 4.0K Oct 15 15:51 mnt
drwxr-xr-x 2 root root 4.0K Aug 9 2017 nfs
drwxr-xr-x 14 root root 4.0K Jan 28 17:00 opt
dr-xr-xr-x 2 root root 4.0K Mar 14 2016 proc
d????????? ? ? ? ? ? root
drwxr-xr-x 2 root root 4.0K Mar 14 2016 run
lrwxrwxrwx 1 root root 7 Mar 27 2017 sbin -> usr/bin
drwxr-xr-x 6 root root 4.0K Jun 22 2016 srv
dr-xr-xr-x 2 root root 4.0K Mar 14 2016 sys
drwxrwxrwt 2 root root 4.0K Dec 10 2016 tmp
d????????? ? ? ? ? ? usr
drwxr-xr-x 15 root root 4.0K May 24 2017 var
# lsof | grep /nfs
#
문제의 하위 디렉터리는 마운트 지점이 아닙니다. 완전히 정상적으로 보입니다.
$ ls -dlh /usr /root /etc /home
drwxr-xr-x 123 root root 12K Mar 3 13:34 /etc
drwxr-xr-x 7 root root 4.0K Jul 28 2017 /home
drwxrwxrwx 32 root root 4.0K Mar 3 13:55 /root
drwxr-xr-x 15 root root 4.0K Feb 24 17:48 /usr
이러한 디렉터리에 대한 syslog에는 관련 오류가 없습니다. 표시된 유일한 정보에는 다른 디렉터리 집합이 언급되어 있습니다.
... rpc.mountd[10080]: Cannot export /proc, possibly unsupported filesystem or fsid= required
... rpc.mountd[10080]: Cannot export /dev, possibly unsupported filesystem or fsid= required
... rpc.mountd[10080]: Cannot export /sys, possibly unsupported filesystem or fsid= required
... rpc.mountd[10080]: Cannot export /tmp, possibly unsupported filesystem or fsid= required
... rpc.mountd[10080]: Cannot export /run, possibly unsupported filesystem or fsid= required
현재 상황은 다음과 같습니다 /etc/exports
.
/ *(rw,subtree_check,no_root_squash,nohide,crossmnt,fsid=0,sync)
서버는 Arch Linux를 실행하며 현재 커널은 4.10.3입니다.
클라이언트는 Slackware 14.1이고 커널은 4.1.6입니다.
답변1
exports
NFS 4를 사용하면 파일이 정상적으로 보이지 않습니다.
/ *(rw,subtree_check,no_root_squash,nohide,crossmnt,fsid=0,sync)
대신에 따라야 할 것 같아요아치 리눅스 지침
그 라인을 위해 fsid=0
. 이는 "소위 NFS 루트"라는 특수 내보내기를 선언합니다.
그런 다음 지침에 따라 후속 라인에서 자체 내보내기를 선언하십시오. 다음과 같이 서버의 루트 파일 시스템을 내보낼 수 있습니다(NFS 루트와 혼동하지 마세요).오래된 젠투 게시물.