我的主机文件系统已ext4
使用该标志挂载noatime
。但在 lxc 容器内,该标志不存在。
mount
这是主机上 的输出:
/dev/sdb1 on /home type ext4 (rw,noatime)
mount
以下是容器中 的输出:
/dev/sdb1 on / type ext4 (rw)
我现在有两个问题:
noatime
1. 如果设置在容器中,会有什么不同吗?
我的猜测是是的。
noatime
2.容器的最佳设置方法是什么?
理想情况下,我希望配置这样一种方式,使其始终尊重主机的文件系统标志。
更新
该/proc/mounts
节目的条目略有不同:
rootfs / rootfs rw 0 0
/dev/sdb1 /home ext4 rw,noatime 0 0
答案1
- 它确实有所不同。容器中的 atime 功能正如您预期的那样,对性能产生了负面影响。
- 根据这张票您需要使用一种解决方法,使用挂载钩,而不是让 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 中所示)。