ceph Vol 45 Issue 1

1.unfound objects blocking cluster, need help!

Hi,

I have a production cluster on which 1 OSD on a failing disk was slowing the whole cluster down. I removed the OSD (osd.87) like usual in such case but this time it resulted in 17 unfound objects. I no longer have the files from osd.87. I was able to call "ceph pg PGID mark_unfound_lost delete" on 10 of those objects.

On the remaining objects 7 the command blocks. When I try to do "ceph pg PGID query" on this PG it also blocks. I suspect this is same reason why mark_unfound blocks.

Other client IO to PGs that have unfound objects are also blocked. When trying to query the OSDs which has the PG with unfound objects, "ceph tell" blocks.

I tried to mark the PG as complete using ceph-objectstore-tool but it did not help as the PG is in fact complete but for some reason blocks.

I tried recreating an empty osd.87 and importing the PG exported from other replica but it did not help.

Can someone help me please? This is really important.

这个问题是作者一个集群中(ceph 0.94.5)出现了一个磁盘损坏以后造成了一些对象的丢失,然后在做了一定的处理以后,集群状态已经正常了,但是还是新的请求会出现block的状态,这个情况下如何处理才能让集群正常,作者贴出了pg dump,ceph -s,ceph osd dump相关信息,当出现异常的时候,需要人协助的时候,应该提供这些信息方便其他人定位问题,最后这个问题作者自己给出了自己的解决办法,出现的时候影响是当时的流量只有正常情况下的10%了,影响还是很大的

复现问题过程

[root@lab8106 ceph]# rados -p rbd put testremove testremove
[root@lab8106 ceph]# ceph osd map rbd testremove
osdmap e85 pool 'rbd' (0) object 'testremove' -> pg 0.eaf226a7 (0.27) -> up ([1,0], p1) acting

写入文件,找到文件,然后去后台删除对象

然后停止掉其中一个OSD,这里选择停掉主OSD

systemctl stop ceph-osd@1
ceph osd out 1

查看状态pg被锁住状态active+degrade,不会迁移完整,并且会检测到了有数据unfound了

然后向这个对象发起get请求

[root@lab8106 ceph]# rados -p rbd get testremove testfile

前端rados请求会卡住,后端出现 requests are blocked

看下如何处理

ceph pg 0.27 mark_unfound_lost delete

邮件列表作者的环境,这个命令也无法执行,直接卡死,后来发现有个执行窗口,就是这个对象所在的PG的OSD在启动过程中还是可以接受命令的,就在这个执行窗口执行这个命令就可以解决了

执行了以后可以执行命令

[root@lab8106 ceph]# rados  -p rbd  get testremove  a
error getting rbd/testremove: (2) No such file or directory

这个时候查询集群的状态可以看到,集群已经正常的恢复了,不会因为一个对象的丢失造成集群的PG状态卡在待迁移状态

可以看到请求是失败的但是不会像之前一样卡死的状态,卡死是比失败更严重的一种状态

如果不想看到老的 slow request ,那么就重启这个卡住的PG所在的osd,如果本来就正常了,那么这个异常状态就会消失

这个是一个需要人工干预的状态,实际上模拟的就是对象丢失的场景,什么情况下会对象丢失,一般来说,底层磁盘的故障,写下去的对象当时记录着有,正好写入完成又准备写副本的时候,磁盘坏了,这个就有比较高的概率出现,所以出现了坏盘要尽早更换

