zoukankan      html  css  js  c++  java
  • Ceph删除OSD上一个异常object

    前言

    ceph里面的数据是以对象的形式存储在OSD当中的,有的时候因为磁盘的损坏或者其它的一些特殊情况,会引起集群当中的某一个对象的异常,那么我们需要对这个对象进行处理

    在对象损坏的情况下,启动OSD有的时候都会有问题,那么通过rados rm的方式是没法发送到这个无法启动的OSD的,也就无法删除,所以需要用其他的办法来处理这个情况

    处理步骤

    查找对象的路径

    [root@lab8106 ~]# ceph osd map rbd  rbd_data.857e6b8b4567.00000000000000ba
    osdmap e53 pool 'rbd' (0) object 'rbd_data.857e6b8b4567.00000000000000ba' -> pg 0.2daee1ba (0.3a) -> up ([1], p1) acting ([1], p1)
    

    先找到这个对象所在的OSD以及PG

    设置集群的noout

    [root@lab8106 ~]#ceph osd set noout 
    

    这个是为了防止osd的停止产生不必要的删除

    停止OSD

    [root@lab8106 ]#systemctl stop ceph-osd@1
    

    如果osd已经是停止的状态就不需要做这一步

    使用ceph-objectstore-tool工具删除单个对象

    [root@lab8106 ]#ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-1/ --journal-path /var/lib/ceph/osd/ceph-1/journal --pgid 0.3a  rbd_data.857e6b8b4567.00000000000000ba remove
    

    如果有多个副本的情况下,最好都删除掉,影响的数据就是包含这个对象的数据,这个操作的前提是这个对象数据已经被破坏了,如果是部分破坏,可以用集群的repair进行修复,这个是无法修复的情况下的删除对象,来实现启动OSD而不影响其它的数据的

    启动OSD

    [root@lab8106 ]# systemctl start ceph-osd@1
    

    解除noout

    [root@lab8106 ~]#ceph osd unset noout 
    

    总结

    一般情况下比较少出现这个情况,如果有这样的删除损坏的对象的需求,就可以这么处理

    变更记录

    Why Who When
    创建 武汉-运维-磨渣 2017-04-19
  • 相关阅读:
    cat n个文件 June
    promise 码农
    [Linux]加载iso文件,并绑定到FTP共享
    [Linux]解决一例多个硬盘Linux启动的问题
    [CentOS]创建yum本地源
    [Java]服务器端用 Axis1.4 返回复杂对象记录
    [chs]Axis2 Binary Distribution 安装指南
    [CentOS]开启yum缓存
    [转]CSS hack总结
    闭包匿名闭包
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575419.html
Copyright © 2011-2022 走看看