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/
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可以通过配置存在在不同的磁盘或者小分区中。