问题描述:

万兆交换机死机后,导致在交换机上的ceph 的cluster网络会中断,用户正在对数据块的访问没有完成导致请求被blocked,同时部分pg会处于不同步状态,因此交换机重启后,通过ceph health会发现ceph集群不在OK 状态


health HEALTH_ERR 1 pgs inconsistent; 1 pgs repair; 2 requests are blocked > 32 sec; 1 scrub errors
pg 6.89 is active+clean+inconsistent, acting [12,1,10]
1 ops are blocked > 33554.4 sec
1 ops are blocked > 33554.4 sec on osd.16
1 osds have slow requests

通过以上命令可以发现这里有部分osd(osd.16)出现请求被blocked,重启这些osd,让ceph自己进行恢复:
/etc/init.d/ceph stop osd.16

/etc/init.d/ceph start osd.16

系统会对该 osd 执行 recovery 操作, recovery 过程中, 会断开 block request, 那么这个 request 将会重新请求 mon 节点, 并重新获得新的 pg map, 得到最新的数据访问位置, 从而解决上述问题

一段时间后,可以通过ceph -s 查看ceph的状态为ok 

ceph恢复正常后,需要重启虚拟机,有些系统版本的虚拟机可以不用重启,例如ubuntu14.04.

可以通过进入虚拟机来查看是否正常来判断是否需要重启