1、目的
只有清楚了EC内部实现原理才知道如何调节EC参数来适配自己的场景
2、需要条带大小对齐么
1、需要
a) 条带整体大小较小,不对齐没有太大的收益
b)恢复、降级需要满条带读,因此全部对齐更方便
c) 读和写都条带对齐, 意味着不满一个条带的需要补足整个条带
d)条带对齐,意味着bluestore上单个对象要stripe_unit大小对齐
2、检验写对齐
a) 创建存储池3+2 对应ec stripe_unit为8k , 已知bluestore最小写入单元为4k
b)rados -p ... put 25k 25k, 第二个条带不满,条带对齐的话可以看到bluestore中单个对象大小为16k, 否则为12k(8+4)(其中4k为bluestore最小单元的补齐)
c) bluestore查看对象大小,需要先osd map obj查看对应所在osd, 停其中一个,再用 bluestoretool dump查看stat字段。 显示为16k,表示写入进行了条带对齐
。
3、结构图

图来自: https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/1.2.3/html/red_hat_ceph_architecture/ceph_client_architecture
3、推论
a)、因为需要对齐, 意味着可能浪费空间, stripe_unit以及k不要设置太大
b)、k、m相同情况下,stripe_unit太小会不会影响osd的性能。写入不会:bluestore写入不是按照unit大小进行写入, 而是objsize/stripe_count的大小进行。读取同理, 除非是范围读取,不过这种在rgw的场景下我想应该可以忽略。
c)、stripe_unit设置应为bluestore最小写入单元的倍数,否则也会存在浪费的问题
d)、rgw_stripe_size应该是stripe_unit的倍数,否则会存在浪费的问题
网友评论