问题阶段

起因: 
昨天晚上思路不是很清晰(上了一天班回来有点蒙),还是强忍着疲惫想搞事情,结果悲剧了… … 
本来想拿SD卡做一张linux烧录卡,烧录脚本是很久以前写的,有git记录,一直不成功,就回退了几次提交,然后执行的时候没有给脚本传参(/dev/sd**),结果脚本中默认磁盘设备为/dev/sdb ,在现在电脑上是一块数据磁盘,执行到一半的时候由于某些原因意外退出,但还是有一些命令执行,比如最致命的一条: 
dd if=/dev/zero of=${node} bs=1024 count=1 conv=fsync conv=notrunc 
node指向的就是/dev/sdb 
然后把LVM2 label、meta data、分区表都给删除了,由于此硬盘在/etc/fstab中有记录,所以今天开机有卡主了,开始以为磁盘接触不良,进入linux recovery模式屏蔽掉fstab中相关选项后进入系统. ls -l /dev/sd* 发现只有/dev/sdb 没有分区信息,接着执行fdisk /dev/sdb, p打印信息 
Command (m for help): p 
Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 4096 bytes 
I/O size (minimum/optimal): 4096 bytes / 4096 bytes 
Disklabel type: dos 
Disk identifier: 0x********* 

同样没有分区信息,回想昨晚的操作,终于……(一身冷汗)

处理过程

冷汗过后就需要冷静的思考,既然只是删除了磁盘的头信息,那么分区实际上还是存在的,而且数据也应该完好的存在.

尝试一:

首先找到一篇lvm数据恢复的文章,PC 上的 LVM 灾难修复,虽然文章中类似情景,但是恢复的时候需要/etc/lvm/backup/ 中有对应的lvm备份信息,而我的磁盘但是不是在现在的机器分的所以没有相应信息. 文章至少透露出一个重要信息,可以恢复,应该直接恢复出分区表即可. 
还有一篇文章跟上面一篇很像:一次Linux LVM VG丢失完整找回过程记录

尝试二:

挂载到windwos上用diskgenius扫描分区表,能够看到一些零星的数据,但都是乱码.当时心又亮了一截, 此路不通.

尝试三:

直接查找linux的数据恢复软件,最终找到一款靠谱的:testdisk 官方文档 
简单介绍: 
它不能从故障的存储设备上拷贝数据,相反,它可以解决一些因为分区的原因而 造成数据无法访问的问题。该工具可以帮助你恢复丢失的分区,让磁盘重新变得可以启动,整理分区表,恢复主引导记录,恢复引导扇区以及文件系统表,可以从 NTFS、FAT、exFAT和ext2类型的文件系统中恢复被删除的文件,还能从已经删除了的NTFS、FAT、exFAT和ext2/3/4文件系统 中拷贝文件。 
尝试: 
testdisk /dev/sdb 
选择硬盘后回车: 
Select a media (use Arrow keys, then press Enter): 
Disk /dev/sdb - 500 GB / 465 GiB - ******************* 

选择分区: 
Please select the partition table type, press Enter when done. 
[Intel ] Intel/PC partition 
[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...) 
[Humax ] Humax partition table 
[Mac ] Apple partition map 
[None ] Non partitioned media 
[Sun ] Sun Solaris partition 
[XBox ] XBox partition 
[Return ] Return to disk selection 

选择[Intel ] Intel/PC partition

选择动作: 
[ Analyse ] Analyse current partition structure and search for lost partitions 
[ Advanced ] Filesystem Utils 
[ Geometry ] Change disk geometry 
[ Options ] Modify options 
[ MBR Code ] Write TestDisk MBR code to first sector 
[ Delete ] Delete all data in the partition table 
[ Quit ] Return to disk selection 

这里选择[ Analyse ] Analyse current partition structure and search for lost partitions 
过一会会显示扫描到分区表信息,选择写入到磁盘,然后提示重启电脑(其实就是重新加载硬盘). 
怀着一颗忐忑的新重启后惊喜的发现,分区已经恢复,检查数据一切正常: 
`Command (m for help): p 
Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 4096 bytes 
I/O size (minimum/optimal): 4096 bytes / 4096 bytes 
Disklabel type: dos 
Disk identifier: 0x*********

Device Boot Start End Sectors Size Id Type 
/dev/sdb1 * ####### ####### ####### xxG 83 Linux 
/dev/sdb2 ####### ####### ####### xxG 83 Linux 
/dev/sdb3 ####### ####### ####### xxG 7 exFAT 
`

