我有一台 nfs 服务器,在 /exports/something 上有共享,运行正常。但是,当我将 /exports/something 挂载到 /dev/mapper/something(具有更多空间的 lvm)上时,nfs 无法正常工作。
nfs服务器是centos7。
nfs的客户端是debian8。
在 /etc/fstab 中:
<file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/centos-something /exports/something xfs defaults 0 0
在 /exports/something 成为 lvm 上的挂载之前,nfs 客户端可以毫无问题地绑定到 /exports/something。如果我卸载 lvm,nfs 共享将再次开始工作,如果我在 lvm 上重新挂载 /exports/something,nfs 将重新停止工作(但 lvm 可以工作)。
如何让 nfs 客户端绑定到 nfs 服务器上的 lvm 挂载?
当它不起作用时,服务器会运行所有守护进程,但客户端只有自己这边的文件。nfs 没有日志条目。
我想切换 nfs 挂载以便它位于 lvm 上。
debian8 客户端上的 Nfs 版本:
nfs-common 1:1.2.8-9
centos7服务器上的nfs版本:
libnfsidmap.x86_64 0.25-11.el7 @base
nfs-utils.x86_64 1:1.3.0-0.8.el7 @base
答案1
这可能是因为您在挂载文件系统时没有重新启动 NFS 服务器。NFS 服务器将获取导出目录所在的文件系统的句柄;如果您通过添加挂载点来更改它,NFS 服务器将不会注意到,并且需要进行处理。顺便说一句,这是协议所必需的,因为对于某些操作,NFS 会将 inode 编码到网络协议中。请注意,这意味着如果您尝试执行此操作时有打开文件或打开锁(或类似操作)的客户端,就会发生坏事(TM)。所以不要这样做 :-)
如果您导出的文件系统具有作为挂载点的子目录,也会出现类似的问题;例如,如果您/srv/nfs
通过 NFS 导出并且文件系统挂载在 上/srv/nfs/stuff
,那么除非您明确添加到/srv/nfs/stuff
,/etc/exports
否则也不会显示此问题。原因再次是 inode 出现在协议中。您可以使用nohide
导出选项解决这个问题,但该方法有一些问题。我建议您阅读手册页 ( man 5 exports
) 并在nohide
那里搜索,而不是尝试重现文档。
答案2
可能是 selinux 相关的问题。尝试发出setenforce 0
并重新启动 nfs 服务器。然后尝试重新挂载您的共享客户端。