重启后出现No bootable device场景下使用testdisk恢复数据

【关键字】

数据恢复,No bootable device,dd

【约束与限制】

1、请对故障磁盘创建私有镜像或者快照,为了避免破坏源磁盘的数据,恢复操作在备份的磁盘上进行。

2、该文档中的恢复建立在误操作对磁盘破坏比较轻微,不能确保可以完全恢复数据,恢复程度取决于破坏的程度。

【问题场景】

使用中的ECS重启后无法使用,登录vnc查看显示No bootable device

1.png

【根因分析】

出现No bootable device通常为MBR分区表故障,将故障的ECS关机并挂载到其他Linux服务器上可以进行排查。

挂盘后发现故障的系统盘(vdb)没有分区和文件系统,如下图所示

2.png

出现该问题的可能原因有:

      1、对已运行中的磁盘使用fifo进行性能测试导致磁盘文件系统被擦除;

      2、使用dd命令擦除了磁盘MBR分区表和文件系统。

      该场景下是否可以恢复数据取决于错误操作的严重程度,如果擦除较少可以找回未被擦除的数据。

【操作步骤】

步骤一:恢复分区

1.1、将故障ECS关机,卸载系统盘并挂载至其他Linux服务器(这里我们使用CentOS7上。

1.2、安装testdisk工具

# yum install testdisk

1.3、使用testdisk进行恢复,执行

# testdisk /dev/vdb

1.4、光标移动至“proceed”回车。

3.png

1.5、选择要恢复的磁盘并点击“下一步”

4.png

1.6、选择“Analyse”(分析当前分区架构并搜索丢失的分区信息)。

5.png

1.7、选择“Quick search”。

6.png

1.8、选择“Continue”。

7.png

1.9、直接回车

8.png

1.10、选择“Deeper Search”会进入分析过程,等待分析结束。

9.png

1.11、分析完成,点击“Continue”。

10.png

1.2、点击“Write”并确认输入“y”,将分析的结果写入。

11.png

12.png

1.13、连续选择“Quit”退出。

13.png

14.png

15.png

16.png

步骤二:恢复文件系统

2.1、查看分区和文件系统,并尝试挂载

17.png

2.2、如上图所示分区和文件系统可以看到,但是挂载时提示文件系统存在错误,我们可以尝试恢复文件系统,执行

# fsck.ext4 /dev/vdb1 –y

18.png

2.3、再次尝试挂载文件系统后成功,恢复的数据存放在挂载下的lost+found目录下,由于文件系统被破坏,原始的目录无法看到,数据存放在以#开始的目录,可以通过打开各个目录确认是哪个原始目录。

19.png

2.4、查询root用户的操作记录,确定是否有擦除磁盘的操作。我们找到目录中原始的root目录,打开.bash_history文件,可以查到确实存在dd的操作,如下图所示,该操作擦除了磁盘的从开始计算的2G空间。

20.png

(完)