EC Turbo特性使能
- 使能EC Turbo特性。
创建EC存储池请参考《Ceph对象存储 部署指南(CentOS 7.6&openEuler 20.03)》中的“创建存储池”相关内容。
- EC数据池的stripe_unit等于256KB。在k=4,m=2的条件下,条带大小(stripe_width)是1MB。EC Turbo对于1MB大小以内的IO有优化效果。
- EC Turbo使用了isa-l的纠删码库,创建“EC profile”时必须启用isa-l插件,即增加“plugin=isa”参数。同时修改“stripe_unit”为256KB。创建EC profile的命令不能使用参考文档中的命令,正确的创建EC profile的命令是:
ceph osd erasure-code-profile set myprofile k=4 m=2 crush-failure-domain=osd crush-device-class=hdd plugin=isa stripe_unit=256K
当集群的节点数量大于等于6(k+m)时,crush-failure-domain可以配置成host。
修改ceph.conf,在[global]中增加以下项目。这些参数可以在创建池的前后修改。
osd_ec_partial_read = true osd_ec_partial_write = true osd_ec_partial_update = true osd_ec_zero_opt = true bluestore_kpsallocator_enable = true
- partial read与 ec 的fast read 冲突。开启osd_ec_partial_read必须关闭osd_pool_default_ec_fast_read(该参数默认关闭),否则partial read无法生效。
- 上文中的五个参数的默认值为true。用户如果不在ceph.conf中添加这几个参数,系统将生效默认值。如需关闭EC Turbo特性,用户必须在ceph.conf中显示的将参数都改为false。
- 检查参数当前生效情况,可执行“ceph daemon osd.<OSD编号> config show | grep -E 'osd_ec_partial_read|osd_ec_partial_write|osd_ec_partial_update|osd_ec_zero_opt|bluestore_kpsallocator_enable'”命令。
- 配置EC Turbo相关日志参数“kpsec_log_fullpath”,“kpsec_log_level”,“kpsec_log_memlogsize”。
这些参数可以在ceph.conf的[global]区域中定义。如果用户没有定义这些参数,系统将使用默认值。
下面列出这些参数的默认值:[global] ...... kpsec_log_fullpath = /var/log/ceph/ kpsec_log_level = CRITICAL/DEBUG kpsec_log_memlogsize = 100 ......
- EC Turbo的主要业务封装在libkps_ec动态库。该动态库不使用Ceph的日志系统,所以需要新增日志。
- 一般情况下,Ceph的日志记录在“/var/log/ceph”目录里。如果定义其他目录,用户需要确保Ceph对应用户可以对该目录读写。
- 日志等级分为文件日志等级和内存日志等级,两个等级需要分别定义。一般情况下内存日志记录的内容比文件日志记录的更详细。日志等级必须在[CRITICAL=0,ERROR=1,WARNING=2,INFORMATION=3,DEBUG=4]中选择。mem_log_size的范围是100-1000。
- 用户在OSD进程运行时修改kpsec日志参数,需要重启OSD进程使之生效。
- 如果不方便重启OSD进程,可以使用“ceph tell osd.<OSD编号> injectargs --<参数名>=<参数值>”命令在线修改参数,之后执行“ceph tell osd.<OSD编号> reload_kps_conf”重载kpsec日志参数。
- 将ceph.conf推送到各个节点。
ceph-deploy --overwrite-conf admin {node1} {node2}
{nodeX}是Ceph的节点名,一条命令可以将ceph.conf推送到集群下的多个节点。推送完成后重启集群。
- 验证EC Turbo生效。
父主题: 使用指导