linux – umount绑定过时的NFS

linux – umount绑定过时的NFS,第1张

概述我在从本地安装的NFS文件夹中删除使用mount -o bind创建的挂载时遇到问题.假设以下安装结构: NFS挂载目录: $mount -o rw,soft,tcp,intr,timeo=10,retrans=2,retry=1 \ 10.20.0.1:/srv/source /srv/nfs-source 绑定目录: $mount -o bind /srv/nfs-source/sub1 / 我在从本地安装的NFS文件夹中删除使用mount -o bind创建的挂载时遇到问题.假设以下安装结构:

NFS挂载目录:

$mount -o rw,soft,tcp,intr,timeo=10,retrans=2,retry=1 \ 10.20.0.1:/srv/source /srv/nfs-source

绑定目录:

$mount -o bind /srv/nfs-source/sub1 /srv/bind-target/sub1

这导致此挂载映射

$mount/dev/sda1 on / type ext3 (rw,errors=remount-ro)# ...10.20.0.1:/srv/source on /srv/nfs-source type nfs (rw,retry=1,addr=10.20.0.100)/srv/nfs-source/sub1 on /srv/bind-target/sub1 type none (rw,bind)

如果服务器(10.20.0.1)发生故障(例如,ifdown eth0),则句柄变为陈旧,这是预期的.

我现在可以用力卸载NFS挂载

$umount -f /srv/nfs-source

这需要几秒钟,但工作没有任何问题.但是,我无法在/ srv / bind-target / sub1中卸载绑定目录.强制卸载导致:

$umount -f /srv/bind-target/sub1umount2: Stale NFS file handleumount: /srv/bind-target/sub1: Stale NFS file handleumount2: Stale NFS file handle

这是一个跟踪http://pastebin.com/ipvvrVmB

我已经尝试过预先卸载子目录,找到任何进程访问NFS中的任何进程或绑定挂载(没有).

lsof也抱怨:

$lsof -nlsof: WARNING: can't stat() nfs file system /srv/nfs-source      Output information may be incomplete.lsof: WARNING: can't stat() nfs file system /srv/bind-target/sub1 (deleted)      Output information may be incomplete.lsof: WARNING: can't stat() nfs file system /srv/bind-target/      Output information may be incomplete.

我已经尝试过最近稳定的linux内核3.2.17,3.2.19和3.3.8(不能使用3.4.x,因为需要grsecurity补丁,但尚未支持 – grsecurity在上面的测试中没有修补!).

我的nfs-utils是版本1.2.2(debian stable).

有没有人知道我怎么能:

>以其他方式强制卸载? (欢迎任何肮脏的技巧,此时数据丢失或损坏可忽略不计)
>使用别的东西而不是mount -o bind? (不能使用软链接,导致挂载的目录将在chroot中使用;通过FUSE的bindfs是一个很慢的选项)

谢谢,
保罗

更新1

>对于2.6.32.59,(陈旧)子安装的卸载工作正常.这似乎是一个内核回归错误.
>以上测试使用NFSv3.使用NFSv4的其他测试显示没有变化.

更新2

>我们现在测试了多个2.6和3.x内核,现在确定,这是在3.0.x中引入的.我们将填写错误报告,希望他们能够弄明白.

解决方法 在我的特定设置中对我有用的东西,以获得明确的工作,是这样的:

我有一个autofs树,在/ fs / doom上安装了nfs fs,另一个安装在/ fs / doom / localvol5上.服务器重启后,可以访问/ fs / doom和/ fs / doom / localvol5 / sub,但/ fs / doom / localvol5本身在所有内容上都给了ESTALE,包括umount -f,-l,-fl.

我在没有重启的情况下让客户端运行的做法是将整个/ fs / doom层次结构移动到另一个树:

mkdir /dev/shm/garbage-mount    mount --move /fs/doom /dev/shm/garbage-mount

这移动了整棵树,显然只是因为/ fs / doom是可访问的和一个挂载点.我无法卸载任何这些文件系统,但我能够重新启动autofs并获得一个新的工作树.

这适用于任何具有故障nfs子目录的autofs树.

希望有所帮助.

总结

以上是内存溢出为你收集整理的linux – umount绑定过时的NFS全部内容,希望文章能够帮你解决linux – umount绑定过时的NFS所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1039324.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存