为什么EXT4文件系统同时挂载了relatime和lazytime

and*_*s-h 5 ext4 atime

我正在使用内核 4.4 运行 Debian/Testing:

# uname -a
Linux shaula 4.4.0-1-amd64 #1 SMP Debian 4.4.6-1 (2016-03-17) x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

所以我想使用lazytimemount 选项,这就是为什么我把以下内容放在我的/etc/fstab

# grep vg_crypt-root /etc/fstab 
/dev/mapper/vg_crypt-root   /   ext4   lazytime,errors=remount-ro   0   1
Run Code Online (Sandbox Code Playgroud)

但是,现在文件系统似乎同时安装 relatimelazytime

# grep vg_crypt-root /etc/mtab 
/dev/mapper/vg_crypt-root / ext4 rw,lazytime,relatime,errors=remount-ro,data=ordered 0 0
Run Code Online (Sandbox Code Playgroud)

怎么会这样?

sou*_*edi 7

好消息:这是预期的。

lazytime 标志独立于strictatime/relatime/noatime。默认是relatime。因此,当您将 noatime 替换为 lazytime 时,您会看到设置了 relatime 挂载选项也就不足为奇了。

-特德Ts'o

不幸的是,这并不能解释它的含义。

手册页的文字阅读提示relatime抑制两种内存的更新和磁盘写入。lazytime 只抑制磁盘写入(适用于 mtime 和 atime)。考虑到导致实现延迟时间的讨论,这对我来说很有意义。IOW 为 relatime 编写测试将非常容易。但是,只有在查看磁盘写入或测试不干净关闭时会发生什么时,延迟时间的影响可见。


就个人而言,lazytime 对 mtime 的影响听起来有点奇怪。也许对于正常运行时间长的系统来说这是一个很好的优化,但我不知道普通的台式机......现在这实际上是一台笔记本电脑;我们不应该对电源故障时未定义或奇怪的部分定义的行为如此狂热。如果你考虑像 btrfs 这样的写时复制文件系统,那就更特殊了。即使文件大小没有改变,“inode”也可能会更新。相比之下,它relatime是可爱而确定的。

并且 mtime 优化似乎仅在您写入大量不改变其大小的文件时才有用。我不确定是否有一个共同的基准。我想是一些非常重要的数据库工作负载。

说真的 Ted,为什么我们没有得到lazyatime