sisimi的点点滴滴

你若盛开,清风自来

导航

PG peered实验

标签(空格分隔): ceph,ceph实验,pg


1. 创建一个文件,并把该文件作为对象放到集群中:

[root@node1 ~]# echo "this is test! " >>test.txt
[root@node1 ~]# rados -p testpool ls
[root@node1 ~]# rados -p testpool put test.txt test.txt 
[root@node1 ~]# rados -p testpool ls
test.txt

2. 查看该对象对应的pg号以及osd组:

[root@node1 ~]# ceph osd map testpool test.txt 
osdmap e76 pool 'testpool' (2) object 'test.txt' -> pg 2.8b0b6108 (2.8) -> up ([1,2,0], p1) acting ([1,2,0], p1)

3. 剔除osd.1 osd.0,可以看到pg2.8已经peered:

[root@node2 ~]# systemctl stop ceph-osd@1
[root@node1 ~]# systemctl stop ceph-osd@0

[root@node2 ~]# ceph osd map testpool test.txt
osdmap e88 pool 'testpool' (2) object 'test.txt' -> pg 2.8b0b6108 (2.8) -> up ([2], p2) acting ([2], p2)

[root@node1 ~]# ceph pg dump_stuck|grep ^2.8
2.8     undersized+degraded+peered   [2]          2    [2]              2 

此时访问该对象毫无反应,因为pg peered是不能够响应io请求的。但是此时该pg仍有一个副本,却不能够访问了,这是因为testpool的min_size=2,也就是只能允许有一个osd out,如果超过就无法响应io。

4. 修改min_size为1,访问该对象:

[root@node1 ~]# ceph osd pool set testpool min_size 1
set pool 2 min_size to 1

[root@node1 ~]# ceph pg dump_stuck|grep ^2.8
2.8     active+undersized+degraded   [2]          2    [2]              2 

[root@node2 ~]# rados -p testpool get test.txt test
[root@node2 ~]# cat test 
this is test! 

可以看到pg的状态由peered变为了degraded,可以正常访问该对象。

参考文献:

大话Ceph--PG那点事儿

posted on 2017-10-24 15:58  sisimi_2017  阅读(746)  评论(0编辑  收藏  举报