automount nfs:不可靠服务器的autofs超时设置-如何避免挂断?


18

我正在为小型共享服务器运行一台小型服务器。它主要是带有一些其他服务的文件服务器。客户端是Linux计算机(主要是Ubuntu,但也有其他Distros)和介于两者之间的Mac(-Book)(但对于这个问题而言,它们并不重要)。该服务器正在运行Ubuntu 11.10(Oneiric Ocelot)“服务器版”,我从中进行设置和测试的系统将运行11.10“桌面版”。我们在相当长的一段时间内与Samba(我们比较熟悉)一起运行共享,但是随后又迁移到NFS(因为我们在LAN中没有Windows用户并想尝试一下),到目前为止一切正常

现在,我想使用autofs设置自动挂载,以简化操作(到目前为止,每个人都在需要时手动挂载共享)。自动安装似乎也可以。问题是我们的“服务器”不能全天候运行以节省能源(如果有人需要服务器提供的东西,他会打开电源并随后将其关闭,因此每天仅运行几个小时)。但是由于设置了autofs,因此当服务器不运行时,客户端经常挂断退出。

  • 即使服务器没有运行,我也可以启动所有客户端。

  • 但是,当我想显示一个目录(在终端或鹦鹉螺中)时,该目录包含/nfs服务器未运行时指向共享的符号链接,它会挂起至少两分钟(因为autofs无法连接到服务器但会保持我想尝试)。

    • 有办法避免这种情况吗?这样安装将被延迟,直到更改目录或访问该目录的内容为止?不是在“看”下指向股票的链接时/nfs?我认为不是,但是也许有可能不尝试这么长时间访问它?只需给我一个空目录或“找不到/连接到该目录”之类的东西。
  • 服务器运行时,一切正常。

  • 但是,当服务器关闭时,卸载共享之前,工具(如dfll)挂起(假设因为他们认为共享仍在,但服务器不再响应)。

    • 当连接丢失时,是否可以自动卸载共享?
  • 此外,当服务器关闭并且客户端仍然挂载共享时,客户端不会关闭或重新启动。它们挂在“ 杀死剩余的进程 ” (看起来无限)上,似乎什么也没有发生。

我认为这全都归结为用于挂载和卸载的整齐超时值。并且可能在与服务器的连接丢失时删除所有共享。

所以我的问题是:如何处理?还有一个额外的好处:是否有一个很好的方法可以链接内部/nfs而不需要挂载真实共享(一个autofs选项,或者可以使用一个伪FS,/nfs在挂载发生时会被替换为FS 或类似的东西)?

我的设定

NFS设置是非常基本的,但我们很好,到目前为止(使用服务的NFSv4):

/ etc / default / nfs-common

NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=

/etc/idmapd.conf

[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

/ etc / exports

/srv/   192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

在导出根/srv目录下,我们有两个目录bind

/ etc / fstab(服务器)

...
/shared/shared/      /srv/shared/      none    bind  0 0
/home/Upload/        /srv/upload/      none    bind  0 0

第一个是只读的(但是我通过文件属性和所有权而不是NFS设置来强制执行),第二个是所有的rw。注意:它们在/ etc / exports中没有多余的条目,但是单独安装它们是可行的。

在客户端,它们会进入安装程序/etc/fstab并根据需要手动进行安装(这morton是服务器的名称,可以很好地解析)。

/ etc / fstab(客户端)

morton:/shared  /nfs/shared nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0
morton:/upload  /nfs/upload nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0

对于autofs设置,我从/etc/fstab客户端上删除了条目,然后像下面这样设置其余部分:

/etc/auto.master

/nfs    /etc/auto.nfs

首先,我捆绑了提供的可执行文件/etc/auto.net(您可以在此处查看),但是它不会为我自动安装任何东西。然后,我/etc/auto.nfs根据在网上找到的一些方法来编写一个:

/etc/auto.nfs

shared  -fstype=nfs4  morton:/shared
upload  -fstype=nfs4  morton:/upload

它有点工作...或者如果服务器将运行24/7,则可以工作。因此,当客户端在服务器不运行的情况下启动时,或者当共享仍处于连接状态的服务器宕机时,我们就会遇到挂断。

Answers:


2

使用任何挂载系统,您都希望避免Nautilus列出包含可能已挂载或未挂载的挂载的目录的情况。因此,使用autofs时,请勿在/ nfs中创建装载。如果这样做,当您使用Nautilus列出“文件系统”时,它将尝试创建/ nfs中应该存在的挂载,如果这些挂载尝试失败,则需要几分钟的时间来放弃。

所以我要做的就是更改auto.master在/ nfs / mnt中创建挂载。

这为我解决了问题。如果尝试列出/ nfs / mnt的内容,我只会得到很长的延迟,而这很容易避免。


20

使用安装选项“ bg,intr,hard”将NFS共享安装在客户端上。

在您的情况下,最重要的是背景“ bg”-告诉系统在服务器不可用时不要阻塞。

“ intr”表示可中断-因此,您可以使用kill命令在客户端上挂起挂载的挂载。

“硬”与“软”相反。区别在于,当服务器不可用时,“硬”将不断尝试,而“软”将以指数方式退回重试。


感谢您的回复。我现在不能因为我不在家测试,但搭售拿到手册页(再次)后,我得到了一些其他问题:hardbg声音在第一直觉上我。我希望挂载重试,如果失败了,请立即返回?intr似乎很好,但似乎也不再起作用:“ intr / nointr挂载选项在2.6.25内核之后被弃用。只有SIGKILL可以在这些内核上中断挂起的NFS操作,如果指定,则忽略此挂载选项以提供向​​后兼容性使用较旧的内核。 ”?
Brutus 2012年

2
Hard会无休止地重试-如果当前无法进行安装,则bg不会阻塞。结果将是在可用时将其挂载,但所有其他操作将继续进行。INTR现在似乎是默认值-太好了。起初,如果您的NFS服务器死亡,则必须重新启动挂起的客户端...
Nils

我只是测试了一下,但添加hard,bg/etc/auto.master似乎并没有改变。一个time ls -l ~(我的用户目录中包含一个符号链接/nfs/upload)仍需要更多的是两分钟,服务器不运行时。
Brutus 2012年

您重新启动了autofs吗?仅子映射更改将传播而无需重新启动autofs。
尼尔斯2012年

我做到了:sudo reload autofs && sudo restart autofs
Brutus

7

我使用手册页中的一些选项进行了更多操作。全部bg,hardbg,softfg,hardfg,soft给我回了两个小步舞的时代。

设置retrans=1,retry=0(与以上任何一项结合使用)给我大约三秒钟的时间。相当不错。尽管我不是很安静,但请确保每种组合的含义。会进一步挖掘。

我也遇到了autofs选项MOUNT_WAITUMOUNT_WAIT。我无法与他们取得一些不同的结果,但我会继续尝试。似乎lika是使用“更安全”(又名“重试”等)NFS选项的好方法,但是autofs的返回时间短吗?


1
此外,还似乎有其他选项,如rsize=32768,wsize=32768,noatime这里指出的:techrepublic.com/blog/opensource/...
Ehtesh乔杜里

-1

要将NFS文件系统设置为在每次启动Red Hat Linux系统时自动挂载,您需要将该NFS文件系统的条目添加到/ etc / fstab文件中。/ etc / fstab文件包含有关Red Hat Linux系统的所有不同类型的已挂载(并且可以挂载)文件系统的信息。EX::nfs对应于导出文件系统的服务器的主机名,IP地址或完全限定的域名。是到导出目录的路径。指定在本地文件系统上挂载导出目录的位置。在读取/ etc / fstab之前,该安装点必须存在,否则安装将失败。该区域指定文件系统的安装选项。例如,如果选项区域显示rw,suid,导出的文件系统将以读写方式安装,并且将使用服务器设置的用户名和组ID。请注意,此处不使用括号

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.