NFS 마운트 직후 일부 디렉터리에 "오래된 파일 핸들"이 나타납니다. 열려 있는 파일 핸들이 없습니다.

NFS 마운트 직후 일부 디렉터리에 "오래된 파일 핸들"이 나타납니다. 열려 있는 파일 핸들이 없습니다.

나는 한동안 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

exportsNFS 4를 사용하면 파일이 정상적으로 보이지 않습니다.

/ *(rw,subtree_check,no_root_squash,nohide,crossmnt,fsid=0,sync)

대신에 따라야 할 것 같아요아치 리눅스 지침 그 라인을 위해 fsid=0. 이는 "소위 NFS 루트"라는 특수 내보내기를 선언합니다.

그런 다음 지침에 따라 후속 라인에서 자체 내보내기를 선언하십시오. 다음과 같이 서버의 루트 파일 시스템을 내보낼 수 있습니다(NFS 루트와 혼동하지 마세요).오래된 젠투 게시물.

관련 정보