在 fstab 中增加“commit”的优缺点

Ter*_*ior 17 ext4 mount ext3 fstab

过去我做过很多晦涩的系统优化,但在我powertop告诉我应该将 USB 端口设置为autosuspend后,我摆脱了其中的大部分,这迫使它们永久休眠,并且在我意识到更高swappiness的好处之后.

但是今天,在查看 时/etc/fstab,我注意到我已经commit=60//home设置了选项。我记得这是对笔记本电脑的优化,以减少对磁盘的写入量,从而节省电池。但后来我开始担心这可能会导致数据丢失(有时我的电池断开连接,然后在启动时fsck告诉我几个孤立的 inode)。

在寻找这个选项的解释时,我得出了以下解释(第二个似乎与我之前的理解相矛盾):

$ man mount | awk '/commit=/,/^$/'
commit=nrsec
    Sync all data and metadata every nrsec seconds. The default value is 5 seconds.
    Zero means default.
Run Code Online (Sandbox Code Playgroud)

https://forums.gentoo.org/viewtopic-p-4088752.html

commit=60 停止“立即”(默认为 5 秒)写入优先级,在几秒钟后缓存写入。这在重读和写混合在一起的情况下是很好的,在这种情况下,用户希望读取优先,以便处理器可以保持忙碌而不是在等待写入完成之前暂停,然后才能继续读取。

我见过的一个真实世界的例子是等待几秒钟 Gnome 下拉菜单出现,似乎没有任何原因。原因是磁盘忙于写入,因此CPU必须等待写入完成才能从磁盘中获取所有数据才能显示菜单。

提交到底有什么作用?增加它真的有好处吗(比如响应能力和节能)?它真的会导致数据丢失吗?

don*_*sti 15

提交到底有什么作用?

我认为最好的解释之一是给这里allquixotic

增加它真的有好处吗(比如响应能力和节能)?它真的会导致数据丢失吗?

根据ext4 官方文档

可以告诉 Ext4 每隔 'nrsec' 秒同步其所有数据和元数据。默认值为 5 秒。这意味着,如果您失去 电源,您将失去最多最近 5 秒的工作 (不过,由于日志记录,您的文件系统不会损坏)。这个默认值(或任何低值)会影响 性能,但它有利于数据安全。将其设置为 0 与保留默认值(5 秒)具有相同的效果。将其设置 为非常大的值将提高性能

增加commit值意味着您可能会丢失最近 N 秒的工作(其中 N = 提交间隔),尽管大多数情况下这不会发生,因为软件仍然可以调用 fsync() 并将其数据写入磁盘,覆盖提交设置。您可以将其视为“至少经常将所有内容写入磁盘”1
另一方面,它意味着更少的写入(这使得它在 ssd 用户中很受欢迎)和更好的性能(多个写入合并为一个更大的写入,在提交时间范围内取消对先前写入的更新)。
至于省电,根据本页,事实证明,如今增加commit值并不能节省电量。