autofs 安装在非活动状态后不会断开连接

autofs 安装在非活动状态后不会断开连接

我有自动文件系统安装在连接到用户 /home 目录的中央 NFS 服务器的多个 Linux 服务器上。在登录时安装目录时效果很好,但安装似乎永远不会超时。我检查了 /etc/sysconfig/autofs ,默认值确实设置为 300,所以这些应该在 5 分钟后超时。

正在重启自动文件系统确实卸载了所有目录,所以我知道它是有能力的。

我尝试过使用拉索夫随机出现在目录中,但任何时候都没有文件显示打开。

我还安装了一个随机目录,我知道该目录不活动,但这些目录永远不会自行卸载。其中一些盒子有 10 多个用户登录过一次,而且坐骑永远不会掉落。

我只是想找出更好的方法来找出原因。我在任何日志中都没有看到任何具体内容。

任何建议表示赞赏。谢谢!

更新

我打开了调试自动文件系统但似乎并没有透露出什么异常。这些日志是在 /home/user1 最初安装后 7 分钟以及不活动 6 分钟后生成的。根据默认 5 分钟,这应该已被卸载。我从未见过任何日志表明有人尝试卸载。

Jan 11 12:52:00 linux automount[26505]: st_expire: state 1 path /home
Jan 11 12:52:00 linux automount[26505]: expire_proc: exp_proc = 3055176592 path /home
Jan 11 12:52:00 linux automount[26505]: expire_proc_indirect: expire /home/user1
Jan 11 12:52:00 linux automount[26505]: expire_proc_indirect: expire /home/user2
Jan 11 12:52:00 linux automount[26505]: expire_proc_indirect: expire /home/user3
Jan 11 12:52:00 linux automount[26505]: 3 remaining in /home
Jan 11 12:52:00 linux automount[26505]: expire_cleanup: got thid 3055176592 path /home stat 7
Jan 11 12:52:00 linux automount[26505]: expire_cleanup: sigchld: exp 3055176592 finished, switching from 2 to 1
Jan 11 12:52:00 linux automount[26505]: st_ready: st_ready(): state = 2 path /home

更新2 在与 Red Hat 支持人员讨论此问题后,最终的解决方案是缩短主目录的超时值。我这样做了并且看起来不错。显然有东西每 2 1/2 到 3 分钟就会遍历安装点并导致其保持运行状态。

解决方案是将超时值添加到该映射的 /etc/auto.master 文件中:

 /home     /etc/auto_home --timeout=120

答案1

除了 TIMEOUT 变量 autofs 还有一个检查间隔:

# cat /var/log/messages
Jan 11 21:45:35 client automount[24804]: mounted offset on /net/server/share with timeout 300, freq 75 seconds

它等于 TIMEOUT/4。每隔 TIMEOUT/4 秒,autofs 就会询问内核上次访问目录的时间。因此,在您的环境中,您的目录在 375 秒不活动后未命名。

要获取更详细的日志,您应该添加LOGGING="debug"/etc/sysconfig/autofs

答案2

我今天花了几个小时尝试调试和类似的问题。这是我发现的以及我如何解决它的方法。]

设置:我想在客户端上的 /mnt/nfs/homes 处自动挂载包含来自 nfs 服务器“srv1:/srv/homes”的用户主目录的目录。 NFS 服务器导出 NFS4。 autofs 版本 5.1.3

我已经这样配置了每个客户端:

/etc/auto.mount:包含以下内容的文件:

... 
/mnt/nfs /etc/auto.home
...

/etc/auto.home:

homes  -rw,soft,intr,rsize=8192,wsize=8192 srv1:/srv/homes

最终这代表了一个间接映射。自动安装就像一个魅力。我已正确安装 NFS 卷并使其正常工作。但是......它永远不会被自动卸载。尽管 autofs.conf 文件显示:

mount显示 600 秒超时:

#1# /etc/auto.home on /mnt/nfs type autofs (rw,relatime,fd=18,pgrp=5054,timeout=300,minproto=5,maxproto=5,indirect) 
srv1:/srv/homes on /mnt/nfs/homes type nfs4 (rw,relatime,vers=4.2,rsize=8192,wsize=8192,namlen=255,soft,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=x.x.x.x,local_lock=none,addr=y.y.y.y)

我在来自journalctl的(调试日志级别激活)autofs日志中看到与wanpelaman完全相同的内容

automount[53593]: st_expire: state 1 path /mnt/nfs
automount[53593]: expire_proc: exp_proc = 139645987374848 path /mnt/nfs
automount[53593]: expire_proc_indirect: expire /mnt/nfs/homes
automount[53593]: 1 remaining in /mnt/nfs
automount[53593]: expire_cleanup: got thid 139645987374848 path /mnt/nfs stat 3
automount[53593]: expire_cleanup: sigchld: exp 139645987374848 finished, switching from 2 to 1
automount[53593]: st_ready: st_ready(): state = 2 path /mnt/nfs

当时我放弃了 autofs 并决定使用 systemd 复制 automount 配置。实际上,我运行了它,此时一切都运行良好 - 自动安装,在预定义的空闲时间后自动卸载。刚刚好。但是systemd......有点笨拙(别朝我开枪,我其实很喜欢它)。然后我查看了 systemd 如何处理自动挂载:

#2# systemd-1 on /mnt/nfs/homes type autofs (rw,relatime,fd=35,pgrp=1,timeout=20,minproto=5,maxproto=5,direct)
srv1:/srv/homes on /mnt/nfs/homes type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=x.x.x.x,local_lock=none,addr=y.y.y.y)

#1#和#2#的区别在于后者是直接的映射,而 #1# 是间接的。因此,我立即决定在另一个客户端上重新配置 autofs 并创建这样的直接映射:

