ceph bluestore

ceph bluestore是在newstore上去掉文件系统的实现,现在newstore已经废弃。

为什么bluestore?

  • More natural transaction atomicity
  • Avoid double writes
  • Efficient object enumeration
  • Efficient clone operation
  • Efficient splice (“move these bytes from object X to object Y”)
  • Efficient IO pattern for HDDs, SSDs, NVMe
  • Minimal locking, maximum parallelism (between PGs)
  • Full data and metadata checksums
  • Inline compression

上述是newstore的目标,但是并未全部实现,尤其是overwrite的情况,数据仍然需要wal,将其写入rocksdb,显然不是一个很好的方案。
bluestore上相应的实现如下:

  • 事务由kvdb提供,不再额外使用journal
  • object的元数据放入db,使用db接口实现enumeration
  • clone, splice,split collection只修改元数据
  • 使用裸盘,支持dio + aio,支持各种device
  • 使用裸盘之后,数据采用cow的方式写,数据片段化,可以对每个片段实现checksum
  • 在数据片上支持压缩


    ceph bluestore_第1张图片
    bluestore.png

rocksdb on raw

但是仅仅如此还不够,rocksdb on xfs也有额外的开销,为了去掉这部分开销。架构调整为:

ceph bluestore_第2张图片
ceph_bluestore.png

下面使用2个BlockDevice是因为Rocksdb支持wal和db数据的分离。

  • rocksdb本身实现也在改进,支持dio等,rocksdb on bluefs的实现有多大效果有待观测。

后续

目前bluestore的架构基本定型,但是仍然有很多地方急需改进。
空间管理,内存cache,meta layout, kvdb on raw 都有很大的发挥空间,结合业务特点对上述三大块可以做一些垂直优化。

你可能感兴趣的:(ceph bluestore)