知识卡片

日志同步靠暂停线程池批量刷盘释放空间

专业/工作 · 514.b.5

内容

FileStore 有独立的 sync 线程定期做日志同步:先暂停 op_wq 线程池、等待所有正在进行的日志应用完成,再统一调用一次 fsync 把内存中的数据落盘,落盘确认后才能安全释放对应的日志空间。这里没有对每一次写操作分别做同步确认,而是攒够一批、集中暂停、一次性 fsync——用短暂阻塞新请求换取一次 fsync 覆盖一批操作的效果,避免了逐笔同步造成的频繁磁盘刷新开销,是批处理思路在存储引擎落盘环节的具体应用。

参考来源

《Ceph源码分析》第7章《本地对象存储》