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