5.3. 使用 Overwrites 的纠删代码
默认情况下,纠删代码池仅适用于 Ceph 对象网关,后者执行完整的对象写入和附加。
使用带有覆盖的纠删代码池允许 Ceph 块设备,CephFS 将其数据存储在纠删代码池中:
语法
ceph osd pool set ERASURE_CODED_POOL_NAME allow_ec_overwrites true
示例
[ceph: root@host01 /]# ceph osd pool set ec_pool allow_ec_overwrites true
启用带有覆盖的纠删代码池只能驻留在使用 BlueStore OSD 的池中。因为 BlueStore 的校验和用于在深度清理过程中检测位 rot 或其他崩溃。
纠删代码池不支持 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
示例
[ceph: root@host01 /]# rbd create --size 1G --data-pool ec_pool rep_pool/image01
如果将纠删代码池用于 CephFS,那么必须在文件布局中设置覆盖。