• 记一次有惊无险的Linux数据恢复过程


    问题阶段

    起因: 
    昨天晚上思路不是很清晰(上了一天班回来有点蒙),还是强忍着疲惫想搞事情,结果悲剧了… … 
    本来想拿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 
    `

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

  • 相关阅读:
    如何在 Windows 7 上安装 TeX Live 2018
    CF 964C Alternating Sum
    WF 18 A 想法
    CLion 使用笔记
    数理统计学复习
    ssh无密码访问设置(ssh-keygen 的详解)
    mysql开启远程连接的方法
    mysql命令大全
    Linux下创建仓库的软件包createrepo
    Linux 格式化分区 报错Could not stat --- No such file or directory 和 partprobe 命令
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/8512554.html
Copyright © 2020-2023  润新知