在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的相关操作的时候,建议是能用命令方式做的就用命令方式去做操作

最新文章

  1. CodeForces 716B Complete the Word
  2. PHP访问MSSQL数据库(实例代码)
  3. Google 黑客搜索技巧
  4. WPF 虚拟键盘
  5. LeetCode:Remove Duplicates from Sorted Array I II
  6. JavaScript、Jquery选择题
  7. linux(centos6.5 i386)安装mysql5.6源码包
  8. 科普:浅谈 Hellinger Distance
  9. JQuery Uplodify上传附件(同一个页面多个uplodify控件解决方案)
  10. ABAP DEBUG
  11. ganglia 无数据问题解决
  12. [D3] 8. Margins
  13. easyui实现权限管理
  14. 在TTF字体中提取想要的文字
  15. JAV基础语法之---数据类型转换
  16. c# 实时监控数据库 SqlDependency
  17. Django-restframework之路由控制、解析器及响应器
  18. XSS学习(二)
  19. 搭建高可用的Redis服务,需要注意这些方面!
  20. EL 快速开始

热门文章

  1. git常见操作和指令
  2. node.js操作MySQL数据库
  3. 实战一:建立springcloud基础项目结构
  4. centos7下SVN服务器搭建
  5. C# 中的只读结构体(readonly struct)
  6. python的分支语句与循环
  7. python爬虫中的requests模块
  8. 记录电子竞技游戏jesp中的传输过程公式
  9. [游记] 2020ZJOI 爆零记
  10. 推动中国制造升级,汽车装配车间生产流水线3D可视化