全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

Linux系统恢复误删除分区最佳实践指南

最近更新时间:2026-08-18 21:09:45

本文介绍在 Linux 环境下使用开源工具 TestDisk 恢复因误操作删除的分区的标准操作流程,涵盖环境评估、磁盘备份、分区恢复及恢复后验证等关键实践,适用于分区表被破坏但分区数据未被覆盖的场景。

背景信息

当云服务器中的磁盘分区(如 MBR 或 GPT 分区表)因误操作被删除,但分区内的数据尚未被新写入覆盖时,可使用 TestDisk 工具进行分区恢复。本文以 /dev/vdb 磁盘(原有 vdb1 分区,分区内写入了 10 个文件,后 vdb1 分区被删除)为例,演示完整的恢复流程。

适用场景

  • 公有云服务器中 MBR 或 GPT 分区表被误删除或破坏。

  • 分区数据尚未被后续写入操作覆盖。

  • 目标读者为云计算运维工程师、系统管理员及具备 Linux 命令行基础的技术人员。

约束限制

  • 立即停止写入:确认误删除后,务必卸载该磁盘对应的所有文件系统,并停止任何可能向该磁盘写入数据的服务或操作。新的写入操作可能会覆盖原有分区数据,导致数据永久丢失。

  • 评估数据重要性:如果数据极其重要,强烈建议先对整个磁盘创建快照或主机镜像。如磁盘已具备快照,可通过快照直接回滚,这是最安全的标准操作流程。

  • 恢复不确定性:数据恢复存在不确定性,尽管 TestDisk 功能强大,但并非总能 100% 成功。

注意事项

  • 恢复操作前务必创建磁盘快照或备份,避免操作不当导致数据永久丢失。

  • TestDisk 恢复的是分区表信息,若分区内文件系统本身已损坏,需使用 fsck 等工具进一步修复。

  • 如果磁盘已具备快照,优先使用快照回滚恢复数据,这是最安全且最快的方式。

准备工作

  1. 确认磁盘状态:使用 lsblkfdisk -lparted -l 命令确认当前磁盘和分区状态,识别出被误删分区的磁盘。本实践中的为/dev/vdb1分区。

    # 查看块设备列表,确认丢失分区的磁盘
    lsblk
    
    # 查看详细分区信息
    sudo fdisk -l /dev/vdb1
  2. 创建磁盘快照(强烈推荐):在操作前参考创建极速可用快照文档,对目标硬盘创建快照,避免操作失误导致二次损坏。

  3. 安装 TestDisk:根据 Linux 发行版安装 TestDisk。

    • Ubuntu/Debian:

    sudo apt-get update
    sudo apt-get install testdisk
    • CentOS/RHEL/Rocky Linux/AlmaLinux:

    # 需要先启用 EPEL 仓库
    sudo yum install -y epel-release
    # 或对于 DNF 的新版本
    sudo dnf install -y epel-release
    sudo yum install -y testdisk
    # 或
    sudo dnf install -y testdisk

实践方案

以下操作假设直接在原盘(/dev/vdb)上操作。如果已创建磁盘镜像,请将 /dev/vdb 替换为您的镜像文件路径。

步骤一:启动 TestDisk

  1. 以 root 权限启动 TestDisk 并指定磁盘:

    sudo testdisk /dev/vdb
  2. TestDisk 启动后,选择 [Proceed] 继续对当前选中磁盘(/dev/vdb)进行操作。

    磁盘容量必须被正确检测是成功恢复数据的关键。

  3. 若终端窗口过小弹出提示,放大窗口即可;如未出现则跳过此步。

步骤二:选择分区表类型

TestDisk 会显示分区表类型选择界面,通常会自动检测,按 Enter 进行下一步。

  • [Intel]:用于传统的 MBR 分区表。

  • [EFI GPT]:用于较新的 GPT 分区表。

根据磁盘类型选择,如不确定可尝试默认的 [Intel] 并按 Enter

步骤三:执行分析

  1. 在下一菜单中,选择 [Analyse] 检查当前分区结构并搜索丢失的分区,各选项说明如下:

    • [Analyse]:分析当前分区结构并搜索丢失的分区(最常用、最安全的第一步)。

    • [Advanced]:提供针对文件系统的实用工具。

    • [Geometry]:更改磁盘的几何参数(柱面、磁头、扇区数)。

    • [Options]:修改程序运行时选项,如显示哪些文件类型。

    • [MBR Code]:将 TestDisk 的 MBR 代码写入磁盘的第一个扇区。

    • [Delete]:删除分区表中的所有数据。

  2. 若 TestDisk 在初始阶段,如下图所示,未检测到有效的分区表或分区信息,继续执行 [Quick Search]。TestDisk 会快速扫描磁盘空闲区域,寻找丢失分区的引导扇区(如 NTFS 的 $Boot 或 EXT4 的 Superblock)。

  3. 如有确认信息弹出,选择 Continue 并回车确认。

步骤四:分析搜索结果

  1. 使用 Up/Down 方向键高亮选择第一个找到的分区,按 Enter 进行下一步。

  2. 快速搜索完成后,TestDisk 会列出所有找到的分区(包括当前存在的和已删除的),显示开始块和结束块等信息。

  3. Enter 可进一步查看该分区的详细信息(如文件系统类型、大小等),帮助确认是否为要恢复的分区。

  4. P 键可列出该分区内的文件(对 EXT3/4、FAT、NTFS 等文件系统有效),这是验证分区内容是否正确的最可靠方法。

步骤五:深度搜索(可选)

如果快速搜索未找到所有丢失的分区或结果不理想,在主菜单选择 [Deeper Search] 进行更全面但更慢的扫描。

步骤六:恢复分区表

确认所有需要恢复的分区已正确列出,并通过按 P 键查看文件内容无误后,选择 [Write] 并按 Enter。TestDisk 会要求确认,输入 Y 并回车,将新的分区表信息写入磁盘。

步骤七:退出并验证

  1. 写入成功后,按 Q 多次退出 TestDisk。

  2. 重启云服务器或执行以下命令让内核重新读取分区表:

    sudo partprobe /dev/vdb
  3. 再次使用以下命令检查分区是否已恢复:

    lsblk /dev/vdb
    fdisk -l

步骤八:恢复后处理

  1. 检查文件系统:恢复分区后,分区本身的文件系统可能因异常卸载而损坏。在挂载前,建议使用 fsck 进行检查和修复:

    sudo fsck -y /dev/vdb1
  2. 挂载并验证文件:

    sudo mount /dev/vdb1 /home/test
    ls -la /home/test/

附录:环境复现

可执行如下操作,复现本实践中的勿删操作。

  1. vdb硬盘现存vdb1分区,写入10个文件。

  2. 此时已删除vdb1分区。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