为什么使用 autofs 挂载的目录在文件系统中不可见,但在提供完整路径后可以访问?

s-k*_*rek 6 linux nfs autofs

这是我的第一个 nfs / autofs 配置,所以我可能配置错误。当我导航到添加到 /etc/auto.master 的目录时,我看不到任何挂载点,但是当我发出带有预期挂载点完整路径的 cd 时,它会调出,我可以访问它。我认为,下面的输出是不言自明的:

user@user-desktop:~/mnt/shares/autofs$ ls
user@user-desktop:~/mnt/shares/autofs$ ls ./backup_tmp
lost+found  test.file
Run Code Online (Sandbox Code Playgroud)

这就是/etc/auto.master文件的样子(在接收方机器上)。前两行是默认的,所以我不确定是否应该触摸它们:

+dir:/etc/auto.master.d
+auto.master
/home/user/mnt/shares/autofs /etc/auto.misc --timeout=20
Run Code Online (Sandbox Code Playgroud)

这就是/etc/auto.misc的样子(默认情况下第一行):

cd      -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
data_archive           -fstype=nfs4     192.168.1.140:/mnt/data_archive
data_file-resources    -fstype=nfs      192.168.1.140:/mnt/data_file-resources
backup_tmp             -fstype=nfs      192.168.1.140:/mnt/backup_tmp
Run Code Online (Sandbox Code Playgroud)

谁能帮我调试这个问题吗?

小智 7

这是设计使然,但 autofs 提供了更改此行为的方法。

您可以使用browse仅适用于 autofs 映射中的特定条目的选项,也可以使用browse_mode系统范围的选项。


选项 1:browse在地图中添加选项/etc/auto.master

/home/user/mnt/shares/autofs /etc/auto.misc --timeout=20 browse
Run Code Online (Sandbox Code Playgroud)

man auto.master

[no]browse:这是一个 autofs 特定选项,是一个伪安装选项,因此没有前导破折号。使用浏览选项会为间接挂载映射预先创建挂载点目录,因此无需挂载即可在目录列表中看到映射键。如果间接映射很大,使用此选项可能会导致性能问题,因此应谨慎使用。内部程序默认为间接安装启用浏览模式,但由于潜在的性能问题,默认安装的配置通过将 BROWSE_MODE 设置为“no”来覆盖此模式。此选项与已弃用的 --ghost 选项的作用相同,首选浏览选项,因为它被其他 autofs 实现使用。


选项 2:browse_mode更改in的值/etc/autofs.conf

man autofs.conf

browser_mode:地图默认可浏览(程序默认“yes”)。


这些手册页摘录自 Ubuntu 20.04,因此您的系统版本的 autofs 可能在配置文件位置或默认配置方面略有不同。


小智 3

这就是 autofs 应该如何工作的。autofs 目录在第一次访问时被安装(这就是名称中包含“auto”的原因)。当您执行ls父目录操作时,没有系统调用可以访问实际的安装点路径,因此它们不可见。当您显式访问挂载点路径时,它就会被挂载。再次尝试执行ls父目录,您将看到挂载点已经出现。挂载的目录在 20 秒内没有被任何进程使用(这是您在配置文件中设置的超时)后,它会再次卸载并且不再可见。