处理ceph incompelete的经验
前言
最近已经见到几个环境出现过incompelete了,这个在很久以前Jewel正在合入mark-complete工具的时候就有做过类似的处理,但是随着处理的环境越来越多,这个地方还是有些需要注意的,本篇是写一些需要注意的点
一般来说是环境有多个机器同时坏盘或者掉电,或者掉主机引起的
处理流程
拿到环境第一时间是对环境标记noout,这个操作是为了防止集群的环境反复震荡,标记noout没有osd标记为out的情况下,只是pg状态变化,实际数据并不进行迁移
把能够启动的osd都启动起来,直到没有能启动的osd了,如果有能力处理的话,尽量把osd拉起来,如果是硬盘损坏掉了,确定无法修复了,那么就当这个osd无法救回来了,这个步骤里面是要尽最大努力把osd拉起来
这里面还有一部分情况是osd启动不起来,但是数据目录是可以访问的,这个地方就把这种盘先保留好,一定不要推掉了,很多运维上去看盘坏了就重新创建osd,这种推掉osd的操作建议只在active+clean的时候才做,否则的话,pg状态不对,又把osd推掉了,数据有比较大的概率丢失
在以上操作做完以后,开始处理异常的pg,处理的时候,首先把异常的pg的info全部倒好备份一下,还把pg分布保存下
ceph pg 1.4 query > 1.4query
ceph pg dump|grep incom > pgincom.info
全部保留一份,通过这个信息能够分析出数据的完整性和数据在哪里,这个一定要保留好原始版本,这个是有可能在后面做一些操作后就变更了,造成你不知道去哪里找数据
一部分情况下,根据query的信息提示,会告诉你 lost掉某个盘,可能让它恢复,这个操作的时候也是需要检查下,这个pg的数据是不是在当前环境下面有地方有完整的数据,确定有的话再根据提示进行lost的操作,如果还不放心,或者更稳妥的话,这个时候就需要备份pg数据了,这里就有个问题了,在做系统规划的时候,系统盘要尽量大点,这个时候就可以用来保存pg导出的数据了,如果是filestore,容量不够还可以拿osd的目录做临时存储,如果是bluestore,就只能拿本地盘做临时存储了
做完上面的标记和备份的操作后,有一部分的pg可能恢复正常了,然后还有一部分恢复不了正常,这个时候就需要根据上面保存好的query的信息里面拿到pg的数据在哪个osd上面,注意这个时候当前的query是可能查不到数据在哪里的,这个时候会出现提示数据在osd.1,osd.2,osd.3实际数据在osd.8的情况,并且可能完全没地方知道是在osd.8的,这个信息是存储在最开始版本的query里面的,所以在处理前,一定备份好信息,备份好数据
这个时候就开始把pg的数据导入到主osd,导入以后就可以标记mark-complete了,然后拉起osd,然后看下处理的这个pg的状态
总结
在处理故障过程中,首先要保证能把能够拉起来的osd尽量全部拉起来,这个操作做好了可以省掉很多工作,pg是交叉映射的,有的时候正好交叉的osd全down了,所以能拉起来一个,这个pg也是可以状态恢复的
在所有操作前都是要进行数据备份的,这样即使出了问题,数据在都可以导入,导出的数据是需要检查下对象数目的,这个在导出前可以用ceph-object-tool做list操作检查pg对象的个数是否跟pg dump里面的一致的,通过大小也可以大致判断,这个在L版本的ceph做rm pg操作的时候,是有一个export-remove的命令的,这个把rm变成了mv操作,安全性比以前要好很多,防止手抖删错了,可以再导入
总之在数据处理过程中要小心,操作前备份好,操作过程每一步进行命令反馈确认,也就是你执行了命令应该是什么结果,这个要提前有分析,一旦产生偏差的时候,就要去分析了
本篇是操作上的建议,并没有具体命令,这个需要自己在实际操作过程中体会了,当然生产环境没那么多练手的机会,那么就尝试下对测试环境多进行破坏后进行恢复了,尽量不要直接推掉测试环境,每一次的问题处理都是为生产的处理做好储备工作
变更记录
| Why | Who | When |
|---|---|---|
| 创建 | 武汉-运维-磨渣 | 2018-12-19 |
处理ceph incompelete的经验的更多相关文章
- ceph在品高云中的实践
ceph简介 ceph是业界目前人气最高的开源存储项目之一,关于其定义在官网是这样的:"Ceph is a unified, distributed storage system desig ...
- CephFS cache tier实践
这是一篇分享文,作者因为最近想深入研究下ceph的cache pool,作者写的文章非常的好,这里先直接翻译这篇文章,然后再加入我自己的相关数据 blog原文 作者想启动blog写下自己的Openst ...
- 如何升级Ceph版本及注意事项
升级软件版本在日常运维中是一个常见操作. 本文分享一下Ceph版本升级的一些经验. 一般升级流程和注意如下: 1. 关注社区Release notes 和 ceph-user邮件订阅列表,获取社区发 ...
- Percona 开始尝试基于Ceph做上层感知的分布式 MySQL 集群,使用 Ceph 提供的快照,备份和 HA 功能来解决分布式数据库的底层存储问题
本文由 Ceph 中国社区 -QiYu 翻译 英文出处:Using Ceph with MySQL 欢迎加入CCTG Over the last year, the Ceph world drew m ...
- “Ceph浅析”系列之七——关于Ceph的若干想法
本篇文章的内容,主要是笔者在调研分析Ceph过程中产生的一些思考.因为其中的内容比较自由发散,且大多是笔者的个人见解,故此另启一文进行讨论. 关于Ceph的性能 目前为止,本系列的文章中没有涉及到Ce ...
- “Ceph浅析”系列之一——前言
开源技术专家章宇同学(@一棹凌烟)在C3沙龙分享过Ceph之后,最近来了劲头,一口气写了一系列<Ceph浅析>的博文,共8篇: "Ceph浅析"系列之一--前言 &qu ...
- 华为章宇:如何学习开源项目及Ceph的浅析
转自http://www.csdn.net/article/2014-04-10/2819247-how-to-learn-opensouce-project-&-ceph 摘要:开源技术的学 ...
- ceph 参数说明<转>
//path/to/socket指向某个osd的admin socket文件#> ceph --admin-daemon {path/to/socket} config show | grep ...
- Ceph: A Scalable, High-Performance Distributed File System译文
原文地址:陈晓csdn博客 http://blog.csdn.net/juvxiao/article/details/39495037 论文概况 论文名称:Ceph: A Scalable, High ...
随机推荐
- centos7虚拟机时间和本地时间相差8小时
安装ntp和ntpdate 在安装centos7虚拟机的时候,已经将时区设置为了Asia/shanghai,但还是出现时间不准,相差了8小时 可以安装ntp和ntpdate,使用 NTP 公共时间服务 ...
- java-类和数组
java内存划分 Java的内存划分为5个部分: 1.栈 (Stack) : 存放的都是方法中的局部变量,方法的运行一定要在栈当中 局部变量: 方法的参数,或者是方法()内部的变量 作用域: 一旦超出 ...
- selenium-滚动
移动到指定的坐标(相对当前的坐标移动) driver.execute_script("window.scrollBy(0, 700)"); 移动到窗口绝对位置坐标,如下移动到纵坐标 ...
- Flutter Webview添加Cookie的正确姿势
场景 h5页面要从cookie里面取数据,所以需要在flutter webview的cookie里面塞一些数据,设置的数据多达十几条:按照网上查的使用方式来设置,通过fiddler抓包发现,只能生效一 ...
- Vue踩坑日记-You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file.
记录时间:2019年4月24日16:55:54 在build/webpack.base.conf.js文件中,注释或者删除掉:module->rules中有关eslint的规则
- 国内首个 .NET 5 框架 Fur 斩获 1000 stars,1.0.0-rc.final.20 发布
Fur 是 .NET 5 平台下企业应用开发最佳实践框架. 通往牛逼的路上,风景差得让人只想说脏话,但我在意的是远方. 啥环境 早在 1998 年微软公司对外发布 .NET/C# 平台的那 ...
- catch之后的代码什么时候执行
1.若catch(){}块中,如果有throw 语句,则,try{}catch(){} finally{}块之外的代码不执行: 否则,执行. 2.try{}中有异常,则异常下面代码不执行. 3.fin ...
- 单片机串口通信电平不匹配的解决电路,5V 3.3V串口通讯
很早的时候调试串口通讯遇到单片机和模块电压不匹配,信号无法传输,所以整理后来遇到的转换电路.1.最简单的用转换电平IC,可以去淘宝上搜索,有四路的有两路的,比如这个双向电平转换模块 2.根据接触的开发 ...
- Redis学习笔记(五)——数据结构之哈希(Hash)
一.介绍 Redis hash是一个string类型的field和value的映射表,hash特别设于用于存储对象. Redis中每个hash可以存储232 - 1 键值对(40多亿). 基本命令: ...
- cookie和webstorage
HTML 5 Web 存储 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 <!DOCTYPE html> <html> ...