日志文件系统上有很多临时文件?

日志文件系统上有很多临时文件?

快速写入和删除多个文件

我将在持续一段时间内每秒写入许多临时文件。每个都将在几毫秒后被删除。

假设我们有一个图像处理软件,它可以处理来自快速相机的部分帧,大约每秒 2000 个。它们中的每一个都被写入一个文件,然后在相同的几毫秒内对文件进行一些更改,再次读取并删除。

目前它在tmpfs文件系统上运行,但我们假设它不能。
不,我不能“只要这样做就可以修复它”,一些遗留集成需要它。

文件系统如何应对?

我想了解这是如何与文件系统选项交互的。具体来说,我无法理解文件系统日志如何与之交互。

作为一个天真的想法,人们可能希望数据永远不会接触磁盘,甚至元数据也不会接触磁盘;创建文件然后删除后,数据是一样的,对吗?而且写入并删除目录中的名称后,目录也一样了,对吗?

惊人的效果

没有错。

目录可以通过多种方式表示相同的文件名,例如重用一个位置来存储新文件名,或重用另一个位置。
这意味着,当对磁盘块进行写操作时,它可能已经发生变化而没有文件系统级别的更改,因此需要将其写入磁盘。

但我能否确保它不会为四个操作中的每一个操作编写一次?那么期刊呢?我的临时数据最终会出现在日志中吗?我可以阻止吗?

问题一:做这件事时我应该注意什么或记住什么?

答案1

我可以告诉你理论是什么,但没有实践经验。我读到文件每隔几秒就会从内存推送到磁盘,而删除得足够快的文件永远不会最终出现在磁盘上。连日记里也没有。

我不确定文件是否需要存在整整 5 秒才能被推出,还是恰好在检查点时刻存在(每 5 秒发生一次)。可能是后者。如果是这样,一些文件将被吸收到磁盘中。这种情况会定期发生并持续很短的时间。

很少有安装选项我建议调查一下。您可以通过增加间隔来任意减少这些检查点时刻,但它们仍然会发生。由于我无法解释的原因,延迟分配还会产生将数据推送到磁盘的副作用。我不记得在哪里读到过这件事。

  • commit=nrsec (每 nrsec 秒同步所有数据和元数据。默认值为 5 秒。零表示默认值。)在 Ext3 上
  • delalloc(推迟块分配直到写出时间。)在 Ext4 上

建议的解决方案:使用内存文件系统。这样您就可以确保磁盘上不会有任何内容。无论是 tmpfs 还是 ramfs,都存在一些差异,例如是否可以交换、增长超出指定容量。我知道这基本上就是您现在正在使用的。它不一定是 /tmp,您可以在任何目录上创建此类类型的新文件系统。

http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/

相关内容