注意

本文档适用于 Ceph 的开发版本。

纠删码存储池

目的

与副本存储池相比,纠删码存储池需要更少的存储空间。纠删码支持有更高的计算要求,并且只支持对象操作的一个子集(例如,不支持部分写入)。

用例

冷存储

创建一个纠删码存储池来存储大量的 1GB 对象(图像、基因组学等),其中每月读取 10% 的对象。新对象每天都会添加,并且写入后不会修改。平均每 10,000 次读取有一次写入。

创建一个副本存储池并将其设置为纠删码存储池的缓存层。如果对象一周未被访问,则代理会降级对象(即将其从副本存储池移动到纠删码存储池)。

纠删码存储池的 CRUSH 规则针对高延迟和慢速访问时间的冷存储硬件。副本存储池的 CRUSH 规则针对更快的硬件以提供更好的响应时间。

廉价多数据中心存储

十个数据中心通过专用网络链接连接。每个数据中心包含相同数量的存储,没有备用电源,也没有空调系统。

创建一个纠删码存储池,其 CRUSH 规则可确保如果最多三个数据中心同时发生故障,则不会丢失数据。开销为 50%,纠删码配置为将数据分成六份(k=6)并创建三个编码块(m=3)。如果使用副本,开销将为 400%(四个副本)。

接口

设置纠删码存储池

$ ceph osd pool create ecpool erasure

设置纠删码存储池和相关的 CRUSH 规则 ecrule

$ ceph osd crush rule create-erasure ecrule
$ ceph osd pool create ecpool erasure default ecrule

将 CRUSH 故障域设置为 osd(而不是默认的 host)

$ ceph osd erasure-code-profile set myprofile \
    crush-failure-domain=osd
$ ceph osd erasure-code-profile get myprofile
k=2
m=2
plugin=isa
technique=reed_sol_van
crush-failure-domain=osd
$ ceph osd pool create ecpool erasure myprofile

控制纠删码插件的参数

$ ceph osd erasure-code-profile set myprofile \
    k=3 m=2
$ ceph osd erasure-code-profile get myprofile
k=3
m=2
plugin=isa
technique=reed_sol_van
$ ceph osd pool create ecpool erasure myprofile

选择备用纠删码插件

$ ceph osd erasure-code-profile set myprofile \
    plugin=example technique=xor
$ ceph osd erasure-code-profile get myprofile
k=2
m=2
plugin=example
technique=xor
$ ceph osd pool create ecpool 12 12 erasure \
    myprofile

显示默认纠删码配置文件

$ ceph osd erasure-code-profile ls
default
$ ceph osd erasure-code-profile get default
k=2
m=2
plugin=isa
technique=reed_sol_van

创建配置文件以设置将数据分配到六个 OSD 上(k+m=6)并承受三个 OSD 丢失(m=3)而不会丢失数据

$ ceph osd erasure-code-profile set myprofile k=3 m=3
$ ceph osd erasure-code-profile get myprofile
k=3
m=3
plugin=isa
technique=reed_sol_van
$ ceph osd erasure-code-profile ls
default
myprofile

删除不再使用的配置文件(否则会因 EBUSY 而失败)

$ ceph osd erasure-code-profile ls
default
myprofile
$ ceph osd erasure-code-profile rm myprofile
$ ceph osd erasure-code-profile ls
default

将规则设置为 ssd(而不是默认值)

$ ceph osd erasure-code-profile set myprofile \
    crush-root=ssd
$ ceph osd erasure-code-profile get myprofile
k=2
m=2
plugin=isa
technique=reed_sol_van
crush-root=ssd

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入