jerasure plugin是最通用和灵活的插件,它也是Ceph erasure coded pools的默认设置。
jerasure plugin封装了Jerasure库。建议阅读Jelasure文档以更好地理解参数。
CREATE A JERASURE PROFILE
创建新的jerasure erasure code profile:
1 | ceph osd erasure-code-profile set {name} \ |
其中:
k={data chunks}
1 | Description: 每个object都分为多个data-chunks parts,每个part存储在不同的OSD上。 |
m={coding-chunks}
1 | Description: 计算每个object的coding chunks并将它们存储在不同的OSD上。coding chunks的数量也是在不丢失数据的情况下,允许损失OSD的数量。 |
technique={reed_sol_van|reed_sol_r6_op|cauchy_orig|cauchy_good|liberation|blaum_roth|liber8tion}
1 | Description: 更灵活的technique是reed_sol_van:只需要设置k和m。cauchy_good technique可以更快但您需要调优packetsize。reed_sol_r6_op,liberation,blaum_roth,liber8tion都与RAID6等价,因为它们只能配置m=2。 |
packetsize={bytes}
1 | Description: encoding将在一次bytes大小的packets上完成。选择合理的packet大小是困难的。Jeasure文档包含了关于这个topic的大量信息。 |
crush-root={root}
1 | Description: crush bucket名字用于CRUSH rule的first step。"take"为step的默认值。 |
crush-failure-domain={bucket-type}
1 | Description: 确保不要有两个chunks位于相同故障域的bucket中。例如,如果故障域是host,则不会在同一主机上存储两个chunks。它用于创建CRUSH rule step,比如step chooseleaf host。 |
crush-device-class={device-class}
1 | Description: 使用CRUSH map中的crush device class名称,限定存储到特定class devices(例如SSD或HDD)。 |
directory={directory}
1 | Description: 设置加载erasure code plugin的目录名。 |
–force
1 | Description: 以相同的名称重写已经存在的profile。 |