全部产品
Search
文档中心

云服务器 ECS:Linux实例数据恢复工具介绍

更新时间:Jul 15, 2026

在处理磁盘相关问题时,您可能会遇到数据盘分区或数据丢失的情况。本文将介绍Linux系统下常见的数据盘分区丢失问题及相应工具的使用方法。

前提条件

在修复数据前,您必须先对分区丢失的数据盘创建快照,在快照创建完成后再尝试修复。如果在修复过程中出现问题,您可以通过快照回滚将数据盘还原到修复之前的状态。具体操作,请参见手动创建单个快照使用快照回滚云盘

背景信息

有关本文介绍的几款工具的功能及相关信息,请参阅以下内容。

工具名称

是否默认安装

工具介绍

fdisk

Linux系统分区管理工具。

testdisk

恢复Linux系统的磁盘分区或者数据的工具。

partprobe

主要用于在不重启系统时让kernel重新读取磁盘分区信息。

恢复磁盘分区或数据

在使用Linux实例时,如果因人为误操作、程序异常或计算机病毒影响而导致磁盘分区表受损或数据异常丢失,您可以尝试以下三种方法进行处理。

(条件可选)确认磁盘信息

运行以下命令,以确认当前磁盘信息。

sudo fdisk -lu

回显结果示例如下。

Disk /dev/vda: 145 GiB, 155692564480 bytes, 304087040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: F51132A7-xxxx-xxxx-xxxx-FD0DE6E1210C

示例中,包含一块磁盘设备/dev/vda,因分区表损坏,不显示Device信息。

通过fdisk恢复分区

对数据盘分区时,分区磁盘的起止扇区一般使用默认的值,所以可以先尝试直接使用fdisk命令新建分区进行恢复。

执行 fdisk /dev/xvdb 命令重新创建分区,然后挂载并验证数据是否恢复:

[root@Aliyun ~]# fdisk /dev/xvdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759
Partition 1 of type Linux and of size 5 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@Aliyun ~]# mount /dev/xvd
xvda   xvda1  xvdb   xvdb1
[root@Aliyun ~]# mount /dev/xvdb
xvdb   xvdb1
[root@Aliyun ~]# mount /dev/xvdb1 /mnt/
[root@Aliyun ~]# ls /mnt/
123.sh  configclient  data  diamond  install_edsd.sh  install.sh  ip.qz

如果在使用fdisk恢复分区后仍无法挂载,或者挂载成功但无法查看相应文件,您可以选择通过testdisk恢复分区或者通过testdisk恢复数据

通过testdisk恢复分区

