linux – umount绑定过时的NFS
我在从本地安装的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/sub1 umount2: Stale NFS file handle umount: /srv/bind-target/sub1: Stale NFS file handle umount2: Stale NFS file handle 这是一个跟踪http://pastebin.com/ipvvrVmB 我已经尝试过预先卸载子目录,找到任何进程访问NFS中的任何进程或绑定挂载(没有). lsof也抱怨: $lsof -n lsof: 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). 有没有人知道我怎么能: >以其他方式强制卸载? (欢迎任何肮脏的技巧,此时数据丢失或损坏可忽略不计) 谢谢, 更新1 >对于2.6.32.59,(陈旧)子安装的卸载工作正常.这似乎是一个内核回归错误. 更新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树. 希望有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |