我正在为小型共享服务器运行一台小型服务器。它主要是带有一些其他服务的文件服务器。客户端是Linux计算机(主要是Ubuntu,但也有其他Distros)和介于两者之间的Mac(-Book)(但对于这个问题而言,它们并不重要)。该服务器正在运行Ubuntu 11.10(Oneiric Ocelot)“服务器版”,我从中进行设置和测试的系统将运行11.10“桌面版”。我们在相当长的一段时间内与Samba(我们比较熟悉)一起运行共享,但是随后又迁移到NFS(因为我们在LAN中没有Windows用户并想尝试一下),到目前为止一切正常。
现在,我想使用autofs设置自动挂载,以简化操作(到目前为止,每个人都在需要时手动挂载共享)。自动安装似乎也可以。问题是我们的“服务器”不能全天候运行以节省能源(如果有人需要服务器提供的东西,他会打开电源并随后将其关闭,因此每天仅运行几个小时)。但是由于设置了autofs,因此当服务器不运行时,客户端经常挂断退出。
即使服务器没有运行,我也可以启动所有客户端。
但是,当我想显示一个目录(在终端或鹦鹉螺中)时,该目录包含
/nfs
服务器未运行时指向共享的符号链接,它会挂起至少两分钟(因为autofs无法连接到服务器但会保持我想尝试)。- 有办法避免这种情况吗?这样安装将被延迟,直到更改目录或访问该目录的内容为止?不是在“看”下指向股票的链接时
/nfs
?我认为不是,但是也许有可能不尝试这么长时间访问它?只需给我一个空目录或“找不到/连接到该目录”之类的东西。
- 有办法避免这种情况吗?这样安装将被延迟,直到更改目录或访问该目录的内容为止?不是在“看”下指向股票的链接时
服务器运行时,一切正常。
但是,当服务器关闭时,在卸载共享之前,工具(如
df
或ll
)挂起(假设因为他们认为共享仍在,但服务器不再响应)。- 当连接丢失时,是否可以自动卸载共享?
此外,当服务器关闭并且客户端仍然挂载共享时,客户端不会关闭或重新启动。它们挂在“ 杀死剩余的进程 ” (看起来无限)上,似乎什么也没有发生。
我认为这全都归结为用于挂载和卸载的整齐超时值。并且可能在与服务器的连接丢失时删除所有共享。
所以我的问题是:如何处理?还有一个额外的好处:是否有一个很好的方法可以链接内部/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,则可以工作。因此,当客户端在服务器不运行的情况下启动时,或者当共享仍处于连接状态的服务器宕机时,我们就会遇到挂断。
hard
和bg
声音在第一直觉上我。我希望挂载不重试,如果失败了,请立即返回?intr
似乎很好,但似乎也不再起作用:“ intr / nointr挂载选项在2.6.25内核之后被弃用。只有SIGKILL可以在这些内核上中断挂起的NFS操作,如果指定,则忽略此挂载选项以提供向后兼容性使用较旧的内核。 ”?