Ceph的BlueStore总体介绍
整体架构
- 去掉journal,直接管理裸设备
- 针对SSD进行单独优化
模块划分
核心模块
- RocksDB: 存储预写式日志、数据对象元数据、Ceph的omap数据信息、以及分配器的元数据(分配器负责决定真正的数据应在什么地方存储)
- BlueRocksEnv: 与RocksDB交互的接口
- BlueFS: 小的文件系统,解决元数据、文件空间及磁盘空间的分配和管理,并实现了rocksdb::Env 接口(存储RocksDB日志和sst文件)。因为rocksdb常规来说是运行在文件系统的顶层,下面是BlueFS。 它是数据存储后端层,RocksDB的数据和BlueStore中的真正数据被存储在同一个块物理设备
- HDD/SSD: 物理块设备,存储实际的数据
缓存模块
FreelistManager模块
Allocator模块
bluestore元数据
I/O读写映射逻辑
写I/O处理
- do_write_big
- do_write_small
读I/O的处理
总结
--------------------- 本文来自 OshynSong 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u010487568/article/details/79572390?utm_source=copy
bluestore 分区:
block.wal:用于BlueStore的内部日志或写前日志 ssd
block.db:用于存储BlueStore的内部元数据,基于RocksDB实现,类似索引提高性能 ssd
根分区:1.一个小的分区使用XFS进行格式化,并包含OSD的基本元数据。这个数据目录包含关于OSD的信息(它的标识符,它属于哪个集群,以及它的私有密匙环)。
2.设备的其余部分通常是一个大的分区,它占用了由BlueStore直接管理的设备的其余部分,其中包含所有实际的数据。
顺序:wal>db>根
配置:
bluestore_cache_size 每个OSD为BlueStore的缓存所消耗的内存总量 默认为0 如果设置为0 ,hdd和ssd被使用
bluestore_cache_size_ssd ssd占用内存量 默认1gb
bluestore_cache_size_hdd hdd占用内存量 默认3gb
bluestore_cache_meta_ratio bluestore metadate缓存比率 默认0.01
bluestore_cache_kv_ratio kv metadata缓存比率 默认0.99
bluestore_cache_kv_max kv metadata占用最大内存量 默认512 MB
用于数据的缓存的比例是1.0减去元数据和kv比率
校验
bluestore_csum_type 校验类型 默认为crc32c,适合于大多数用途。可选项为none, crc32c, crc32c_16, crc32c_8, xxhash32, xxhash64
用法:ceph osd pool set <pool-name> csum_type <algorithm>
选择crc32c_16或crc32c_8作为校验和算法,可以使用较小的校验和值
内部压缩
BlueStore使用snappy、zlib或lz4支持内联压缩。lz4压缩插件没有在正式版本中发布。
mode:
none:没有压缩数据。
passive:不要压缩数据,除非写入操作是可压缩的提示集。
aggressive:压缩数据,除非写入操作是不可压缩的提示集。
force:无论如何都要压缩数据。
不管模式如何,如果数据块的大小没有足够的减少,它就不会被使用,原始的(未压缩的)数据将被存储。例如,如果bluestore压缩所需的比率被设置为.7 那么压缩后的数据必须是原始数据的70%(或更小)
用法:
ceph osd pool set <pool-name> compression_algorithm <algorithm> 压缩算法ceph osd pool set <pool-name> compression_mode <mode> 压缩模式ceph osd pool set <pool-name> compression_required_ratio <ratio> 压缩比率ceph osd pool set <pool-name> compression_min_blob_size <size> 最小blob大小ceph osd pool set <pool-name> compression_max_blob_size <size>最大blob大小
配置(当单独设置时按osd的定制设置为准):
bluestore compression algorithm lz4, snappy, zlib, zstd 默认snappy bluestore不推荐zstd
bluestore compression mode none, passive, aggressive, force 默认none
bluestore compression required ratio 默认0.875
bluestore compression min blob size 小于它的块不会被压缩 默认0
bluestore compression min blob size hdd 默认128k
bluestore compression min blob size ssd 默认8k
bluestore compression max blob size 大于它的块在压缩前会被拆成更小的块 默认0
bluestore compression max blob size hdd 默认512k
bluestore compression max blob size ssd 默认64k
spdk用法:
如果采用支持vnme协议的ssd,需要配置 bluestore_block_path.
用法:
lspci -vvv -d 8086:0953 | grep "Device Serial Number"
bluestore block path = spdk:...
---------------------
作者:Law37
来源:CSDN
原文:https://blog.csdn.net/qq_30339341/article/details/78812687
版权声明:本文为博主原创文章,转载请附上博文链接!