near_full和full是什么?

Ceph集群中会有一个使用容量的告警水位,当使用容量到达near_full告警水位时,会触发集群进行告警,提示管理员此时集群容量已经到达告警水位,如果管理员没有及时进行扩容或者相应的处理,随着数据的增多,当使用容量到达full告警水位时,集群就不能对外提供数据写入服务(包括数据的删除操作)。

如何查看当前集群的near_full及full水位?

集群的near_full及full水位可以通过查询Ceph集群节点的Mon及OSD获取,方法如下(默认认为集群的Mon之间的配置及OSD之间的配置一致):


在控制节点查询: ceph --show-config | grep full 或者通过以下方法查询 ceph --admin-daemon /run/ceph/ceph-mon.localhost.asok config show | grep full mon_osd_full_ratio:0.95 mon_osd_nearfull_ratio:0.85


在osd节点查询 ceph --show-config | grep full 或者通过以下方法查询 ceph --admin-daemon /run/ceph/ceph-osd.xx.asok config show | grep full mon_osd_full_ratio:0.95 mon_osd_nearfull_ratio:0.85


遇到near_full的告警该怎么办?

如果集群已经有near_full的告警了,而且也有扩容的设备,那么就可以考虑进行集群的扩容,包括增加磁盘或者增加存储节点。

遇到full的告警该怎么办?

如果集群已经是full的告警了,此时业务已经无法向集群继续写入数据,而此时如果暂时无磁盘或存储节点可供扩容,应该先通知业务及时做好数据保存工作,并对开始对集群进行紧急配置删除一些无用的数据,恢复集群正常工作状态,待扩容设备到了再进行扩容操作。

紧急配置步骤


1.禁止osd读写 ceph osd pause


2.通知mon修改nearfull及full阈值 ceph tell mon.* injectargs "--mon-osd-nearfull-ratio 0.96" ceph tell mon.* injectargs "--mon-osd-full-ratio 0.97" ceph tell osd.* injectargs "--mon-osd-nearfull-ratio 0.96" ceph tell osd.* injectargs "--mon-osd-full-ratio 0.97"


3.通知pg修改nearfull及full的阈值 ceph pg set_nearfull_ratio 0.96 ceph pg set_full_fatio 0.97


4.解除osd禁止读写


5.删除无用的数据,


6.更改osd的权值。 ceph osd crush reweight osd.xx x.x


将配置还原 ceph tell mon.* injectargs "--mon-osd-nearfull-ratio 0.85" ceph tell mon.* injectargs "--mon-osd-full-ratio 0.95" ceph tell osd.* injectargs "--mon-osd-nearfull-ratio 0.85" ceph tell osd.* injectargs "--mon-osd-full-ratio 0.95"

ceph pg set_nearfull_ratio 0.85 ceph pg set_full_fatio 0.95