最近更新时间:2026-08-18 21:09:45
本文介绍在 Linux 环境下使用开源工具 TestDisk 恢复因误操作删除的分区的标准操作流程,涵盖环境评估、磁盘备份、分区恢复及恢复后验证等关键实践,适用于分区表被破坏但分区数据未被覆盖的场景。
当云服务器中的磁盘分区(如 MBR 或 GPT 分区表)因误操作被删除,但分区内的数据尚未被新写入覆盖时,可使用 TestDisk 工具进行分区恢复。本文以 /dev/vdb 磁盘(原有 vdb1 分区,分区内写入了 10 个文件,后 vdb1 分区被删除)为例,演示完整的恢复流程。
公有云服务器中 MBR 或 GPT 分区表被误删除或破坏。
分区数据尚未被后续写入操作覆盖。
目标读者为云计算运维工程师、系统管理员及具备 Linux 命令行基础的技术人员。
立即停止写入:确认误删除后,务必卸载该磁盘对应的所有文件系统,并停止任何可能向该磁盘写入数据的服务或操作。新的写入操作可能会覆盖原有分区数据,导致数据永久丢失。
评估数据重要性:如果数据极其重要,强烈建议先对整个磁盘创建快照或主机镜像。如磁盘已具备快照,可通过快照直接回滚,这是最安全的标准操作流程。
恢复不确定性:数据恢复存在不确定性,尽管 TestDisk 功能强大,但并非总能 100% 成功。
恢复操作前务必创建磁盘快照或备份,避免操作不当导致数据永久丢失。
TestDisk 恢复的是分区表信息,若分区内文件系统本身已损坏,需使用 fsck 等工具进一步修复。
如果磁盘已具备快照,优先使用快照回滚恢复数据,这是最安全且最快的方式。
确认磁盘状态:使用 lsblk、fdisk -l 或 parted -l 命令确认当前磁盘和分区状态,识别出被误删分区的磁盘。本实践中的为/dev/vdb1分区。
# 查看块设备列表,确认丢失分区的磁盘
lsblk
# 查看详细分区信息
sudo fdisk -l /dev/vdb1创建磁盘快照(强烈推荐):在操作前参考创建极速可用快照文档,对目标硬盘创建快照,避免操作失误导致二次损坏。
安装 TestDisk:根据 Linux 发行版安装 TestDisk。
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install testdiskCentOS/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 替换为您的镜像文件路径。
以 root 权限启动 TestDisk 并指定磁盘:
sudo testdisk /dev/vdbTestDisk 启动后,选择 [Proceed] 继续对当前选中磁盘(/dev/vdb)进行操作。
磁盘容量必须被正确检测是成功恢复数据的关键。
若终端窗口过小弹出提示,放大窗口即可;如未出现则跳过此步。
TestDisk 会显示分区表类型选择界面,通常会自动检测,按 Enter 进行下一步。
[Intel]:用于传统的 MBR 分区表。
[EFI GPT]:用于较新的 GPT 分区表。
根据磁盘类型选择,如不确定可尝试默认的 [Intel] 并按 Enter。
在下一菜单中,选择 [Analyse] 检查当前分区结构并搜索丢失的分区,各选项说明如下:
[Analyse]:分析当前分区结构并搜索丢失的分区(最常用、最安全的第一步)。
[Advanced]:提供针对文件系统的实用工具。
[Geometry]:更改磁盘的几何参数(柱面、磁头、扇区数)。
[Options]:修改程序运行时选项,如显示哪些文件类型。
[MBR Code]:将 TestDisk 的 MBR 代码写入磁盘的第一个扇区。
[Delete]:删除分区表中的所有数据。
若 TestDisk 在初始阶段,如下图所示,未检测到有效的分区表或分区信息,继续执行 [Quick Search]。TestDisk 会快速扫描磁盘空闲区域,寻找丢失分区的引导扇区(如 NTFS 的 $Boot 或 EXT4 的 Superblock)。
如有确认信息弹出,选择 Continue 并回车确认。
使用 Up/Down 方向键高亮选择第一个找到的分区,按 Enter 进行下一步。
快速搜索完成后,TestDisk 会列出所有找到的分区(包括当前存在的和已删除的),显示开始块和结束块等信息。
按 Enter 可进一步查看该分区的详细信息(如文件系统类型、大小等),帮助确认是否为要恢复的分区。
按 P 键可列出该分区内的文件(对 EXT3/4、FAT、NTFS 等文件系统有效),这是验证分区内容是否正确的最可靠方法。
如果快速搜索未找到所有丢失的分区或结果不理想,在主菜单选择 [Deeper Search] 进行更全面但更慢的扫描。
确认所有需要恢复的分区已正确列出,并通过按 P 键查看文件内容无误后,选择 [Write] 并按 Enter。TestDisk 会要求确认,输入 Y 并回车,将新的分区表信息写入磁盘。
写入成功后,按 Q 多次退出 TestDisk。
重启云服务器或执行以下命令让内核重新读取分区表:
sudo partprobe /dev/vdb再次使用以下命令检查分区是否已恢复:
lsblk /dev/vdb
fdisk -l检查文件系统:恢复分区后,分区本身的文件系统可能因异常卸载而损坏。在挂载前,建议使用 fsck 进行检查和修复:
sudo fsck -y /dev/vdb1挂载并验证文件:
sudo mount /dev/vdb1 /home/test
ls -la /home/test/可执行如下操作,复现本实践中的勿删操作。
纯净模式
