5.3. 使用 Overwrites 进行擦除
默认情况下,纠删代码池只能使用 Ceph 对象网关,该网关执行完整的对象写入和附加。从 Red Hat Ceph Storage 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,那么设置覆盖必须在文件布局中完成。