Ceph BlueStore Allocator

Ceph BlueStore的Allocator负责内存中分配磁盘空间,采用StupidAllocator或BitMapAllocator,仅做内存标记,实际持久化由使用者完成。BlueFS通过日志文件管理,而BlueStore借助FreelistManager。Allocator的使用者需在合适时机持久化磁盘空间信息。
摘要由CSDN通过智能技术生成

疑问1:为什么有了FreelistManager还需要Allocator

问题澄清

1、BlueFS不用FreelistManager管理块设备空间的使用情况,而是将其持久化记录在文件系统的日志文件中
2、BlueStore自己的slow空间(存放data),当写object文件的时候,先通过Allocator分配磁盘存储空间,仅仅在内存中将空间标记为已分配,并封装在写操作的事务中,待后续完成写操作的时候,才会更新FreelistManger的空闲空间,并将对象的磁盘空间信息记录在对象的metadata中。不同的写case(new/cow/overwrite),封装的事务也不同,目的是保证数据的一致性,所以磁盘空间的管理和写操作是密切相关的,不能简单的调用FreelistManager的接口完事。
综上:
Allocator只负责在内存中将空闲空间标记为已分配,最终磁盘空间使用情况的持久化操作,由Allocator的使用者负责,BlueFS将其记录在文件系统的日志中,BlueStore通过FreelistManager将其存储在k/v中,并在对象metadata中记录对象的磁盘空间信息。

目前系统中有StupidAllocator(基于extent)和BitMapAllocator两种实现,最开始用的Stupid,后来换成BitMap,但是最近因为性能问题又将默认的改回Stupid
在这里插入图片描述

疑问2:逻辑段和位图区别

1、当管理内存较大时,使用逻辑段可以节省内存空间
例如:位图每个位控制一个4K block,每个逻辑点的地址消耗为(64offset+64length)128位,,所以如果以最小逻辑块管理内存,位图消耗空间是逻辑段的128倍。
但是逻辑段指定地址可以动态设置,当物理内存特别大时,使用逻辑段可以用更小的内存,管理更大的物理空间。
2、位图查找速度快
1G空间需要消耗256kb内存管理,获取空闲地址时可以直接按位取反。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值