使用命令检查ceph集群的监控状态,得到

[root@node1 ~]# ceph -s

 cluster c4898b1c-7ac1-406d-bb5d-d3c7980de438
health HEALTH_ERR 4 pgs inconsistent; 8 scrub errors; mds cluster is degraded; mds alpha is laggy
monmap e5: 1 mons at {node1=172.17.44.22:6789/0}, election epoch 1, quorum 0 node1
osdmap e172: 3 osds: 2 up, 2 in
pgmap v32874: 192 pgs: 188 active+clean, 4 active+clean+inconsistent; 216 MB data, 2517 MB used, 780 GB / 782 GB avail
mdsmap e587: 1/1/1 up {0=alpha=up:replay(laggy or crashed)}

可以看到,ceph的监控状态是错误的,所以当前ceph集群是不用用的。也主要是是pg冲突。我们运行命令来看是那些pg冲突。

[root@node1 ~]# ceph pg dump | grep inconsistent
dumped all in format plain
1.2d 2 0 0 0 4194350 680 680 active+clean+inconsistent 2014-09-16 17:22:26.262442 77'680 172:1149 [0,1] [0,1] 77'680 2014-09-16 15:34:54.801604 77'680 2014-09-15 15:34:51.375100
1.27 2 0 0 0 4194338 654 654 active+clean+inconsistent 2014-09-16 17:22:39.042809 77'654 172:1052 [0,1] [0,1] 77'654 2014-09-16 15:34:33.812579 77'654 2014-09-15 15:34:25.371366
1.13 1 0 0 0 66 118 118 active+clean+inconsistent 2014-09-16 17:22:33.648556 77'118 172:313 [1,0] [1,0] 77'118 2014-09-16 15:34:06.806975 77'118 2014-09-15 15:34:04.363863
1.b 2 0 0 0 4194766 797 797 active+clean+inconsistent 2014-09-16 17:22:37.363771 77'797 172:1255 [0,1] [0,1] 77'797 2014-09-16 15:33:52.856734 77'797 2014-09-15 15:33:42.365185

可以得到这几个冲突的pg组,第一行是他的ID 根据官方提供的办法,http://docs.ceph.com/docs/master/rados/troubleshooting/troubleshooting-pg/

ceph pg repair {placement-group-ID}
[root@node1 ~]# ceph pg repair 1.2d
instructing pg 1.2d on osd.0 to repair
[root@node1 ~]# ceph pg repair 1.27
instructing pg 1.27 on osd.0 to repair
[root@node1 ~]# ceph pg repair 1.13
instructing pg 1.13 on osd.1 to repair
[root@node1 ~]# ceph pg repair 1.b
instructing pg 1.b on osd.0 to repair

然后检查状态:

[root@node1 ~]# ceph -s

 cluster c4898b1c-7ac1-406d-bb5d-d3c7980de438
health HEALTH_ERR 1 pgs inconsistent; 2 scrub errors; mds cluster is degraded; mds alpha is laggy
monmap e5: 1 mons at {node1=172.17.44.22:6789/0}, election epoch 1, quorum 0 node1
osdmap e172: 3 osds: 2 up, 2 in
pgmap v32877: 192 pgs: 191 active+clean, 1 active+clean+inconsistent; 216 MB data, 2517 MB used, 780 GB / 782 GB avail
mdsmap e595: 1/1/1 up {0=alpha=up:replay(laggy or crashed)}

可以看到现在还是错误,但是只有一个inconsistent了,实际上是因为网络需要时间同步我们的数据。在次执行

[root@node1 ~]# ceph -s cluster c4898b1c-7ac1-406d-bb5d-d3c7980de438

  health HEALTH_WARN mds cluster is degraded; mds alpha is laggy
monmap e5: 1 mons at {node1=172.17.44.22:6789/0}, election epoch 1, quorum 0 node1
osdmap e172: 3 osds: 2 up, 2 in
pgmap v32878: 192 pgs: 192 active+clean; 216 MB data, 2517 MB used, 780 GB / 782 GB avail
mdsmap e596: 1/1/1 up {0=alpha=up:replay(laggy or crashed)}

