惊魂36小时,一次生产事故,动态磁盘删除卷分区丢失,数据恢复案例实战

总结

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。

麻烦帮忙转发一下这篇文章+关注我

就这一次!拼多多内部架构师培训Kafka源码笔记(现已绝版)

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

接下来往下走一点可以看到VMDB的数据,这个在我使用的过程中也没有起到实质的作用。

接下来往下来一点或者搜索56424C4B就可以找到这个地方。

这里很抱歉,我没办法做实战了,因为技术人员给我备份磁盘image的时候,竟然吧后面全0000的部分给忽略了,所以我到这里就没有真实数据可以演示了。我只能借参考文献里的相似的图来解说了

注意我框的04,05 这个是VBLK的序号,从4开始,每个VBLK都会有这个序号,我当时磁盘一共数下来有17个,参考文献1里面讲的很清楚,原理是为了让LDM能够描述类似RAID0 RAID5等等各种情况。具体看参考文献吧。

然后再注意我框的34和35,是讲的这个VBLK是什么类型的,不同的类型他里面的数据也是不一样的。然后根据不同的类型去调用winHex的不同模板。

组件的VBLK:0x32

分区的VBLK:0x33

磁盘的VBLK:0x34

磁盘组的VBLK:0x35

卷的VBLK:0x51

譬如上图序号为04的VBLK,是34,所以就按ALT+F12,打开模板管理,选择里面的0x34这个模板。

PS:这里有个小细节光标一定要定位在第一个字节的第一个字符上,即56的5上面,否则模板解析的数据就混乱了。

解析出来大概是这样子的

然后我当时用excel记录了我一共17个VBLK的记录,其中磁盘类型的有3个,如下图所示,都是从模板里面记录下来的。

然后是卷的记录,是51的模板卷结构,用模板打开来就是这个样子的。

我一共记录了3个卷,卷很重要,就是我们的盘符E盘我找到了他,他的大小是91.0341。

对上面这个记录,我特别说一下,长度是16进制的,可以用计算器,点击查看,选择程序员型,然后选择16进制,粘贴进去,然后再转十进制,得到一个190912512数字,这个是扇区数量,一个扇区是512B,所以对190912512*512/1024/1024/1024 就得到了他的大小是91.0341G,刚好是我之前的E盘的大小。所以这个方法有戏。

接下来是33类型的分区信息,非常重要的信息,我们就是通过这个信息来对分区的

我一共找到7个分区信息,这个数字其实在开头的LDM里面有,这里刚好吻合,这里说一下,起始位置,7C1,转换成十进制是1985,然而根据之前看别的磁盘修复的经验,找到的55AA所在扇区是2048,两者刚好差了63,所以我用1985和2048都去尝试了一下,发现实际上用2048才能拼接出准确的数据。这里的原理不是很清楚,是通过实验得到的结果。当时我利用2号分区的末尾去对3号分区的开头,发现只要3号分区的起始位置加63他们的数据就能是连续的有规律的,不加就感觉对不上断层的。

有了这些信息,加上我们一开始所有的信息就可以进行推测了,我们的E盘应该是

49.99G+24.41G+0.99G+15.62G=91.034G

而且根据卷偏移我们也可以得到一个同样的顺序,如果你不知道顺序的话,根据卷偏移从小到大排列也是可以得到这个结论。

这里补充一下,运维人员一开始笃定的说我是25G+1G的说法导致我们在一开始尝试的时候,误导绕弯路,直到我作出了这个表,然后他竟然从阿里云工单里找到了一张截图,证实了这个结论。就是下面这个图。啪。

3.2 R-STUIDO恢复数据


接下来有了每个分区的起始位置和长度就可以非常简单的操作了,配置R-studio。

找到磁盘2,选择创建区域

依次输入起始位置和大小,后面的类型选择扇区,起始位置等于我们在LDM数据库里找到的数据+63,实验得出,原理不清楚,之前也讲过了。

重复上面的步骤,再点击磁盘3,分别创建区域把24G 1G 15G的3个区域都创建好。

然后创建虚拟卷集

然后在右侧依次把刚才添加的区域0 区域1这样的添加进来,确保顺序是对的。

然后回到左侧,此时虚拟卷组1 下面应该有个直接卷,双击他,进过短暂的加载后就可以看到我们的目录了

目录出来了

打开一个db看看

拉到最后看看,数据都在,一切就跟做梦一样。我的数据竟然通过我自己的能力找回来了。

完结

Redis基于内存,常用作于缓存的一种技术,并且Redis存储的方式是以key-value的形式。Redis是如今互联网技术架构中,使用最广泛的缓存,在工作中常常会使用到。Redis也是中高级后端工程师技术面试中,面试官最喜欢问的问题之一,因此作为Java开发者,Redis是我们必须要掌握的。

Redis 是 NoSQL 数据库领域的佼佼者,如果你需要了解 Redis 是如何实现高并发、海量数据存储的,那么这份腾讯专家手敲《Redis源码日志笔记》将会是你的最佳选择。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

625431)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值