不小心清空了Ceph的OSD的分区表如何恢复
不小心清空了Ceph的OSD的分区表如何恢复
zphj1987前言
如果你是新手,应该出现过敲盘符的时候,敲错的情况,有些操作可能没什么问题,查询类的操作都没问题,但是写入的情况,就可能比较麻烦了,当然老手也可能有误操作,本篇将讲述在误操作把分区表给弄丢了的情况,来看看我们应该如何恢复
实践过程
我们现在有一个正常的集群,我们假设这些分区都是一致的,用的是默认的分区的方式,我们先来看看默认的分区方式是怎样的
破坏环境
1 | [root@lab8106 ceph]# ceph-disk list |
查看分区情况
1 | [root@lab8106 ceph]# parted -s /dev/sdb print |
来一个破坏,这里是破坏 osd.0
,对应盘符 /dev/sdb
1 | [root@lab8106 ceph]# ceph-deploy disk zap lab8106:/dev/sdb |
即使这个 osd 被使用在,还是被破坏了,这里假设上面的就是一个误操作,我们看下带来了哪些变化
1 | [root@lab8106 ceph]# ll /var/lib/ceph/osd/ceph-0/journal |
如果你用命令行看,就可以看到上面的链接已经变红了,分区没有了
1 | [root@lab8106 ceph]# ceph-disk list |
已经跟上面有变化了,没有ceph的相关信息了
1 | [root@lab8106 ceph]# parted -s /dev/sdb print |
分区表完全没有信息了,到这我们可以确定分区表完全没了,如果现在重启将会发生什么?重启以后这个磁盘就是一个裸盘,没有分区的裸盘
处理办法
首先一个办法就是当这个OSD坏了,然后直接按照删除节点,添加节点就可以了,这个应该是最主流,最通用的处理办法,但是这个在生产环境环境当中造成的数据迁移还是非常大的,我们尝试做恢复,这就是本篇主要讲的东西
####关闭迁移
1 | [root@lab8106 ceph]# ceph osd set noout |
停止OSD
1 | [root@lab8106 ceph]# systemctl stop ceph-osd@0 |
现在的OSD还是有进程的,所以需要停止掉再做处理
通过其他节点查看分区的信息
1 | [root@lab8106 ceph]# parted -s /dev/sdc unit s print |
我们现在进行分区表的恢复,记住上面的数值,我print的时候是加了unit s这个是要精确的值的,下面的创建会用到的
1 | [root@lab8106 ceph]# parted -s /dev/sdb mkpart primary 2099200s 585937466s |
我们再来检查下
1 | [root@lab8106 ceph]# parted -s /dev/sdb print |
分区表已经回来了
1 | [root@lab8106 ceph]# umount /var/lib/ceph/osd/ceph-0 |
我们重新挂载看看,没有问题,还要做下其他的处理
1 | [root@lab8106 ceph]# rm -rf /var/lib/ceph/osd/ceph-0/journal |
我们先删除掉journal的链接文件
1 | [root@lab8106 ceph]# ceph-osd -i 0 --osd-journal=/dev/sdb2 --mkjournal |
上面操作就是创建journal相关的,注意下我上面的操作–osd-journal=/dev/sdb2这个地方,我是便于识别,这个地方要写上dev/sdb2的uuid的路径
1 | [root@lab8106 ceph-0]# ll /dev/disk/by-partuuid/03fc6039-ad80-4b8d-86ec-aeee14fb3bb6 |
也就是这个链接的这一串,这个防止盘符串了情况下journal无法找到的问题
启动osd
1 | [root@lab8106 ceph-0]# systemctl start ceph-osd@0 |
检查下,到这osd就正常的恢复了
为什么有这篇
一直都知道分区表是可以恢复的,也一直知道会有误操作,但是一直没有去把ceph中完整流程走下来,前两天一个哥们环境副本一,然后自己给搞错了,出现不得不恢复的情况,正好自己一直想把这个问题的处理办法给记录下来,所以就有了这篇,万一哪天有人碰到了,就把这篇发给他
变更记录
Why | Who | When |
---|---|---|
创建 | 武汉-运维-磨渣 | 2016-09-24 |
修改排版 | 武汉-运维-磨渣 | 2017-03-09 |