Linux文件脏页回写顺序是什么

Linux文件脏页回写顺序是什么

在Linux中,对于单个文件,脏页写回(到磁盘)顺序是什么?是从头到尾还是乱七八糟的?

场景1:不覆盖

创建文件(在磁盘中)并快速(顺序)写入大量数据。现在我认为这些将位于多个页面缓存中。写回脏页时,页面是否按顺序写回?

例如,假设服务器在文件写入完成之前关闭。

现在重新启动后我们可以让磁盘文件处于以下状态

|--正确的数据--|---数据未设置/垃圾--|--正确的数据--|

即我了解文件中的最后一组字节可能不完整,但中间的数据可能不完整

场景 2:覆盖(尝试使用类似于循环/环形缓冲区的文件)

  1. 文件创建,数据写入,达到最大大小后,调用“fsync”(即数据+元数据同步)。
  2. 现在,文件指针移动到文件的开头并按顺序写入数据。 (未完成 fsync)

现在由于服务器关闭,我们可以在重新启动后使磁盘文件处于以下状态吗

|--Newly written data--|--Old data--|--New data--|...

即对于新数据,某些页面被乱序写入磁盘

或者

我可以假设它总是

|--新写入的数据--|----新写入的数据--|--旧数据--|

即旧数据和新数据不会混淆(如果存在旧数据将仅位于文件末尾)

相关内容