记一次LVM配置信息故障恢复经历

  Cisco期末考试前,断网准备入寝,接电话告知,某重要服务器硬盘扩容失败,宕机。

解决思路复盘

  询问得知,某重要网站数据库服务器,因磁盘爆满,扩容失败,LVM配置信息错误,进不了系统。

  遂答应第二天考完试前去帮忙。使用Live CD进入系统后,简单的查看了一下情况,原硬盘大小40GB,分为一个主分区/root,一个扩展分区下分一个逻辑分区(30GB)加入到LVM卷组中,LVM卷组划分为16GB(SWAP),14GB(/)。

  执行了错误的命令后,VG的大小变为40GB,但是/dev/sda5实际的大小还是30GB,/分区LV的大小更是变为了174GB,LVM配置信息发生错误。

  好在服务器是虚拟化出来的,备份了N个后开始了修复尝试。

  1. 扩展/dev/sda5到200GB,使LVM能够认到200GB的真实空间。失败,LVM模式下不能扩展。
  2. 尝试备份整个/dev/sda5后,重新建立一个200GB的/dev/sda5,并恢复LVM信息。失败,大小不匹配恢复失败。
  3. 尝试手工修改LVM配置文件,将/root LV更改至原来的14GB大小。失败,尝试了N多数值,根本猜不到原来的大小。
  4. 失败了N次后,得知还有一台Web服务器是同时安装的,可以去上面看看LVM的配置信息。发现两台服务器根本就是VMware直接克隆出来的,主机名都一样,读取LVM配置信息,VG、LV的ID都是相同,大喜。在Web服务器上导出LVM的配置信息,同时在数据库服务器上恢复LVM配置信息,重启解决。
1
2
3
4
5
#备份LVM配置信息(Web服务器上执行)
vgcfgbackup -f /tmp/lvm.conf /dev/ubuntumb-vg

#恢复LVM配置信息(DB服务器上执行)
vgcfgrestore -f /tmp/lvm.conf /dev/ubuntumb-vg

恢复系统后重新扩展VG

  使用新加的空间创建/dev/sda6,并调整卷ID为LVM卷组。

1
2
3
4
pvcreate /dev/sda6
vgextend /dev/ubuntumb-vg /dev/sda6
lvextend -l +100%FREE /dev/ubuntumb-vg/root
resize2fs -p /dev/ubuntumb-vg/root

  总共耗时4小时解决,蹭了一顿饭。——还算幸运的一次折腾。