# Linux实例数据恢复
当误删文件导致实例无法启动，即系统盘数据丢失时，您可以选择利用另一台可以正常启动的Linux实例进行数据恢复，或利用快照进行数据恢复。
#### 背景简介
在进行数据恢复时，主要会用到数据恢复工具fdisk、testdisk、partprobe，在三种工具的帮助下进行数据恢复。
| 数据恢复工具  | 默认安装 | 用途区别                                     |
|:---|:---|:---|
| fdisk     | 是    | 主要用于分区管理，负责常规管理与重建                       |
| testdisk | 否     | 主要用于恢复磁盘分区或数据，负责侦查与深度修复，当完全无法识别分区情况时需要用到 |
| partprobe | 是   | 主要用于在不重启的情况下让内核重新读取磁盘分区信息，负责刷新与生效         |
   
整体流程思路是将系统盘作为普通数据盘，挂载在一台正常的Linux实例上，利用数据恢复工具进行数据恢复工作 。
![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583530033.png "点击放大")
#### 操作步骤
**准备工作如下。**
1. 关机原实例，参考[关机](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0155.html#section1)。
   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002635433860.png "点击放大")
   
   
2. 卸载需要恢复数据的系统盘，参考[卸载云硬盘](https://support.huaweicloud.com/usermanual-evs/evs_01_0003.html)。
   
   单击"确定"后等待片刻观察到卸载的硬盘已经不在原实例后，进行下一步。
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002552850388.png "点击放大")
   
   
3. 为无法正常启动的Linux系统恢复磁盘数据，必须要利用能够正常启动的Linux系统实现，主要原理是将原实例的系统启动盘作为数据盘，挂载到正常Linux实例上，然后进行数据恢复操作。在华为云上有两种方案可以选择。 
   **方案一** **：利用另一台正常的Linux实例实现**
   1. 将[步骤2]卸载的云硬盘挂载到正常的Linux实例上，参考[挂载非共享云硬盘](https://support.huaweicloud.com/usermanual-evs/evs_01_0036.html)，挂载成功后无需初始化。
      ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583610073.png "点击放大")
      
   
   2. 登录正常的Linux实例。
    
   **方案二** **：利用快照技术实现**
   1. 为需要恢复数据的系统盘创建快照，参考[创建云硬盘快照](https://support.huaweicloud.com/usermanual-evs/zh-cn_topic_0066615262.html)。
   
   2. 将[步骤2]中的系统盘，重新挂载回Linux实例，挂载为系统盘。
   
   3. 将原Linux实例重装操作系统，参考[重装操作系统](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0024911405.html)。
   
   4. 使用快照创建云硬盘，参考[使用快照创建云硬盘](https://support.huaweicloud.com/usermanual-evs/evs_01_0013.html)。
   
   5. 待[3]和[4]都执行成功后，将[4]创建的云硬盘挂载到原Linux实例，参考[挂载非共享云硬盘](https://support.huaweicloud.com/usermanual-evs/evs_01_0036.html)。
      ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583530035.png "点击放大")
      
   
   6. 登录原Linux实例。
    
   ![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/caution_3.0-zh-cn.png)
   为确保数据安全，请务必在进行数据恢复前为原硬盘创建快照。若无法通过现有方式恢复数据，可以利用快照恢复硬盘后，使用专业的数据恢复软件进行数据恢复工作。
   
   
**数据恢复操作步骤如下。**
1. 执行**lsblk** 和**fdisk -lu** 命令查看磁盘信息，图中/dev/vdb为需要恢复数据的云硬盘，可以观察到/dev/vdb1说明磁盘分区信息正常，以实际需要恢复的云硬盘设备名为准。
   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002553010032.png "点击放大")
   - 若磁盘分区表信息未损坏，继续[步骤2]。
   
   - 若磁盘分区表信息损坏，继续[步骤3]。
   
   
   
   
2. 执行**mount /dev/vdb1 /mnt** 命令将磁盘挂载到/mnt路径。
   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002552850390.png "点击放大")
   执行**cd /mnt**命令查看原实例系统盘的数据，根据需要从对应路径下查找恢复数据即可。
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583610075.png "点击放大")
   
   
3. 再次执行**lsblk** 和**fdisk -lu** 命令查看磁盘信息，图中/dev/vdb是需要恢复的磁盘，但由于分区信息损坏或丢失，无法显示/dev/vdb1。
   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583530037.png "点击放大")
   
   
