定制化crush map简单实验

首先,查看原始osd目录树

[root@bgw-os-node151 ~]# ceph osd tree

# id    weight  type name       up/down reweight

-1      3.24    root default

-5      1.08            rack rack1

-2      1.08                    host bgw-os-node151

0       0.27                            osd.0   up      1

1       0.27                            osd.1   up      1

2       0.27                            osd.2   up      1

3       0.27                            osd.3   up      1

-6      1.08            rack rack2

-3      1.08                    host bgw-os-node152

4       0.27                            osd.4   up      1

5       0.27                            osd.5   up      1

6       0.27                            osd.6   up      1

7       0.27                            osd.7   up      1

-7      1.08            rack rack3

-4      1.08                    host bgw-os-node153

8       0.27                            osd.8   up      1

9       0.27                            osd.9   up      1

10      0.27                            osd.10  up      1

11      0.27                            osd.11  up      1

导出现有的crush map信息

[root@bgw-os-node151 ~]# ceph osd getcrushmap -o crushmap.obj

got crush map from osdmap epoch 98

对导出的map文件进行反编译

[root@bgw-os-node151 ~]# crushtool -d crushmap.obj -o decrushmap.obj

修改map信息

[root@bgw-os-node151 ~]# vim decrushmap.obj    #修改对象的权重,注意需要反编译后才能查看

<这里修改了bgw-os-node152和bgw-os-node153上osd的权重。>

# begin crush map

tunable choose_local_tries 0

tunable choose_local_fallback_tries 0

tunable choose_total_tries 50

tunable chooseleaf_descend_once 1


# devices

device 0 osd.0

device 1 osd.1

device 2 osd.2

device 3 osd.3

device 4 osd.4

device 5 osd.5

device 6 osd.6

device 7 osd.7

device 8 osd.8

device 9 osd.9

device 10 osd.10

device 11 osd.11


# types

type 0 osd

type 1 host

type 2 chassis

type 3 rack

type 4 row

type 5 pdu

type 6 pod

type 7 room

type 8 datacenter

type 9 region

type 10 root


# buckets

host bgw-os-node151 {

        id -2           # do not change unnecessarily

        # weight 1.080

        alg straw

        hash 0  # rjenkins1

        item osd.0 weight 0.270

        item osd.1 weight 0.270

        item osd.2 weight 0.270

        item osd.3 weight 0.270

}

rack rack1 {

        id -5           # do not change unnecessarily

        # weight 1.080

        alg straw

        hash 0  # rjenkins1

        item bgw-os-node151 weight 1.080

}

host bgw-os-node152 {

        id -3           # do not change unnecessarily

        # weight 1.080

        alg straw

        hash 0  # rjenkins1

        item osd.4 weight 0.540

        item osd.5 weight 0.540

        item osd.6 weight 0.540

        item osd.7 weight 0.540

}

rack rack2 {

        id -6           # do not change unnecessarily

        # weight 1.080

        alg straw

        hash 0  # rjenkins1

        item bgw-os-node152 weight 1.080

}

host bgw-os-node153 {

        id -4           # do not change unnecessarily

        # weight 1.080

        alg straw

        hash 0  # rjenkins1

        item osd.8 weight 0.360

        item osd.9 weight 0.360

        item osd.10 weight 0.360

        item osd.11 weight 0.360

}

rack rack3 {

        id -7           # do not change unnecessarily

        # weight 1.080

        alg straw

        hash 0  # rjenkins1

        item bgw-os-node153 weight 1.080

}

root default {

        id -1           # do not change unnecessarily

        # weight 3.240

        alg straw

        hash 0  # rjenkins1

        item rack1 weight 1.080

        item rack2 weight 1.080

        item rack3 weight 1.080

}


# rules

rule replicated_ruleset {

        ruleset 0

        type replicated

        min_size 1

        max_size 10

        step take default

        step chooseleaf firstn 0 type rack

        step emit

}

# end crush map


对修改后的map信息进行编译

[root@bgw-os-node151 ~]# crushtool -c decrushmap.obj -o crushnew.obj

根据新map信息重新设置crush map

[root@bgw-os-node151 ~]# ceph osd setcrushmap -i crushnew.obj

查看新的osd目录树

[root@bgw-os-node151 ~]# ceph osd tree           #结果

# id    weight  type name       up/down reweight

-1      3.24    root default

-5      1.08            rack rack1

-2      1.08                    host bgw-os-node151

0       0.27                            osd.0   up      1

1       0.27                            osd.1   up      1

2       0.27                            osd.2   up      1

3       0.27                            osd.3   up      1

-6      1.08            rack rack2

-3      1.08                    host bgw-os-node152

4       0.54                            osd.4   up      1

5       0.54                            osd.5   up      1

6       0.54                            osd.6   up      1

7       0.54                            osd.7   up      1

-7      1.08            rack rack3

-4      1.08                    host bgw-os-node153

8       0.36                            osd.8   up      1

9       0.36                            osd.9   up      1

10      0.36                            osd.10  up      1

11      0.36                            osd.11  up      1

上面可修该的内容还有很多,可根据具体的要求进行相应的修改。

参考:http://ceph.com/docs/master/rados/operations/crush-map/#crush-map-bucket-types