BlueStore
对象可以直接存放在裸盘上,不需要任何文件系统接口。
原理
BlueStore 直接使用一个原始分区,ceph对象将直接写在块设备上,不再需要任何的文件系统;和osd一起进来的元数据将存储在 一个 名为 RocksDB 的键值对 数据库;
各层意义:
RocksDB :存储 WAL 日志和元数据(omap)
BlueRocksEnv: 与RocksDB 交互的接口
BlueFS : 一个类似文件系统的 mini C++,使 rocksdb 生效,ENv 接口(存储 RocksDB 日志和 sst 文件);
因为rocksdb 一般跑在一个文件系统的上层,所以创建了 BlueFS。
这是一个后端层,RocksDB的数据存储在 BlueStore用于存放自己数据的块设备上。
RocksDB 存放的数据类型:
对象的元数据
write-ahead 日志
ceph omap 数据
allocator metadata(元数据分配器):决定数据存放位置;此功能可插拔
默认BlueStore模型:
第一个小分区(XFS或者ext4),包括ceph files
(init system descriptor,status,id,fsid,keyring 等)
和RocksDB 文件
第二个分区是一个原始分区
优点:
每一部分都可以存放在不同的磁盘中,RocksDB WAL 和 DB 可以存放在不同的磁盘或者小分区中