当使用像mount
. 使用不同的文件系统类型和每个文件系统的不同设置,mount
经受住了时间的考验。我想mount
知道挂载文件系统时如何知道哪些默认设置。除了udisksd
守护进程自动挂载mount
文件系统这一事实之外,在挂载文件系统时如何确定适当的设置,而没有如下选项:
# mount /dev/sdc /media/usb_drive
Run Code Online (Sandbox Code Playgroud)
我们特别感兴趣的是诸如 ( , , , , ,...)之类的长选项。如上所示,该命令没有列出任何长选项:mount
ro
rw
noexec
exec
nodev
$ mount | grep /dev/sdc
/dev/sdc on /media/usb_drive type ext4 (rw,relatime,data=ordered)
Run Code Online (Sandbox Code Playgroud)
您可以看到在挂载 /dev/sdc: 时,ext4 文件系统默认使用了一些选项(rw,relatime,data=ordered)
。但是,fstab 中没有 /dev/sdc 条目。请注意,文件系统位于整个 USB 驱动器而不是分区上。上面的命令看起来就像我们运行了这个命令:
# mount /dev/sdc /media/usb_drive -o rw,relatime,data=ordered
Run Code Online (Sandbox Code Playgroud)
mount
用于确定适当的默认安装选项的机制是什么?
至少在 Linux 上,任何默认值都被硬编码到:
mount
命令本身mount.ext4
在本例中)。mount
内核中通用的 VFS 层函数mount
内核中的文件系统特定功能relatime
属于第 3 种情况,实际上是人们在自定义内核中本地修补的常见位置(通常它会被修补为默认为noatime
)。 rw
也是情况 3,但它可以被mount
内核中的 FS 特定函数覆盖。
data=ordered
来自 4,特定于 ext*,并且可以在构建时更改为data=writeback
您正在构建自己的内核(并且在某些发行版上可能会有所不同)。
您获得的默认选项的确切列表将因文件系统类型(例如,BTRFS 具有rw,relatime
除 ext4以外的不同设置)、文件系统的细节(您可以在 ext4 的超级块中嵌入一些默认选项),有时甚至通过硬件(BTRFS 会尝试猜测您是否有 SSD,ssd
如果它认为您有,则会添加 FS 特定的挂载选项)。
这种情况在大多数其他系统上也非常相似,尽管在一些较旧的 UNIX 系统上mount
最终只是 FS 特定挂载命令的多路复用器。