可以看到现在的监控状况也仅仅是一个warning了,而不是错误。

但是,我们看到3个osds中却只有2个up(运行中),2个in(在集群中).osd是我们存储pg的底层,而pg是对象集合,对象是文件小各个小部分集合,所以如果osd错误,则可以 肯定这个状态更不正确。由于现在我们的环境是测试环境,我们可以使用将错误的osd存储几点先直接移除出当前集群环境,然后再加入。这中间会将错误的那个osd的数据移到正确的保留osd里对比,取舍,然后我们将这个错误的osd数据删除,在添加进来。

1. 删除osd

ceph osd out 2

我们是里的配置文件是:

[osd.2] host = node3 [osd.1] host = node2 [osd.0] host = node1

错误的是node3节点,所以参数out 后是2

ceph osd crush remove osd.2

ceph osd rm 6

到这一步运行会提示该节点上的osd正在运行。停止之。到对应节点删除数据。

  1. rm -fr /data/osd.2/*

到这一步我们在看ceph的健康状况:

 cluster c4898b1c-7ac1-406d-bb5d-d3c7980de438
health HEALTH_OK
monmap e5: 1 mons at {node1=172.17.44.22:6789/0}, election epoch 1, quorum 0 node1
osdmap e217: 2 osds: 2 up, 2 in
pgmap v33222: 192 pgs: 192 active+clean; 216 MB data, 2519 MB used, 780 GB / 782 GB avail; 1769B/s wr, 0op/s
mdsmap e5954: 1/1/1 up {0=a=up:active}

可以看到只有2个osd节点了,而一般生产环境是需要3个的。我们将刚才移除的osd节点在添加进来。

2. 添加osd节点。

ceph osd create

返回一个数字2 独立磁盘的挂在等工作我们这里就省去了,df -h也能看到该数据。

ceph-osd -i 2 --mkfs

在填加节点上执行

/etc/init.d/ceph start osd

在存储节点上查看状态

cluster c4898b1c-7ac1-406d-bb5d-d3c7980de438

  health HEALTH_WARN 67 pgs peering; 67 pgs stuck inactive; 67 pgs stuck unclean
monmap e5: 1 mons at {node1=172.17.44.22:6789/0}, election epoch 1, quorum 0 node1
osdmap e225: 3 osds: 3 up, 3 in
pgmap v33340: 192 pgs: 125 active+clean, 67 peering; 125 MB data, 3552 MB used, 1170 GB / 1173 GB avail
mdsmap e5954: 1/1/1 up {0=a=up:active}

还是不正确?!别急,我们知道ceph是网络传输分布式文件系统,而我们这个集群前面为了存储存储能力,有过1个多G的数据,等几秒就能看到我们最终想看到的状态:

[root@node1 ceph]# ceph -w

 cluster c4898b1c-7ac1-406d-bb5d-d3c7980de438
health HEALTH_OK
monmap e5: 1 mons at {node1=172.17.44.22:6789/0}, election epoch 1, quorum 0 node1
osdmap e235: 3 osds: 3 up, 3 in
pgmap v33364: 192 pgs: 192 active+clean; 217 MB data, 3605 MB used, 1170 GB / 1173 GB avail; 1023B/s wr, 0op/s
mdsmap e5954: 1/1/1 up {0=a=up:active}

Ceph的状态错误的更多相关文章

  1. [原]openstack-kilo--issue(二十三)虚拟机状态错误power_status为shutdonw或者vm_status为error

    问题点:虚拟机由于存储不足出现了错误标识 主要显示为状态错误: 1)  vm_status 显示为 error 2) power_status 显示为 shutdown 解决方案: 更改表 nova. ...

  2. Openstack虚机实例状态错误手工恢复vm_state:error

    Openstack虚机实例状态错误手工恢复vm_state:error 1.找到状态为出错状态的VM.在数据库里面表现Status为ERROR而非ACTIVE. 2.找到出错状态VM的UUID. 3. ...

  3. 严重性 代码 说明 项目 文件 行 禁止显示状态错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译。

    严重性 代码 说明 项目 文件 行 禁止显示状态错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译. 默认情况下,对象文件最多可存放 65,536 (2^16) 个可寻址的 ...

  4. MFC vc++严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C3646 “m_SockClient”: 未知重写说明符

    严重性 代码 说明 项目 文件 行 禁止显示状态错误 C3646 “m_SockClient”: 未知重写说明符 MFC_TCP_CSocket_Client c:\users\tt2018\docu ...

  5. USB状态错误原因

    USBD_STATUS调试过USB的同学肯定见过BUS Hound里面给的各种错误提示,但是大家是否知道是什么意思呢? USBD_STATUS 出错原因,详解如下:   The USBD_STATUS ...

  6. jQuery jsonp无法捕获404、500状态错误

    转载:http://www.cnblogs.com/pao8041/p/4750403.html 不过上面的这个我用的不好,下次有机会用

  7. 关于xftp上传文件状态错误的解决

    新建一个文件夹,/usr/local/wwj 更改wwj权限 chmod 777 wwj 然后就可以上传了 如果还不行,就关闭防火墙

  8. IIS状态监测(如果状态错误则重启IIS)

    步骤: 1:建立健康监测文件.文件内容随意,这里以healthcheck.aspx命名,内容是<span>hellow word</span> 2:利用vbs语言执行IIS重启 ...

  9. devexpress 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 “lc.exe”已退出,代码为 -1。

    将licensens.licx删除,就能正常运行

随机推荐

  1. PySe-001-基础环境配置(MacOX)

    Python 是一种面向对象.解释型计算机程序设计语言,其源代码同样遵循 GPL(GNU General Public License)协议.Python语法简洁而清晰,具有丰富和强大的类库.由于Py ...

  2. Linux主机安全

    Linux主机安全 1.  禁用远程登录root. 2.修改ssh默认端口 暂定为3600. 3.  输错三次密码,禁用5分钟. 3.1 非图形界面登录 vim /etc/pam.d/login 在# ...

  3. thinkphp文章列表及删除文章

    出师不利,数据一次删完了... 教程:http://www.thinkphp.cn/topic/9757.html 首先要构造mysql数据库 模板代码 </head> <body& ...

  4. 密码有效性验证失败。该密码不够复杂,不符合 Windows 策略要求

    我在sqlserver2005中建立一个用户的时候,我的用户名和密码是一样的,它不允许我建立报“密码有效性验证失败.该密码不够复杂,不符合 Windows 策略要求”错误,我把密码改成其他一些就可以, ...

  5. ORACLE 11G内存管理方式

    SGA包含的组件: 组件名 说明 参数 buffer cache 存放从数据文件中读取的数据拷贝,所有用户之间是可以共享的 db_cache_size db_keep_cache_size db_re ...

  6. LinQ系列文章

    温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...

  7. scp noneed passwd

    经常在不同linux机器之间互相scp拷文件,每次总是要输入密码才可行. 通过ssh-keygen生成公钥,在两台机器之间互相建立信任通道即可. 假设本地机器client,远程机器为server. 1 ...

  8. 解决本地tomcat服务器内存不足问题

    2014-6-25 9:47:48 org.apache.coyote.http11.Http11Processor process严重: Error processing requestjava.l ...

  9. Java基础之处理事件——实现低级事件监听器(Sketcher 2 implementing a low-level listener)

    控制台程序. 定义事件监听器的类必须实现监听器接口.所有的事件监听器接口都扩展了java.util.EventListener接口.这个接口没有声明任何方法,仅仅用于表示监听器对象.使用EventLi ...

  10. Java基础之一组有用的类——Observable和Observer对象(Horrific)

    控制台程序. Obserable类提供了一个有趣的机制,可以把类对象中发生的改变通知给许多其他类对象. 对于可以观察的对象来说,类定义中需要使用java.util.Observable类.只需要简单地 ...