Chinaunix

标题: 有熟悉nfs的没?过来一起讨论个问题 [打印本页]

作者: godymoon    时间: 2012-05-30 22:55
标题: 有熟悉nfs的没?过来一起讨论个问题

在Linux上使用nfs时,如果服务端的down掉了(或者仅仅是服务端的IP掉了),这时客户端挂载的那个目录也就不能使用了,并且,在客户端任何涉及到这个目录的操作都将挂死,如:

执行df、mount命令都不能结束;cd 、ls或者rm那个目录更不用说了。

如果此时想让这个目录umount掉,也不能umount掉。


要是服务端我没有权限去做任何操作或者一时半会解决不了,那么客户端也就玩完了。不知道大家有没有遇到过这样的情况?


这种情况是NFS的问题还是OS的问题呢 ? 比如挂载的那个IP都不通了,能不能自动umount掉呢 ?

有没有什么好的NFS替代方案 ?
作者: chenzhj    时间: 2012-05-31 17:29
写个脚本判断nfs连接状态,出现问题就umount。
作者: godymoon    时间: 2012-05-31 21:53
回复 2# chenzhj


    如果服务端出问题了,客户端umount不掉的 ,只能任由挂载的那个目录死在那儿
作者: 追忆的风筝    时间: 2012-06-01 10:21
回复 3# godymoon

利用autofs实现自动挂载,设置auto.master中的timeout值
作者: godymoon    时间: 2012-06-01 10:22
追忆的风筝 发表于 2012-06-01 10:21
回复 3# godymoon

利用autofs实现自动挂载,设置auto.master中的timeout值


能在服务断掉的时候自动umount吗  ?
作者: 追忆的风筝    时间: 2012-06-01 11:29
回复 5# godymoon

可以,比如你挂载到/data目录,当/data没有读写数据的时候,会自动卸载掉,你尝试下就知道了。
   
作者: typuc    时间: 2012-06-01 11:55
你umount 不掉 是因为有用户或者进程在使用吧 fuser 查看那些用户在使用
作者: godymoon    时间: 2012-06-01 13:10
typuc 发表于 2012-06-01 11:55
你umount 不掉 是因为有用户或者进程在使用吧 fuser 查看那些用户在使用


不是啊,我实验的现象是这样的,当服务端down了之后,任何操作 客户端那个挂载目录的进程都将挂死,

查询到对应的进程都杀掉之后,umount还是不行的。  

比如客户端执行df -h看到的挂载点是这样的:

Filesystem                       Size      Used    Avail    Use%       Mounted on
192.168.1.33:/tmp/test   10G       3G       7G      30%        /tmp/test

当192.168.1.33不通的时候,在客户端umount  /tmp/test 操作是不会有效果的


作者: Yuri.G.    时间: 2012-06-05 11:21
当挂死的时候你dmesg看看就知道了,NFS是会自己尝试恢复的,而且这个恢复次数是可以自己设定的,其次你也不能umount掉,因为就算能umount掉你读写数据也是异常的。
按我以往的经验来看,把NFS服务器的网卡重启一下都没事,因为客户端会尝试重连恢复,好了之后继续写入。所以这个你不需要太担心。
反倒要解决这个问题,你最好通过服务器端去解决,比如做多网卡的绑定,或者走多通道。
作者: godymoon    时间: 2012-06-05 12:05
Yuri.G. 发表于 2012-06-05 11:21
当挂死的时候你dmesg看看就知道了,NFS是会自己尝试恢复的,而且这个恢复次数是可以自己设定的,其次你也不能umount掉,因为就算能umount掉你读写数据也是异常的。
按我以往的经验来看,把NFS服务器的网卡重启一下都没事,因为客户端会尝试重连恢复,好了之后继续写入。所以这个你不需要太担心。
反倒要解决这个问题,你最好通过服务器端去解决,比如做多网卡的绑定,或者走多通道。
...


嗯,如果从服务端解决是比较快速的,其实我想了解的是,有没有在客户端解决此问题的方案。因为有时候我们是没有权限去动服务端的环境的


作者: Yuri.G.    时间: 2012-06-05 16:33
回复 10# godymoon


    可是服务器端服务都不可用了,你客户端有什么办法?自己架设一个?
作者: godymoon    时间: 2012-06-05 18:57
回复 11# Yuri.G.


至少要想办法解决 客户端操作那个挂载目录导致程序挂死的问题啊

目前只有将客户端重启的办法
作者: 流氓无产者    时间: 2012-06-06 08:52
不光nfs有这个问题,cifs也有,估计是fs某个层的问题
作者: godymoon    时间: 2012-06-06 09:30
回复 13# 流氓无产者


我也觉得这个可能跟Linux上的文件系统管理方式有关系,都访问不了了,为什么还不给卸载掉呢?

如果在windows上去访问共享目录时,当IP不可达或路径不存在时,一段时间之后很快就报错了,不会出现程序挂死的现象。

Linux上访问不了时,umount也卸载不掉……
作者: Yuri.G.    时间: 2012-06-09 09:54
那你就lsof一下,看谁用着那个NFS挂载点,把那些程序kill掉就可以umount了。不过真不是什么好办法。
作者: godymoon    时间: 2012-06-09 11:23
Yuri.G. 发表于 2012-06-09 09:54
那你就lsof一下,看谁用着那个NFS挂载点,把那些程序kill掉就可以umount了。不过真不是什么好办法。


呃,losf 、fuser命令我都用过,呵呵
作者: 惟吾无为    时间: 2012-06-19 09:25
好象是umount -f就行了,强制卸载。普通卸载应该会向服务器返回消息,然后等确认包。。。
作者: godymoon    时间: 2012-06-19 10:54
回复 17# 惟吾无为


   umount的说明里,-f 参数虽然是强制卸载,但是也不是能立即生效
作者: sz2273    时间: 2012-06-27 18:40
话说是在做实验,但是不知有何意义?当服务端宕掉后首要任务是解决宕掉的问题,通了之后就自动挂载了,这样业务也就恢复正常了,介才系运维要做的事情嘛。否则就算卸载了挂载的盘有用不?所以个人认为纠结这个问题木有意义
作者: godymoon    时间: 2012-06-28 15:52
回复 19# sz2273


    你这话我相当赞同,  因为这个上头非让想法子解决的,如果实在搞不定,也只能做罢
作者: youngcow    时间: 2012-07-01 21:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: pxf520    时间: 2012-07-03 17:39
修改一下你的mount参数
作者: pxf520    时间: 2012-07-03 17:41
加入 hard,intr,tcp,timeo=600,rsize=32768,wsize=32768 等等
作者: godymoon    时间: 2012-07-03 22:45
pxf520 发表于 2012-07-03 17:41
加入 hard,intr,tcp,timeo=600,rsize=32768,wsize=32768 等等


这样在服务端down了之后,客户端会自动umount吗 ? 改天我试试
作者: ariellaw    时间: 2012-10-24 15:39
请问你nfs自动umount的问题解决没有啊?我加了soft的参数还是不能自动umount,执行df -k就卡着

   
作者: sinxadmin    时间: 2012-10-28 21:11
@godymoon
不是立即生效什么意思?一般可以立即就umount了的。
作者: godymoon    时间: 2012-10-29 12:38
sinxadmin 发表于 2012-10-28 21:11
@godymoon
不是立即生效什么意思?一般可以立即就umount了的。


man umount

       -f     Force unmount (in case of an unreachable NFS system).  (Requires kernel 2.1.116 or later.)

尽管说是强制unmount,但是实际的操作效果就是,你使用了这个参数,这个挂载点也不是立即就unmount掉了,至于等多久,不知道





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2