这是个很奇怪的例子。公司用的是kvm的虚机系统,同事追求更快,镜像用的是raw分区,里面装了lvm。
grub的启动文件如下:
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_root-lvroot rd_NO_LUKS rd_LVM_LV=vg_root/lvroot LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 console=ttyS0,115200n8 rd_LVM_LV=vg_root/lvswap KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet rd_NO_DM
看上面,root也被建立在某个lvm卷上了。然后某个断电,导致kvm挂掉了,悲催的是lvm卷被破坏了,用尽办法也弄不出来卷信息。因为lvm的metadata没有备份。
lvm的metadata必须备份,方法如下:
vgcfgbackup
/etc/lvm/backup/VolGroup是当前lvm配置的一个备份,而/etc/lvm/archive是归档。
看看归档:
ls -l /etc/lvm/archive/*
-rw-------. 1 root root 1820 Jun 12 2015 /etc/lvm/archive/VolGroup_00000-444365108.vg
恢复方法:
vgcfgrestore
具体恢复的步骤: 首先查看blkid,看看硬盘分区的UUID
blkid
/dev/mapper/VolGroup-LogVol01: UUID="d6d24cc3-5e4a-4f4d-a0b1-2524e727b0fe" TYPE="ext4"
/dev/sda1: UUID="3d0103ac-1b18-4da5-bc20-4b7a980a55c0" TYPE="ext4"
/dev/sda2: UUID="i5Cd6V-IVHN-e694-o9CQ-OZJe-zvt0-AhUBLq" TYPE="LVM2_member"
/dev/mapper/VolGroup-LogVol00: UUID="06fe7af0-dee5-494a-9b5b-11bf95244acd" TYPE="swap"
查看lvm信息,找出里面所有物理卷的UUID:
less /etc/lvm/archive/VolGroup_00000-444365108.vg
...
physical_volumes {
pv0 {
id = "i5Cd6V-IVHN-e694-o9CQ-OZJe-zvt0-AhUBLq"
device = "/dev/sda2" # Hint only
...
首先恢复所有的pv,物理卷,这里我们就一个物理卷,所以执行一次,如果有多个物理卷,一个一个来即可
pvcreate --uuid "i5Cd6V-IVHN-e694-o9CQ-OZJe-zvt0-AhUBLq" \
--restorefile /etc/lvm/archive/VolGroup_00000-444365108.vg
物理卷恢复完了,再恢复lv,逻辑卷:
vgcfgrestore -f /etc/lvm/archive/VolGroup_00000-444365108.vg VolGroup
弄完后vgdisplay查看一下:
vgdisplay
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 1.64 TiB
PE Size 4.00 MiB
Total PE 428705
Alloc PE / Size 428705 / 1.64 TiB
Free PE / Size 0 / 0
VG UUID 3h3yik-kmqP-Q8sC-5bn0-cwtw-SXpo-orMlKn