shec plugin封装了multiple SHEC库。它允许ceph比Reed Solomon codes更有效地恢复数据。
CREATE AN SHEC PROFILE
创建一个新的shec 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的数量。 |
c={durability-estimator}
1 | Description: 校验chunk的数量,每个data chunk都包含在计算范围内。该数字被用作耐久性估算。例如,如果c = 2,则可以在不丢失数据的情况下down掉2个OSD。 |
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。 |
BRIEF DESCRIPTION OF SHEC’S LAYOUTS
SPACE EFFICIENCY
Space efficiency是data chunks与object中所有chunks的比率,表示为k /(k + m)。为了提高space efficiency,您应该增加k或减少m。
1 | space efficiency of SHEC(4,3,2) = 4/(4+3) = 0.57 |
DURABILITY
SHEC(= c)的第三个参数是一个耐久性估算,它近似于在不丢失数据的情况下可以丢失OSD的数量。SHEC(4,3,2)的耐久性估算= 2
RECOVERY EFFICIENCY
描述recovery efficiency的计算超出了本文件的范围,但至少在不增加c的情况下增加m可以提高恢复效率。(但是,在这种情况下,我们必须牺牲space efficiency。)
SHEC(4,2,2)→SHEC(4,3,2):提高了recovery efficiency
ERASURE CODE PROFILE EXAMPLES
1 | $ ceph osd erasure-code-profile set SHECprofile \ |