ceph unfound objects 处理的更多相关文章

  1. 记一次ceph pg unfound处理过程

    今天检查ceph集群,发现有pg丢失,于是就有了本文~~~ 1.查看集群状态 [root@k8snode001 ~]# ceph health detail HEALTH_ERR 1/973013 o ...

  2. Ceph PG介绍及故障状态和修复

    1 PG介绍pg的全称是placement group,中文译为放置组,是用于放置object的一个载体,pg的创建是在创建ceph存储池的时候指定的,同时跟指定的副本数也有关系,比如是3副本的则会有 ...

  3. Object Pascal中文手册 经典教程

    Object Pascal 参考手册 (Ver 0.1)ezdelphi@hotmail.com OverviewOverview(概述)Using object pascal(使用 object p ...

  4. Ceph 状态报警告 pool rbd has many more objects per pg than average (too few pgs?)

    定位问题 [root@lab8106 ~]# ceph -s cluster fa7ec1a1-662a-4ba3-b478-7cb570482b62 health HEALTH_WARN pool ...

  5. ceph运维命令合集

    一.集群 1.启动一个ceph进程 启动mon进程 [root@ceph-adm ~]#203.109 service ceph start mon.ceph-mon1 启动msd进程 [root@c ...

  6. 最新ceph集群常用命令梳理

    结合网络.官网.手动查询等多方渠道,整理ceph维护管理常用命令,并且梳理常规命令在使用过程中的逻辑顺序.另外整理期间发现ceph 集群的命令体系有点乱,详细情况各自体验. 一:ceph集群启动.重启 ...

  7. Ceph分布式存储-原理介绍及简单部署

    1)Ceph简单概述Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目.Ceph源码下载:http://ceph.com/download/.随着云计算的发 ...

  8. ceph 分布式存储安装

    [root@localhost ~]# rm -rf /etc/yum.repos.d/*.repo 下载阿里云的base源 [root@localhost ~]# wget -O /etc/yum. ...

  9. ceph 运维常用指令

    集群 启动一个ceph 进程 启动mon进程 service ceph start mon.node1 启动msd进程 service ceph start mds.node1 启动osd进程 ser ...

随机推荐

  1. react中 受控组件和 非受控组件 浅析

    一 受控组件 顾名思义,受控 也就是能够被控制,简而言之也就是 该组件ui的显示或者内部state逻辑的变化依赖外部的 props的传入. 二 非受控组件 顾名思义,非受控,也就是内部的视图变化,st ...

  2. 【C语言学习笔记】C语言函数执行成功时,返回1和返回0,究竟哪个好?

    基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数.C语言代码的组合千变万化,因此函数的功能可能会 ...

  3. 理解 PHP 依赖注入 和 控制反转

    理解 PHP 依赖注入 和 控制反转   要想理解 PHP 依赖注入 和 控制反转 两个概念,就必须搞清楚如下的两个问题: DI -- Dependency Injection 依赖注入 IoC -- ...

  4. php+nginx 整合

    php编译 https://www.cnblogs.com/php-linux/p/12360858.html nginx编译 https://www.cnblogs.com/php-linux/p/ ...

  5. BOOST 条件变量使用

    代码: // boost库 条件变量 使用测试 #include <iostream> #include <boost/thread.hpp> using namespace ...

  6. 渗透测试之nmap

    一,功能介绍 Nmap是网络连接端口扫描软件,用来扫描网上电脑开放的哪些连接端口,并且确定哪些服务运行在哪些端口连接,推断是哪个操作系统,他是网络管理员必备的软件之一,以及用于评估网络系统安全. 二, ...

  7. 【Flutter 1-2】在 Windows 10下安装Flutter+Dart+Android Studio 配置Flutter开发环境

    在 Windows 10下安装Flutter+Dart+Android Studio 配置Flutter开发环境 文章首发地址 配置环境变量 由于部分网站被墙的原因,我们需要先配置Flutter国内镜 ...

  8. 数位dp(贴一个模板=。=)

    emmmm,之前看到大佬的博客感觉这个模板挺有用的,就贴了一个= = 然后解释什么的都有了就...... 数位dp一般应用于: 求出在给定区间[A,B]内,符合条件P(i)的数i的个数. 条件P(i) ...

  9. 【4】TensorFlow光速入门-保存模型及加载模型并使用

    本文地址:https://www.cnblogs.com/tujia/p/13862360.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  10. sqlsugar入门(1)-初识sugar正确打开sugar的方式

    1.实例化DB public static SqlSugarClient GetDB(string s) { var ssc = new SqlSugarClient(new ConnectionCo ...