这个文件:.readahead 在我的根目录中做什么?

这个文件:.readahead 在我的根目录中做什么?

当我做:

ls -a /

在 Fedora 21 上有一个隐藏文件,名为:

.readahead它是 104092k

这个文件是什么?...它应该在那里吗?

我在谷歌上找到了这个:

wiki 上的预读系统调用

摘抄:

readahead 是 Linux 内核的一个系统调用,它将文件的内容加载到页面缓存中,从而提供了一种文件预取技术。随后访问文件时,将从主存储器 (RAM) 而不是从硬盘驱动器 (HDD) 读取其内容,由于主存储器的性能更高,因此文件访问延迟要低得多。

有关 man 的预读系统调用的更多信息:

摘抄:

readahead() 在文件上启动预读,以便从该文件的后续读取将从缓存中得到满足,并且不会阻塞磁盘 I/O(假设预读启动得足够早,并且系统上的其他活动没有同时启动)从缓存中刷新页面)。

该特定文件的唯一命中这个邮件列表是:

http://linux.derkeiler.com

摘抄:

事实上,这些文件似乎放错了地方,.config 目录看起来像是安装的剩余部分。.readahead 文件似乎是在启动时写入的,不知道写入的是什么,用“audit”监视它可能会产生一些线索。

提交错误报告。

答案1

感谢@don_crissti 提供的链接:systemd-readahead-replay.service.html,这就是该文件的作用。

摘抄:

systemd-readahead-collect.service 是一项在启动时收集磁盘使用模式的服务。 systemd-readahead-replay.service 是一项重播在后续启动时收集的访问数据的服务。由于磁盘往往比 RAM 慢很多, 这是 旨在提高启动速度通过在启动早期预加载已知在整个启动过程中读取的磁盘上的所有数据。

systemd-readahead-done.service 在启动完成后不久执行,并向 systemd-readahead-collect.service 发出信号以结束数据收集。根据此信号,该服务将对收集的磁盘访问进行排序并将有关它们的信息存储在 /.readahead 中

通常,systemd-readahead-collect.service 和 systemd-readahead-replay.service 都会在启动时激活,以便重播先前启动的访问模式,并为后续启动收集新数据。但是,在无法存储收集的数据的只读介质上,禁用 systemd-readahead-collect.service 可能是个好主意。

在旋转媒体上,在早期启动时重放磁盘访问时,systemd-readahead-replay.service 将按读取请求在磁盘上的位置对读取请求进行排序。在非旋转媒体上,它们将按其原始访问时间戳排序。如果文件系统支持,systemd-readahead-collect.service 还将对磁盘上的文件进行碎片整理和重新排列,以优化后续的启动时间。

相关内容