1 つの NFS インストールは nfs-3、もう 1 つは nfs-4 です。どちらもnfs-4にするにはどうすればよいですか?

1 つの NFS インストールは nfs-3、もう 1 つは nfs-4 です。どちらもnfs-4にするにはどうすればよいですか?

私のサーバーには、/etc/exportsで同じように構成された2つのNFSエクスポートがあります。私のNFSクライアントでは、1つは常にNFS-3自動マウントを使用し、もう1つは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

クライアントオプションを見つけますversvers=4.2自宅にインストールしてバックアップできますvers=3

また、ifまたはそのエイリアスは指定されておらず、type nfs4バージョンtype nfsを確認するためにも使用できます。versnfsvers

答え3

私はDebianを使用していますが、特に次の安定版で同じ問題が発生します。「トリックシー」(現在のDebian13 / test)クライアントと現在の安定版「読書光」(Debian12 / stable)サーバー。この問題を理解することがフェドラにも役立つと思います。

私のインストールでは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/

関連情報