图解Ceph_002_BlueStore主要组件

CEPH VERSION: Quincy 17.2.6


BlueStore组件类.png

FreelistManagerAllocator相对以前有一些较大的变化

  • 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的事务流转

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容