有人可以解释在以下上下文中刷新到磁盘的含义吗?如果我将数据写入文件系统上的日志,这是不是意味着我将它放在磁盘上?在什么时候你应该/应该将文件刷新到磁盘?
这表明一个非常简单的设计:当我们用完空间时,不要在内存中尽可能多地维护并将其全部冲到文件系统中,我们将其反转。所有数据立即写入文件系统上的持久日志,而不必刷新到磁盘。实际上,这只意味着它被转移到内核的pagecache中。
答案 0 :(得分:3)
所有数据都会立即写入文件系统上的持久日志,而不必刷新到磁盘。实际上,这只意味着它被转移到内核的pagecache中。
这意味着Kafka使用write()
系统调用将数据移交给内核 - 此时它对其他进程可见,但实际上可能会或可能不会反映在磁盘上并存活下来重启 - 但不强制内核使用fsync()
调用或类似操作将其赶到磁盘(适用于手头的操作系统)。如果优化吞吐量并且不需要保证内容是可检索的,这可能是一个合适的决定:fsync()
并且其亲属可能是昂贵的呼叫(尽管做了不需要寻求的长连续写入,kafka最小化其磁盘IO的费用。)
答案 1 :(得分:0)
这意味着所有下载状态都将变为刷新到磁盘,()文件将永久保留在该位置,并且在文件下载后不会将其写入hd。
这是与在高级首选项中启用了partfile的文件跳过有关的问题。
关闭零件文件或停止跳过文件。