mount 如何确定新附加文件系统的默认安装选项?

mount 如何确定新附加文件系统的默认安装选项?

当使用像mount.具有不同的文件系统类型和每个文件系统的不同设置,mount经受住了时间的考验。我想知道mount挂载文件系统时如何知道哪些默认设置。除了守护进程自动挂载文件系统这一事实之外,在挂载没有如下选项的文件系统时udisksd如何确定适当的设置:mount

# mount /dev/sdc /media/usb_drive

我们特别感兴趣的是长选项例如mountro、、、、、、... )。rw​如上所示,该命令没有列出任何长选项:noexecexecnodev

$ 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 上,任何默认值都被硬编码为:

  1. 命令mount本身
  2. 文件系统特定的挂载助手(mount.ext4在本例中)。
  3. mount内核中通用的VFS层函数
  4. 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 上的等效手册明确指出,手册中列出的选项用于设置非默认安装选项。例如,有一个softdepandnoatime选项,因为nosoftdepandatime是默认选项。

相关内容