Ceph开发每周谈 Vol 39|MonStore Rebuild | AWS v4 chunked upload

2016年09月 · 麦子迈

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

  • 上周综述

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

  • MonStore Rebuild

Monitor 存储了集群的 OSD 节点信息,PG 数据版本等全局性信息,Monitor 集群通过 Paxos 算法来进行 Monitor 数据的一致性保证,因此,如果 Monitor 集群不可用会导致整个 Ceph 集群不可用。通常来说 Monitor 会使用多份拷贝来保证数据的安全性,但是当用户同时失去所有拷贝时,整个集群都有不可用风险。因此,社区的 Kefu 做了一个从 OSD 端重建 Mon 数据的工具,用来在所有 Monitor 丢失的情况下恢复集群。

整个流程大致是从所有 OSD 测提取 OSDMap 信息,然后重建 MonStore。目前的实现仍然会丢失过去的 PG 统计信息和 MDSMap。

  • AWS v4 chunked upload

在 AWS v4 Signature API 里使用 HTTP Authorization 头部作为 Authentication 信息,目前有两种方式可以在 S3 中使用,第一种是把所有 Payload 都放在一个 Chunk 中(http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html),另一种是在多个 Chunk 里上传(http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-streaming.html)。

vol39
显而易见,第一种方式更加低效且需要重复计算。因此,在 AWS v4 在 Jewel 实现的基础上,Chunked Upload 特性也会被 Backport 到 Jewel 版本中。Ceph S3 的协议实现会更加完整。