ceph pg repair这一操作会先进行pg scrub,得到该PG中不一致的对象,然后再进行recovery。
pg scrub时主副本和从副本均会进行资源预约,只有当scrubs_pending + scrubs_active < _conf->osd_max_scrubs时scrub才能继续进行,也即repair才能进行,否则,repair会失效。
scrubs_pending:该osd已经预约成功,即将进行scrub的pg。
scrubs_active:该osd正在进行scrub的对象。
osd_max_scrubs:一个osd同一时刻默认只能有一个pg做scrub。
资源预约失败日志如下图:
ceph pg inconsistent不一致(主副本是好的),ceph pg repair无效解决办法:
把三副本的osd的osd_max_scrubs都先调大,等到修复好后再调回为1。
备注:
1、只有主副本是好的,从副本有问题时,才能直接使用ceph pg repair。主副本损坏导致的不一致,需要使用其他方法修复。
2、主副本和从副本均有可能因为资源预约失败。
3、初始调大为2,依然无效,调大为5,成功。
网友评论