我正在尝试在两台 Linux 机器(嵌入式)之间设置 NFS。
Foo(server) -> Bar(client)
我在两台机器上都安装了 nfs-utils (1.3.3) 和依赖项。这是 Foo 上的/etc/exports文件。
/public 10.0.1.0/24(rw,insecure,async,no_subtree_check,no_root_squash,nohide)
/public位于本地文件系统上,并且未加密。
FOO# findmnt -T /public
TARGET SOURCE FSTYPE OPTIONS
/ ubi0:rootfs ubifs rw,relatime
并启动守护进程:
FOO# /etc/init.d/S21-nfsd start
Mounting proc/fs/nfsd: [OK]
exportfs: /public does not support NFS export
Starting /sbin/portmap: [OK]
Starting /usr/sbin/rpc.statd: [OK]
Starting /usr/sbin/rpc.mountd: [OK]
Starting /usr/sbin/rpc.nfsd: [OK]
FOO# exportfs
/public 10.0.1.0/24
FOO# cat /proc/fs/nfs/exports
# Version 1.1
# Path Client(Flags) # IPs
有了以上内容,我不确定如果/public真的被导出了,该相信哪个。
该目录具有完全权限:
FOO# ls -ld /public
drwxrwxrwx 2 root root 160 Jan 13 1990 /public
在客户端上,我尝试挂载 NFS 共享:
BAR# mount -t nfs -vvvv FOO:/public /public
mount: FOO:/public failed, reason given by server: Permission denied
mount: mounting FOO:/public on /public failed: Bad file descriptor
我在两台机器上都使用 root 帐户,并且 uids 匹配:
FOO# id
uid=0(root) gid=0(root) groups=0(root)
BAR# id
uid=0(root) gid=0(root) groups=0(root)
两台机器都支持内核,FOO->kernel 2.6.35,BAR->kernel 4.1.18:
FOO# zcat /proc/config.gz|grep "NFS"
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
CONFIG_ROOT_NFS=y
CONFIG_NFSD=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
BAR# zcat /proc/config.gz | grep "NFS"
CONFIG_KERNFS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V2=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
# CONFIG_NFS_SWAP is not set
# CONFIG_NFS_V4_1 is not set
CONFIG_ROOT_NFS=y
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFSD is not set
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
我的问题在哪里?客户端?服务器端?
Linux 内核
FOO
版本为 2.6.35(从 2011 年末开始)。它支持 UBIFS(根分区上的文件系统,自 2008 年的内核版本 2.6.27 起),但在 2016/2017 年的某个时候添加了对从 UBIFS 导出 NFS 挂载的内核支持。这意味着您的
FOO
系统将无法导出/public
,直到其内核升级到更高版本的内核,或者直到您将目录移动到其他文件系统。