Ceph开发每周谈 Vol 92 | New Key Value Store For Heterogeneous Storage From Intel

2017年09月 · 麦子迈

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

  • 一句话消息

9 月份 CDM 视频 https://www.youtube.com/watch?v=xds1nsDoYqY&feature=youtu.be

  • New Key Value Store For Heterogeneous Storage From Intel

在 NAND SSD 与 DRAM 之间实际上有很大的性能差距,Persistent Memory 和 Intel Optane 实际上都是介于两者之间的,前者目前还没有发布,后者已经开始量产。同样,前者更像是内存访问,而后者更偏向于传统块设备介质访问。

对于 Persistent Memory 而言,目前主要使用 NVM Library 进行操作,http://pmem.io 提供了开源版本,主要有 object,block 和 log 三种访问模型。

因此,对于 KeyValueStore 而言,传统主要面向 DRAM、SSD、HDD 的设计很难匹配 Persistent Memory 和 Optane 这种延迟和容量的介质,Intel 开源了一个 Key Value Store 来解决这个问题。主要将利用高性能 Persistent Memory 来做聚合,将 Optane 和其他 SSD 作为主存使用。在 DRAM 和 SSD 间插入一层高性能介质。

在设计上,主要利用传统 KV 数据库的 Hash Table 索引,将整个索引信息从 DRAM 中读取,在写流程上数据和元信息先存放到 Persistent Memory,更新 DRAM 索引。在 Persistent Memory 和 SSD 会存在空间回收机制,然后更新 DRAM 元信息。在读流程中,会从 DRAM 中获取对应索引信息,在 SSD 或者 PM 中,然后进行相应读取。在 Crash Recovery 中可以从 Persistent Memory 重建。

用 Segment 来像 SST 一样聚合多个 KeyValue,来对 SSD 的顺序写进行优化。

以下提供了一个对比 rocksdb 的效果:

目前开源项目在 https://github.com/Intel-bigdata/HLKVDS

参考 https://www.snia.org/sites/default/files/SDC/2017/presentations/Solid_State_Stor_NVM_PM_NVDIMM/Porter_Brien_A_New_Key-value_Data_Store_For_Heterogeneous_Storage_Architecture.pdf