2023-06-21 15:31:53 232阅读
BlueStore整体架构如下:
图1
RocksDBStore:封装了rocksdb。BlueStore中的元数据持久化到rocksdb,BlueStore的事物依赖rocksdb实现。
BlueFS:为对接rocksdb实现的最小文件系统,通过File、Dir、FileWriter、FileReader实现文件读取。BlueFS可以管理3类磁盘设备,分为BDEV_WAL、BDEV_DB、BDEV_SLOW。
Allocator:磁盘空间分配器,BlueStore最小分配单元为4k(SSD),64k(HDD),BlueFS最小分配单元为1M。默认实现为BitmapAllocator,还有StupidAllocator、AvlAllocator、HybridAllocator、ZonedAllocator等选择,通过配置bluestore_allocator和bluefs_allocator来修改。
KernelDevice:磁盘设备。默认实现为BlockDevice,还有PMEMDevice、NVMEDevice等选择。
BlueStore直接管理裸设备,没有文件系统,操作系统的page cache使用不上,所以需要自己管理元数据和数据的缓存。其管理结构如下:
图2
Collection:即OSD层的PG,数目比较少,全部缓存在coll_map unordered_map中。以前缀PREFIX_COLL持久化在db中。
Onode:对象元数据,部分缓存,存在Collection的OnodeSpace unordered_map中,默认使用lru。以前缀PREFIX_OBJ持久化在db中。
Extent:逻辑空间的off,len属性,对应Blob上的一片逻辑空间。
Blob:物理空间和逻辑空间的转换层,将物理空间上一片不连续的空间转为连续的逻辑空间。
pextent:物理空间的off,len属性,对应盘上真实空间。
Buffer:对象数据,部分缓存,以offset为key存在SharedBlob的BufferSpace map中,默认使用2q管理
BlueStore的写分为正常写和Deferred写,也有可能2者结合,如下图所示:
图3 Write
图4 DeferredWrite
2023-06-21 15:31:53 232阅读
BlueStore整体架构如下:
图1
RocksDBStore:封装了rocksdb。BlueStore中的元数据持久化到rocksdb,BlueStore的事物依赖rocksdb实现。
BlueFS:为对接rocksdb实现的最小文件系统,通过File、Dir、FileWriter、FileReader实现文件读取。BlueFS可以管理3类磁盘设备,分为BDEV_WAL、BDEV_DB、BDEV_SLOW。
Allocator:磁盘空间分配器,BlueStore最小分配单元为4k(SSD),64k(HDD),BlueFS最小分配单元为1M。默认实现为BitmapAllocator,还有StupidAllocator、AvlAllocator、HybridAllocator、ZonedAllocator等选择,通过配置bluestore_allocator和bluefs_allocator来修改。
KernelDevice:磁盘设备。默认实现为BlockDevice,还有PMEMDevice、NVMEDevice等选择。
BlueStore直接管理裸设备,没有文件系统,操作系统的page cache使用不上,所以需要自己管理元数据和数据的缓存。其管理结构如下:
图2
Collection:即OSD层的PG,数目比较少,全部缓存在coll_map unordered_map中。以前缀PREFIX_COLL持久化在db中。
Onode:对象元数据,部分缓存,存在Collection的OnodeSpace unordered_map中,默认使用lru。以前缀PREFIX_OBJ持久化在db中。
Extent:逻辑空间的off,len属性,对应Blob上的一片逻辑空间。
Blob:物理空间和逻辑空间的转换层,将物理空间上一片不连续的空间转为连续的逻辑空间。
pextent:物理空间的off,len属性,对应盘上真实空间。
Buffer:对象数据,部分缓存,以offset为key存在SharedBlob的BufferSpace map中,默认使用2q管理
BlueStore的写分为正常写和Deferred写,也有可能2者结合,如下图所示:
图3 Write
图4 DeferredWrite