Ceph剔除主机,Crushmap遗留脏数据

背景:

  1. 一个集群总共有5台主机(Host11,Host12,Host13,Host14,Host16),由于资源过剩,需要剔除两台主机用于其他用途,host11-13都是monitor+node,Pool的副本数目是2。所以优先考虑剔除主机14和16

操作步骤:

  1. Monitor操作,将OSD的状态设置Out

  2. 登录对应OSD节点 ,停止OSD守护进程

  3. Crushmap中删除OSD

  4. 删除OSD的认证信息

  5. 登录对应OSD节点 ,取消挂载文件系统

注意事项:

  1. 由于副本数目是2,同一时间不能有两个OSD或者以上不工作。

  2. 停止OSD和删除Crushmao的信息,都将导致PG的重新收敛,所以最好每一个步骤都确保当前ceph状态是OK才进行下一步。

  ######参考脚本

#!/bin/sh
####judge state of ceph
judge() {
  while true
  do
    sleep 5
    ceph -s |grep HEALTH_OK
      if [[ $? -eq 0 ]]
      then
        break
      else
        sleep 60
      fi
  done
}
####rdel osd from host14
while true
do
  for host in `seq 31 39`
  do
    echo "now.... ,del osd.$host from host14" >>stat.txt
    ceph osd out $host
    judge
    ssh 192.168.220.14 "/etc/init.d/ceph stop osd.$host"
    judge
    ceph osd crush remove osd.$host
    judge
    ceph auth del osd.$host
    judge
    ceph osd rm osd.$host
    judge
    ssh 192.168.220.14 "umount /var/lib/ceph/osd/ceph-$host"
    judge
    echo "del osd.$host from host14 suceess!!!!" >>stat.txt
  done
  break
done

######del osd from host16
while true
do
  for host in `seq 40 45`
  do
    echo "now.... ,del osd.$host from host16" >>stat.txt
    ceph osd out $host
    judge
    ssh 192.168.220.16 "/etc/init.d/ceph stop osd.$host"
    judge
    ceph osd crush remove osd.$host
    judge
    ceph auth del osd.$host
    judge
    ceph osd rm osd.$host
    judge
    ssh 192.168.220.16 "umount /var/lib/ceph/osd/ceph-$host"
    judge
    echo "del osd.$host from host16 suceess!!!!" >>stat.txt
  done
  break
done

故障现象以及解决方案:

  1. 剔除完OSD之后,使用ceph -s状态正常,但是使用ceph osd tree查看列表的时候,依旧发现了host14和host16的存在。此时两台主机都没有任何OSD,列表中有他们俩算是无用的脏数据

  2. crushmap的一些架构图,是不会动态修改的,所以需要手工的修改crushmap,修改进行如下的操作

ceph osd  getcrushmap -o old.map        //导出crushmap
crushtool -d old.map -o old.txt            //将crushmap转成文本文件,方便vim修改
cp old.txt new.txt        //做好备份工作
vim new.txt
  host node14 {
xxxxx
xxxxx
}
  host node16 {
xxxxx
xxxxx
}
root default {
item node14 weight 0.098
item node16 weight 0.098
}
###把以上的内容都删除掉,然后重新编译为二进制文件,最后将二进制map应用到当前map中
curshtool -c new.txt -o new.map
ceph osd setcrushmap -i new.map
###此时ceph会重新收敛,等待收敛完毕后,ceph可正常使用

原文地址:https://www.cnblogs.com/System-hjf/p/10261461.html

时间: 2024-08-27 09:15:28

Ceph剔除主机,Crushmap遗留脏数据的相关文章

如何使用R语言解决可恶的脏数据

转自:http://shujuren.org/article/45.html 在数据分析过程中最头疼的应该是如何应付脏数据,脏数据的存在将会对后期的建模.挖掘等工作造成严重的错误,所以必须谨慎的处理那些脏数据. 脏数据的存在形式主要有如下几种情况: 1)缺失值 2)异常值 3)数据的不一致性 下面就跟大家侃侃如何处理这些脏数据. 一.缺失值 缺失值,顾名思义就是一种数据的遗漏,根据CRM中常见的缺失值做一个汇总: 1)会员信息缺失,如身份证号.手机号.性别.年龄等 2)消费数据缺失,如消费次数.

脏数据

