阻止损坏的NFS挂载锁定目录?


17

我有一个有趣的设置:一个服务器中有多个安装在一个文件夹中的远程NFS服务器,然后该文件夹通过Samba重新导出。将其视为共享代理,将所有共享文件夹都放在一个位置。

但是,我的问题是,无论何时其中一个挂载发生故障(服务器重新启动,服务重新启动,服务器正在导出的外部硬盘驱动器都已卸下等),任何尝试都将永远读取该挂载块。这也意味着ls在该目录中运行会冻结,并且通过Samba连接的用户也会冻结。这也导致几次我的cron作业被阻塞,这几乎使服务器崩溃,因为它具有数百个被阻塞的进程。这变得非常烦人,因为我通常不得不提起一个没有等待ls完成的终端(无法取消它),运行for i in *; do sudo umount -l -f $i; done;,希望它能工作,解决问题,然后重新安装所有东西。

是否有一种挂载NFS共享的方法,规定如果由于某种原因(最好是重试期)连接失败,则挂载卸载本身或至少不会阻塞?


你可以发贴/etc/fstab吗?
卡森(Karlson)2012年

Answers:


19

通常,在挂载NFS时,最好将标志设置如下:

bg,intr,soft
   bg      If  the  first  NFS  mount  attempt times out, retry the mount in the 
           background.  After a mount operation is backgrounded, all subsequent mounts
           on the same NFS  server  will  be  backgrounded immediately, without first
           attempting the mount.  A missing mount point is treated as a timeout, to
           allow for nested NFS mounts.
   soft    If  an  NFS  file operation has a major timeout then report an I/O error
           to the calling program.  The default is to continue retrying NFS file
           operations indefinitely.
   intr    If  an  NFS  file  operation  has  a major timeout and it is hard mounted,
           then allow signals to interupt the file operation and cause it to return
           EINTR to the calling program.  The default is to not allow file operations
           to be interrupted.

您还可以设置:

timeo=5,retrans=5,actimeo=10,retry=5

如果NFS服务器断开连接,然后等待重试,则应该允许NFS挂载超时并使目录不可访问。

查看此链接,以获取有关NFS挂载选项的更多信息。


仅使用bg,intr,soft在Fedora 20中仍然停留120秒。但是添加timeo = 5,retrans = 5,actimeo = 10,retry = 5使它变得又好又快。谢谢!
格雷格·谢列梅塔2014年

4
“在内核2.6.25之后不推荐使用intr / nointr挂载选项。只有SIGKILL可以在这些内核上中断挂起的NFS操作,如果指定,则忽略此挂载选项以提供与较早版本内核的向后兼容性。” “提供此选项是为了向后兼容。在内核2.6.25之后将被忽略。”
David C. Bishop

1
@ DavidC.Bishop的报价来自哪里?你能给个链接吗?谢谢。
becko

2
@becko:SIGKILL引用来自nfs手册页(只需向下搜索'nointr')。较新的版本,例如我系统上的版本,现在只需阅读“提供此选项是为了向后兼容。在内核2.6.25之后将被忽略。” 林肯
戴维·C·毕晓普
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.