Ceph建立纠删码池时PG出现creating+incomplete
2015-06-18 23:24
1226 查看
想测试下纠删码,所以照着官网上的步骤执行了下.
ceph osd pool create ecpool 12 12 erasure
pool ‘ecpool’ created
echo ABCDEFGHI | rados –pool ecpool put NYAN -
$ rados –pool ecpool get NYAN -
ABCDEFGH
但是到第二步就写不进去了。自己设定一个erasure-code-profile也不行。用ceph -s 之后发现,新建的12个pg一直处于creating+incomplete的状态。
因为默认的纠删码参数是k=2,m=1。设定的ruleset-failure-domain=osd。而我们实验的集群正好是3个osd。猜测可能是osd不够,又加了一个osd还是不行。如图。
后来在网上搜了一大圈也没找到解决办法,就在官网找。找到了一篇PG出问题的文章,里面有提到建纠删码池时可能会出现的几个问题。
ERASURE CODED PGS ARE NOT ACTIVE+CLEAN
找到了问题出在crush map中,我们这个集群都是在一台服务器中,所以crushmap中纠删码的ruleset就不能设成host,而应该改成osd。
这就需要对crushmap进行修改。首先可以使用下面命令查看下crush map:
$ ceph osd crush dump
修改crushmap 会用到crush-tool。
得到集群的crush map
$ ceph osd getcrushmap -o {compiled-crushmap-filename}
例如:
$ ceph osd getcrushmap -o crush.map
用crush-tool反编译crush map
$ crushtool -d {compiled-crushmap-filename} -o {decompiled-crushmap-filename}
例如:
$ crushtool -d crush.map -o crush.txt
用vim修改crushmap的相应项
官网的介绍中可以用命令改,例如:
step set_choose_tries 100
是将这条语句加到ruleset中。
- 编译修改后的crushmap
crushtool -c {decompiled-crush-map-filename} -o {compiled-crush-map-filename}
例如:
$ crushtool –compile crush.txt -o better-crush.map
设定crushmap
将curshmap应用到集群中:
$ ceph osd setcrushmap -i {compiled-crushmap-filename}
例如:
$ ceph osd setcrushmap -i better-crush.map
至此crushmap就修改完毕了。再查看集群状态,发现PG已经建好了。
再用纠删码池读写文件就没有问题了。
ceph osd pool create ecpool 12 12 erasure
pool ‘ecpool’ created
echo ABCDEFGHI | rados –pool ecpool put NYAN -
$ rados –pool ecpool get NYAN -
ABCDEFGH
但是到第二步就写不进去了。自己设定一个erasure-code-profile也不行。用ceph -s 之后发现,新建的12个pg一直处于creating+incomplete的状态。
因为默认的纠删码参数是k=2,m=1。设定的ruleset-failure-domain=osd。而我们实验的集群正好是3个osd。猜测可能是osd不够,又加了一个osd还是不行。如图。
后来在网上搜了一大圈也没找到解决办法,就在官网找。找到了一篇PG出问题的文章,里面有提到建纠删码池时可能会出现的几个问题。
ERASURE CODED PGS ARE NOT ACTIVE+CLEAN
找到了问题出在crush map中,我们这个集群都是在一台服务器中,所以crushmap中纠删码的ruleset就不能设成host,而应该改成osd。
这就需要对crushmap进行修改。首先可以使用下面命令查看下crush map:
$ ceph osd crush dump
修改crushmap 会用到crush-tool。
得到集群的crush map
$ ceph osd getcrushmap -o {compiled-crushmap-filename}
例如:
$ ceph osd getcrushmap -o crush.map
用crush-tool反编译crush map
$ crushtool -d {compiled-crushmap-filename} -o {decompiled-crushmap-filename}
例如:
$ crushtool -d crush.map -o crush.txt
用vim修改crushmap的相应项
官网的介绍中可以用命令改,例如:
step set_choose_tries 100
是将这条语句加到ruleset中。
- 编译修改后的crushmap
crushtool -c {decompiled-crush-map-filename} -o {compiled-crush-map-filename}
例如:
$ crushtool –compile crush.txt -o better-crush.map
设定crushmap
将curshmap应用到集群中:
$ ceph osd setcrushmap -i {compiled-crushmap-filename}
例如:
$ ceph osd setcrushmap -i better-crush.map
至此crushmap就修改完毕了。再查看集群状态,发现PG已经建好了。
再用纠删码池读写文件就没有问题了。
相关文章推荐
- route attribute in webapi
- 科技发烧友之3d吉米投影
- ucore Lab3操作系统设计(理论部分)
- 联网温控器的测试
- 2015061806 - 10年程序开发经验总结(3)
- Maven安装
- 百度贴吧csrf让全吧吧友在自己都不知情的情况下帮你投诉指定贴吧吧主的bug
- html表格 第五节
- [A,D]=solverAdini(node,elem,bdEdge,h1,h2)
- 拐卖儿童是否该一律判死刑”你的观点是?
- UINavigationController设置透明背景
- 正则表达式口诀
- poj 3069 Saruman's Army
- 【学习笔记】【C语言】类型说明符
- MyBatis框架介绍(1)
- 2015061805 - 10年程序开发经验总结(2)
- Qt 5框架介绍
- Java对Jar文件的操作[转]
- Struts2拦截器使用
- CF 8A Train and Peter