这是个反面教材。在京东数科的时候用的是kvm的虚机系统,同事追求更快,文件镜像用的是raw分区,里面装了lvm。
grub的启动文件如下:
1 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也被建立在lvroot的lvm卷上了。
然后就遇到了断电,导致kvm挂掉了,悲催的是lvm卷被破坏了,用尽办法也弄不出来卷信息。因为lvm的metadata没有备份。
数据全丢,无法恢复,杯具了。
综上LVM的metadata必须备份,方法如下:
1vgcfgbackup
/etc/lvm/backup/VolGroup是当前lvm配置的一个备份,而/etc/lvm/archive是归档。
看看归档:
1ls -l /etc/lvm/archive/*
2-rw-------. 1 root root 1820 Jun 12 2015 /etc/lvm/archive/VolGroup_00000-444365108.vg
恢复方法:
1vgcfgrestore
具体恢复的步骤: 首先查看blkid,看看硬盘分区的UUID
1blkid
2/dev/mapper/VolGroup-LogVol01: UUID="d6d24cc3-5e4a-4f4d-a0b1-2524e727b0fe" TYPE="ext4"
3/dev/sda1: UUID="3d0103ac-1b18-4da5-bc20-4b7a980a55c0" TYPE="ext4"
4/dev/sda2: UUID="i5Cd6V-IVHN-e694-o9CQ-OZJe-zvt0-AhUBLq" TYPE="LVM2_member"
5/dev/mapper/VolGroup-LogVol00: UUID="06fe7af0-dee5-494a-9b5b-11bf95244acd" TYPE="swap"
查看lvm信息,找出里面所有物理卷的UUID:
1less /etc/lvm/archive/VolGroup_00000-444365108.vg
2...
3 physical_volumes {
4
5 pv0 {
6 id = "i5Cd6V-IVHN-e694-o9CQ-OZJe-zvt0-AhUBLq"
7 device = "/dev/sda2" # Hint only
8...
首先恢复所有的pv,物理卷,这里我们就一个物理卷,所以执行一次,如果有多个物理卷,一个一个来即可
1pvcreate --uuid "i5Cd6V-IVHN-e694-o9CQ-OZJe-zvt0-AhUBLq" \
2 --restorefile /etc/lvm/archive/VolGroup_00000-444365108.vg
物理卷恢复完了,再恢复lv,逻辑卷:
1vgcfgrestore -f /etc/lvm/archive/VolGroup_00000-444365108.vg VolGroup
弄完后vgdisplay查看一下:
1vgdisplay
2 --- Volume group ---
3 VG Name VolGroup
4 System ID
5 Format lvm2
6 Metadata Areas 1
7 Metadata Sequence No 9
8 VG Access read/write
9 VG Status resizable
10 MAX LV 0
11 Cur LV 2
12 Open LV 2
13 Max PV 0
14 Cur PV 1
15 Act PV 1
16 VG Size 1.64 TiB
17 PE Size 4.00 MiB
18 Total PE 428705
19 Alloc PE / Size 428705 / 1.64 TiB
20 Free PE / Size 0 / 0
21 VG UUID 3h3yik-kmqP-Q8sC-5bn0-cwtw-SXpo-orMlKn
就恢复成功了。