微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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树.

希望有所帮助.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异常的情况。程序崩溃时最常见的就是程序运行终止,报告 Segmentation fault (core dumped) 错误。而程序卡死一般来源于代码逻辑的缺陷,导致了死循环、死锁等问题。总的来看,常见的程序异常问题一般可以分为 非法内存访
git使用小结很多人可能和我一样,起初对git是一无所知的。我也是因为一次偶然的机会接触到git,并被它强大的功能所蛰伏。git其实就是一种版本控制工具,就像svn一样,但是git是分布式的。我不想给git打广告,我们直入正题——git能帮我们做什么?1)源码版本控制。平常写一写demo程序可能和g
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟机:Parallel Desktop 10.1.1 虚拟机操作系统:CentOS 7 x86_64 DVD 1511.iso Oracle:linux.x64_11gR2_database_1of2.zip linux.x6
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试过程中,简单总结了一下常见的nginx代理配置。 1. 最简反向代理配置 在http节点下,使用upstream配置服务地址,使用server的location配置代理映射。 upstream my_server { server 10
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核的目的。一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析。 模块的Hello World! 我们通过创建一个简单的模块进行测试。首先是源文件main.c和Makefile。 f...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNode、YARN 的ResourceManager。HDFS的web页面只有通过Active的Name
一个简单的通用Makefile实现Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新make时只需要处理那些修改过的文件即可。Makefile拥有很多复杂的功能,这里不可能也没必要一一介绍,为了
Linux内核源码分析方法一、内核源码之我见Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径。我们都知道,想成为优秀的程序员,需要大量的实践和代码的编写。编程固然重要,但是往往
题记:自从接触到“跳板机”的概念后,一直就被烦不胜烦的机器名,ip地址,用户名,密码折腾的死去活来,心说能有个小精灵随时帮我输入那些重复的登录信息就好了。我见过最挫的方式就是用记事本把一堆机器的ip、登录用户、密码记录下来,每次登录机器就像是一场战斗:打开笔记本 勾选复制 写ssh命令 登录 再打开
统计一下你写过多少代码最近整理了一下自己从开始学习编程以来写过的程序和代码,林林总总,花了不少的时间,最后把一些自认为还算不错的代码提交到github上做一个简单的分类和备份。当然我并不奢求它们能成为多好的开源代码,只是希望通过这种方式分享自己的劳动成果罢了。如果大家有兴趣可以访问我的github,