为 lxc 容器内的文件系统设置 noatime 标志

为 lxc 容器内的文件系统设置 noatime 标志

我的主机文件系统已ext4使用该标志挂载noatime。但在 lxc 容器内,该标志不存在。

mount这是主机上 的输出: /dev/sdb1 on /home type ext4 (rw,noatime)

mount以下是容器中 的输出: /dev/sdb1 on / type ext4 (rw)

我现在有两个问题:

noatime1. 如果设置在容器中,会有什么不同吗?

我的猜测是是的

noatime2.容器的最佳设置方法是什么?

理想情况下,我希望配置这样一种方式,使其始终尊重主机的文件系统标志。

更新/proc/mounts节目的条目略有不同:

rootfs / rootfs rw 0 0
/dev/sdb1 /home ext4 rw,noatime 0 0

答案1

  1. 它确实有所不同。容器中的 atime 功能正如您预期的那样,对性能产生了负面影响。
  2. 根据这张票您需要使用一种解决方法,使用挂载钩,而不是让 LXC 为您挂载

答案2

我的猜测当系统调用写入文件时,实现该操作的内核代码会查看 noatime 标志的状态并从向 proc 文件系统提供信息的同一内核例程中获取该信息。

然而,这远非权威观点,如果它很重要,你应该验证它。

atime 是否真的更新了?检查主机和托管系统。我怀疑时间记录是否不同,但同样,这只是猜测。

根据您需要多长时间才能确定答案是否正确,您可能还需要寻找有关行为应该是什么的权威答案。如果目前无法按预期工作,则将来可能会发生变化,请记住 LXC 距离其第一个生产版本还差得很远。提出问题可以帮助稳定答案,但也许可以将其提交给 LXC 开发人员列表?

答案3

我认为这是 /etc/mtime 文件更新方式的一个错误。检查容器和主机上的 /proc/mounts。

答案4

这不是真正的答案,更多的是一种想法:与人们所相信的不同,基本的 fs 工具(mount、df)使用 /etc/mtime(由 mount 和其他工具编写的简单文本文件)作为 fs/mount 信息的来源。如果您已 chrooted,您的 /etc/mtab 可能有也可能没有反映系统真实情况的内容,具体取决于 chrooted /etc/mtab 的创建时间。容器中的 /etc/mtab 显然没有反映实际配置(如 /proc/mounts 中所示)。

相关内容