/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