用noatime调整Ext4是否值得?


77

在以前的Ubuntu版本(使用Ext3文件系统)中,我曾经通过在中设置noatime参数来对其进行调整,以获得更好的性能,并获得了可观的结果/etc/fstab

使用Ext4文件系统(在Ubuntu中现在是默认设置)进行操作仍然值得吗?如果是这样,程序是否有所改变?

可以在此处找到此调整的示例

Answers:


66

在Ubuntu 10.04上,它relatime是默认安装选项的一部分,除非在中进行了覆盖/etc/fstab。先前的几个版本已relatime明确包含在中/etc/fstabrelatime带来与相同的速度(和闪存写入周期节省)优势noatime,而不会给老式邮件通知程序带来麻烦。

您引用的文章推荐data=writeback。Ubuntu默认为data=ordered。在磁盘负载较重的情况下,Ubuntu的设置速度较慢,但​​是在崩溃或电源故障的情况下,Ubuntu的设置会大大降低数据丢失的风险。因此,我不建议从Ubuntu默认值更改。

更改commit=5commit=100增加时间范围,在该时间范围内,如果发生崩溃,数据将丢失,在大多数情况下几乎没有好处。

摘要:保留设置不变,选择它们是有原因的。


添加:除了挂载选项以外,还有其他事情可以有所作为。从切换ext3ext4本身通常是一个明显的改进。这里有一些针对笔记本电脑用户的提示。

  • 如果您的SSD速度较慢,请在SU处检查该线程。在重要的提示是使用tmpfs/tmp和浏览器缓存(也许历史)。

  • 如果您有硬盘,并且希望它停止旋转很长一段时间,请安装noflushed,它可以通过延迟所有写入直到RAM已满来使磁盘旋转。(当然,读操作可能会导致磁盘旋转;您需要养成cat /files/I/m/likely/to/need >/dev/null在磁盘旋转之前运行的习惯。)为了使noflushed生效,请关闭所有交换并使用类似以下的方法挂载文件系统:commit=3600

    有效地使用noflushd意味着您的数据可以长时间保持未写入磁盘的状态。权衡一下这是一个风险,同时要使磁盘暂时没有任何噪音或热量。如果您对这种风险不满意,请不要使用noflushd。


我了解像这样进行调整的危险,这是本教程中我不同意的一些步骤,就像comit=100您提到的那样。但是,我愿意承担一些适度的风险以提高性能,因为我使用笔记本电脑和(几乎)定期备份。
Decio Lira

2
@Decio:noatimevs atime可以带来明显的变化,但是noatimevs relatime会令我感到惊讶。我在回答中添加了一些笔记本电脑专用的提示;我个人已经从这些技巧中看到了明显的改进。使用Noflushd会带来我愿意承担的风险。
吉尔斯

是的,我只是在探讨noatime和relatime之间的差异,您是对的。relatime(现在是ubuntu中的默认值)是atime和noatime之间的良好折衷。
Decio Lira 2010年

我已经读过data=writeback-它只是以随机顺序写入文件数据和元数据ordered与之相对的是总是在数据之后写入元数据)。这意味着在断电时,您可以找到文件的α字节长,其中实际写入了0字节。好吧……但这绝对是自然的!我一直在想,文件系统首先会增加文件大小,然后再写入数据。要找到相反的顺序,需要转换此模式以在RAM中添加缓存。我不相信为什么不使用writeback它是否可以帮助改善延迟。
Hi-Angel

17

是的,noatime从Ubuntu 12.10 开始使用仍然有意义

relatime是默认的安装选项。并且relatime比更好atime。前者在写入后的第一次读取时需要写入,后者在每次读取时都需要写入。但是noatime每次读取都是免费的。

这基本上意味着,relatime相对于noatime其他条件相等的装载,要装载到磁盘的写入次数接近两倍。对于闪存设备上的分区,这是一个严重的问题。

linux内核社区的详细讨论位于http://kerneltrap.org/node/14148。


3
通常,因子二是不正确的。从理论上讲,该因子介于1(无限次使用的文件)和2(无限次使用的文件)之间。这意味着,真正的因子基本上为1,因为很少有接近2的因子在平均值中并不占很大比例。
PatrickHäcker2014年

1是只写文件。2代表所有其他。只写文件没有意义,但是它们有时会出现。因此,我的最初估计应该是相关的。
yanychar 2014年

@yanychar:感谢您解释relatime缺点并分享了kerneltrap讨论,但是说“ 只写文件没有意义 ”是胡说:所有/usr/lib都是只读文件。实际上,大多数树sans /home/var都是只读的。文件/etc也很少更改。
MestreLion

2
@MestreLion:Ubuntu安装了大量软件包。这些软件包会不时升级。如果在安装和升级软件包之间没有读取文件,则该文件为“只写”。与该文件relatime相比,没有其他写noatime操作。对于其余所有文件,在读取文件时会有额外的写操作。
yanychar 2015年
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.