遇事冷静思考,寻找最优解决方案.

记一次有惊无险的Linux数据恢复过程的更多相关文章

  1. 记一次揪心的MySQL数据恢复过程

    https://blog.csdn.net/poxiaonie/article/details/78304699 === 先说下背景,公司其中一个项目所有服务都部署在客户的机房内,机房较小,没有UPS ...

  2. Linux系统启动过程

    1. 从BIOS到KERNEL BIOS自检->MBR(GRUB)->KERNEL->KERNEL自解压->内核初始化->内核启动 BIOS自检 当电脑开机的时候,电脑会 ...

  3. EVA 4400存储硬盘故障数据恢复方案和数据恢复过程

    EVA系列存储是一款以虚拟化存储为实现目的的HP中高端存储设备,平时数据会不断的迁移,加上任务通常较为繁重,所以磁盘的负载相对是较重的,也是很容易出现故障的.EVA是依靠大量磁盘的冗余空间,以及故障后 ...

  4. IBM x3850 RAID5数据恢复过程

    [raid数据恢复故障描述]    需要进行数据恢复的是北京一家公司的IBM X3850服务器,服务器挂载了5块73G SAS硬盘组成raid5磁盘阵列,4号盘为热备盘(Hot-Spare),由于未知 ...

  5. Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)

    启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...

  6. Linux启动过程详解

    Linux启动过程详解 附上两张图,加深记忆 图1: 图2: 第一张图比较简洁明了,下面对第一张图的步骤进行详解: 加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...

  7. 理解Linux启动过程

    传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系统)处理,而基于init的启动系统被认为有效率不足的问题,systemd是Linux系统机器的另一种启动方式,宣称 ...

  8. Linux 引导过程内幕

    转载:http://www.ibm.com/developerworks/cn/linux/l-linuxboot/index.html   从主引导记录到第一个用户空间应用程序的指导 引导 Linu ...

  9. 嵌入式Linux启动过程中的问题积累

    嵌入式Linux启动过程中的问题积累 Dongas 07-12-19 1.Bad Magic Number ## Booting image at 33000000 ... Bad Magic Num ...

随机推荐

  1. POJ 1375 Intervals | 解析几何

    参考了这个博客 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath&g ...

  2. 雅礼集训 Day6 T1 Merchant 解题报告

    Merchant 题目描述 有\(n\)个物品,第\(i\)个物品有两个属性\(k_i,b_i\),表示它在时刻\(x\)的价值为\(k_i\times x+b_i\). 当前处于时刻\(0\),你可 ...

  3. 手把手搭建一个完整的javaweb项目

    手把手搭建一个完整的javaweb项目 本案例使用Servlet+jsp制作,用MyEclipse和Mysql数据库进行搭建,详细介绍了搭建过程及知识点. 下载地址:http://download.c ...

  4. 通过VS2010性能分析来查找代码中那些地方最损耗资源

    在编写完成一个程序后,大家都比较关心程序的性能如何,想把程序优化得更好.很多时候凭个人直觉来优化程序是件非常不靠普的事情,即使你是一个优秀的开人员也很难准确地判断程序中那些出现问题.VS2010提供了 ...

  5. linux设置永久别名

    http://blog.csdn.net/miltonzhong/article/details/48089415

  6. Hibernate中双向多对多的两种配置方式

    Hibernate中双向多对多的两种配置方式 1.建立多对多双向关联关系 package cn.happy.entitys; import java.util.HashSet; import java ...

  7. 10个简化Web开发者工作的HTML5开发工具

    HTML5的到来,改变了设计和开发的工作,完全改变了以前的开发方式. HTML5进行本身就是一个很简单,很快捷的开发技术并且带给开发人员很多不同的工具和功能,使他们的工作变得更加Cool.它的功能非常 ...

  8. 转载~Linux 平台下阅读源码的工具

    Linux 平台下阅读源码的工具 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码在Windows下有sourceinsight这 ...

  9. Linux中tty框架与uart框架之间的调用关系剖析【转】

    转自:http://developer.51cto.com/art/201209/357501.htm 之前本人在"从串口驱动的移植看linux2.6内核中的驱动模型 platform de ...

  10. 打印PE目录数据信息

    printf("数据目录信息:\n"); PIMAGE_DATA_DIRECTORY MyDataDir; MyDataDir = PIMAGE_DATA_DIRECTORY((& ...