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

为什么使用 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

这就是自动主机管理工具文件看起来如下(在接收方机器上)。前两行是默认的,所以我不确定是否应该触碰它们:

+dir:/etc/auto.master.d
+auto.master
/home/user/mnt/shares/autofs /etc/auto.misc --timeout=20

这就是/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

有人能帮我调试这个问题吗?

答案1

这就是 autofs 的工作方式。autofs 目录在首次访问时会被挂载(这就是名称中带有“auto”的原因)。当您执行ls父目录的命令时,没有系统调用会访问实际的挂载点路径,因此它们不可见。当您明确访问挂载点路径时,它会被挂载。尝试ls再次执行父目录的命令,您将看到挂载点已出现。在挂载的目录 20 秒内未被任何进程使用后(这是您在配置文件中设置的超时时间),它将再次被卸载并且不再可见。

答案2

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

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


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

/home/user/mnt/shares/autofs /etc/auto.misc --timeout=20 browse

man auto.master

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


选项 2:browse_mode改变中的值/etc/autofs.conf

man autofs.conf

浏览模式:默认情况下地图是可浏览的(程序默认“是”)。


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

相关内容