如何在CentOS中恢复丢失的分区
分区丢失是CentOS系统中常见的问题,可能由误操作、分区表损坏、硬盘故障等原因引起。恢复前需立即停止对目标磁盘的写入操作(如卸载分区、断开网络),避免新数据覆盖原有数据,降低恢复成功率。以下是具体恢复方法:
dd命令或Rufus工具),用于进入救援模式。lsblk或fdisk -l命令查看磁盘分区情况,判断丢失分区是否属于LVM逻辑卷(需用LVM工具恢复)或普通分区(可用TestDisk、extundelete等工具)。TestDisk是一款开源分区恢复工具,支持恢复丢失的分区表、修复分区结构,适用于ext3/ext4、NTFS等文件系统。
步骤如下:
yum install testdisk -y(需联网)。sudo testdisk,进入交互界面。/dev/sda),按Enter确认。P键查看分区内的文件(确认是否为目标分区),再按W键将分区表写入磁盘(此操作不可逆,需谨慎)。lsblk命令检查分区是否恢复。若分区未格式化且使用ext3/ext4文件系统,extundelete可通过文件系统日志恢复数据(需卸载分区,避免覆盖)。
步骤如下:
yum install extundelete -y。umount /dev/sdXY(如/dev/sda1),否则跳过。extundelete /dev/sdXY --restore-all(数据将恢复到当前目录下的RECOVERED_FILES文件夹)。extundelete /dev/sdXY --restore-directory /path/to/deleted/dir。extundelete /dev/sdXY --restore-file /path/to/deleted/file。RECOVERED_FILES目录,查看恢复的文件。若丢失分区属于LVM逻辑卷(如/、/home等挂载点),需通过LVM工具重建物理卷(PV)、卷组(VG)和逻辑卷(LV)。
步骤如下:
cat /etc/lvm/backup/centos(默认备份文件路径),记录物理卷(PV)的UUID。pvcreate --uuid "备份中的UUID" --restorefile /etc/lvm/backup/centos /dev/sdX(如/dev/sdb1)重建PV。vgcfgrestore -f --test /etc/lvm/backup/centos centos(centos为卷组名,需替换为实际名称)测试恢复,成功后执行vgcfgrestore -f /etc/lvm/backup/centos centos正式恢复。vgchange -ay centos激活卷组,使用lvscan查看逻辑卷状态。xfs_repair /dev/centos/root(XFS文件系统)或fsck -y /dev/centos/root(ext4文件系统)修复。pvdisplay、vgdisplay、lvdisplay)。若上述工具无法恢复,可尝试手动重建分区表(需熟悉分区结构,风险较高)。
步骤如下:
sfdisk -d /dev/sdX > partition_table.bak(如/dev/sda),保存当前分区表。fdisk /dev/sdX,输入d删除所有分区(谨慎操作)。n创建新分区,选择分区类型(如主分区p、逻辑分区l),设置分区大小(参考原分区大小),最后输入w保存分区表。mkfs.ext4 /dev/sdXY(如/dev/sda1)格式化分区(若为LVM分区,需先加入VG并激活LV)。mkdir /mnt/recovered),运行mount /dev/sdXY /mnt/recovered挂载,检查数据是否恢复。若/boot分区丢失,系统无法启动,需进入救援模式修复:
mount /dev/sdXY /mnt(/dev/sdXY为根分区,如/dev/sda3)。/boot目录:mount /dev/sdXZ /mnt/boot(/dev/sdXZ为/boot分区,如/dev/sda1)。rpm -ivh /mnt/Packages/kernel-xxxx --force(xxxx为内核版本,需从/mnt/Packages/目录找到对应包)。chroot /mnt→grub2-install /dev/sdX(/dev/sdX为磁盘,如/dev/sda)→grub2-mkconfig -o /boot/grub2/grub.cfg。/boot分区是否恢复。/etc/lvm/backup/centos),若备份文件丢失,恢复难度较大。通过以上方法,可根据分区类型和丢失场景选择合适的恢复方案。恢复前务必做好备份,避免二次损失。