如何在 Ubuntu 20.04 / Armbian 21.08 上激活 NFS 服务器协议 v4

How to activate NFS server protocol v4 on Ubuntu 20.04 / Armbian 21.08

我刚刚在我的 SBC 运行 Ubuntu 20.04.3 LTS (Focal Fossa) 上安装了 Armbian。 cat /etc/os-release 的输出是:

NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
PRETTY_NAME="Armbian 21.08.2 Focal"
VERSION_ID="20.04"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

我通过 apt-get install nfs-kernel-server 安装了 NFS 服务器。我想共享我的 LVM2 卷,但在检查支持哪个版本的 NFS 之前。

cat /proc/fs/nfsd/versions 的输出是:

-2 +3

rpcinfo -u localhost nfs 的输出是:

program 100003 version 3 ready and waiting

rpcinfo -p | grep nfs 的输出是:

program vers proto   port  service
100003    3   tcp   2049  nfs
100003    3   udp   2049  nfs

这三个都表明我的 NFS 服务器不支持 NFS v4,这让我很奇怪,因为我有最新的内核版本和最新的 OS 版本。

困扰我的是zcat /proc/config.gz | grep NFS的输出:

# CONFIG_USB_FUNCTIONFS is not set
CONFIG_XENFS=m
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_KERNFS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V2=m
CONFIG_NFS_V3=m
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=m
# CONFIG_NFS_SWAP is not set
# CONFIG_NFS_V4_1 is not set
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
CONFIG_NFS_DISABLE_UDP_SUPPORT=y
CONFIG_NFSD=y
CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
# CONFIG_NFSD_V4 is not set
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_NFS_COMMON=y

问题:

CONFIG_NFSD_V4 is not set 可能是 NFS v4 不工作的原因吗?

然后如何在 Ubuntu 20.04 / Armbian 21.08 上激活 NFS 服务器协议 v4?

在 Armbian 社区中,我找到了一个 post 回答了我的问题。

即使在通过 apt-get install nfs-kernel-server 安装 NFS 之后,它也只会安装用户-space 支持。

这是来自https://packages.debian.org/sid/nfs-kernel-server的原始包裹信息:

This package contains the user-space support needed to use the NFS kernel server.

这意味着支持的 NFS 版本取决于内核编译时。甚至 NFSv4 及更高版本已经超过 10 年,它只能在所谓的内核配置中 activated/deactivated 看起来像:

# CONFIG_USB_FUNCTIONFS is not set
CONFIG_XENFS=m
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_KERNFS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V2=m
CONFIG_NFS_V3=m
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=m
# CONFIG_NFS_SWAP is not set
# CONFIG_NFS_V4_1 is not set
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
CONFIG_NFS_DISABLE_UDP_SUPPORT=y
CONFIG_NFSD=y
CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
# CONFIG_NFSD_V4 is not set
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_NFS_COMMON=y

armbian 社区告诉我,它目前在某些板上已停用。这没有具体原因,如果社区中的某些人会更改内核配置,则很容易被激活。