分享

Ceph的Journal机制 | tianshan's blog

 hello_worldw6 2017-08-30

Ceph底层FileStore模式下,采用了写日志,就是Journal。实现机制类似数据库的写日志。写数据时,会在journal上写日志,保证出现故障时可以从日志恢复。

Journal源代码中主要涉及两个文件,os目录下的FileJournal和FileStore。FileStore中会有FileJournal的一个实例,调用都在这里发生。

写Journal有两种模式,parallel和writeahead。顾名思义,parallel就是日志和磁盘数据同时写,writeahead是先写日志,只要日志写成功了,就回返回。后台每隔一段时间后,会同步日志中的写操作,实现落盘。这种方法带来的好处就是,可以把很多小IO合并,形成顺序写盘,提高IOPS。

第二种方法中,官方文档提到,

  • 在速度上,通过预写日志方式,后端文件系统合并小IO,可以提升速度。但实际中,会造成性能有明显抖动,一段较高速率后会有一段低速率,如下图

iops

  • 一致性:OSD的守护进程需要文件系统接口来保证原子复合操作。OSD守护进程会把操作的描述写到日志,然后应用到文件系统。这样保证了对象的原子操作。每隔几秒(filestore max sync intervalfilestore min sync interval),OSD守护进程会 停止写操作 然后同步日志到文件系统,使得守护进程能够删除日志重新利用空间。当失败时,OSD守护进程会从日志上一次同步点开始回滚操作。

注意:这里面提到会停止写操作,从日志队列的表现来看,就是filestore写队列比较满时,日志队列会为空,一般这时候,就是在同步操作。默认的最大同步间隔filestore max sync interval为5s。

同步的流程图如下

iops

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多