从广义上看,脏数据是指没有进行过数据预处理而直接接收到的.处于原始状态的数据: 从狭义上看,是不符合研究要求,以及不能够对其直接进行相应的数据分析. 脏数据依据不同的分析目的有不同的定义,如在常见的数据挖掘工作中,脏数据是指不完整.含噪声.不一致的数据:而在问卷分析中,脏数据则是指不符合问卷要求的数据. 开发中: 脏数据是指源系统中的数据不在给定的范围内或对于实际业务毫无意义,或是数据格式非法,以及在源系统中存在不规范的编码和含糊的业务逻辑. 在数据库技术中,脏数据在临时更新(脏读)中产生.事务

Hibernate脏数据检查

脏数据检查:    什么是脏数据?脏数据并不是废弃和无用的数据,而是状态前后发生变化的数据.我们看下面的代码:  Transaction tx=session.beginTransaction();  User user=(User)session.load(User.class,"1");//从数据库中加载符合条件的数据  user.setName("zx");//改变了user对象的姓名属性,此时user对象成为了所谓的"脏数据"  tx.c

在ASP.NET MVC下有关上传图片脏数据的解决方案

在"在ASP.NET MVC下实现单个图片上传, 客户端服务端双重限制图片大小和格式, 服务端裁剪图片"中,已经实现了在客户端和服务端限制图片大小和格式,以及在服务端裁剪图片.但还有一个重要的话题是需要面对的,那就是图片脏数据问题. 假设用户添加产品信息,并且上传了图片,可之后用户没有点击页面上的添加按钮,这就导致上传图片成为"脏数据",存在着却一直不会被使用.解决这个问题的大致思路是: ○ 在上传图片的时候,把图片保存到一个临时文件夹,或者叫缓存文件夹○ 当用户真

事务 脏数据

关于脏数据比如说,有两个用户A,B同时操作数据库,A开始了一个事务,修改了某行,但还未提交,这个时候,B开始另一个事务,读取了该行,然后A回滚了事务,即修改被取消了,那么,B读取到的那一行数据就是脏数据 上面这句话正确吗?如果事物A未提交,事物B能读到A所修改的数据吗? 如何判断A,B 是否属于同一个事物? 在PL/SQL 中先删一条数据(没有提交)紧接着在查刚才那条数据是查不到的,既然没有提交为什么会查不到呢? 希望各位能详细回答一下,小弟不胜感激. Q:如果事物A未提交,事物B能读到A所修改

Docker跨主机容器互传数据问题及解决方法

目前我这里docker主要使用1.5版本,用途是给研发.运维做测试环境,给游戏与平台业务做生产应用,昨天接到某游戏研发反馈,2个不同宿主机进行数据同步的时候,出现以下错误 orrupted MAC on input. Disconnecting: Packet corrupt lost connection 经过谷歌搜索发现问题原因是 "Corrupted MAC on input" This situation happens when the packet is decrypted

好记性不如烂笔头24-JAVA处理数据库事务(2) - 脏数据

读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被除撤消,而此时T1把已修改过的数据又恢复原值,T2读到的数据与数据库的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据. 脏数据在比较复杂的交互式系统中,非常常见. 1.用JAVA处理数据库事务的准备 要有一个能够访问数据库的应用.下面的示例都基于ORACLE进行. create table ffm_account( id int primary key , n

2个Kubernetes使用同一个Ceph存储达到Kubernetes间持久化数据迁移

2个Kubernetes使用同一个Ceph存储达到Kubernetes间持久化数据迁移 [TOC] 当前最新Kubernetes稳定版为1.14.现在为止,还没有不同Kubernetes间持久化存储迁移的方案.但根据Kubernetes pv/pvc绑定流程和原理,只要 "存储"-->"PV"-->"PVC" 的绑定关系相同,即可保证不同间Kubernetes可挂载相同的存储,并且里面是相同数据. 1. 环境 原来我的Kubernet

(二)脏数据的预防及处理

(啊···我的排版好垃圾·····) 如何处理已产生的脏数据?有那么多预防脏数据产生的方法,但相信脏数据的产生还是在所难免的.脏数据一旦产生,导致的系统行为也是不可预测的,可能无足轻重,也可能暴露非常严重的缺陷.该如何应对产生的脏数据呢? 脏数据产生以后有两种存在形式,一种是已经引起某些问题被发现了,另一种是还不被人知道,不知道哪天会发生什么样的问题. 已经暴露的脏数据 首要的是对数据的快速修复,让系统恢复正常运转.对于专业的脏数据处理可以了解一下数据清洗(Data cleaning)技术.咱们