bluestore压缩设置

fio写入磁盘

1
fio -ioengine=rbd -rbdname=disk01 -clientname=admin -pool=rbd-com -rw=write -bs=4m -size=100G -iodepth=32 -numjobs=1  -group_reporting -name=file

bluestore数据压缩参数

全局设置

可以在ceph集群中配置如下参数,并将其用于所有的OSD儿不是单个pool。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1 bluestore_compression_algorithm  //算法包括snappy、none、zstd、zlib、lz4,默认值是snappy
压缩算法的使用场景可以分为以下几个场景:
如果需要较好的压缩率,请使用 zstd。注意,由于 zstd 在压缩少量数据时 CPU 开销较高,建议不要将其用于 BlueStore。
如果需要较低的 CPU 使用率,请使用 lz4 或 snappy。
针对实际数据的样本运行这些算法的基准测试,观察集群的 CPU 和内存使用率。

2 bluestore_compression_mode // mode包括none、aggressive、passive、force,默认值是none
none:从不压缩
passive:如果提示 COMPRESSIBLE,则压缩。
aggressive:除非提示 INCOMPRESSIBLE,才压缩
force:始终压缩

3 bluestore_compression_required_ratio 默认值是.875
由于净增益低,存储高于此比例的对象时不会被压缩

bluestore_compression_min_blob_size 默认值是0
小于该值的块不能压缩
bluestore_compression_max_blob_size 默认值是0
大于该值的块分片处理压缩
bluestore_compression_min_blob_size_ssd 默认值是 8k
小于该值的块不能压缩
bluestore_compression_max_blob_size_ssd 默认值是 64K
大于该值的块分片处理压缩
bluestore_compression_min_blob_size_hdd 默认值是128k
小于该值的块不能压缩
bluestore_compression_max_blob_size_hdd 默认值是512k
大于该值的块分片处理压缩

设置上述配置有如下的命令

1
2
3
4
ceph tell mon.* injectargs '--bluestore_compression_algorithm algorithm '
ceph tell mon.* injectargs '--bluestore_compression_mode mode'
ceph tell mon.* injectargs '--bluestore_compression_ratio ratio'
ceph tell mon.* injectargs '--bluestore_compression_min_blob_size_hdd size_num'

pool配置

算法设置 compression_algorithm

提供的算法有:snappy、none、zstd、zlib、lz4,默认值是snappy
设置算法的命令为:

1
ceph osd pool set <pool-name> compression_algorithm <algorithm>

mode设置 compression_mode

提供的模式有:none, passive, aggressive, force,默认值是none。
设置mode的命令为:

1
ceph osd pool set <pool-name> compression_mode <mode>

ratio设置 compression_required_ratio

默认的ratio为0.875
设置ratio的命令为:

1
ceph osd pool set <pool-name> compression_required_ratio <ratio>

blob_size设置

compression_min_blob_size的默认值为0;
compression_max_blob_size的默认值为0
设置的命令为:

1
2
ceph osd pool set <pool-name> compression_min_blob_size <size>
ceph osd pool set <pool-name> compression_max_blob_size <size>

查看压缩参数配置的命令如下:

1
2
3
4
5
ceph osd pool get <pool-name> compression_algorithm 
ceph osd pool get <pool-name> compression_mode
ceph osd pool get <pool-name> compression_required_ratio
ceph osd pool get <pool-name> compression_min_blob_size
ceph osd pool get <pool-name> compression_max_blob_size

pool池的配置级别高于集群配置

查看每个osd上压缩的结果

1
ceph daemon osd.0 perf dump | grep compress

查看集群压缩配置参数的命令

1
2
3
4
5
6
7
8
9
10
[root@172e18e211e38 ljw]# ceph daemon mon.172e18e211e38 config show | grep bluestore_compression
"bluestore_compression_algorithm": "snappy",
"bluestore_compression_max_blob_size": "0",
"bluestore_compression_max_blob_size_hdd": "524288",
"bluestore_compression_max_blob_size_ssd": "65536",
"bluestore_compression_min_blob_size": "0",
"bluestore_compression_min_blob_size_hdd": "4096",
"bluestore_compression_min_blob_size_ssd": "8192",
"bluestore_compression_mode": "none",
"bluestore_compression_required_ratio": "0.875000",