5.3. 使用覆盖擦除编码
默认情况下,纠删代码池仅可用于 Ceph 对象网关,后者执行完整的对象写入和附加。自红帽 Ceph 存储 3.x 起,可以逐个池启用纠删代码池的部分写入功能。
将纠删代码池与覆盖结合使用可让 Ceph 块设备和 CephFS 将其数据存储在纠删代码池中:
语法
ceph osd pool set <erasure_coded_pool_name> allow_ec_overwrites true
ceph osd pool set <erasure_coded_pool_name> allow_ec_overwrites true
示例
ceph osd pool set ec_pool allow_ec_overwrites true
$ ceph osd pool set ec_pool allow_ec_overwrites true
启用覆盖的纠删代码池只能驻留在使用 BlueStore OSD 的池中。由于 BlueStore 的校验和用于在深度清理过程中检测位或其他损坏。将 FileStore 与纠删代码覆盖结合使用不安全,与 BlueStore 相比会获得较低的性能。
纠删代码池不支持 omap。若要将纠删代码池与 Ceph 块设备和 CephFS 搭配使用,可将数据存储在纠删代码池中,并将元数据存储在复制池中。
对于 Ceph 块设备,在镜像创建过程中使用 --data-pool
选项:
语法
rbd create --size <image_size>M|G|T --data-pool <erasure_coded_pool_name> <replicated_pool_name>/<image_name>
rbd create --size <image_size>M|G|T --data-pool <erasure_coded_pool_name> <replicated_pool_name>/<image_name>
示例
rbd create --size 1G --data-pool ec_pool rep_pool/image01
$ rbd create --size 1G --data-pool ec_pool rep_pool/image01
如果将纠删代码池用于 CephFS,则必须通过文件布局设置覆盖。