我有以下条目/etc/fstab
:
UUID=foo /media/bar xfs noauto,x-systemd.automount,nofail,x-systemd.device-timeout=1,noatime 0 2
运行cat /proc/mounts | grep bar
返回以下内容:
systemd-1 /media/bar autofs rw,relatime,fd=41,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=1419 0 0
/dev/sdb1 /media/bar xfs rw,noatime,attr2,inode64,noquota 0 0
有几点我不明白:
- 这个“重复”条目正常吗?
- 为什么 systemd 行显示
autofs
andrelatime
而不是xfs
andnoatime
? - 当此驱动器拔出时,我可以启动,但我无法访问除以下分区之外的任何分区
/
!例如ls /
可以工作,但ls /media/bar
甚至ls ~
不能工作(/home
在单独的分区上)。
据我所知,第三个问题可能与此无关,但我仍然对前两个问题感兴趣。
答案1
这个“重复”条目正常吗?
是的,这是正常的。这是 autofs 的工作原理(见下文)。
为什么 systemd 行显示 autofs 和 relatime 而不是 xfs 和 noatime ?
再次,这就是autofs 内核子系统作品。
在启动时,systemd 会在所需的挂载点上挂载一个伪文件系统autofs
。其挂载选项不应该也不会与您想要的挂载选项相对应。
当用户空间访问此挂载点以下的任何文件时,Linux 内核会暂停用户空间进程,通知 systemd(它将真实xfs
文件系统挂载到伪autofs
文件系统上,具体方法请参见相应的.mount
我们首先将文件系统划分为一个单元(unit),最后允许用户空间继续运行,然后访问真实的文件系统。
拔下此驱动器后,我可以启动,但无法访问除 /!之外的任何分区。例如,ls / 可以工作,但 ls /media/bar 甚至 ls ~ 都不行(/home 位于单独的分区上)。
访问应该自动挂载但无法自动挂载的挂载点下的路径(例如,由于缺少驱动器)将失败。如果 systemd 无法在伪文件系统上挂载真实文件系统,则内核将向访问进程返回失败。
如果/home
没有自动安装,那么我无法解释/home
无法访问的情况。