温馨提示×

centos分区怎么恢复

小樊
47
2026-01-02 08:44:36
栏目: 智能运维

CentOS 分区恢复实用指南

一、先判断场景与准备

  • 明确是分区表丢失/损坏误删分区,还是文件系统损坏。优先保护数据:对目标盘只读挂载或完全卸载,避免任何写入(包括日志、缓存、自动挂载脚本)。
  • 在云环境或有快照能力的平台,先做磁盘快照/备份再操作;物理机建议在只读状态下操作或整盘克隆后再尝试恢复。
  • 准备好 CentOS 安装介质,必要时可进入救援模式/单用户模式进行修复。
  • 关键原则:在恢复分区结构前,尽量不要向目标盘写入新数据,以免覆盖可恢复信息。

二、恢复分区表的首选方法 TestDisk

  • 安装 TestDisk(CentOS 7/8/9):
    • 新版本:sudo dnf install testdisk -y
    • 旧版本:sudo yum install testdisk -y
  • 以 root 运行:sudo testdisk,选择目标磁盘(如 /dev/sda),按提示选择分区表类型(常见为 Intel/MBREFI GPT)。
  • 执行分析:
    • Analyse → Quick Search;未找到则选 Deeper Search(更慢但更全面)。
    • 在列表中找到丢失分区,按 P 预览文件验证;确认无误后,将分区标记为 Primary/Logical 并选 Write 写入分区表,输入 Y 确认。
  • 让内核重读分区表:sudo partprobe /dev/sda(或重启)。
  • 挂载验证:sudo mount /dev/sdaX /mnt/recovered 检查文件是否完整。
  • 若因某些原因无法写入分区表,可在 TestDisk 中按 P 列出文件,用 C 将关键目录/文件直接恢复到其他磁盘。

三、LVM 场景的恢复步骤

  • 进入救援模式(从安装介质启动),挂载到 /mnt/sysimagechroot /mnt/sysimage
  • 查看 LVM 元数据备份:cat /etc/lvm/backup/<vgname>(常见卷组名如 centos)。
  • 测试恢复配置:vgcfgrestore -f --test /etc/lvm/backup/<vgname>;确认无误后执行:vgcfgrestore -f /etc/lvm/backup/<vgname>
  • 激活卷组:vgchange -ay
  • 检查并修复文件系统:
    • XFSxfs_repair /dev/<vgname>/<lvname>(必要时先 umount
    • ext3/ext4fsck -y /dev/<vgname>/<lvname>
  • 退出并重启,验证挂载与数据。

四、仅文件系统损坏时的修复

  • 先尝试只读挂载确认损坏范围:sudo mount -o ro /dev/sdXn /mnt
  • 文件系统修复:
    • XFSsudo xfs_repair /dev/sdXn(XFS 通常要求卸载;若提示日志问题,可先 xfs_repair -L,存在极小概率导致元数据变动,务必先备份)。
    • ext3/ext4sudo fsck -y /dev/sdXn
  • 修复后重新挂载为读写:sudo mount -o rw /dev/sdXn /mnt 并核对关键数据。

五、MBR 或分区表扇区被覆盖的修复

  • 若有备份,直接还原:
    • 备份/还原前 446 字节引导代码dd if=/dev/sda of=loader.back bs=446 count=1;恢复:dd if=loader.back of=/dev/sda bs=446 count=1
    • 备份/还原 64 字节分区表项(跳过前 446 字节):dd if=/dev/sda of=pt.back skip=446 bs=64 count=1;恢复:dd if=pt.back of=/dev/sda seek=446 bs=64 count=1
    • 或一次性备份/还原 512 字节 MBRdd if=/dev/sda of=mbr.back bs=512 count=1;恢复:dd if=mbr.back of=/dev/sda bs=512 count=1
  • 无备份时,可尝试从同版本、同磁盘布局的机器拷贝对应扇区,但成功率依赖一致性,务必先克隆磁盘再尝试。

0