Ceph删除OSD上一个异常object

前言

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

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

处理步骤

查找对象的路径

[root@lab8106 ~]# ceph osd map rbd  rbd_data.857e6b8b4567.00000000000000baosdmap 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

总结

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

原文发布于微信公众号 - 磨磨谈(momotan1987)

原文发表时间:2017-04-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏雪胖纸的玩蛇日常

django引入模板时,部分css文件渲染不成功失灵引入不成功

1615
来自专栏finleyMa

mongoDB总结

image.png https://docs.mongodb.com/manual/reference/command/usersInfo/#...

1642
来自专栏前端黑板报

Mac配置Maven

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 1.下载安装Maven 安装其实就是解压到一个目录里面...

2076
来自专栏cloudskyme

as5.4安装gcc和g++

在光盘中或者到网站上下载 kernel-headers-2.6.18-164.el5.i386.rpm compat-glibc-headers-2.3.4-2...

38611
来自专栏Java成神之路

Java微信开发_Exception_02_"errcode":40164,"errmsg":"invalid ip 61.172.68.219, not in whitelist hint

1374
来自专栏hbbliyong

idea中使用scala运行spark出现Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Gen

idea中使用scala运行spark出现: Exception in thread "main" java.lang.NoClassDefFoundError...

3884
来自专栏康怀帅的专栏

终端录屏工具 asciinema

asciinema 是一个用 ClojureScript 编写的开源命令行录屏工具。 安装 macOS $ brew update && brew instal...

3794
来自专栏一个会写诗的程序员的博客

《Springboot极简教程》问题解决:org.apache.catalina.LifecycleException: A child container failed during start错误

项目依赖里面单独指定了servlet-api,类路径里面有多个版本servlet-api,导致类冲突

1313
来自专栏java架构师

Hadoop学习12-配置集群环境

由于之前虚拟机都是用的桥接方式,有时候没有网络可用,想学习的时候,就狠不方便。 于是研究了一下,希望搭建一个多台虚机组成一个局域网的集群,即host-only方...

3118
来自专栏Java成神之路

Linux_笔记_01_设置静态IP与 SecureCRT连接Linux

使用命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0

952

扫码关注云+社区

领取腾讯云代金券