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

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

先看下当前的osd tree状态

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

查看osd的状态

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

首先out掉osd

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

从crush里面删除osd

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

从集群中删除OSD

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

从集群认证里面删除osd

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

查看当前的crush map

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

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

方式一:命令方式

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

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

导出当前的crush map

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

删除掉node8109相关的信息

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

总结:

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

如何删除一台OSD主机的更多相关文章

  1. ssh 设置私钥实现两台linux主机无密码访问

    在服务器主机上(称为A主机) 创建公钥与私钥: ssh-keygen -t rsa 一路回车,如果想设置密码短语,在提示 passphrase 的时候设置密码短语 查看生成的公钥及私钥: ls ~/. ...

  2. 两台Linux主机之间文件的复制

    使用scp命令可以实现两台Linux主机之间的文件复制,基本格式是: scp [可选参数] file_source file_target 1. 复制文件 命令格式: scp local_file r ...

  3. docker 现实---联网多台物理主机,容器桥到物理网络(三)

    docker 默认桥接卡docker0 只有当这个单元中的所有容器桥接卡.例如,在主机虚拟网络适配器容器看通常称为veth***  和docker只要把这些卡桥接在一起,例如下面的附图: waterm ...

  4. 多台linux主机之间建立免密通信

    多台linux主机之间设置免密通信 例:A 向 B设置免密通信 第一步 A生成密钥对 ssh-keygen -t rsa -t 指定秘钥的类型 rsa 秘钥类型 密钥目录:/root/.ssh/(如果 ...

  5. Docker多台物理主机之间的容器互联

    Docker 默认的桥接网卡是 docker0.它只会在本机桥接所有的容器网卡,举例来说容器的虚拟网卡在主机上看一般叫做 veth* 而 Docker 只是把所有这些网卡桥接在一起,如下: [root ...

  6. 多台linux主机间免密码登录

    即在一台主机上登录另一台主机. 有2台linux主机A.B.A输入命令ssh B的ip地址以连接B,发现需要输入B的登录密码,怎样不需要输入密码呢? 步骤1: 在主机A中,输入ssh-keygen - ...

  7. 两台Linux主机互传文件可以使用SCP命令来实现

    当两台linux主机之间要互传文件时可使用SCP命令来实现 复制文件: (1)将本地文件拷贝到远程 scp 文件名 --用户名@计算机IP或者计算机名称:远程路径 (2)从远程将文件拷回本地 scp ...

  8. redis 集群安装 3主3从3台云主机

    穷呀!! 3台云主机来搭建个集群! 配置低的伤心! 1u2G ! 不说了,干吧! 可以看出 OK了. 准备工作 :

  9. [转]Windows 8.1删除这台电脑中视频/文档/下载等六个文件夹的方法

    Windows 8.1 已将“计算机”正式更名为“这台电脑”,当我们双击打开“这台电脑”后,也会很明显得发现另外一些变化:Windows 8.1  默认将视频.图片.文档.下载.音乐.桌面等常用文件夹 ...

随机推荐

  1. MVC-WebApi配置 Swagger(Web Api可视化文档)

    一.从创建MVC WebApi开始 第一步创建MVC WebApi就创建好了,接下来就进入正题,上干货 ================================================ ...

  2. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.4)- 串行NOR Flash下载算法(Keil MDK工具篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是Keil MDK工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash ...

  3. es 讲义

    链接: https://pan.baidu.com/s/193jObXs85OZcvAHDycUXlw 提取码: ewbp

  4. go sync.WaitGroup

    package mainimport ( "fmt" "sync")func say(i int ,wg *sync.WaitGroup) { defer wg ...

  5. 【API进阶之路】研发需求突增3倍,测试团队集体闹离职

    摘要:最近研发的需求量涨了3倍,开发团队拼命赶进度,可苦了测试团队. 本以为从一线研发转管理后会清闲一些,但是没想到,我还要充当救火队员的角色. 到了第四季度,各业务部门都在憋着劲儿冲业绩,毕竟这跟年 ...

  6. ERROR [RMI TCP Connection(3)-127.0.0.1] - init datasource error

    运行报错 ERROR [RMI TCP Connection(3)-127.0.0.1] - init datasource error, url: jdbc:mysql://localhost:33 ...

  7. sentinel控制台与应用通信原理

    1,应用程序配置中的port选项用于指定在应用端启动的http server的端口,默认8719 sentinel: transport: dashboard: localhost:8080 port ...

  8. ES2020链判断运算符?.和Null判断运算符??

    链判断运算符 ?.  业务场景: 1 // 假设data是个数组,如果data没有值,为undefinded,则直接复制会报错,因为没有length这个属性 2 3 const dateCount = ...

  9. robotframework执行自动化不能转换为h5页面的问题解决

    电脑换成win10后,搭建了robotframework环境,执行自动化发现页面不支持h5页面了.请教了大佬,解决办法如下: 1.切换到DOS环境下,执行pip list命令,查看selenium2l ...

  10. Lucas(卢卡斯)定理模板&&例题解析([SHOI2015]超能粒子炮·改)

    Lucas定理 先上结论: 当p为素数: \(\binom{ N }{M} \equiv \binom{ N/p }{M/p}*\binom{ N mod p }{M mod p} (mod p)\) ...