在CentOS中,“分卷”通常指LVM(逻辑卷管理)的卷组(VG)、逻辑卷(LV)或物理卷(PV)出现问题,也可能是磁盘分区表损坏导致无法识别分卷。以下按常见场景提供修复方法,操作前请务必备份重要数据!
先通过工具确认当前存储状态,定位问题根源:
# 1. 查看物理卷(PV)状态
pvscan # 扫描所有PV
pvdisplay # 详细显示PV信息(是否有损坏、丢失)
# 2. 查看卷组(VG)状态
vgscan # 扫描所有VG
vgdisplay # 详细显示VG信息(是否有"missing PV"、激活状态)
# 3. 查看逻辑卷(LV)状态
lvscan # 扫描所有LV
lvdisplay # 详细显示LV信息(是否有"inactive"、错误)
# 4. 查看磁盘分区表
fdisk -l # 列出所有磁盘及分区(确认分区是否存在)
parted -l # 更直观的分区表检查(支持GPT)
现象:vgdisplay 显示 PV missing 或 pvscan 找不到某个PV。
修复步骤:
检查磁盘是否正常连接:
若为物理机,确认磁盘硬件无故障;若为虚拟机,检查磁盘是否挂载。
用 lsblk 确认磁盘是否被系统识别(如 /dev/sdb 是否存在)。
修复分区表(若分区丢失):
若磁盘存在但分区(/dev/sdb1)消失,可能是分区表损坏:
testdisk 恢复分区表(需安装 testdisk:yum install testdisk -y):testdisk /dev/sdb # 选择磁盘,按提示扫描并恢复分区表
gdisk 修复:gdisk /dev/sdb # 输入 `r` 进入恢复模式,按提示修复
重新创建PV(若分区恢复后PV仍无法识别):
若分区已恢复(/dev/sdb1 存在),但 pvscan 无显示,需重新初始化PV:
pvcreate /dev/sdb1 # 注意:会清除该分区的LVM元数据,仅在确认数据可恢复时操作!
将恢复的PV重新加入卷组:
若VG之前因PV丢失而降级,需重新将PV加入VG:
vgextend 卷组名 /dev/sdb1 # 例如:vgextend centos /dev/sdb1
现象:vgdisplay 显示VG状态为 inactive,或LV无法挂载。
修复步骤:
手动激活卷组:
vgchange -ay 卷组名 # 激活指定VG(如:vgchange -ay centos)
# 或激活所有VG:vgchange -ay
检查VG元数据是否损坏:
若激活失败,可能是VG元数据损坏,尝试修复:
vgcfgrestore -f /etc/lvm/backup/卷组名 卷组名 # 从备份恢复VG元数据(LVM默认备份到/etc/lvm/backup/)
若没有备份,可尝试用 vgck 检查VG一致性:
vgck 卷组名 # 检查VG元数据,若有错误会提示
现象:LV存在但挂载时提示错误(如 mount: wrong fs type 或 superblock error)。
修复步骤:
确认LV是否激活:
lvscan # 若LV显示 "inactive",先激活:lvchange -ay /dev/卷组名/逻辑卷名
检查并修复文件系统:
根据LV的文件系统类型(如ext4、xfs)选择工具:
# 先卸载LV(若已挂载)
umount /dev/卷组名/逻辑卷名 # 例如:umount /dev/centos/root
# 修复ext4:用fsck
fsck -y /dev/卷组名/逻辑卷名 # -y 自动确认修复
# 修复xfs:用xfs_repair(注意:xfs不支持离线修复,需先确保LV未挂载)
xfs_repair /dev/卷组名/逻辑卷名
# 查找备份superblock位置
dumpe2fs /dev/卷组名/逻辑卷名 | grep -i "superblock"
# 用备份superblock修复
fsck -b 备份superblock位置 /dev/卷组名/逻辑卷名
/etc/lvm/目录丢失)现象:pvscan/vgscan/lvscan 均无输出,LVM完全无法识别。
修复步骤:
从LVM备份恢复元数据:
LVM默认将元数据备份到 /etc/lvm/backup/ 和 /etc/lvm/archive/,若这些文件存在:
# 恢复PV元数据
pvcreate --uuid "PV的UUID" --restorefile /etc/lvm/backup/卷组名 /dev/sdb1
# 恢复VG元数据
vgcfgrestore -f /etc/lvm/backup/卷组名 卷组名
# 恢复LV(自动随VG恢复)
若备份丢失,尝试手动重建LVM:
若无法恢复元数据,需手动重建PV/VG/LV(数据会丢失,仅应急用):
pvcreate /dev/sdb1
vgcreate 新卷组名 /dev/sdb1
lvcreate -L 10G -n 新逻辑卷名 新卷组名
mkfs.ext4 /dev/新卷组名/新逻辑卷名 # 重新格式化文件系统
若CentOS启动时卡在 dracut 界面,提示LVM相关错误(如 could not find volume group),需进入救援模式修复:
进入救援模式:
用CentOS安装盘/ISO启动,选择 Troubleshooting → Rescue a CentOS system → 按提示挂载系统到 /mnt/sysimage。
在救援模式中修复LVM:
chroot /mnt/sysimage # 切换到原系统环境
vgchange -ay # 激活所有VG
# 若VG激活失败,按上述场景1/2修复PV/VG
exit # 退出chroot
reboot # 重启
vgcfgbackup 卷组名 # 手动备份VG元数据到/etc/lvm/backup/
smartctl(需安装 smartmontools)检查磁盘是否有坏道。pvcreate、mkfs 等破坏性操作时。如果问题仍未解决,可提供具体错误信息(如 pvscan/vgdisplay 的输出),以便进一步定位!