服务器

服务器

/share/global/usr/share我通过 NFS从服务器共享到/usr/share客户端。当客户端写入时,我收到“只读文件系统”错误。

服务器

文件系统权限正常:

$> ls -la /share/global/usr/
drwxrwxrwx 2 nobody nogroup 4096 Dec  6 14:37 share

客户端 IP 的导出为 rw 192.168.101.250,其他内部 IP 为 ro。

$> grep usr /etc/exports
/share/global/usr/share 192.168.0.0/16(ro,subtree_check,all_squash) 192.168.101.250(rw,subtree_check,all_squash)

服务器可以在这里写:

$> echo HELLO > /share/global/usr/share/REMOVEME && chmod 666 /share/global/usr/share/REMOVEME && echo ok
ok

客户

IP 地址匹配(静态):

$> ip addr | grep inet
inet 192.168.101.250/24 brd 192.168.101.255 scope global enp0s8

fstab 指定 rw:

$> grep usr /etc/fstab
192.168.101.254:/share/global/usr/share /usr/share nfs rsize=8192,wsize=8192,timeo=3,intr,rw

并且它已安装 rw:

$> mount | grep usr
192.168.101.254:/share/global/usr/share on /usr/share type nfs4 (rw,relatime,vers=4.0,rsize=8192,wsize=8192,namlen=255,hard,proto=tcp,port=0,timeo=3,retrans=2,sec=sys,clientaddr=192.168.101.250,local_lock=none,addr=192.168.101.254)

读取就可以了:

$> ls -al /usr/share/REMOVEME
-rw-rw-rw-. 1 nfsnobody nfsnobody 7 Dec  6 15:14 /usr/share/REMOVEME

问题

在客户端:

$> sudo -i
$> echo foo > /usr/share/REMOVEME
-bash: /usr/share/REMOVEME: Permission denied

我也无法在这里创建新文件。

配置中的所有内容对我来说看起来都不错。为什么我无法写入客户端的共享目录?

服务器是Ubuntu 16.04,客户端是CentOS 7。

答案1

/etc/exports希望首先显示特定 IP 地址,然后显示 IP 范围。

IE

/share/global/usr/share 192.168.101.250(rw,subtree_check,all_squash) 192.168.0.0/16(ro,subtree_check,all_squash) 

答案2

您似乎在写入时收到错误消息客户端上 NFS 挂载的信息。我有一个类似的问题,对我来说,NFS 服务器似乎将所有“磁盘”显示为根目录中的“虚拟设备”,这实际上并不是服务器上的任何目录,而是 NFS 服务器提供的“虚拟列表”,导致“只读文件系统”错误消息。根据您的配置,写入共享卷的根目录时您可能会收到错误消息。

但是,如果共享磁盘上有一个子目录,并尝试在那里写入,则效果很好。

客户端演示:

 root@dunharg:/mnt/share# touch write-test
 touch: cannot touch 'write-test': Read-only file system
 root@dunharg:/mnt/share# ls
 backup  hdd  nvme  ssd
 root@dunharg:/mnt/share# cd sdd
 root@dunharg:/mnt/share/sdd# ls
 home  share
 root@dunharg:/mnt/share/sdd# touch write-test
 touch: cannot touch 'write-test': Read-only file system
 root@dunharg:/mnt/share/sdd# cd share
 root@dunharg:/mnt/share/sdd/share# touch write-test
 ok

相关内容