千家信息网

怎么使用crushtool

发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,今天就跟大家聊聊有关怎么使用crushtool,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。#使用crushtool 创建一个命名为crush
千家信息网最后更新 2025年02月09日怎么使用crushtool

今天就跟大家聊聊有关怎么使用crushtool,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

#使用crushtool 创建一个命名为crushmap128的crushmap(二进制,未解码),包含128osd设备,每个host包含8个osd,每个机架里包含4host,所有的rack都在一个root default

crushtool --outfn crushmap128 --build --num_osds 128 host straw 8 rack straw 4 default straw 0

或者使用straw2算法

crushtool --outfn crushmap128 --build --num_osds 128 host straw2 8 rack straw2 4 default straw2 0

解码

crushtool -d crushmap128 -o map128.txt

显示 ceph osd tree

crushtool -i  crushmap128 --tree
[root@ceph01 test]# crushtool -i  crushmap128 --treeID      WEIGHT  TYPE NAME-21     128.00000       default default-17     32.00000                rack rack0-1      8.00000                 host host00       1.00000                         osd.01       1.00000                         osd.12       1.00000                         osd.23       1.00000                         osd.34       1.00000                         osd.45       1.00000                         osd.56       1.00000                         osd.67       1.00000                         osd.7-2      8.00000                 host host18       1.00000                         osd.89       1.00000                         osd.910      1.00000                         osd.1011      1.00000                         osd.1112      1.00000                         osd.1213      1.00000                         osd.1314      1.00000                         osd.1415      1.00000                         osd.15-3      8.00000                 host host216      1.00000                         osd.1617      1.00000                         osd.1718      1.00000                         osd.1819      1.00000                         osd.1920      1.00000                         osd.2021      1.00000                         osd.2122      1.00000                         osd.2223      1.00000                         osd.23-4      8.00000                 host host324      1.00000                         osd.2425      1.00000                         osd.2526      1.00000                         osd.2627      1.00000                         osd.2728      1.00000                         osd.2829      1.00000                         osd.2930      1.00000                         osd.3031      1.00000                         osd.31-18     32.00000                rack rack1-5      8.00000                 host host432      1.00000                         osd.3233      1.00000                         osd.3334      1.00000                         osd.3435      1.00000                         osd.3536      1.00000                         osd.3637      1.00000                         osd.3738      1.00000                         osd.3839      1.00000                         osd.39-6      8.00000                 host host540      1.00000                         osd.4041      1.00000                         osd.4142      1.00000                         osd.4243      1.00000                         osd.4344      1.00000                         osd.4445      1.00000                         osd.4546      1.00000                         osd.4647      1.00000                         osd.47-7      8.00000                 host host648      1.00000                         osd.4849      1.00000                         osd.4950      1.00000                         osd.5051      1.00000                         osd.5152      1.00000                         osd.5253      1.00000                         osd.5354      1.00000                         osd.5455      1.00000                         osd.55-8      8.00000                 host host756      1.00000                         osd.5657      1.00000                         osd.5758      1.00000                         osd.5859      1.00000                         osd.5960      1.00000                         osd.6061      1.00000                         osd.6162      1.00000                         osd.6263      1.00000                         osd.63-19     32.00000                rack rack2-9      8.00000                 host host864      1.00000                         osd.6465      1.00000                         osd.6566      1.00000                         osd.6667      1.00000                         osd.6768      1.00000                         osd.6869      1.00000                         osd.6970      1.00000                         osd.7071      1.00000                         osd.71-10     8.00000                 host host972      1.00000                         osd.7273      1.00000                         osd.7374      1.00000                         osd.7475      1.00000                         osd.7576      1.00000                         osd.7677      1.00000                         osd.7778      1.00000                         osd.7879      1.00000                         osd.79-11     8.00000                 host host1080      1.00000                         osd.8081      1.00000                         osd.8182      1.00000                         osd.8283      1.00000                         osd.8384      1.00000                         osd.8485      1.00000                         osd.8586      1.00000                         osd.8687      1.00000                         osd.87-12     8.00000                 host host1188      1.00000                         osd.8889      1.00000                         osd.8990      1.00000                         osd.9091      1.00000                         osd.9192      1.00000                         osd.9293      1.00000                         osd.9394      1.00000                         osd.9495      1.00000                         osd.95-20     32.00000                rack rack3-13     8.00000                 host host1296      1.00000                         osd.9697      1.00000                         osd.9798      1.00000                         osd.9899      1.00000                         osd.99100     1.00000                         osd.100101     1.00000                         osd.101102     1.00000                         osd.102103     1.00000                         osd.103-14     8.00000                 host host13104     1.00000                         osd.104105     1.00000                         osd.105106     1.00000                         osd.106107     1.00000                         osd.107108     1.00000                         osd.108109     1.00000                         osd.109110     1.00000                         osd.110111     1.00000                         osd.111-15     8.00000                 host host14112     1.00000                         osd.112113     1.00000                         osd.113114     1.00000                         osd.114115     1.00000                         osd.115116     1.00000                         osd.116117     1.00000                         osd.117118     1.00000                         osd.118119     1.00000                         osd.119-16     8.00000                 host host15120     1.00000                         osd.120121     1.00000                         osd.121122     1.00000                         osd.122123     1.00000                         osd.123124     1.00000                         osd.124125     1.00000                         osd.125126     1.00000                         osd.126127     1.00000                         osd.127