/etc/auto.master

/-   /etc/auto.home

/etc/auto.home

/mnt/nfs/homes  -rw,soft,intr,rsize=8192,wsize=8192 srv1:/srv/homes

这最终解决了问题。自动安装和自动卸载都工作正常。在 /etc/autofs.conf 中预定义的空闲时间后 umount 成功运行

绝对不需要对 NFS 服务器进行任何修改。

答案3

对于任何遇到类似问题的人来说,现代桌面上都有 GUI 进程可以持续扫描驱动器。特别是 Gnome 上的 Nautilus 和 KDE 上的 Dolphin 以及像 Baloo 这样的文件索引应用程序。这些都能够引起该症状。

对于我(运行 KDE)来说,自动挂载调试日志记录的唯一线索是“剩余 1 个”,例如:

    Feb 13 00:00:44 fig automount[19026]: expire_proc: exp_proc = 139620739028736 path /mnt/vchanger
    Feb 13 00:00:44 fig automount[19026]: expire_proc_indirect: expire /mnt/vchanger/fb207cd6-6931-4af4-8293-c82ee0d2394c
    Feb 13 00:00:44 fig automount[19026]: 1 remaining in /mnt/vchanger

这并没有真正确定来源。此外,lsof、fuser 和auditctl (auditd) 都没有给出任何见解。

最终通过排除过程,我确定有 2 个应用程序:

  • KSysGuard(KDE 系统监视器)
  • 海豚(文件管理器)

在这种情况下,可以通过在树视图中“隐藏”有问题的安装磁盘来解决 Dolphin 的问题。

KSysGuard 似乎不可配置,但除非您正在调试某些内容,否则长期运行它可能是不寻常的。希望其他应用程序在允许排除方面可以进行更多配置,以防止扫描自动挂载安装点。

答案4

我有类似的问题。我在圣诞假期期间用 CentOS 6 重新安装了已有 10 年历史的 RHEL 4.7 ProLiant 服务器。我有 2 个较新的 ProLiants,最近(四月份)我可以在其中安装 CentOS 7。

我在 CentOS 7 服务器上使用一行配置了从 CentOS 6 服务器自动挂载主目录,/etc/auto.master如下所示:

/home   /etc/auto.home

然后我/etc/auto.home在 CentOS 7 服务器上创建了一个新文件,最初包含一行:

*      sam:/home/&

但是主目录不会卸载。我还发现主目录中的某些文件所有权有时会出现巨大的 UID 和 GID 编号。几分钟后就会改变。

我将日志记录级别设置为“调试”/etc/autofs.conf并开始使用 进行观看journalctl -fu autofs.service。我看到了与上图几乎相同的消息,似乎没有任何线索。

由于我还无法理解 NFS 4,并且我知道我们的 CentOS 6 服务器默认将其共享导出为 NFS 4,因此我尝试向文件nfsvers=3中添加/etc/auto.home如下内容:

training      -nfsvers=3,noac,soft,intr  sam:/home/training

我还看到有关尝试挂载类似目录的奇怪消息/home/lib,因此在单独的行上添加了各个主目录。 (此时可能应该尝试直接挂载,或者尝试 systemd 自动挂载。)

现在我开始看到这样的消息:

Apr 27 09:32:28 betty automount[13501]: expire_proc_indirect: expire /home/fred
Apr 27 09:32:28 betty automount[13501]: handle_packet: type = 4
Apr 27 09:32:28 betty automount[13501]: handle_packet_expire_indirect: token 21, name fred
Apr 27 09:32:28 betty automount[13501]: expiring path /home/fred
Apr 27 09:32:28 betty automount[13501]: umount_multi: path /home/fred incl 1
Apr 27 09:32:28 betty automount[13501]: umount_subtree_mounts: unmounting dir = /home/fred
Apr 27 09:32:28 betty automount[13501]: spawn_umount: mtab link detected, passing -n to mount
Apr 27 09:32:29 betty automount[13501]: rm_unwanted_fn: removing directory /home/fred
Apr 27 09:32:29 betty automount[13501]: expired /home/fred
Apr 27 09:32:29 betty automount[13501]: dev_ioctl_send_ready: token = 21
Apr 27 09:32:29 betty automount[13501]: handle_packet: type = 4
Apr 27 09:32:29 betty automount[13501]: handle_packet_expire_indirect: token 22, name barney
Apr 27 09:32:29 betty automount[13501]: expiring path /home/barney
Apr 27 09:32:29 betty automount[13501]: umount_multi: path /home/barney incl 1
Apr 27 09:32:29 betty automount[13501]: umount_subtree_mounts: unmounting dir = /home/barney
Apr 27 09:32:29 betty automount[13501]: spawn_umount: mtab link detected, passing -n to mount
Apr 27 09:32:29 betty automount[13501]: rm_unwanted_fn: removing directory /home/barney
Apr 27 09:32:29 betty automount[13501]: expired /home/barney
Apr 27 09:32:29 betty automount[13501]: dev_ioctl_send_ready: token = 22
Apr 27 09:32:29 betty automount[13501]: expire_proc_indirect: expire /home/barney
Apr 27 09:32:29 betty automount[13501]: expire_proc_indirect: expire /home/wilma
Apr 27 09:32:29 betty automount[13501]: 1 remaining in /home

主目录现在在 10 分钟后开始卸载,就像它们应该的那样 - 所以在我的例子中,这是 NFS 4 配置错误的问题。

重要提示:重新配置地图后,简单地执行systemctl daemon-reloadsystemctl reload autofs不会有任何效果。我必须做systemctl restart autofs

相关内容