知识卡片

RBDCache的写透写回权衡与barrier-passing折中

专业/工作 · 555.s

内容

RBDCache是Ceph为用户态librbd实现的客户端缓存。写透模式下每次写都要等数据真正持久化到OSD才返回,安全但慢;写回模式下数据写进本地缓存就立即返回,只有脏数据积累到阈值才批量下刷,快但一旦客户端所在主机宕机,还没来得及下刷的数据就会丢失。KVM的barrier-passing提供了一种折中:不是每次写都强制刷盘,而是以事务为单位——一个事务通常包含若干次写操作,只在事务边界发出barrier request、确保这个事务内的数据全部落盘后才继续,其余时候仍然享受缓存带来的性能收益。发散:这是”全量同步刷盘”和”完全异步”之间常见的第三条路——把持久化的粒度从”每次操作”放大到”一批操作构成的事务边界”,既避免了每次都付出刷盘代价,又能在业务真正关心的时间点(事务提交)提供确定的持久化保证。

参考来源

《Linux开源存储全栈详解从Ceph到容器存储》第7章《分布式存储与Ceph》