Ceph: 使用 CLI 管理 CRUSH

开始熟悉 Ceph CLI 和 CRUSH。
为了本次练习的目的,我将
- 在我的现有基础设施中设置两个新的机架
- 简单地将我当前的服务器添加到其中
- 创建一个新的 CRUSH 规则,该规则使用这两个机架
让我们从创建两个新的机架开始
bash $ ceph osd crush add-bucket rack1 添加了 bucket rack1 类型 rack 到 crush map $ ceph osd crush add-bucket rack2 添加了 bucket rack2 类型 rack 到 crush map
如你所见,机架是空的(这是正常的)
```bash $ ceph osd tree
id weight type name up/down reweight
-6 0 rack rack2 -5 0 rack rack1 -1 11.73 root default -2 5.46 host test1 0 1.82 osd.0 up 1 1 1.82 osd.1 up 1 -3 5.46 host test2 2 1.82 osd.2 up 1 3 1.82 osd.3 up 1 ```
现在我们将每个主机分配给一个特定的机架
```bash $ ceph osd crush move test1 rack=rack1 将 item id -2 名称 'test1' 移动到 crush map 中的位置 {rack=rack1}
$ ceph osd crush move test2 rack=rack2 将 item id -3 名称 'test2' 移动到 crush map 中的位置 {rack=rack1} ```
我们将这两个机架移动到默认根
bash $ ceph osd crush move rack2 root=default 将 item id -6 名称 'rack2' 移动到 crush map 中的位置 {root=default} $ ceph osd crush move rack1 root=default 将 item id -5 名称 'rack1' 移动到 crush map 中的位置 {root=default}
检查最终结果
```bash $ ceph osd tree
id weight type name up/down reweight
-1 11.73 root default -6 0.81 rack rack2 2 1.82 osd.2 up 1 3 1.82 osd.3 up 1 -5 10.92 rack rack1 -2 5.46 host os-ci-test10 0 1.82 osd.0 up 1 1 1.82 osd.1 up 1 ```
最终为这种放置创建新的规则
bash $ ceph osd crush rule create-simple racky default rack
{ "rule_id": 3,
"rule_name": "racky",
"ruleset": 3,
"type": 1,
"min_size": 1,
"max_size": 10,
"steps": [
{ "op": "take",
"item": -1},
{ "op": "chooseleaf_firstn",
"num": 0,
"type": "rack"},
{ "op": "emit"}]}]
最后,您可以将一个池分配给此规则集
bash $ ceph osd pool set rbd crush_ruleset 3 设置池 2 crush_ruleset 为 3
Ceph 的 CLI 越来越强大。很高兴看到我们不需要下载 CRUSH map,然后手动编辑它并最终重新提交它 :).