ceph bluestore是在newstore上去掉文件系統(tǒng)的實(shí)現(xiàn),現(xiàn)在newstore已經(jīng)廢棄。
為什么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的目標(biāo),但是并未全部實(shí)現(xiàn),尤其是overwrite的情況,數(shù)據(jù)仍然需要wal,將其寫入rocksdb,顯然不是一個(gè)很好的方案。
bluestore上相應(yīng)的實(shí)現(xiàn)如下:
- 事務(wù)由kvdb提供,不再額外使用journal
- object的元數(shù)據(jù)放入db,使用db接口實(shí)現(xiàn)enumeration
- clone, splice,split collection只修改元數(shù)據(jù)
- 使用裸盤,支持dio + aio,支持各種device
- 使用裸盤之后,數(shù)據(jù)采用cow的方式寫,數(shù)據(jù)片段化,可以對(duì)每個(gè)片段實(shí)現(xiàn)checksum
-
在數(shù)據(jù)片上支持壓縮
bluestore.png
rocksdb on raw
但是僅僅如此還不夠,rocksdb on xfs也有額外的開銷,為了去掉這部分開銷。架構(gòu)調(diào)整為:
ceph_bluestore.png
下面使用2個(gè)BlockDevice是因?yàn)镽ocksdb支持wal和db數(shù)據(jù)的分離。
- rocksdb本身實(shí)現(xiàn)也在改進(jìn),支持dio等,rocksdb on bluefs的實(shí)現(xiàn)有多大效果有待觀測(cè)。
后續(xù)
目前bluestore的架構(gòu)基本定型,但是仍然有很多地方急需改進(jìn)。
空間管理,內(nèi)存cache,meta layout, kvdb on raw 都有很大的發(fā)揮空間,結(jié)合業(yè)務(wù)特點(diǎn)對(duì)上述三大塊可以做一些垂直優(yōu)化。