Ceph开发每周谈 Vol 46 | RDMA 支持 | QEMU 使用 RBD 配置优先级

2016年10月 · 麦子迈

这是Ceph开发每周谈的第四十六篇文章,记录从16年10月17号到16年10月23号的社区开发情况。笔者从前年开始做Ceph的技术模块分析到今年中告一段落,想必有挺多人期待下一篇Ceph技术分析。考虑到Ceph的发展已经从前年的一穷二白到现在的如火如荼,但对于社区的方向和实况仍有所脱节,笔者考虑开始Ceph开发每周谈这个系列。每篇文章都会综述上周技术更新,围绕几个热点进行深度解析,如果正好有产业届新闻的话就进行解读,最后有读者反馈问题的话并且值得一聊的话,就附上答疑部分。

  • 上周综述

all ceph forks on github in one repository:

~/forks/ceph$ git branch -a | wc -l

622755

  • RDMA 支持

正如本系列第一期所说,RDMA 支持是高性能 SDS 的必经之路,过去两年 Ceph 在 XIO 上面进展非常缓慢,主要还是社区无法对 XIO 进行 QA 集成测试,而且 XIO 的背后 Accelio 也缺乏足够的项目支持以及发展路线图,目前也暂时没有听说哪个项目严重依赖 Accelio 实现 RDMA 支持。因此整个 XioMessenger 陷入尴尬的境地。

在我们开源的 RDMA 部分,对接的是成熟且默认的 AsyncMessenger,完全解决了新 Messenger 测试工作巨大的问题。在性能和复杂情况稳定性上,可能没有 Accelio 来的健壮,但是因为足够简单,可以针对性调整。其次,我们也期望 Accelio 可以整合进 AsyncMessenger,成为其中一个 Backend。这样的组合应该能够最大化发挥 AccelIO 的价值。

  • 配置使用警告: QEMU 使用 RBD 配置优先级

在社区的 QEMU 使用 RBD 配置中文档中(http://docs.ceph.com/docs/jewel/rbd/qemu-rbd/#qemu-cache-options):

“QEMU’s cache settings override Ceph’s default settings (i.e., settings that are not explicitly set in the Ceph configuration file). If you explicitly set RBD Cache settings in your Ceph configuration file, your Ceph settings override the QEMU cache settings. If you set cache settings on the QEMU command line, the QEMU command line settings override the Ceph configuration file settings.”

这句话其实有歧义,准确来说,在新的 QEMU 中,QEMU 的命令行会覆盖 ceph.conf 的设置,是第一优先级。如果 QEMU 命令行没有指定,那么 ceph.conf 会使 QEMU 的 cache 行为。

另外,writethrough_until_flush 这个选项在 Jewel 的 前两个小版本是存在问题的,在 10.2.3 修复了这个问题。因此,VM 如果启用了 RBDCache,务必从 10.2.3 开始使用。否则该选项无法保护不会发送 flush 的 VM 的一致性