linux – umount绑定过时的NFS

前端之家收集整理的这篇文章主要介绍了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).

有没有人知道我怎么能:

>以其他方式强制卸载? (欢迎任何肮脏的技巧,此时数据丢失或损坏可忽略不计)
>使用别的东西而不是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相关文章