作者:【吴业亮】
博客:https://wuyeliang.blog.csdn.net/
开篇:
目前企业的业务场景多种多样,并非所有Ceph存储解决方案都是相同的,了解工作负载和容量要求对于设Ceph解决方案至关重要。Ceph可帮助企业通过统一的分布式集群提供对象存储、块存储或文件系统存储。在设计流程中,这些集群解决方案针对每项要求都进行了优化。该设计流程的首要因素包括 IOPS 或带宽要求、存储容量需求以及架构和组件选择,确保这些因素的合理性有助于完美平衡性能和成本。不同类型的工作负载需要不同的存储基础设施方案。
下面将从以下6个方面介绍ceph的通用解决方案
1、如何ssd作为Ceph-osd的日志盘使用
2、如何同一个Ceph集群分别创建ssd和hdd池
3、如何将ssd作为hdd的缓存池
4、如何指定ssd盘为主osd,hdd为从osd
5、Ceph双副本如何保证宕机数据的安全性
6、Ceph纠删码理论与实践
注意:该文章同时在华云数据官方公众号上发布过
智汇华云 | Ceph的正确玩法之同一个Ceph集群分别创建SSD和HDD池(存储快慢池)
下面我们开始专题一:如何同一个Ceph集群分别创建ssd和hdd池
存储快慢池
场景:
存储节点上既有SATA盘也有SSD盘,把各节点的SSD和SATA分别整合成独立的存储池,为不同的应用供给不同性能的存储。比如常见的云环境中的虚拟机实例,对于实时数据IO性能要求高,并且都是热数据,可以把这部分的存储需求放入SSD的存储池里;而对于备份、快照等冷数据应用,相对IO性能需求比较低,因此将其可以放在普通的由SATA盘组成的存储池里。
方法: Luminous版本的ceph新增了一个crush class的功能,可以为新增的设备指定为类,创建rule的时候直接指定class即可。 创建一个磁盘类型的class,给磁盘标记class的统一标签,自动会根据class的类型创建一个树,根据树创建rule,根据rule创建存储池,整个操作没有动crushmap的操作 增加或修改盘的时候,设置下属性即可
该方案的优点:
该方案的优点为充分利用SSD设备高性能的优势,将关键性业务或者IO敏感型业务全部放入高性能存储池,为客户提供性能优越的存储服务。
该方案的缺点:
该方案的缺点为受到成本限制,高性能存储池存储容量规模会比较小,只能针对性地对少数关键性业务或者IO敏感型业务进行服务质量保障,且业务一经规划部署至某个存储池后,不能在两个存储池之间进行自动转换,后期进行调整开销较大。
修改前集群拓扑:
[root@storage1 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.52734 root default
-3 0.17578 host storage1
0 hdd 0.07809 osd.0 up 1.00000 1.00000
3 hdd 0.09769 osd.3 up 1.00000 1.00000
-5 0.17578 host storage2
1 hdd 0.07809 osd.1 up 1.00000 1.00000
4 hdd 0.09769 osd.4 up 1.00000 1.00000
-7 0.17578 host storage3
2 hdd 0.07809 osd.2 up 1.00000 1.00000
5 hdd 0.09769 osd.5 up 1.00000 1.00000
查看class类型
[root@storage1 ~]# ceph osd crush class ls
[
"hdd"
]
删除默认的class
[root@storage1 ~]# for i in {0..5} ; do ceph osd crush rm-device-class osd.$i;done
done removing class of osd(s): 0
done removing class of osd(s): 1
done removing class of osd(s): 2
done removing class of osd(s): 3
done removing class of osd(s): 4
done removing class of osd(s): 5
[root@storage1 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.52734 root default
-3 0.17578 host storage1
0 0.07809 osd.0 up 1.00000 1.00000
3 0.09769 osd.3 up 1.00000 1.00000
-5 0.17578 host storage2
1 0.07809 osd.1 up 1.00000 1.00000
4 0.09769 osd.4 up 1.00000 1.00000
-7 0.17578 host storage3
2 0.07809 osd.2 up 1.00000 1.00000
5 0.09769 osd.5 up 1.00000 1.00000
将osd编号0-2标记为SAS
for i in 0 1 2;do ceph osd crush set-device-class sas osd.$i;done
[root@storage1 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.52734 root default
-3 0.17578 host storage1
3 0.09769 osd.3 up 1.00000 1.00000
0 sas 0.07809 osd.0 up 1.00000 1.00000
-5 0.17578 host storage2
4 0.09769 osd.4 up 1.00000 1.00000
1 sas 0.07809 osd.1 up 1.00000 1.00000
-7 0.17578 host storage3
5 0.09769 osd.5 up 1.00000 1.00000
2 sas 0.07809 osd.2 up 1.00000 1.00000
[root@storage1 ~]# ceph osd crush class ls
[
"sas"
]
将osd编号3-5标记为ssd
[root@storage1 ~]# for i in {3..5} ;do ceph osd crush set-device-class ssd osd.$i;done
set osd(s) 3 to class 'ssd'
set osd(s) 4 to class 'ssd'
set osd(s) 5 to class 'ssd'
[root@storage1 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.52734 root default
-3 0.17578 host storage1
0 sas 0.07809 osd.0 up 1.00000 1.00000
3 ssd 0.09769 osd.3 up 1.00000 1.00000
-5 0.17578 host storage2
1 sas 0.07809 osd.1 up 1.00000 1.00000
4 ssd 0.09769 osd.4 up 1.00000 1.00000
-7 0.17578 host storage3
2 sas 0.07809 osd.2 up 1.00000 1.00000
5 ssd 0.09769 osd.5 up 1.00000 1.00000
[root@storage1 ~]# ceph osd crush class ls
[
"sas",
"ssd"
]
创建个ssd规则:
[root@storage1 ~]# ceph osd crush rule create-replicated rule-ssd default host ssd
[root@storage1 ~]# ceph osd crush rule create-replicated rule-sas default host sas
格式如下:
ceph osd crush rule create-replicated
[root@storage1 ~]# ceph osd crush rule ls
replicated_rule
rule-ssd
创建一个使用该rule-ssd规则的存储池:
[root@storage1 ~]# ceph osd pool create ssdpool 64 64 rule-ssd
pool 'ssdpool' created
创建一个使用该rule-sas规则的存储池:
[root@storage1 ~]# ceph osd pool create saspool 64 64 rule-sas
pool 'saspool' created
查看ssdpool的信息可以看到使用的crush_rule 为1,也就是rule-ssd
[root@storage1 ~]# ceph osd pool ls detail | grep ssdpool
pool 6 'ssdpool' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 last_change 219 flags hashpspool stripe_width 0
[root@storage1 ~]# ceph osd pool ls detail | grep saspool
pool 7 'saspool' replicated size 3 min_size 2 crush_rule 2 object_hash rjenkins pg_num 64 pgp_num 64 last_change 223 flags hashpspool stripe_width 0
参考:
http://www.zphj1987.com/2017/06/28/ceph-luminous-new-osd-class/