我知道预读是 Linux 内核中预取的一种形式,但我认为预取更多的是关于硬件(缓存)预加载,而预读是一种操作系统级别的行为,用于从磁盘加载到内存/RAM。似乎预读“仅在读取期间使用”,但不适用于写入。我知道名称中有“读取”,但为什么写入时不使用预读/预取? 根据
here想到的两种写入情况是 1)“修改文件”写入和 2)“完全覆盖”写入。
,但是错误分配,它提前分配磁盘空间以准备向其写入内容。 例如,bittorrent 文件——文件块以某种随机顺序下载,并且在没有错误分配的情况下,它们通常按照下载顺序写入磁盘。 你去读回文件,它会被乱码地写入磁盘,或者磁盘上的块只是简单的,所以读回文件的速度可能会相当慢。 使用fallocate,文件的空间会提前预留,写入会跳转到预留空间中的“正确”位置,因此当您读回它时,它是一个很好的线性文件。