在后台同步文件系统

在后台同步文件系统

在编写 Python 代码时,我倾向于经常保存文件(频率相当高code->test->code->test->...)。我讨厌 Linux 每次写入时都将我的更改同步到磁盘。

如何配置 Linux 以便它将文件写入内容保留在内存中一段时间​​/一定次数?

为了使其有用,当然必须从内存中读取尚未同步的文件(以便 Python 解释器始终看到最新内容)。后台同步不会阻止同时进行的其他写入/读取,这会带来额外好处 :-)

答案1

通常是 Linux总是缓存磁盘写入一段时间,但这取决于文件系统的挂载选项。确保文件系统挂载在async模式,通过检查findmnt/proc/mounts

  • 好的:/dev/sda4 /home btrfs rw,relatime 0 0
  • 坏的:/dev/sda4 /home btrfs rw,sync,relatime 0 0

如果您的磁盘已安装在同步模式由于某种原因,请使用此命令进行临时修复,并调整配置以/etc/fstab使其永久生效:

mount -o remount,async /home

/home用实际的文件系统根替代 - 可能只是/在单分区设置中。)


不过,大多数情况下,额外的 fsyncing 是由文本编辑器完成的 – Vim 尤其针对实际文件和交换文件执行此操作。使用fsyncswapsync中的选项vimrc控制它:

set nofsync swapsync=

对于 Emacs,你可以设置write-region-inhibit-fsync


本文描述了 Firefox 中的 Linuxfsync()行为,还提到当文件系统以以下data=ordered模式挂载时,ext3(不是 ext4)会导致非常长的延迟:

在一些相当常见的 Linux 配置中,特别是在“ ”模式下使用 ext3 文件系统时data=ordered,调用 fsync 不仅会刷新被调用文件的数据,还会刷新该文件系统的所有缓冲数据。

如果您在此模式下使用 ext3,请考虑禁用它。

相关内容