ceph 后端存储的类型

ceph 后端支持多种存储引擎,以插件式的方式来进行管理使用,目前支持 filestore kvstore memstore 以及最新的 bluestore ,目前默认使用的 filestore ,但是因为 filestore 在写数据前需要先写 journal ,会有一倍的写放大,并且 filestore 一开始只是对于机械盘进行设计的,没有专门针对 ssd 做优化考虑,因此诞生的 bluestore 初衷就是为了减少写放大,并针对 ssd 做优化,而且直接管理裸盘,从理论上进一步减少文件系统如 ext4/xfs 等部分的开销,目前 bluestore 还处于开发优化阶段,在 jewel 版本还是试用版本,并且最新的 master 相比 jewel 已经做了大的重构,预期会在后续的大版本中稳定下来成为默认的存储引擎。

Jewel 版本默认:
filestore:
cd /var/lib/ceph/osd/ceph-1/

lrwxrwxrwx   1 ceph ceph    58 11月  1 19:10 journal -> /dev/disk/by-partuuid/39703bdc-258e-4ffa-b44a-fe67d9aa9d69

-rw-r--r--   1 ceph ceph    37 11月  1 19:10 journal_uuid


luminous 版本默认:

cd /var/lib/ceph/osd/ceph-1/

bluestore:

lrwxrwxrwx 1 ceph ceph  58 11月 17 19:19 block -> /dev/disk/by-partuuid/7aaaf2f9-3673-4488-a4af-f1e13c3fb5c3

-rw-r--r-- 1 ceph ceph  37 11月 17 19:19 block_uuid


Ceph Jewel版本的一个重大更新是开始支持使用bluestore作为objectstore,用于代替之前的filestore。与filestore最大的不同是,bluestore可以直接读写磁盘,即对象数据是直接存放在裸设备上的,这样解决了一直被抱怨的数据双份写的问题。需要说明的是,bluestore尚处于开发阶段,Jewel虽然已经集成,但还是处于试验阶段,应该要到L版才能真正生产可用。

原理:

Bluestore直接使用一个原始分区来存放ceph对象数据,不再需要任何文件系统,也就是说一个OSD对应一个裸分区;而OSD的元数据存放在一个名为RocksDB的键值对数据库中。

默认的Bluestore数据存放模型:

一个OSD对应一个磁盘,磁盘的第一个分区:默认只有100MB,XFS文件系统,用于存放osd相关的 ceph_fsid、fsid、keyring等,并且其中包含一个名为block的软连接,用于指向第二个分区,默认挂载到/var/lib/ceph/osd/ceph-X位置。

第二个分区:原始分区,第一个分区中的block软连接指向的就是这个分区,这个分区是真正存放对象数据的分区。

 RocksDB存放的数据类型:

对象的元数据

write-ahead日志

ceph omap数据

allocator metadata(元数据分配器):决定数据存放位置

注:RocksDB的WAL和DB可以通过配置存在在不同的磁盘或者小分区中。


你可能感兴趣的:(ceph)