LVM扩容扩错分区后恢复LVM
给LVM分区扩容,结果搞错了LV卷,后的恢复
1、扩容操作
已有硬盘及分区情况:

首先sdb硬盘sdb2分区不是lvm2分区,fdisk /dev/sdb命令将sdb2分区修改为lvm2分区
fdisk /dev/sdb
t
8e
p
w
后查看分区为lvm2后,pvs命令可以看到pv中包含了sdb2分区

扩容操作:
vgextend vg /dev/sdb2
vgs显示:

已经将sdb2加入到vg卷组
扩展lv:
lvextend -L 1100G /dev/vg/lv_root
lvs查看结果:

扩展文件系统:
resize2fs /dev/vg/lv_root

df -h 查看分区情况:

扩容成功,结果确悲催,扩错了分区。
发现扩容错误后,脑子又抽抽了。
直接调整lv大小:
lvresize -l 12674 /dev/vg/lv_root
没有加-r同步调整文件系统大小,然后使用e2fsck -f /dev/vg/lv_root,检查文件系统,显示文件系统已经挂载无法操作。
然后直接删除了vg中新加的pv
vgreduce vg /dev/sdb2
lvdisplay查看lv状况:

看着是没有问题,但是因为lvresize lv的时候没有同步调整文件系统大小,在这里埋了坑。
因为分区已经挂载,必须要重启系统,使用启动盘进入恢复模式才能检查文件系统,所以重启系统
第一次直接进入本地引导,报错无法加载lv_root分区
第二次使用引导盘启动,按3后进入SHELL,然后激活vg
lvs查看lv,显示lv_root 状态为不可用
e2fsck -f /dev/vg/lv_root 检查文件系统,报错文件系统大小和物理空大小不匹配,操作无法进行
有点蒙,这玩不下去了。
2、恢复操作
前面发现扩容有错误时,就查看过/etc/lvm/目录下的备份和lvm元数据信息,在终端工具上还保留了cat后的记录,根据记录重建了vg元数据文件
使用vgcfgrestore vg -f vgback.vg 重新恢复了vg元数据,再使用e2fsck检查文件系统还是一样的错误。
没招了,只能把pv先恢复回来,再加入VG,然后把lv大小再调整回去,再重新执行缩容操作。
先把sdb2重建出来,通过fdisk /dev/sdb ,根据之前的分区表记录,将sdb2重建回来。如果分区显示的格式不一样可以在fdisk命令中按u来更改fdisk的分区开始和结束柱面或是扇区
的显示方式,根据记录来分sdb2的开始和结束位置。
分区建好以后lvm的分区会自动加入到pv中,再按照之前的扩容操作将pv加入到vg卷组中,添加好VG后,lv可以正常显示,并且可以看到UUID后,显示lv状态为可用。
然后e2fsck检查文件系统,修复文件系统错误后,可以正常挂载lv_root。
3、正确的缩容操作
3.1 调整lv大小并通过-r参数同步调整文件系统大小
lvresize -r -l 12710 /dev/vg/lv_root #缩容lv并同步调整文件系统大小
vgreduce vg /dev/sdb2 #删除vg组中的sdb2
pvremove /dev/sdb2 #删除pv
e2fsc -f /dev/vg/lv_root #检查文件系统错误
使用lvdisplay 检查lv状态,状态正常后使用mount命令挂载文件系统
如果之前调整lv大小时,调整的大小不正常,可以继续使用lvresize -r -l 100%FREE /dev/vg/lv_root,将所有已有的vg容量分配给lv.
经过以上调整后lv恢复正常。终于搞定!!!

浙公网安备 33010602011771号