这里假设云盘的设备名为/dev/xvdb。按以下步骤安装并使用testdisk工具恢复分区:

  1. 运行以下命令,以安装testdisk

    Alibaba Cloud Linux 3/2,CentOS 6/7/8

    sudo yum install -y testdisk

    Ubuntu/Debian

    sudo apt install -y testdisk
  2. 运行testdisk /dev/xvdb(根据实际情况替换设备名),再选择Proceed(默认值)后按回车键。

    TestDisk 7.0, Data Recovery Utility, April 2015
    Christophe GRENIER <grenier@cgsecurity.org>
    http://www.cgsecurity.org
    
      TestDisk is free software, and
      comes with ABSOLUTELY NO WARRANTY.
    
    Select a media (use Arrow keys, then press Enter):
    >Disk /dev/xvdb - 5368 MB / 5120 MiB
    
    >[Proceed ]  [  Quit  ]
    
    Note: Disk capacity must be correctly detected for a successful recovery.
    If a disk listed above has incorrect size, check HD jumper settings, BIOS
    detection, and install the latest OS patches and disk drivers.
  3. 选择分区表类型进行扫描:一般选择Intel。如果您的数据盘采用GPT分区,选择EFI GPT

    TestDisk 7.0, Data Recovery Utility, April 2015
    Christophe GRENIER <grenier@cgsecurity.org>
    http://www.cgsecurity.org
    
    Disk /dev/xvdb - 5368 MB / 5120 MiB
    
    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
    
    Note: Do NOT select 'None' for media with only a single partition. It's very
    rare for a disk to be 'Non-partitioned'.
  4. 选择Analyse后按回车键。

    Disk /dev/xvdb - 5368 MB / 5120 MiB
         CHS 652 255 63 - sector size=512
    
    [ 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
    
    Note: Correct disk geometry is required for a successful recovery. 'Analyse'
    process may give some warnings if it thinks the logical geometry is mismatched.
  5. 如果您没有看到任何分区信息,选择Quick Search后按回车键快速搜索。

    Disk /dev/xvdb - 5368 MB / 5120 MiB - CHS 652 255 63
    Current partition structure:
         Partition                  Start        End    Size in sectors
    
    No partition is bootable
    
    *=Primary bootable  P=Primary  L=Logical  E=Extended  D=Deleted
    >[Quick Search]
                            Try to locate partition

    Quick Search 搜索完成后,显示找到的 Linux 分区(标记为 Primary bootable,大小 10483712 扇区),Structure 状态为 Ok。

    Disk /dev/xvdb - 5368 MB / 5120 MiB - CHS 652 255 63
         Partition                  Start        End    Size in sectors
    >* Linux                    0  32 33    652 180 40    10483712
    
    Structure: Ok.  Use Up/Down Arrow keys to select partition.
    Use Left/Right Arrow keys to CHANGE partition characteristics:
    *=Primary bootable  P=Primary  L=Logical  E=Extended  D=Deleted
    Keys A: add partition, L: load backup, T: change type, P: list files,
         Enter: to continue
  6. 选中分区后,按回车键。

  7. 选择Write保存分区。

    说明

    如果不是您需要的分区,可以选择Deeper Search继续搜索。

    确认分区信息无误后,选择 Write 将分区结构写入磁盘。

    Disk /dev/xvdb - 5368 MB / 5120 MiB - CHS 652 255 63
    
         Partition                  Start        End    Size in sectors
    
     1 * Linux                  0  32 33   652 180 40    10483712
    
    
    [ Quit ]  [Deeper Search]  [> Write  ]
                    Write partition structure to disk
  8. Y键确认保存分区。

    TestDisk 7.0, Data Recovery Utility, April 2015
    Christophe GRENIER <grenier@cgsecurity.org>
    http://www.cgsecurity.org
    
    write partition table, confirm ? (Y/N)
  9. 运行partprobe /dev/xvdb(根据实际情况替换设备名)手动刷新分区表。

  10. 重新挂载分区,查看数据盘里的数据情况。

    输出中 ip.qz 即为恢复的目标文件。

    [root@Aliyun home]# mount /dev/xvdb1 /mnt/
    [root@Aliyun home]# ls /mnt/
    123.sh  configclient  data  diamond  install_edsd.sh  install.sh  ip.qz  logs  lost+found  test

通过testdisk恢复数据

在某些情况下,您可以用testdisk扫描出磁盘分区,但是无法保存分区,此时,您可以尝试直接恢复文件。具体操作步骤如下所示:

  1. 用testdisk扫描出磁盘分区。具体操作,请参见通过testdisk恢复分区的第1步到第5步。

  2. P键列出文件。

    返回结果如下。

    * Linux                    0  32 33   652 180 40    10483712
    Directory /
    
     drwxr-xr-x     0     0         4096 21-Feb-2017 11:57 .
     drwxr-xr-x     0     0         4096 21-Feb-2017 11:57 ..
     drwx------     0     0        16384 21-Feb-2017 11:56 lost+found
     -rw-r--r--     0     0         1701 21-Feb-2017 11:57 install_edsd.sh
     -rw-r--r--     0     0         5848 21-Feb-2017 11:57 install.sh
    >-rw-r--r--     0     0        12136 21-Feb-2017 11:57 ip.gz
     -rw-r--r--     0     0            0 21-Feb-2017 11:57 test
     drwxr-xr-x     0     0         4096 21-Feb-2017 11:57 123.sh
     drwxr-xr-x     0     0         4096 21-Feb-2017 11:57 configclient
     drwxr-xr-x     0     0         4096 21-Feb-2017 11:57 data
     drwxr-xr-x     0     0         4096 21-Feb-2017 11:57 diamond
     drwxr-xr-x     0     0         4096 21-Feb-2017 11:57 logs
    
                                                        Next
    Use Right to change directory, h to hide deleted files
        q to quit, : to select the current file, a to select all files
        C to copy the selected files, c to copy the current file
  3. 选中要恢复的文件,再按C键。

  4. 选择目标目录。本示例中以恢复到/home为例。

    Please select a destination where /ip.gz will be copied.
    Keys: Arrow keys to select another directory
          C when the destination is correct
          Q to quit
    Directory /
      drwxr-xr-x      0     0        4096 11-Jan-2017 09:32 .
      drwxr-xr-x      0     0        4096 11-Jan-2017 09:32 ..
      dr-xr-xr-x      0     0        4096 25-Jul-2016 16:23 boot
      drwxr-xr-x      0     0        2940 21-Feb-2017 12:30 dev
      drwxr-xr-x      0     0        4096 21-Feb-2017 12:12 etc
    > drwxr-xr-x      0     0        4096 16-Feb-2017 11:48 home
      drwx------      0     0       16384 12-May-2016 19:58 lost+found
      drwxr-xr-x      0     0        4096 12-Aug-2015 22:22 media
      drwxr-xr-x      0     0        4096 21-Feb-2017 11:57 mnt
      drwxr-xr-x      0     0        4096 12-Aug-2015 22:22 opt
      dr-xr-xr-x      0     0           0 16-Feb-2017 21:35 proc
      dr-xr-x---      0     0        4096 21-Feb-2017 11:57 root
      drwxr-xr-x      0     0         560 21-Feb-2017 12:12 run
      drwxr-xr-x      0     0        4096 12-Aug-2015 22:22 srv
      dr-xr-xr-x      0     0           0 16-Feb-2017 21:35 sys
      drwxrwxrwt      0     0        4096 21-Feb-2017 12:34 tmp
      drwxr-xr-x      0     0        4096 16-Feb-2017 11:48 usr
      drwxr-xr-x      0     0        4096 16-Feb-2017 21:35 var
      lrwxrwxrwx      0     0           7  3-May-2016 13:48 bin
      lrwxrwxrwx      0     0           7  3-May-2016 13:48 lib
      lrwxrwxrwx      0     0           9  3-May-2016 13:48 lib64
      lrwxrwxrwx      0     0           8  3-May-2016 13:48 sbin

    复制完成后,终端显示 Copy done! 1 ok, 0 failed,表示 ip.gz 文件已成功复制到目标目录。目录列表确认该文件已存在于目标分区中:

    * Linux                0  32 33    652 180 40    10483712
    Directory /
    Copy done! 1 ok, 0 failed
      drwxr-xr-x      0     0        4096 21-Feb-2017 11:57 .
      drwxr-xr-x      0     0        4096 21-Feb-2017 11:57 ..
      drwx------      0     0       16384 21-Feb-2017 11:56 lost+found
      -rw-r--r--      0     0        1701 21-Feb-2017 11:57 install_edsd.sh
      -rw-r--r--      0     0        5848 21-Feb-2017 11:57 install.sh
      -rw-r--r--      0     0       12136 21-Feb-2017 11:57 ip.gz
      -rw-r--r--      0     0            0 21-Feb-2017 11:57 test
      -rw-r--r--      0     0            0 21-Feb-2017 11:57 123.sh
      drwxr-xr-x      0     0        4096 21-Feb-2017 11:57 configclient
      drwxr-xr-x      0     0        4096 21-Feb-2017 11:57 data
      drwxr-xr-x      0     0        4096 21-Feb-2017 11:57 diamond
      drwxr-xr-x      0     0        4096 21-Feb-2017 11:57 logs
  5. 切换到/home目录查看。

    可以看到 ip.qz 文件已恢复成功。

    [root@Aliyun /]# ls /home/
    admin  ip.qz
    [root@Aliyun /]#

常见误区与最佳实践

数据是用户的核心资产,很多用户在ECS实例上构建网站、自建数据库(MySQL/MongoDB/Redis)。数据丢失会给用户的业务带来巨大的风险。本节介绍了数据安全方面的常见误区和最佳实践。

常见误区

阿里云的底层存储基于三副本机制,因此一些用户误认为操作系统内的数据没有任何丢失风险。实际上,这是一种误解。底层存储的三副本确实为数据磁盘提供了物理层的保护,但如果系统内部使用云盘时出现逻辑性问题,例如病毒感染、误删数据或文件系统损坏等情况,数据丢失的风险依然存在。在这种情况下,您需借助快照、异地备份等相关技术,尽可能保障数据的安全性。关于三副本的介绍,请参见ESSD 云盘数据可靠性

最佳实践

数据盘分区恢复及数据恢复是应对数据丢失问题的最后一道防线,但并不一定能够确保数据的恢复。强烈建议您参考以下最佳实践,通过创建数据快照(无论是自动还是手动)以及实施各类备份方案,以最大程度地保障数据的安全性。

  • 启用自动快照

    根据实际业务,对系统盘、数据盘创建自动快照。

    重要

    在更换系统盘、实例到期后或手动释放磁盘时,自动快照可能会被释放。您可以在ECS控制台上通过修改磁盘属性选择自动快照随磁盘释放。如果想保留自动快照,您可以手动去掉该选项。更多内容,请参见快照FAQ创建自动快照策略

  • 创建手动快照

    在进行以下重要或高风险操作之前,请务必手动为磁盘创建快照。

    • 系统升级内核

    • 应用升级变更

    • 磁盘数据恢复

    在进行磁盘恢复之前,务必首先对磁盘创建快照,待快照完成后再进行相应的操作。

  • OSS、线下、异地备份

    您可以根据实际情况选择使用OSS、线下或异地等方式备份重要数据。

相关文档

有关LInux实例数据恢复的整体思路及最佳实践,请参见Linux实例数据恢复最佳实践