问题描述
系统重启后进入dracut,通过单用户进入系统发现/var分区丢失,rpm命令无法查询软件包的情况。
过程分析
此问题主要是由于var所在的分区丢失,导致分区上的数据无法被rpm拿到,因此无法使用rpm命令,需要手动对分区进行重建,由于当前线上要求不能使用5个分区,因此需要将磁盘的分区格式修改成gpt格式,然后将原来的扩展分区设置为gpt的第四分区,操作步骤如下:
- 进入单用户模式: 在grub那按e,修改linux行,添加
init=/bin/bash然后按control + x启动系统

- 查看当前磁盘分区状态:
lsblk

4. 查看分区扇区状态:/usr/sbin/fdisk /dev/sda进入交互式命令行

- 磁盘分区类型修改成gpt, 在交互式命令行中输入g,将磁盘的分区格式修改成gpt

- 重建分区: 按照下图的流程进行磁盘分区重建,注意分区的开始和结束扇区要和正常的是一样的,否则系统无法识别,在出现是否删除分区签名的时候需要选择
N不要删除分区签名。


此处需要注意,磁盘分区的开始及结束为之需要和之前的分区一样,最后一个分区的结束扇区是磁盘的最后即可,不用和之前一样
注意每次遇到是否删除分区签名的时候要选择N,否则分区数据将无法手动找回,可能需要专业公司帮忙找回
7. 修正var分区的文件系统:
/usr/sbin/e2fsck -f /dev/sda4 命令进行文件系统修正
/usr/sbin/resize2fs /dev/sda4 命令进行文件系统的扩缩容,解决我们由于磁盘分区格式修改重建分区后导致前后磁盘扇区数量不一致导致文件系统错误

- 修正efi分区的文件系统:
/usr/sbin/fsck /dev/sda1解决重建分区导致vfat分区有些损坏的问题

问题结果
重建分区