4. 执行**fdisk /dev/vdb** 命令进行磁盘分区。
   
   ![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/note_3.0-zh-cn.png)
   在用fdisk进行磁盘分区的过程中出现咨询"Do you want to remove the signature? \[Y\]es/\[N\]o"时，说明fdisk识别到存在旧的分区表。
   - 选择"No"会保留旧的分区表，然后输入w保存旧分区表。
   
   - 若选择"Yes"会清除原分区表，创建新的分区，虽然数据不会被立刻覆盖，但可能无法直接访问原有文件。
    
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002553010034.png "点击放大")
   
   
5. 执行**mount /dev/vdb1 /mnt** 命令挂载云硬盘到/mnt挂载点。
   
   - 若挂载成功，继续[步骤6]。
   
   - 若挂载失败，继续[步骤7]。
   
   
   
   
6. 根据需要从对应的路径下查找恢复的数据即可。
   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002552850392.png "点击放大")
   
   
7. 安装testdisk。
   
   - CentOS系统操作命令：**sudo yum -y install testdisk**
   
   - Ubuntu系统操作命令：**sudo apt install -y testdisk**
   
   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583610077.png "点击放大")
   
   
8. 进入testdisk的修复界面，执行**testdisk /dev/vdb** ，请按需更换设备名。
   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583530039.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/note_3.0-zh-cn.png)
   testdisk界面中，以方向键进行选择，回车键进行确认，其余功能键位会在屏幕下方进行提示展示。
   
   
9. 选择\[Proceed\]，按下回车键。 
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002553010036.png "点击放大")
   
   
10. 选择待扫描的分区表类型，一般为\[Intel\]，若为GPT分区则选择\[EFI GPT\]，按下回车键。 
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002552850394.png "点击放大")
    
    
11. 选择\[Analyse\]，按回车键。 
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583610079.png "点击放大")
    
    
12. 若未看到分区信息，提示"No partition is bootable"，选择\[Quick Search\]，按回车键。 
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583530041.png "点击放大")
    待搜索完成后可以看到分区信息，如下图所示，一般会默认选中该分区。
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002553010038.png "点击放大")
    - 如需恢复分区，按回车键，继续[步骤13]。
    
    - 如仅需恢复数据，按P键，列出文件，继续[步骤14]。
    
    
    
    
13. 选择\[Write\]后继续按回车键保存分区。
    
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002552850396.png "点击放大")
    根据提示保存分区按**Y**键。
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583610081.png "点击放大")
    按照默认选择的\[OK\]，按回车键。
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583530043.png "点击放大")
    退出testdisk后执行 **partprobe /dev/vdb**手动刷新分区表。
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002553010040.png "点击放大")
    重新挂载分区，查看磁盘数据情况，根据路径查到文件。
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002552850398.png "点击放大")
    
    
14. 使用方向键到需要恢复的文件或文件夹，按**C** 键进行复制。
    
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583610083.png "点击放大")
    使用方向键选择目标目录，可以看到Directory后显示的当前路径，本次以恢复到/root为例，在/root目录按C键。
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002583530045.png "点击放大")
    复制成功后可以看到提示"Copy done！"并且会提示复制成功和失败的文件数。如果复制的是文件夹，会需要等待复制完成。
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002553010042.png "点击放大")
    多次按Q键直到退出testdisk界面，进入目标路径/root的目录下查看，数据已恢复。
    ![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/note_3.0-zh-cn.png)
    在粘贴时会将待恢复数据的文件结构一起复制到目标路径中。如本次将原磁盘文件系统中root/fake.py文件复制到/root目录成功后，实际fake.py的路径会变成/root/root/fake.py。
    ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002552850400.png "点击放大")
    ![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/note_3.0-zh-cn.png)
    若操作系统可以正常启动，仅数据盘误删数据，可以根据实际情况，只进行数据恢复的步骤。
    
    
 
