Ceph實驗室:第八課:查看Ceph_CRUSH_map


查看CRUSH map

  • 從monitor節點上獲取CRUSH map
[root@ceph ceph]# ceph osd getcrushmap -o crushmap_compiled_file

 

  • 反編譯CRUSH map
[root@ceph ceph]# crushtool -d crushmap_compiled_file -o crushmap_decompiled_file

 

  • 修改完成后,我們需要編譯他
[root@ceph ceph]# crushtool -d crushmap_decompiled_file -o newcrushmap

 

  • 將新CRUSH map導入集群中
[root@ceph ceph]# ceph osd setcrushmap -i newcrushmap

[root@ceph ceph]# cat crushmap_decompiled_file

# begin crush map tunable choose_local_tries 0 tunable choose_local_fallback_tries 0 tunable choose_total_tries 50 tunable chooseleaf_descend_once 1 tunable chooseleaf_vary_r 1 tunable straw_calc_version 1 # devices device 0 osd.0 device 1 osd.1 device 2 osd.2 # 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 ceph-node1 { id -2 # do not change unnecessarily # weight 0.000 alg straw hash 0 # rjenkins1 } host ceph { id -3 # do not change unnecessarily # weight 0.044 alg straw hash 0 # rjenkins1 item osd.2 weight 0.015 item osd.1 weight 0.015 item osd.0 weight 0.015 } root default { id -1 # do not change unnecessarily # weight 0.044 alg straw hash 0 # rjenkins1 item ceph-node1 weight 0.000 item ceph weight 0.044 } # rules rule replicated_ruleset { ruleset 0 #rule編號 type replicated #定義pool類型為replicated(還有esurecode模式)
	min_size 1        #pool中最小指定的副本數量不能小1
	max_size 10       #pool中最大指定的副本數量不能大於10 
	step take default #定義pg查找副本的入口點
	step chooseleaf firstn 0 type host  #選葉子節點、深度優先、隔離host
	step emit  #結束

} # end crush map 

 

注:

下面解釋來自:https://my.oschina.net/u/2460844/blog/531722

影響crush算法結果的有兩種因素,一個就是OSD Map的結構,另外一個就是crush rule。 OSDMap其實就是一個樹形的結構,葉子節點是device(也就是osd),其他的節點稱為bucket節點,這些bucket都是虛構的節點,可以根據物理結構進行抽象,當然樹形結構只有一個最終的根節點稱之為root節點,中間虛擬的bucket節點可以是數據中心抽象、機房抽象、機架抽象、主機抽象等。
d7005be0828321c522728685259db7e0e98f70d3
上圖中紅色框內的節點都是bucket節點,這些節點都是根據實際情況進行抽象得來的。
其實也就是實際中整個物理拓撲結構。這個拓撲里的每個節點都有一個權重值,這個權重值等於所有子節點的權重之和,葉子節點的重量由osd的容量決定,一般設定1T的權重為1。
這個權重值在crush算法中也有很重要的地位。
bucket類型解釋:
對於bucket節點不只是虛設的節點,bucket同樣有type。bucket的type有四種類型結構,uniform、list、tree、straw。這四種bucket有着不同的特性,bucket的type設定同樣也影響着crush算法。不同的 類型定位數據在哪個子節點的過程不同。

crush rule主要作用:

  • 從OSD Map中的哪個節點開始查找
  • 使用那個節點作為故障隔離域
  • 定位副本的搜索模式(廣度優先 or 深度優先)

    閱讀全文:http://click.aliyun.com/m/16683/  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM