如何使noatime挂载默认?


8

我正在制作Ubuntu衍生产品,我想将noatime设置为所有文件系统的默认挂载选项(而不是在Ubuntu中默认的relatime)。

似乎有一个布尔型default_relatime内核参数,用于在默认设置为atime或relatime之间切换(也可以通过写入/ proc / sys / kernel / default_relatime来使用),但我找不到noatime的等效项,而且我也不知道如何默认情况下在发行版中启用它。

如何配置记录数据以立即进行Pendrive?建议有一种方法可以通过udev添加noatime挂载参数,但我不知道这是否适用于内部介质以及如何执行。

使内核默认为noatime的最小侵入方法是什么?

可以使用“ cat / proc / mounts”查看当前的默认值,因为它甚至显示了隐式的安装参数。不要相信“ mount”。

是的,我读过用noatime调整Ext4是否值得?而且我仍然想这样做。


3
Relatime是内核中的默认选项,而不是Ubuntu本身中的默认选项。您必须修改内核或向中添加选项/etc/fstab
安排

Answers:


4

内核曾经有一个用于使用ATIME还是RELATIME的配置选项。dunno如果还包括一些NOATIME选项。无论如何,现在已经消失了。

我还研究了util-linux,以查看mount命令是否具有可配置的默认值或可以对其进行修改,但事实并非如此。

但是,您似乎可以修补内核以更改默认行为。修改./fs/namespace.c,大约2334行:

long do_mount(...)
...
    /* Default to relatime unless overriden */
    if (!(flags & MS_NOATIME))
            mnt_flags |= MNT_RELATIME;
...

交换一下:

long do_mount(...)
...
    /* Default to noatime unless overriden */
    if (!(flags & MS_RELATIME))
            mnt_flags |= MNT_NOATIME;
...

那应该做到的。


1
第二个@Bryce的解决方案-这似乎是唯一的方法。当然,这意味着要使用此补丁来滚动您自己的内核更新-侵入性取决于您:)
ish

这真的是一种侵入性的恕我直言,因为它需要维护自定义内核构建,并且会因安全启动而引起很多麻烦。不过,请+1,因为这是可行的。
Shnatsel

askubuntu.com/questions/61448/…建议udev规则可以附加安装参数,也许行得通吗?我现在将通过此链接更新车身...
Shnatsel

这些是Linux 3.2中的第2315+ if (flags & MS_NOATIME) mnt_flags |= MNT_NOATIME;行,请参阅第2326 行中的lxr.free-electrons.com/source/fs/namespace.c?v=3.2#L2315 有点困扰我,我想我也必须翻转一下。谢谢你的帮助!
Shnatsel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.