注意
本文档适用于 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