我有自动文件系统安装在连接到用户 /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-reload
或systemctl reload autofs
不会有任何效果。我必须做systemctl restart autofs