编辑role规则

vim map128.txt  #修改rule部分

###3副本都在一个rack且在同一个host内

rule replicated_ruleset {        ruleset 0        type replicated        min_size 1        max_size 10        step take default        step choose firstn 1 type host        step chooseleaf firstn 3 type osd        step emit}测试结果(测试规则0 ,总共1..5个对象, 3副本) rule 0 (replicated_ruleset), x = 1..5, numrep = 3..3CRUSH rule 0 x 1 [80,84,87]        对象1的3个副本在 osd.80,osd.84,osd.87CRUSH rule 0 x 2 [63,58,61]        对象2的3个副本在 osd.63,osd.58,osd.61CRUSH rule 0 x 3 [121,127,124]CRUSH rule 0 x 4 [67,71,65]CRUSH rule 0 x 5 [45,47,46]

###3副本都在一个rack里,可能在同一个host内

rule replicated_ruleset {        ruleset 0        type replicated        min_size 1        max_size 10        step take default        step choose firstn 1 type rack        step chooseleaf firstn 3 type osd        step emit}测试结果rule 0 (replicated_ruleset), x = 1..5, numrep = 3..3CRUSH rule 0 x 1 [80,84,67]CRUSH rule 0 x 2 [63,50,48]CRUSH rule 0 x 3 [121,127,111]CRUSH rule 0 x 4 [67,86,79]CRUSH rule 0 x 5 [45,38,46]

###3副本都在一个rack里,不在同一个host内

rule replicated_ruleset {        ruleset 0        type replicated        min_size 1        max_size 10        step take default        step choose firstn 1 type rack        step chooseleaf firstn 3 type host        step emit}测试结果rule 0 (replicated_ruleset), x = 1..5, numrep = 3..3CRUSH rule 0 x 1 [80,70,79]CRUSH rule 0 x 2 [63,48,42]CRUSH rule 0 x 3 [121,109,113]CRUSH rule 0 x 4 [67,82,76]CRUSH rule 0 x 5 [45,36,57]

###3副本在3个rack里

rule replicated_ruleset {        ruleset 0        type replicated        min_size 1        max_size 10        step take default        step choose firstn 3 type rack        step chooseleaf firstn 1 type host        step emit}测试结果rule 0 (replicated_ruleset), x = 1..5, numrep = 3..3CRUSH rule 0 x 1 [80,115,43]CRUSH rule 0 x 2 [63,7,126]CRUSH rule 0 x 3 [121,30,73]CRUSH rule 0 x 4 [67,8,61]CRUSH rule 0 x 5 [45,79,28]

编码

crushtool  -c map128.txt  -o maptmp.bin

测试

                                         显示统计信息       测试rule0   上传对象最小1个最多5个  3副本     显示映射关系     显示ceph osd treecrushtool -i maptmp.bin  --test --show-statistics --rule 0 --min-x 1 --max-x 5 --num-rep 3  --show-mappings --tree
#添加机架ceph osd crush add-bucket rack01 rackceph osd crush add-bucket rack02 rackceph osd crush add-bucket rack03 rack#移动主机到机架ceph osd crush move ceph23 rack=rack01ceph osd crush move ceph24 rack=rack02ceph osd crush move ceph25 rack=rack03#移动机架到default rootceph osd crush move rack01 root=defaultceph osd crush move rack02 root=defaultceph osd crush move rack03 root=default得到新的crushmap#移动好后使用测试的rule规则和新的crushmap导入到集群中,注意测试的crushmap中的osd编号不一定和实际的编号相同,因此子需要测试后确定rule正确即可

测试完成后导入集群

导出crushmapceph osd getcrushmap -o ma-crush-map解码crushmapcrushtool -d ma-crush-map -o ma-crush-map.txtvim ma-crush-map.txt  #修改rule部分为上面测试过的rule编译crushmapcrushtool -c ma-crush-map.txt -o ma-nouvelle-crush-map导入crushmapceph osd setcrushmap -i ma-nouvelle-crush-map

看完上述内容,你们对怎么使用crushtool有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0