今天我遇到了一个问题,严重损害了我的理智,所以我将其发布,以便那些追随我愚蠢脚步的可怜的混蛋可能会找到安慰。
在 RHEL7 上运行 Autofs。基本 CIF 安装。
自动直接:
/data -fstype=cifs,rw,noperm,sec=ntlm,soft,credentials=/etc/data_mnt.creds ://10.10.10.10/Data
启动autofs,我可以看到/data目录,但无法访问它。
运行 automount -m 我可以看到安装,但它不起作用:
autofs dump map information
===========================
Mount point: /-
source(s):
instance type(s): files
map: auto.direct
/data | -fstype=cifs,rw,noperm,sec=ntlm,soft,credentials=/etc/data_mnt.creds ://10.10.10.10/Data
好的。第一步,直接运行 automount -f -v 看看问题出在哪里。
Starting automounter version 5.0.7-56.el7, master map auto.master
using kernel protocol version 5.02
mounted direct on /data with timeout 300, freq 75 seconds
attempting to mount entry /data
mounted /data
好的。问题是没有问题。你他妈是在开玩笑吗?!
在 autofs.conf 中设置logging=debug,重新启动服务,我得到以下信息:
systemd[1]: Started Automounts filesystems on demand.
automount[4151]: handle_packet: type = 5
automount[4151]: handle_packet_missing_direct: token 2166, name /data, request pid 17539
automount[4151]: attempting to mount entry /data
automount[4151]: lookup_mount: lookup(file): looking up /data
automount[4151]: lookup_mount: lookup(file): /data -> -fstype=cifs,rw,noperm,sec=ntlm,soft,credentials=/etc/data_mnt.creds ://10.0.10.10/Data
automount[4151]: parse_mount: parse(sun): expanded entry: -fstype=cifs,rw,noperm,sec=ntlm,soft,credentials=/etc/data_mnt.creds ://10.10.10.10/Data
automount[4151]: parse_mount: parse(sun): gathered options: nfsvers=3,fstype=cifs,rw,noperm,sec=ntlm,soft,credentials=/etc/data_mnt.creds
automount[4151]: parse_mount: parse(sun): dequote("://10.10.10.10/Data") -> ://10.10.10.10/Data
automount[4151]: parse_mount: parse(sun): core of entry: options=nfsvers=3,fstype=cifs,rw,noperm,sec=ntlm,soft,credentials=/etc/data_mnt.creds, loc=://10.10.10.10/Data
automount[4151]: sun_mount: parse(sun): mounting root /data, mountpoint /data, what //10.10.10.10/Data, fstype cifs, options nfsvers=3,rw,noperm,sec=ntlm,soft,credentials=/etc/data_mnt.creds
automount[4151]: do_mount: //10.10.10.10/Data /data type cifs options nfsvers=3,rw,noperm,sec=ntlm,soft,credentials=/etc/data_mnt.creds using module generic
automount[4151]: mount_mount: mount(generic): calling mkdir_path /data
automount[4151]: mount_mount: mount(generic): calling mount -t cifs -s -o nfsvers=3,rw,noperm,sec=ntlm,soft,credentials=/etc/data_mnt.creds //10.10.10.10/Data /data
automount[4151]: spawn_mount: mtab link detected, passing -n to mount
automount[4151]: >> mount error(22): Invalid argument
automount[4151]: >> Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
以上帝的名义,nfsvers=3 是从哪里来的?
答案1
因此,这在我们的环境中可能已经被破坏了大约 10 年,但我们不使用很多 CIF 共享,并且较低版本的 RHEL 上的 autofs 显然会忽略挂载字符串中的垃圾,如果它明显是垃圾(例如尝试设置一个cif 安装上的 nfs 版本),所以我很幸运自己找到了这个。
如果 automount 和 autofs 的行为之间存在脱节,那么答案几乎肯定是在 autofs 的服务配置文件 (/etc/sysconfig/autofs) 中,我在其中找到了以下内容:
OPTIONS="-O nfsvers=3"
它显然是在十年前插入的,以强制与我们 5 年前淘汰的 NAS 兼容。