Ceph开发每周谈 Vol 42|EC Overwrite 进展续集

2016年09月 · 麦子迈

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

上周综述

EC Overwrite 进展续集

EC overwrite的设计使用TPC,在EC overwrite的设计中一个很重要的概念是roll back,目前的roll back接口不支持EC overwrite,因此需要一个specialized ObjectStore primitive来实现EC overwrite的roll back,目前Sandisk的开发者已经完成了 ObjectStore primitive的代码工作,测试已经通过,正准备合并到master。
另一个部分是EC overwrite的deep scrub and checksumming,这部分的设计工作在Sam的设计方案中已经完成,代码实现由Sandisk的Tomy来进行,目前还没有什么太大的进展。
RMW最近也有更新,RMW的方式对EC plugin的接口没有什么要求,使用的是原来的接口。如果实现PARITY-DELTA-WRITE的方式,仍然需要计算parity delta的代码的支持,Sam对这块还没有展开工作。

DMClock 介绍

dmclock是作为mclock算法在分布式存储环境的推广,源于VMware发表自OSDI 2010的一篇论文。其主要工作是,在虚拟化环境下,提供一个可靠高效的I/O资源分配策略,实现细粒度的QoS。 除此之外,dmclock还着重于解决存储特定问题,如爆发处理(burst handling)、请求类别(不区分读写)、IO大小(针对IO大小做特定优化)。

dmclock的实现原理是将传统方法的约束满足调度器和基于权重调度器以一种细粒度的方式从逻辑上缝合。首先会在约束满足阶段,保证请求者的最低资源分配(SLA),然后进入基于权重分配阶段,按照权重分配资源。 dmclock有助于解决ceph client IO性能抖动问题,提高集群吞吐。