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恢复正常。终于搞定!!!

 

posted @ 2024-01-16 12:03  清风6661  阅读(228)  评论(0)    收藏  举报