1.查看默认配置
- k:这是分散到各个OSD的数据块的数据。默认值为2
- m:这是在数据变得不可用之前可能出现故障的OSD数据,默认值为2
- directory:此可选参数是插件库的位置。默认值为 /usr/lib64/eph/erasure-code
- plugin:此可选参数定义要使用纠删代码算法。默认值为 jerasure,但有其它插件可用,如Locally Repairable Erasure Code(LRC)和 ISA (仅Inter)
- crush-failure-domain:此可选参数定义CRUSH故障域,它控制区块放置。默认情况下,它设置为host,这可以确保对象的区块放置到不同主机的OSD上。如果设置为OSD,则对象的区块可以放置到同一主机的OSD上。将故障域设置为osd时弹性欠佳,因为如果主机出现故障,则该主机上的所有osd都会失败。可以定义其它故障域,以用于确保区块放置到数据中心中不同机架内主机上的osd上,或者进行其它类型的自定义。
- 再提一下,这是非常重要的!!!!
- 默认使用的是HOST,也就是将k与m都分散到不同的主机上,以确保安全性,但是!!!默认2+2是需要4台机器的,我们如果只有三台,那么纠删码创建必定报错。因为主机不够,怎么解决呢?如下解释
- 解决问题的方法就是不再使用HOST,而使用OSD,将k与m允许存放到同一台机器上的不同OSD上即可,但是这样也会出现不安全现象,当这台服务器宕机,所出现的情况将会是这台上所有k与m全部丢失,大大减低了安全性。
- crush-device-class:此可选参数选择仅将这一类别设备支持的OSD用于池。典型的类别可能包括hdd、ssd或nvme。
root@ceph01:~# ceph osd erasure-code-profile get default
k=2 # 数据块是2
m=2 # 编码块是2
# 所以需要总4块硬盘
plugin=jerasure # 纠删码插件
technique=reed_sol_van
2.创建纠删码池
- 这里采用的是OSD模式,不是HOST
- 默认使用的是HOST,如果不改默认故障转移域,那么会创建失败,因为需要5台机器,这里环境只有三台
ceph osd erasure-code-profile set ceph125 k=3 m=2 crush-failure-domain=osd
- 查看创建状态
ceph osd erasure-code-profile ls
ceph osd erasure-code-profile get ceph125
- 创建纠删码池
- 注意这里要使用上面设置纠删码配置的名称(ceph125)
ceph osd pool create ceph125-erasure 128 128 erasure ceph125
- 设置纠删池应用类型,这里配置为RBD
ceph osd pool application enable ceph125-erasure rbd
3.纠删码与副本池区别
- 纠删码写数据是比较慢的,因为需要算纠删码,消耗大量的CPU资源。但是不消耗空间,而副本池太消耗空间。
- 最大区别是纠删池节省空间,但速度慢于副本池。
4.删除纠删码
ceph osd erasure-code-profile rm ceph125
标签:ceph125,码池,纠删,删码,erasure,OSD,ceph,osd
From: https://www.cnblogs.com/wsxier/p/17024158.html