版本:ceph L 版本 12.2.1
环境:单节点 15 osd
-1 0 root default -3 94.53119 host node1 0 hdd 5.37108 osd.0 up 1.00000 1.00000 1 hdd 5.37108 osd.1 up 1.00000 1.00000 2 hdd 5.37108 osd.2 up 1.00000 1.00000 3 hdd 5.37108 osd.3 up 1.00000 1.00000 4 hdd 1.75781 osd.4 up 1.00000 1.00000 5 hdd 7.12891 osd.5 up 1.00000 1.00000 6 hdd 7.12891 osd.6 up 1.00000 1.00000 7 hdd 7.12891 osd.7 up 1.00000 1.00000 8 hdd 7.12891 osd.8 up 1.00000 1.00000 9 hdd 7.12891 osd.9 up 1.00000 1.00000 10 hdd 7.12891 osd.10 up 1.00000 1.00000 11 hdd 7.12891 osd.11 up 1.00000 1.00000 12 hdd 7.12891 osd.12 up 1.00000 1.00000 13 hdd 7.12891 osd.13 up 1.00000 1.00000 14 hdd 7.12891 osd.14 up 1.00000 1.00000
ceph osd crush add osd.0 5.37108 host=test_rep_pool_1 root=test_rep
ceph osd crush add osd.1 5.37108 host=test_rep_pool_2 root=test_rep
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-16 10.74216 root test_rep
-15 5.37108 host test_rep_pool_1 0 hdd 5.37108 osd.0 up 1.00000 1.00000
-19 5.37108 host test_rep_pool_2 1 hdd 5.37108 osd.1 up 1.00000 1.00000
ceph osd crush rule create-simple test_rep_rule test_rep host firstn
test_rep_rule
为要创建的crush rule的名称,test_rep
为该rule指定的根名称,即上一步创建的root命称test_rep
ceph osd pool create test_rep_pool 128 128 test_rep_rule
test_rep_pool
的资源池,pg数目为128,pgp数目为128,指定的crush规则为test_rep_rule
ceph osd pool ls detail
pool 2 'test_rep_pool' replicated size 3 min_size 2 crush_rule 2 object_hash rjenkins pg_num 128 pgp_num 128 last_change 98 flags hashpspool stripe_width 0
[root@node1 ~]# ceph osd crush rule dump test_rep_rule
`{
"rule_id": 2, #当前规则的编号
"rule_name": "test_rep_rule", #当前规则名称
"ruleset": 2, #当前规则所属的规则集,
"type": 1, #一个字符串值,指定存储池类型是副本还是纠删吗,1 则为副本,3则为纠删码
"min_size": 1,#如果存储池副本数小于该值,则crush不会为该存储池使用该规则
"max_size": 10,#如果存储池副本数大于该值,则crush不会为该存储池使用该规则,即副本池目前支持的最大副本数为10副本,再大就会报异常
"steps": [{ "op": "take","item": -16,"item_name": "test_rep"},{ "op": "chooseleaf_firstn","num": 0,"type": "host"},{ "op": "emit"}
]
}
ceph osd getcrushmap -o crush_map_file
crush_map_file
的文件,名称可以自己去更改[root@node1 ~]# ceph osd getcrushmap -o crush_map_test
41
[root@node1 ~]# ll crush_map_test
-rw-r--r-- 1 root root 2337 May 4 15:45 crush_map_test
crushtool
工具反编译以上文件,使其成为我们能够阅读的格式crushtool -d crush_map_test -o crush_map_test_decompiel
[root@node1 ~]# crushtool -d crush_map_test -o crush_map_test_decompiel
[root@node1 ~]# ll crush_map_*
-rw-r--r-- 1 root root 2337 May 4 15:45 crush_map_test
-rw-r--r-- 1 root root 3658 May 4 15:48 crush_map_test_decompiel
crush_map_test_decompiel
文件进行编辑修改#可以看到在begin crush map和end crush map之间有很对crush map相关的信息,我们只修改部分我们自己的信息
#begin crush map
...
rule test_rep_rule { id 2type replicatedmin_size 1 max_size 5 #修改该max_size 为5step take test_repstep chooseleaf firstn 0 type hoststep emit
}
crushtool -c crush_map_test_decompiel -o crush_new_map
crush_new_map
注入到原ceph集群中ceph osd setcrushmap -i crush_new_map
[root@node1 ~]# ceph osd crush rule dump test_rep_rule
{
"rule_id": 2,
"rule_name": "test_rep_rule",
"ruleset": 2,
"type": 1,
"min_size": 1,
"max_size": 5, #最大的副本数已经变为5
"steps": [{ "op": "take","item": -16,"item_name": "test_rep"},{ "op": "chooseleaf_firstn","num": 0,"type": "host"},{ "op": "emit"}
]
}
打开 build文件夹下面的webpack.base.conf.js; 找到下面这段代码,并将它注释掉: const createLintingRule = () => ({// test: /.(js|vue)$/,// loader: 'eslint-loader',// enforce: 'pre',// includ...
写一个.cc文件,其中抱哈std::lock_guard以及std::thread等c++11特性,开始使用gcc编译,过程中出现如下问题 gcc test_lock.cc -o test_lock This file requires compiler and library support for the ISO C++ 201...
在阅读ceph源码过程中发现部分C++语法还是不够熟悉,特此做一下笔记。 关于STL中的reserve函数的使用 reserve()是为容器预留空间,即为当前容器设定一个空间分配的阈值,但是并不会为容器直接allocate具体的空间,具体空间的分配是在创建对象时候进行分配得 以vector的reserve函数过程为例,直接看如下代码...
第一种写法: 第二种写法: 转载于:https://www.cnblogs.com/w...
Rank() over()的用法 创建一个test表,并插入6条数据。 CREATE TABLE test (a INT,b INT,c CHAR ) INSERT INTO test VALUES(1,3,'E') INSERT INTO test VALUES(2,4,'A') INSERT INTO test VAL...