签到成功

知道了

CNDBA社区CNDBA社区

自定义CRUSH-快慢存储搭配方案

2016-12-24 11:43 4519 0 原创 Ceph
作者: Expect-乐

方案介绍

  存储节点上既有SATA盘也有SSD盘或者是PCIE,就是把每台服务器上的SSD,PCIESATA分别整合成独立的存储池,以提供不同性能的存储。把对实时数据IO要求高的放入SSD存储池中。而对于备份,快照等数据,对IO性能要求较低的可以放入SATA盘。

硬件环境

存储节点主机名

Osd编号http://www.cndba.cn/Expect-le/article/1648

对应设备

存储类型

Ceph-osd1

O

Sdb

SSD

Ceph-osd1

1

Sdc

SATAhttp://www.cndba.cn/Expect-le/article/1648

Ceph-osd2

2

Sdbhttp://www.cndba.cn/Expect-le/article/1648http://www.cndba.cn/Expect-le/article/1648

SSD

http://www.cndba.cn/Expect-le/article/1648

Ceph-osd2

3

Sdchttp://www.cndba.cn/Expect-le/article/1648

SATA

和正常ceph安装没有区别,只是后期会修改CRUSH

部署环境

假设你已经部署好ceph了,ceph默认的CRUSH故障域是host级别

3.1  查看当前CRUSH

http://www.cndba.cn/Expect-le/article/1648

[root@ceph-osd1 ~]# ceph osd tree
ID  WEIGHT  TYPE NAME            UP/DOWN REWEIGHT PRIMARY-AFFINITY 
 -2 0.49988 root host                                         
 -4 0.1006     host ceph-osd1                                  
  0 0.04999         osd.0             up  1.00000          1.00000 
  1 0.04999         osd.1             up  1.00000          1.00000 
 -5 0.1006     host ceph-osd2                                 
  3 0.04999         osd.3             up  1.00000          1.00000 
  4 0.04999         osd.4             up  1.00000          1.00000

3.2  获取当前Crush Map

[root@ceph-osd1 ~]# ceph osd getcrushmap -o /tmp/cephcrushmap
got crush map from osdmap epoch 766


3.3  反编译Crush Map

因为/tmp/cephcrushmap是一个二进制文件,需要通过crushtool反编译为文本文件。

[root@ceph-osd1 ~]# crushtool -d /tmp/cephcrushmap > /tmp/cephcrushmap.txt

3.4  编辑Crush Map文件

3.4.1 设置SSD poolBuchet入口

新建一个root层级,命名为ssd,并且把SSD设备的OSD移到里面(保留OSD所属的HOST层级)

[root@ceph-osd1 ~]# cat /tmp/cephcrushmap.txt 
host ceph-osd1 {
id -4  # do not change unnecessarily
# weight 0.150   --权重可以忽略,ceph会根据OSD自动计算权重
alg straw
hash 0 # rjenkins1
item osd.0 weight 0.050   #SSD的OSD
}
host ceph-osd2 {
id -5  # do not change unnecessarily
# weight 0.150
alg straw
hash 0 # rjenkins1
item osd.2 weight 0.050   #SSD的OSD
}
root ssd {  #新建一个名为ssd的root bucket,最后SSD pool入口
id -2  # do not change unnecessarily
# weight 0.500
alg straw
hash 0 # rjenkins1
item ceph-osd1 weight 0.100
item ceph-osd2 weight 0.100
}

3.4.2 再把默认的root bucket 重命名为sata,并把SATAOSD移到sata里面

[root@ceph-osd1 ~]# cat /tmp/cephcrushmap.txt 
host ceph-osd1 {
id -4  # do not change unnecessarily
# weight 0.150   --权重可以忽略,ceph会根据OSD自动计算权重
alg straw
hash 0 # rjenkins1
item osd.1 weight 0.050   #SATA的OSD
}
host ceph-osd2 {
id -5  # do not change unnecessarily
# weight 0.150
alg straw
hash 0 # rjenkins1
item osd.3 weight 0.050   #SATA的OSD
}
root sata {  #新建一个名为ssd的root bucket,最后SSD pool入口
id -2  # do not change unnecessarily
# weight 0.500
alg straw
hash 0 # rjenkins1
item ceph-osd1 weight 0.100
item ceph-osd2 weight 0.100
}

3.5  设置rule规则

3.5.1 SSD pool添加rule

# rules
rule ssd {
ruleset 0
type replicated
min_size 1
max_size 10
step take ssd
step chooseleaf firstn 0 type host
step emit
}

3.5.2 SATA pool添加rule

http://www.cndba.cn/Expect-le/article/1648

http://www.cndba.cn/Expect-le/article/1648

# rules
rule sata {
ruleset 1
type replicated
min_size 1
max_size 10
step take sata
step chooseleaf firstn 0 type host
step emit
}

3.6  编译Crush Map文本文件为二进制文件

[root@ceph-osd1 ~]# crushtool -c /tmp/cephcrushmap.txt -o /tmp/cephcrushmap.new

3.7  把新的Crush Map应用于集群并生效

[root@ceph-osd1 ~]# ceph osd setcrushmap -i /tmp/cephcrushmap.new 
set crush map

3.8  查看CRUSH结构,确认新的Crush Map已经生效

[root@ceph-osd1 ~]# ceph osd tree
ID  WEIGHT  TYPE NAME            UP/DOWN REWEIGHT PRIMARY-AFFINITY 
 -2 0.49997  root ssd                                         
 -4 0.10009      host ceph-osd1                                   
  0 0.04999         osd.0             up  1.00000          1.00000 
 -4 0.10009      host ceph-osd2 
  1 0.04999         osd.2             up  1.00000          1.00000 
 -2 0.49997  root sata                                    
 -4 0.10009      host ceph-osd1 
  3 0.04999         osd.1             up  1.00000          1.00000 
 -4 0.10009      host ceph-osd2 
  4 0.04999         osd.3             up  1.00000          1.00000

3.9  创建SSDSATA存储池

[root@ceph-osd1 ~]# ceph osd pool create SSD 128 128
pool 'SSD' created
[root@ceph-osd1 ~]# ceph osd pool create SATA 128 128
pool 'SATA' created

3.10  为存储池指定合适的rule

[root@ceph-osd1 ~]# ceph osd pool set SSD crush_ruleset 0
[root@ceph-osd1 ~]# ceph osd pool set SATA crush_ruleset 1

3.11  查看rule是否生效

[root@ceph-osd1 ~]# ceph osd dump|grep -Ei "ssd|sata"
pool 24 'SSD' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 128 pgp_num 128 last_change 768 flags hashpspool stripe_width 0
#SSD pool的rule id是0
pool 25 'SATA' replicated size 3 min_size 2 crush_ruleset 1 object_hash rjenkins pg_num 128 pgp_num 128 last_change 770 flags hashpspool stripe_width 0
#SATA pool的rule id是1

到这里就全部OK了。http://www.cndba.cn/Expect-le/article/1648

 


版权声明:本文为博主原创文章,未经博主允许不得转载。

ceph CRUSH MAP

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Expect-乐

Expect-乐

关注

Without the continuous bitter cold, there can be no fragrant plum blossom

  • 336
    原创
  • 6
    翻译
  • 100
    转载
  • 41
    评论
  • 访问:1547974次
  • 积分:1957
  • 等级:核心会员
  • 排名:第4名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