zoukankan      html  css  js  c++  java
  • 如何删除一台OSD主机

    在ceph的一台OSD主机出现故障的时候,数据可以通过副本的机制进行恢复,之后通过删除osd的操作也能够将故障osd从osd tree当中删除掉,但是故障的 osd 的主机仍然会留在集群当中,通过 ceph osd tree 或者打印 crush map 都可以看到这个损坏的节点主机名,所以这里讲下怎么删除掉这个无用的host

    首先集群环境为两台主机 node8109 node8110 , node8110主机出现故障需要清理掉

    先看下当前的osd tree状态

    [root@node8109 webui]# ceph osd tree
    ID WEIGHT  TYPE NAME             UP/DOWN REWEIGHT PRIMARY-AFFINITY 
    -1 4.00000 root default                                            
    -3 4.00000     rack localrack                                      
    -2 2.00000         host node8109                                   
     0 1.00000             osd.0          up  1.00000          1.00000 
     1 1.00000             osd.1          up  1.00000          1.00000 
    -4 2.00000         host node8110                                   
     2 1.00000             osd.2        down  1.00000          1.00000 
     3 1.00000             osd.3        down  1.00000          1.00000 
    

    查看osd的状态

    [root@node8109 webui]# ceph osd stat
         osdmap e66: 4 osds: 2 up, 4 in; 52 remapped pgs
    

    首先out掉osd

    [root@node8109 ~]# ceph osd out 2
    marked out osd.2. 
    [root@node8109 ~]# ceph osd out 3
    marked out osd.3. 
    

    从crush里面删除osd

    [root@node8109 ~]# ceph osd crush remove osd.2
    removed item id 2 name 'osd.2' from crush map
    [root@node8109 ~]# ceph osd crush remove osd.3
    removed item id 3 name 'osd.3' from crush map
    

    从集群中删除OSD

    [root@node8109 ~]# ceph osd rm osd.3
    removed osd.3
    [root@node8109 ~]# ceph osd rm osd.2
    removed osd.2
    

    从集群认证里面删除osd

    [root@node8109 ~]# ceph auth del osd.2
    updated
    [root@node8109 ~]# ceph auth del osd.3
    updated
    

    查看当前的crush map

    root@node8109 ~]# ceph osd tree
    ID WEIGHT  TYPE NAME             UP/DOWN REWEIGHT PRIMARY-AFFINITY 
    -1 2.00000 root default                                            
    -3 2.00000     rack localrack                                      
    -2 2.00000         host node8109                                   
     0 1.00000             osd.0          up  1.00000          1.00000 
     1 1.00000             osd.1          up  1.00000          1.00000 
    -4       0         host node8110
    

    下面有两种方法从osd tree 删除掉node8110,为命令方式和修改crush map 方式

    方式一:命令方式

    [root@node8109 ~]# ceph osd crush remove node8110
    removed item id -4 name 'node8110' from crush map
    [root@node8109 ~]# ceph osd tree
    ID WEIGHT  TYPE NAME             UP/DOWN REWEIGHT PRIMARY-AFFINITY 
    -1 2.00000 root default                                            
    -3 2.00000     rack localrack                                      
    -2 2.00000         host node8109                                   
     0 1.00000             osd.0          up  1.00000          1.00000 
     1 1.00000             osd.1          up  1.00000          1.00000
    

    方式二:通过修改 crush map 的方式

    导出当前的crush map

    [root@node8109 ~]#ceph osd getcrushmap -o crushmap.txt
    [root@node8109 ~]#crushtool -d crushmap.txt -o crushmap-decompile
    [root@node8109 ~]# vim crushmap-decompile 
    

    删除掉node8109相关的信息

    [root@node8109 ~]#crushtool -c crushmap-decompile  -o crushmap-compile
    [root@node8109 ~]# ceph osd setcrushmap -i crushmap-compile 
    set crush map
    [root@node8109 ~]# ceph osd tree
    ID WEIGHT  TYPE NAME             UP/DOWN REWEIGHT PRIMARY-AFFINITY 
    -1 2.00000 root default                                            
    -3 2.00000     rack localrack                                      
    -2 2.00000         host node8109                                   
     0 1.00000             osd.0          up  1.00000          1.00000 
     1 1.00000             osd.1          up  1.00000          1.00000
    

    总结:

    从上面的两种方式可以看出,使用命令的方式更为简单直接,而修改crush map的方式需要去做修改的操作,有一定的修改错误的风险,所以在做crush map的相关操作的时候,建议是能用命令方式做的就用命令方式去做操作

  • 相关阅读:
    Mac Sublime Text 3 配置Python环境及安装插件
    iOS 简单易用的二维码扫描及生成二维码三方控件LFQRCode,可灵活自定义UI
    iOS 自定义相机带拍摄区域边框及半透明遮罩层(含源码)
    Xcode8 不能显示blame,show blame for line 灰色不可点解决办法
    github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法
    Mysql查询的一些操作(查表名,查字段名,查当月,查一周,查当天)
    SqlServer表结构查询
    NET(C#):XmlArrayItem特性和XmlElement特性在序列化数组的差别
    Git常用命令
    MySQL添加用户、删除用户与授权
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575313.html
Copyright © 2011-2022 走看看