하나의 NFS 설치는 nfs-3이고 다른 하나는 nfs-4입니다. 둘 다 nfs-4로 만들려면 어떻게 해야 합니까?

하나의 NFS 설치는 nfs-3이고 다른 하나는 nfs-4입니다. 둘 다 nfs-4로 만들려면 어떻게 해야 합니까?

내 서버에는 /etc/exports에 동일하게 구성된 두 개의 NFS 내보내기가 있습니다. 내 NFS 클라이언트에서 하나는 항상 NFS-3 자동 마운트를 사용하고 다른 하나는 NFS-4를 사용합니다. 나는 nfs-4를 원합니다. 어떻게 해야 하나요?

서버("nina")에서:

# cat /etc/exports
/home 192.168.0.0/24(rw,no_all_squash,anonuid=1545,anongid=501)
/misc/fedora-backup 192.168.0.0/24(rw,no_all_squash,anonuid=1545,anongid=501)
# exportfs -arv
exporting 192.168.0.0/24:/misc/fedora-backup
exporting 192.168.0.0/24:/home

클라이언트 측에서:

$ ls /net/nina/home /net/nina/misc/fedora-backup
/net/nina/home:
bhepple  data  guest  lost+found  nina  watched-files

/net/nina/misc/fedora-backup:
backup-copy  lost+found  media
$ mount |grep nfs
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nina:/home on /net/nina/home type nfs4 (rw,nosuid,nodev,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.104,local_lock=none,addr=192.168.0.19)
nina:/misc/fedora-backup on /net/nina/misc/fedora-backup type nfs (rw,nosuid,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.19,mountvers=3,mountport=20048,mountproto=udp,local_lock=none,addr=192.168.0.19)

이것은 최신 fedora-37 시스템입니다.

편집하다수동 마운트에도 오류가 표시됩니다.

sudo mount -t nfs4 nina:/misc/fedora-backup ~/tmp/mnt
mount.nfs4: mounting nina:/misc/fedora-backup failed, reason given by server: No such file or directory 

생략하면 -t nfs4잘 설치되는데 nfs-3일 뿐입니다.

답변1

nfs4는 별도의 디렉토리를 내보낼 수 없는 것 같습니다. 모두 함께 중첩되어야 하며, 아마도 바인드 마운트를 사용하여 원하는 위치를 가리킬 수 있습니다.

https://superuser.com/questions/362736/cant-mount-nfs4-share

답변2

클라이언트 옵션을 찾으십시오 vers. vers=4.2집에 설치하고 백업 할 수 있습니다 vers=3.

또한 if 또는 해당 별칭이 지정되지 않았 type nfs4으며 type nfs버전을 확인하는 데 사용할 수 있습니다.versnfsvers

답변3

저는 Debian을 사용하고 있는데 특히 다음 안정 버전에서 같은 문제가 발생합니다."트릭시"(현재 Debian13/testing) 클라이언트 및 현재 안정 버전"독서광"(Debian12/stable) 서버. 이 문제를 이해하는 것이 fedora에도 도움이 될 것이라고 생각합니다.

내 설치에서는 Kerberos를 사용합니다. 기본적으로 사용되는 NFS 프로토콜은 버전 4.2입니다. Debian12의 NFS 클라이언트는 버전 4와 연결을 설정할 수 없는 경우 자동으로 프로토콜 버전 3으로 대체됩니다. 이는 를 사용하여 테스트할 수 있습니다 mount. 명령 프롬프트 server12:~$, client12:~$또는 를 참고하세요 client13:~$.

이러한 내보내기는 중첩된 디렉터리만 내보내기 위해 루트 디렉터리를 내보내는 NFS4의 요구 사항을 준수하지 않습니다. 그러나 NFS3으로 마운트할 수 있습니다.

server12:~$ cat /etc/exports
/home      192.168.24.0/24(sec=krb5p,rw,async,no_subtree_check)
/srv/nfs   192.168.24.0/24(sec=krb5p,rw,async,no_subtree_check,fsid=0,crossmnt)

server12:~$ sudo exportfs -rv
exporting 192.168.24.0/24:/home
exporting 192.168.24.0/24:/srv/nfs

client12:~$ sudo showmount --exports server
Export list for server:
/home    192.168.24.0/24
/srv/nfs 192.168.24.0/24

