为什么 NFS 客户端访问过时的路径?

为什么 NFS 客户端访问过时的路径?

我有一个关于 NFS 的疑问。

我正在通过 /etc/exports 中的 NFS 导出 /opt/foo:

/opt/foo      client.domain.com(rw,no_root_squash,async,wdelay,no_subtree_check)

/opt/foo 安装在 client.domain.com 上。

现在,由于磁盘空间不足,我决定在 /opt/foo/bar 上安装一个逻辑卷,因为“bar”是存储应用程序数据的目录。

mv bar bar.bak
mkdir bar
mount -t ext3 /dev/VolGroup00/LogVol00 /opt/foo/bar

现在发现客户端正在访问文件夹“bar.bak”。我尝试通过执行以下任一操作来刷新导出表:

exportfs -r
/etc/init.d/nfsd restart

有什么方法可以让客户端访问新的“/opt/foo/bar”而无需重新挂载?我无法访问挂载 NFS 导出的客户端。

迈克尔

答案1

简短的回答是:你不能。

一旦客户端挂载了导出的文件系统,它就会通过句柄而不是名称来访问它;句柄由设备和 inode 构成,重命名不会改变它 - 在已挂载的目录(不同的文件系统 ID)上挂载某些东西也不会改变它。如果您绝对无法让客户端重新挂载,最好的办法是挂载新卷来替换 /opt/foo/bar 的繁忙/已满子目录 - 客户端上打开的文件句柄不会受到影响,但新打开的文件句柄会受到影响。

相关内容