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软连接指向的就是这个分区,这个分区是真正存放对象数据的分区。