client12:~$ sudo mount -vvv -t nfs4 -o sec=krb5p server:/srv/nfs /mnt/server
mount.nfs4: timeout set for Mon Jan  1 14:38:33 2024
mount.nfs4: trying text-based options 'sec=krb5p,vers=4.2,addr=192.168.24.125,clientaddr=192.168.24.65'
mount.nfs4: mount(2): No such file or directory
mount.nfs4: trying text-based options 'sec=krb5p,addr=192.168.24.125'
mount.nfs4: prog 100003, trying vers=3, prot=6
mount.nfs4: trying 192.168.24.125 prog 100003 vers 3 prot TCP port 2049
mount.nfs4: prog 100005, trying vers=3, prot=17
mount.nfs4: trying 192.168.24.125 prog 100005 vers 3 prot UDP port 51678

그림에서는 mount연결 시도가 기본 방식으로 시작되고 vers=4.2성공적으로 반환되는 것을 보여줍니다. vers 3다음과 연결되어 있는 것을 볼 수 있습니다 vers=3.

client12:~$ findmnt /mnt/server
/mnt/server server:/srv/nfs nfs    rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp, ...

그러나 Debian13에서는 NFS 클라이언트가 더 이상 NFS3으로 대체되지 않습니다. 이로 인해 업그레이드할 때 문제가 발생했습니다."트릭시". 이제 사용할 NFS 버전을 지정해야 합니다.

client13:~$ sudo mount -vvv -t nfs4 -o sec=krb5p server:/srv/nfs /mnt/server
mount.nfs4: timeout set for Mon Jan  1 16:21:13 2024
mount.nfs4: trying text-based options 'sec=krb5p,vers=4.2,addr=192.168.24.125,clientaddr=192.168.24.83'
mount.nfs4: mount(2): No such file or directory
mount.nfs4: mounting server:/srv/nfs failed, reason given by server: No such file or directory

client13:~$ # But specifying vers=3 as additional option then it connects:
client13:~$ sudo mount -vvv -t nfs4 -o sec=krb5p,vers=3 server:/srv/nfs /mnt/server
mount.nfs4: timeout set for Mon Jan  1 16:29:31 2024
mount.nfs4: trying text-based options 'sec=krb5p,vers=3,addr=192.168.24.125'
mount.nfs4: prog 100003, trying vers=3, prot=6
mount.nfs4: trying 192.168.24.125 prog 100003 vers 3 prot TCP port 2049
mount.nfs4: prog 100005, trying vers=3, prot=17
mount.nfs4: trying 192.168.24.125 prog 100005 vers 3 prot UDP port 51678

NFS 서버가 성공적으로 구성되었다고 가정하면 완전성을 위해 유효한 NFS4 구성을 내보내고 마운트합니다.

server12:~$ cat /etc/exports
# Only for testing fallback to NFS3
#/home          192.168.24.0/24(sec=krb5p,rw,async,no_subtree_check)
#/srv/nfs       192.168.24.0/24(sec=krb5p,rw,async,no_subtree_check,fsid=0,crossmnt)
#
# Valid NFS4 configuration
/srv/nfs        gss/krb5p(rw,async,no_subtree_check,fsid=0,crossmnt)
/srv/nfs/home   gss/krb5p(rw,async,no_subtree_check)

server12:~$ cat /etc/fstab
PARTLABEL=rootfs   /       ext4   errors=remount-ro   0   1
PARTLABEL=swap     none    swap   sw                  0   0
/dev/vdb           /media  ext4   errors=remount-ro   0   1

/media          /srv/nfs/media           none   bind  0   0
/home/ingo      /srv/nfs/home/ingo       none   bind  0   0
/home/mary      /srv/nfs/home/mary       none   bind  0   0
/home/common    /srv/nfs/home/common     none   bind  0   0


client13:~$ cat /etc/fstab
# Your local mounts ..., then for NFS4 mounts
server:/       /mnt/srv    nfs4    sec=krb5p   0   0
server:/home   /mnt/home   nfs4    sec=krb5p   0   0

client13:~$ ls /mnt/srv
home/  media/
client13:~$ ls /mnt/home
common/  ingo/  mary/

관련 정보