技术文章

BLOG

Ceph开发每周谈 Vol 76|Ceph Redirect 原语(去重)

2017-06-01 · 麦子迈

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

  • 一句话消息

Ceph Day Beijing 将于 6.10 举行 http://ceph.com/cephdays/ceph-day-beijing-2/

  • Ceph 去重的第一步已完成

之前提过 SK 的社区贡献者在做 Ceph 去重的实现,主要方式是使用一个索引池来存放去重指纹,然后重定向到真实数据,目前类似于之前的 Tiering 原语 Promote 和 Flush 的 Redirect 已经实现(https://github.com/ceph/ceph/pull/15325)。主要是通过增加一个 object_manifest_t 结构来指出索引池的该对象为索引指纹对象,然后当访问该对象时,会自动重定向到真正的数据对象。

struct object_manifest_t {
+ enum {
+ TYPE_NONE = 0,
+ TYPE_REDIRECT = 1, // start with this
+ TYPE_CHUNKED = 2, // do this later
+ };
+ uint8_t type; // redirect, chunked, …
+ hobject_t redirect_target;

}

后续将实现 Chunk 化。