Ceph 开发每周谈Vol 40 | RGW 支持对象生成 BT 种子

2016年09月 · 麦子迈

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

  • 上周综述

上周 Ceph 并没有太多可述进展

  • BitTorrent 与 RGW S3 配合使用

BitTorrent 是开放对等的文件分发协议,上周 RGW 合并了 S3 支持 BitTorrent 协议的 PR,因此用户可以在分发大规模内容时节约成本。S3 数据的默认分发机制是通过客户端/服务器下载,在客户端/服务器分发中,整个对象将以点对点的方式从集群传输到所有请求该对象的授权用户。尽管客户端/服务器传输适用于各种使用案例,但它并非对每个人都是最优的。尤其是随着下载对象的用户数的增加,客户端/服务器分发的成本将直线上升。这使得分发受欢迎对象的成本非常昂贵。

BitTorrent 通过将正在下载对象的客户端用作分发服务器来解决此问题:每个客户端从 Ceph 集群和其他客户端下载对象的某些部分,同时将相同部分的对象上传到其他关注的“对等方”。发布者可以获得的好处是:对于受欢迎的大型文件,Ceph 集群实际提供的数据量要显著少于通过客户端/服务器下载时需要为同一客户端提供的数量。传输的数据越少,对对象的发布者而言就意味着成本更低。

相信未来 Ceph S3 集群的这个用途会被广泛使用。

  • virtio-blk multi-queue with RBD

在 QEMU 2.7 版本中,virt-blk 开始支持 multiqueue,使得在 QEMU 可以允许 Block Engine 多个队列并发处理 IO,这也是很多用户之前选择 virt-scsi 的原因。virt-blk 是默认的 QEMU 块 IO 虚拟框架,并列的有 virt-scsi,virt-dataplane 等,虽然后两者在多方面都有较大优势,但 virt-blk 对于特性支持和稳定性都是最好的,因此大多数用户都会使用 virt-blk。

而 multiqueue 特性可以极大增加单个块设备的能力,但是目前从 QEMU 到 librbd 中存在 Dispatch Queue 使得这个 Queue 以及后续的处理线程会成为瓶颈。因此该特性目前并不能很好提高单个 RBD 卷的性能。

最后欢迎国内开发者加入贡献有深度的内容