“刷新到磁盘”意味着什么?

时间:2016-01-28 00:11:41

标签: caching memory

有人可以解释在以下上下文中刷新到磁盘的含义吗?如果我将数据写入文件系统上的日志,这是不是意味着我将它放在磁盘上?在什么时候你应该/应该将文件刷新到磁盘?

  

这表明一个非常简单的设计:当我们用完空间时,不要在内存中尽可能多地维护并将其全部冲到文件系统中,我们将其反转。所有数据立即写入文件系统上的持久日志,而不必刷新到磁盘。实际上,这只意味着它被转移到内核的pagecache中。

(来自https://kafka.apache.org/documentation.html#design)。

2 个答案:

答案 0 :(得分:3)

  

所有数据都会立即写入文件系统上的持久日志,而不必刷新到磁盘。实际上,这只意味着它被转移到内核的pagecache中。

这意味着Kafka使用write()系统调用将数据移交给内核 - 此时它对其他进程可见,但实际上可能会或可能不会反映在磁盘上并存活下来重启 - 但不强制内核使用fsync()调用或类似操作将其赶到磁盘(适用于手头的操作系统)。如果优化吞吐量并且不需要保证内容是可检索的,这可能是一个合适的决定:fsync()并且其亲属可能是昂贵的呼叫(尽管做了不需要寻求的长连续写入,kafka最小化其磁盘IO的费用。)

答案 1 :(得分:0)

这意味着所有下载状态都将变为刷新到磁盘,()文件将永久保留在该位置,并且在文件下载后不会将其写入hd。

这是与在高级首选项中启用了partfile的文件跳过有关的问题。

关闭零件文件或停止跳过文件。