{"id":1656,"date":"2021-07-30T19:20:29","date_gmt":"2021-07-30T11:20:29","guid":{"rendered":"https:\/\/egonlin.com\/?p=1656"},"modified":"2021-07-30T19:20:29","modified_gmt":"2021-07-30T11:20:29","slug":"%e5%88%86%e5%b8%83%e5%bc%8f%e5%ad%98%e5%82%a8ceph%e4%b9%8bcrush%e8%a7%84%e5%88%99%e9%85%8d%e7%bd%ae","status":"publish","type":"post","link":"https:\/\/egonlin.com\/?p=1656","title":{"rendered":"\u5206\u5e03\u5f0f\u5b58\u50a8ceph\u4e4bcrush\u89c4\u5219\u914d\u7f6e"},"content":{"rendered":"<h1>\u5206\u5e03\u5f0f\u5b58\u50a8ceph\u4e4bcrush\u89c4\u5219\u914d\u7f6e<\/h1>\n<h2>\u4e00 \u547d\u4ee4\u751f\u6210osd\u6811\u5f62\u7ed3\u6784<\/h2>\n<pre><code class=\"language-bash\"># \u521b\u5efa\u6570\u636e\u4e2d\u5fc3\uff1adatacenter0\nceph osd crush add-bucket datacenter0 datacenter\n\n# \u521b\u5efa\u673a\u623f\uff1aroom0 \nceph osd crush add-bucket room0 room\n\n# \u521b\u5efa\u673a\u67b6\uff1arack0\u3001rack1\u3001rack2\nceph osd crush add-bucket rack0 rack\nceph osd crush add-bucket rack1 rack\nceph osd crush add-bucket rack2 rack\n\n# \u628a\u673a\u623froom0\u79fb\u52a8\u5230\u6570\u636e\u4e2d\u5fc3datacenter0\u4e0b\nceph osd crush move room0 datacenter=datacenter0\n\n# \u628a\u673a\u67b6rack0\u3001rack1\u3001rack2\u79fb\u52a8\u5230\u673a\u623froom0\u4e0b\nceph osd crush move rack0 room=room0\nceph osd crush move rack1 room=room0\nceph osd crush move rack2 room=room0\n\n# \u628a\u4e3b\u673aosd01\u79fb\u52a8\u5230\uff1adatacenter0\/room0\/rack0\u4e0b\nceph osd crush move osd01 datacenter=datacenter0 room=room0 rack=rack0\n\n# \u628a\u4e3b\u673aosd02\u79fb\u52a8\u5230\uff1adatacenter0\/room0\/rack1\u4e0b\nceph osd crush move osd02 datacenter=datacenter0 room=room0 rack=rack1\n\n# \u628a\u4e3b\u673aosd03\u79fb\u52a8\u5230\uff1adatacenter0\/room0\/rack2\u4e0b\nceph osd crush move osd03 datacenter=datacenter0 room=room0 rack=rack2<\/code><\/pre>\n<p>\u67e5\u770b<\/p>\n<pre><code class=\"language-bash\">[root@admin ~]# ceph osd tree\nID  CLASS WEIGHT  TYPE NAME              STATUS REWEIGHT PRI-AFF \n -9       0.17537 datacenter datacenter0                         \n-10       0.17537     room room0                                 \n-11       0.05846         rack rack0                             \n -3       0.05846             host osd01                         \n  0   hdd 0.01949                 osd.0      up  1.00000 1.00000 \n  1   hdd 0.01949                 osd.1      up  1.00000 1.00000 \n  2   hdd 0.01949                 osd.2      up  1.00000 1.00000 \n-12       0.05846         rack rack1                             \n -5       0.05846             host osd02                         \n  3   hdd 0.01949                 osd.3      up  1.00000 1.00000 \n  4   hdd 0.01949                 osd.4      up  1.00000 1.00000 \n  5   hdd 0.01949                 osd.5      up  1.00000 1.00000 \n-13       0.05846         rack rack2                             \n -7       0.05846             host osd03                         \n  6   hdd 0.01949                 osd.6      up  1.00000 1.00000 \n  7   hdd 0.01949                 osd.7      up  1.00000 1.00000 \n  8   hdd 0.01949                 osd.8      up  1.00000 1.00000 \n -1             0 root default  \n<\/code><\/pre>\n<h2>\u4e8c crushmap\u4fe1\u606f\u4ecb\u7ecd<\/h2>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u547d\u4ee4\u5bfc\u51fa\u96c6\u7fa4\u5f53\u524d\u7684crushmap\u4fe1\u606f<\/p>\n<pre><code class=\"language-bash\"># \u628a\u4e8c\u8fdb\u5236\u683c\u5f0f\u7684crush map\u5bfc\u51fa\u5230test.bin\u6587\u4ef6\u4e2d\nceph osd getcrushmap -o test.bin\n\n# \u7528 crushtool \u5de5\u5177\u628a test.bin \u91cc\u7684\u4e8c\u8fdb\u5236\u6570\u636e\u8f6c\u6362\u6210\u6587\u672c\u5f62\u5f0f\u4fdd\u5b58\u5230 test.txt \u6587\u6863\u91cc\u3002\ncrushtool -d test.bin -o test.txt\n<\/code><\/pre>\n<p>crushmap\u914d\u7f6e\u4e2d\u6700\u6838\u5fc3\u7684\u5f53\u5c5erule\u4e86\uff0ccrush rule\u51b3\u5b9a\u4e86\u4e09\u70b9\u91cd\u8981\u4e8b\u9879\uff1a<\/p>\n<ul>\n<li>1\u3001\u4eceOSDMap\u4e2d\u7684\u54ea\u4e2a\u8282\u70b9\u5f00\u59cb\u67e5\u627e<\/li>\n<li>2\u3001\u4f7f\u7528\u90a3\u4e2a\u8282\u70b9\u4f5c\u4e3a\u6545\u969c\u9694\u79bb\u57df<\/li>\n<li>3\u3001\u5b9a\u4f4d\u526f\u672c\u7684\u641c\u7d22\u6a21\u5f0f\uff08\u5e7f\u5ea6\u4f18\u5148 or \u6df1\u5ea6\u4f18\u5148\uff09\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-bash\"># rules\nrule egon_ruleset                       #\u89c4\u5219\u96c6\u7684\u547d\u540d\uff0c\u521b\u5efapool\u65f6\u53ef\u4ee5\u6307\u5b9arule\u96c6\n{\nid 1                                            #rules\u96c6\u7684\u7f16\u53f7\uff0c\u987a\u5e8f\u7f16\u5373\u53ef\ntype replicated                                #\u5b9a\u4e49pool\u7c7b\u578b\u4e3areplicated(\u8fd8\u6709esurecode\u6a21\u5f0f)\nmin_size 1                                     #pool\u4e2d\u6700\u5c0f\u6307\u5b9a\u7684\u526f\u672c\u6570\u91cf\u4e0d\u80fd\u5c0f1\\\n\nmax_size 10                                    #pool\u4e2d\u6700\u5927\u6307\u5b9a\u7684\u526f\u672c\u6570\u91cf\u4e0d\u80fd\u5927\u4e8e10    \n\nstep take default                              #\u5b9a\u4e49pg\u67e5\u627e\u526f\u672c\u7684\u5165\u53e3\u70b9\n\nstep chooseleaf  firstn  0  type  host         #\u9009\u53f6\u5b50\u8282\u70b9\u3001\u6df1\u5ea6\u4f18\u5148\u3001\u9694\u79bbhost\n\nstep emit                                      #\u7ed3\u675f\n\n}\n<\/code><\/pre>\n<p>\u603b\u7ed3<\/p>\n<pre><code class=\"language-bash\">pg \u9009\u62e9osd\u7684\u8fc7\u7a0b\uff0c\u9996\u5148\u8981\u77e5\u9053\u5728rules\u4e2d \u6307\u660e\u4eceosdmap\u4e2d\u54ea\u4e2a\u8282\u70b9\u5f00\u59cb\u67e5\u627e\uff0c\u5165\u53e3\u70b9\u9ed8\u8ba4\u4e3adefault\u4e5f\u5c31\u662froot\u8282\u70b9\uff0c\n\u7136\u540e\u9694\u79bb\u57df\u4e3ahost\u8282\u70b9(\u4e5f\u5c31\u662f\u540c\u4e00\u4e2ahost\u4e0b\u9762\u4e0d\u80fd\u9009\u62e9\u4e24\u4e2a\u5b50\u8282\u70b9)\u3002\u7531default\u52303\u4e2ahost\u7684\u9009\u62e9\u8fc7\u7a0b\uff0c\n\u8fd9\u91cc\u7531default\u6839\u636e\u8282\u70b9\u7684bucket\u7c7b\u578b\u9009\u62e9\u4e0b\u4e00\u4e2a\u5b50\u8282\u70b9\uff0c\u7531\u5b50\u8282\u70b9\u518d\u6839\u636e\u672c\u8eab\u7684\u7c7b\u578b\u7ee7\u7eed\u9009\u62e9\uff0c\u76f4\u5230\u9009\u62e9\u5230host\uff0c\u7136\u540e\u5728host\u4e0b\u9009\u62e9\u4e00\u4e2aosd\u3002\n<\/code><\/pre>\n<h2>\u4e09 \u4fee\u6539 crushmap \u4fe1\u606f<\/h2>\n<p><\/p><div id=\"rml_readmorelogin_placeholder\" style=\"position:relative;\"><div id=\"rml_fade_content\" style=\"position: absolute;\r\ntop:-10em;\r\nwidth:100%;\r\nheight:10em;\r\nbackground: -webkit-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: -moz-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: -o-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: -ms-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\"><\/div><div class=\"wpf-controller aru_rml_from_in_post\" style=\"background-color:#eeeeee;border:5px solid #cce6ff;\" id=\"ARU_ReadMoreLogin_ReadMoreLoginController\"><h2 id=\"Header\">\u67e5\u770b\u66f4\u591a<\/h2><div id=\"Message\"><p>\u8054\u7cfb\u7ba1\u7406\u5458\u5fae\u4fe1tutu19192010\uff0c\u6ce8\u518c\u8d26\u53f7<\/p>\n<\/div><div id=\"StatusBarHeader\"><\/div><form id=\"ARU_ReadMoreLogin_ReadMoreLoginController\"><input name=\"post_id\" value=\"1656\" type=\"hidden\"\/><input name=\"_init_callback\" value=\"InitLogin\" type=\"hidden\"\/><input name=\"post_id\" value=\"1656\" type=\"hidden\"\/><input name=\"rt_ype\" value=\"1\" type=\"hidden\"\/><input name=\"nonce\" value=\"c9f3111fb0\" type=\"hidden\"\/><input name=\"_wpnonce\" value=\"4f9ac12208\" type=\"hidden\"\/><input name=\"_controller\" value=\"ARU_ReadMoreLogin\\ReadMoreLoginController\" type=\"hidden\"\/><input name=\"_proxy_controller\" value=\"ARU_ReadMoreLogin\\ReadMoreLoginController\" type=\"hidden\"\/><input name=\"_view\" value=\"ARU_ReadMoreLogin\\ReadMoreLoginView\" type=\"hidden\"\/><table class=\"wpf-table-placeholder\"><tbody class=\"wpf-table-placeholder\"><tr class=\"wpf-table-placeholder\"><td class=\"wpf-table-placeholder-input\" width=\"400px\"><table class=\"wpf-table-placeholder\"><tbody class=\"wpf-table-placeholder\"><tr class=\"wpf-table-placeholder\"><th class=\"wpf-table-placeholder-input\"><label class=\"wpf-label\">Username:<\/label><\/th><\/tr><tr class=\"wpf-table-placeholder\"><td class=\"wpf-table-placeholder-input\"><input class=\"regular-text text_input\" name=\"username\" value=\"\" type=\"text\"\/><\/td><\/tr><tr class=\"wpf-table-placeholder\"><th class=\"wpf-table-placeholder-input\"><label class=\"wpf-label\">Password:<\/label><\/th><\/tr><tr class=\"wpf-table-placeholder\"><td class=\"wpf-table-placeholder-input\"><input class=\"regular-text text_input\" name=\"password\" value=\"\" type=\"password\"\/><\/td><\/tr><\/tbody><\/table><p class=\"wpf-table-placeholder submit\"><button class=\"wp_plugin_framework_ajax_button\" type=\"button\" style=\"background-color:#4D90FE;;color:#ffffff;;border:1px solid #3079ed;\" name=\"_event\" value=\"ButtonLogin\">Log in<\/button><\/p><\/td><td class=\"wpf-table-placeholder-input\"><\/td><\/tr><\/tbody><\/table><\/form><div id=\"ButtonStartRegister\"><a href=\"https:\/\/egonlin.com\/wp-login.php?action=register\">Register<\/a><\/div><div id=\"Link1\"><a href=\"https:\/\/egonlin.com\/wp-login.php?action=lostpassword\">Forgotten username or password?<\/a><\/div><div id=\"StatusBarFooter\"><\/div><\/div><\/div><div id=aru_remaining_content><\/div>","protected":false},"excerpt":{"rendered":"<p>\u5206\u5e03\u5f0f\u5b58\u50a8ceph\u4e4bcrush\u89c4\u5219\u914d\u7f6e \u4e00 \u547d\u4ee4\u751f\u6210osd\u6811\u5f62\u7ed3\u6784 # \u521b\u5efa\u6570\u636e\u4e2d\u5fc3\uff1adatacenter0  [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[188],"tags":[21,194,19,22,195,20],"_links":{"self":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/1656"}],"collection":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1656"}],"version-history":[{"count":0,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/1656\/revisions"}],"wp:attachment":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}