CEPH VERSION: Quincy 17.2.6
BlueStore组件类.png
FreelistManager
和Allocator
相对以前有一些较大的变化
-
FreelistManager
以前老的版本,默认是bitmap类型,现在是多了zoned类型,用于支持新的HM-SMR硬盘。默认情况还是使用BitmapFreelistManager,但是在下面的情况满足时,BitmapFreelistManager啥也不做,意味着不会再将freelist信息保存到RocksDB中
!is_db_rotational() // SSD
&& !read_only // 读写模式
&& !to_repair // 非修复模式
&& cct->_conf->bluestore_allocation_from_file //配置打开
&& !bdev->is_smr() // blcok设备不是smr硬盘
bluestore_allocation_from_file在现在版本默认是true,在SSD硬盘情况下,上面的条件一般是满足的。满足条件时,会使用BlueFS中的一个allocation file来保存分配信息。还不是非常理解这么做如何保证事务原子性,猜测可能是为了省略RocksDB的调用栈,直接操作BlueFS文件以提升性能。
-
Allocator
注意现在的默认类型是HybridAllocator,此类型是16版本新的AvlAllocator的子类型。默认情况下,允许AvlAllocator使用不超过64MB内存来记录分配信息,当过多而需要溢出时,则HybridAllocator会启用一个BitmapAllocator成员,由它来继续管理溢出部分的分配信息,相当于退回传统的RocksDB管理模式。我想这依然是一个为了性能而作的努力。
其余组件跟以前大致相同,不展开了。
下一篇继续探索BlueStore的事务流转