前两篇我们已经讲过误删恢复的基本思路:先停止写入,再判断文件系统类型,最后选择合适工具做扫描、镜像和验证。本篇聚焦更常见于服务器数据盘的 XFS。XFS 面向大容量磁盘、大文件和高并发写入,性能稳定,但文件删除后,原文件名、原路径和目录项关联往往难以完整保留,恢复工具更多依赖 inode、删除时间和残留 extent 去拼结果。因此,XFS 误删恢复不能急着跑命令,而要先保护现场、减少覆盖,再做元数据保全和离线恢复。下面先介绍 XFS 的特点和恢复边界,再用一个 Excel 文件误删案例,演示恢复前确认、止写保全、文件找回以及恢复后对比验证。
1.1 XFS 适合什么场景
XFS 是 Linux 里常见的高性能日志文件系统,特别适合大容量磁盘、大文件和高并发写入场景。很多服务器的数据盘、虚拟化存储、日志分区和业务文件目录都会选择 XFS。
- 它擅长处理大文件和大目录,扩展性好,在线扩容能力强,适合数据盘长期承载业务读写。
- 它使用日志机制保护文件系统一致性,但日志主要服务于一致性恢复,并不等同于误删文件回收站。
- 它常出现在生产服务器上,因此误删后的第一目标不是“多试几个工具”,而是先保护现场。
1.2 XFS 误删恢复的边界
XFS 的恢复难点在于删除后定位信息容易丢失。恢复工具通常只能依赖 inode、删除时间和残留 extent 去拼数据,能否恢复成功,更多取决于误删后的写入量和文件本身的碎片情况。
- 原文件名和原路径通常无法完整恢复,恢复出来的文件往往需要按 inode、时间戳和文件类型重新筛选。
- 文件长度可能被补零到 XFS 块边界,恢复后要用 file、hash 或业务程序确认文件是否真的可用。
- 碎片过多的大文件更容易失败,例如数据库文件、虚拟机镜像、压缩包,一旦发生覆盖写,成功率会明显下降。
1.3 先选对恢复路线
动手前先判断恢复路线,不要一上来就扫描全盘。
- 有 xfsdump 备份时,优先用 xfsrestore 回放到新目录,避免在原分区上做高风险扫描。
- 没有备份且刚误删时,先把原 XFS 分区改成只读,再做元数据和块级镜像,后续恢复都放到副本上执行。
- 最关键的第一动作是停止新的写入,包括日志、临时文件、业务进程和恢复输出目录,避免二次覆盖。
2.1 案例背景:恢复前先确认现场
下面用一个更直观的例子说明:业务同事误删了 /data/project/report/q2-cost.xlsx,/data 是 XFS 文件系统,文件刚删除不久,业务还没有继续写入大量新数据。我们先确认“恢复前文件确实不存在”,再执行保全和恢复,最后对比恢复结果。
- 恢复前要确认挂载点、文件系统类型和误删路径,避免把 ext4、NFS 或其他目录误当作 XFS 处理。
- 如果有历史清单、业务日志或备份记录,先记下原文件名、大小、修改时间和 hash,后面可以用来做恢复后对比。
- 从这一刻开始,所有恢复输出都写到 /srv/recovery 或 /mnt/recovery_out,不能写回 /data。

2.2 事故现场止损
确认误删后,第一步不是立刻扫描,而是止写。每多一次写入,都可能覆盖还能恢复的数据块。
- 不要继续向原分区写入文件,也不要在原分区上安装工具、解压软件包或保存扫描日志。
- 恢复目录必须放到另一块磁盘或网络存储,不能把恢复出来的文件写回原 XFS 文件系统。
- 先用 fuser 或 lsof 查清占用进程,再决定只读重挂还是卸载,避免强行卸载影响业务。


2.3 先保全元数据,再做离线副本
恢复前先保全现场。元数据和块级副本都建议放到另一块文件系统上。
- xfs_metadump 用来保存超级块、inode、B+tree 等元数据,适合后续分析文件系统结构和删除痕迹。
- dd 镜像用来保留完整块级副本,恢复工具、反复扫描和验证动作都尽量在副本上做。


2.4 用 xfs_undelete 做只读恢复尝试
xfs_undelete 会遍历 inode B+tree,尝试用残留 extent 拼回文件。
- 用 -t 缩小删除时间范围,减少无关 inode 扫描量,也能降低后续人工筛选成本。
- 用 -i "" 保留未知类型文件,因为误删现场里有些文件头可能不完整,过早过滤会漏掉可恢复数据。
- 输出目录必须在其他文件系统,最好是独立磁盘或挂载点,避免恢复过程覆盖原始数据块。


2.5 恢复成功后的对比验证
恢复成功不能只看“文件出现了”。更可靠的做法是把恢复前记录和恢复后文件放在一起对比:路径可以不同,但文件大小、类型、业务打开结果和 hash 应尽量能对上。
- 先用 ls 对比文件大小和时间线,确认恢复出来的文件不是 0 字节,也不是明显不相关的旧文件。
- 再用 file 判断文件类型,快速排除空文件、损坏文件和明显识别错误的结果。
- 最后用 sha256sum 或业务程序验证内容,例如 Excel 能正常打开、压缩包能解压、数据库文件能在测试实例加载。

2.6 如果原本就有 xfsdump 备份
如果已有 xfsdump 备份,优先走 xfsrestore。这通常比扫描删除 inode 更稳,也更容易交付。

3.1 哪些场景成功率更高
成功率高的场景通常有几个共同点:误删刚发生、写入少、文件碎片不严重,并且能先做只读镜像。
3.2 哪些场景应立即转专业恢复
以下情况建议及时转专业恢复,不要在原盘上反复试命令。
- 数据库文件、虚拟机镜像等大文件误删时,不建议反复试工具;这类文件碎片多,错误写入代价高。
- 已经发生覆盖写,或同时存在 LVM、RAID、快照链路损坏时,应先做完整镜像再交给专业流程处理。
- 磁盘出现读错、掉盘、SMART 告警时,优先保护硬件现场,继续扫描可能让坏盘状态进一步恶化。
总结一句:XFS 恢复靠流程纪律。先止写,后保全,再离线恢复,最后用备份兜底。