LVM之VG、PV误删除恢复方法

VG恢复

一、lvremove误删除vg卷组

lvremove vgname 会删除vg下的所有pv,需要用archive记录的元数据日志去恢复lv

[root@centos7 archive]# ll /etc/lvm/archive
total 40
-rw------- 1 root root 879 Sep 28 14:51 vg01_00000-1599738857.vg
-rw------- 1 root root 890 Sep 28 14:56 vg01_00001-1325802091.vg
-rw------- 1 root root 1285 Sep 28 15:13 vg01_00002-1209567998.vg
-rw------- 1 root root 1285 Sep 28 15:13 vg01_00003-2132380656.vg
-rw------- 1 root root 1285 Sep 28 15:21 vg01_00004-1884729932.vg
-rw------- 1 root root 1285 Sep 28 15:21 vg01_00005-762502250.vg
-rw------- 1 root root 1285 Sep 28 16:00 vg01_00006-354891781.vg
-rw------- 1 root root 1285 Sep 28 16:00 vg01_00007-1771763076.vg
-rw------- 1 root root 1285 Sep 28 16:54 vg01_00008-1631127841.vg
-rw------- 1 root root 1285 Sep 28 16:54 vg01_00009-1527369658.vg

二、通过vgcfgrestore结合元数据日志恢复vg

通过vgcfgrestore恢复vg下的lv

[root@centos7 archive]# vgcfgrestore -f /etc/lvm/archive/vg01_00009-1527369658.vg vg01
Restored volume group vg01
[root@centos7 archive]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 1 0 wz–n- <5.00g 508.00m
[root@centos7 archive]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi------- 4.50g
[root@centos7 archive]#

PV恢复

一、故障详情:在LVM环境中对PV进行parted mklabel,会破坏第二个扇区所记录的labelone、pv-uuid信息,导致PV处于loss状态。

二、模拟故障:
创建PV,记录原Pv信息:

[root@centos7 ~]# pvcreate /dev/vdb
WARNING: dos signature detected on /dev/vdb at offset 510. Wipe it? [y/n]: y
Wiping dos signature on /dev/vdb.
Physical volume “/dev/vdb” successfully created
[root@centos7 ~]# parted /dev/vdb u s p
Error: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 10485760s
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
[root@centos7 ~]# wipefs /dev/vdb
offset type

0x218 LVM2_member [raid]
UUID: sDXsbb-zyG4-9Jwg-whVY-zjse-vNS8-tldfT8

[root@centos7 ~]# wipefs -a /dev/vdb
/dev/vdb: 8 bytes were erased at offset 0x00000218 (LVM2_member): 4c 56 4d 32 20 30 30 31
[root@centos7 ~]# pvdisplay
— Physical volume —
PV Name /dev/vdb
VG Name vg01
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1279
Allocated PE 0
PV UUID vrtyiU-hnNe-kGwX-Pij3-LxUK-IgiW-ifmFge

[root@centos7 ~]# dd if=/dev/vdb bs=512 count=2|hexdump -C
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 0.00969323 s, 106 kB/s
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
00000200 4c 41 42 45 4c 4f 4e 45 01 00 00 00 00 00 00 00 |LABELONE…|
00000210 92 44 a7 57 20 00 00 00 4c 56 4d 32 20 30 30 31 |.D.W …LVM2 001|
00000220 76 72 74 79 69 55 68 6e 4e 65 6b 47 77 58 50 69 |vrtyiUhnNekGwXPi|
00000230 6a 33 4c 78 55 4b 49 67 69 57 69 66 6d 46 67 65 |j3LxUKIgiWifmFge|
00000240 00 00 00 40 01 00 00 00 00 00 10 00 00 00 00 00 |…@…|
00000250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
00000260 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |…|
00000270 00 f0 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
00000280 00 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 |…|
00000290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
00000400

模拟误操作:

[root@centos7 ~]# parted /dev/vdb
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) p
Error: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted) mklabel gpt
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags

(parted) q
Information: You may need to update /etc/fstab.

查看被破坏后的磁盘头记录:

[root@centos7 ~]# dd if=/dev/vdb bs=512 count=2|hexdump -C
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 0.0103813 s, 98.6 kB/s
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
000001c0 01 00 ee fe ff ff 01 00 00 00 ff ff 9f 00 00 00 |…|
000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |…U.|
00000200 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART…|
00000210 22 fb 34 f8 00 00 00 00 01 00 00 00 00 00 00 00 |“.4…|
00000220 ff ff 9f 00 00 00 00 00 22 00 00 00 00 00 00 00 |…”…|
00000230 de ff 9f 00 00 00 00 00 fc 86 1e b3 01 c2 6c 4a |…lJ|
00000240 a2 38 60 20 22 3c d2 c6 02 00 00 00 00 00 00 00 |.8` "<…|
00000250 80 00 00 00 80 00 00 00 86 d2 54 ab 00 00 00 00 |…T…|
00000260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
00000400

pv、vg、lv都处于丢失状态

[root@centos7 ~]# lvs
[root@centos7 ~]# pvs
[root@centos7 ~]# vgs
[root@centos7 ~]#

三、pvcreate 恢复PV:

因磁盘第二扇区lvm信息丢失,直接用pvcreate恢复pv会报错,如下:

四、正确处理思路:

做好lvm原数据备份。(步骤2、3可尝试用dd if=/zero of=/dev/vdb bs=512 count=2 iflag=direct代替,有一定几率能成功修复,反之用2、3步骤。) 创建一个PV,指定原pv-uuid进行创建,在新的pv磁盘第二扇区会写入相关信息. dd前1024字节到原物理盘(通过新建的pv恢复原磁盘头lvm信息) pvcreate、vgcfgrestore恢复pv、vg、lv,详细步骤如下: 

1.做好lvm元数据备份:cp -r /etc/lvm/ /etc/lvm.bak

2.新建PV并指定所需的pv-uuid

用一个新的块设备创建vg构造第二扇区信息:

[root@centos7 backup]# pvcreate -ff --uuid vrtyiU-hnNe-kGwX-Pij3-LxUK-IgiW-ifmFge --restorefile /etc/lvm//backup/vg01 /dev/vdc
Couldn’t find device with uuid vrtyiU-hnNe-kGwX-Pij3-LxUK-IgiW-ifmFge.
Physical volume “/dev/vdc” successfully created.
[root@centos7 backup]# dd if=/dev/vdc bs=512 count=2|hexdump -C
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 0.0136249 s, 75.2 kB/s
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
00000200 4c 41 42 45 4c 4f 4e 45 01 00 00 00 00 00 00 00 |LABELONE…|
00000210 7c b1 ee 56 20 00 00 00 4c 56 4d 32 20 30 30 31 ||…V …LVM2 001|
00000220 76 72 74 79 69 55 68 6e 4e 65 6b 47 77 58 50 69 |vrtyiUhnNekGwXPi|
00000230 6a 33 4c 78 55 4b 49 67 69 57 69 66 6d 46 67 65 |j3LxUKIgiWifmFge|
00000240 00 00 00 40 01 00 00 00 00 00 10 00 00 00 00 00 |…@…|
00000250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
00000260 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |…|
00000270 00 f0 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
00000280 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 |…|
00000290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
00000400
[root@centos7 backup]#

3.把构造的信息输出到一个文件,检查无误后覆盖原磁盘丢失的信息

[root@centos7 backup]# dd if=/dev/vdc of=/opt/new_head_1024 bs=512 count=2
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 0.0121184 s, 84.5 kB/s
[root@centos7 backup]# hexdump -C /opt/new_head_1024
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
00000200 4c 41 42 45 4c 4f 4e 45 01 00 00 00 00 00 00 00 |LABELONE…|
00000210 7c b1 ee 56 20 00 00 00 4c 56 4d 32 20 30 30 31 ||…V …LVM2 001|
00000220 76 72 74 79 69 55 68 6e 4e 65 6b 47 77 58 50 69 |vrtyiUhnNekGwXPi|
00000230 6a 33 4c 78 55 4b 49 67 69 57 69 66 6d 46 67 65 |j3LxUKIgiWifmFge|
00000240 00 00 00 40 01 00 00 00 00 00 10 00 00 00 00 00 |…@…|
00000250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
00000260 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |…|
00000270 00 f0 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
00000280 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 |…|
00000290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
00000400
[root@centos7 backup]# dd if=/opt/new_head_1024 of=/dev/vdb bs=512 count=2 iflag=direct
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 0.0394598 s, 26.0 kB/s
[root@centos7 backup]#

验证原磁盘前两个扇区信息是否恢复

[root@centos7 backup]# dd if=/dev/vdb bs=512 count=2|hexdump -C
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 0.00719154 s, 142 kB/s
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
00000200 4c 41 42 45 4c 4f 4e 45 01 00 00 00 00 00 00 00 |LABELONE…|
00000210 7c b1 ee 56 20 00 00 00 4c 56 4d 32 20 30 30 31 ||…V …LVM2 001|
00000220 76 72 74 79 69 55 68 6e 4e 65 6b 47 77 58 50 69 |vrtyiUhnNekGwXPi|
00000230 6a 33 4c 78 55 4b 49 67 69 57 69 66 6d 46 67 65 |j3LxUKIgiWifmFge|
00000240 00 00 00 40 01 00 00 00 00 00 10 00 00 00 00 00 |…@…|
00000250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
00000260 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |…|
00000270 00 f0 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
00000280 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 |…|
00000290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
*
00000400
[root@centos7 backup]#

确定原磁盘信息恢复后,删除新建的pv,避免pv-uuid冲突。

恢复pv前要保证该节点上无客户端使用相关lv(SAN存储可选择其它空闲节点或者拷贝元数据文件到一台虚拟机上执行,本地存储需要取消所有lv挂载),否则会出现以下报错

4.然后进行pvcreate指定uuid和vg原数据进行恢复pv、vg和lv

[root@centos7 backup]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdc lvm2 — 5.00g 5.00g
[root@centos7 backup]# pvremove /dev/vdc
Labels on physical volume “/dev/vdc” successfully wiped.
[root@centos7 backup]# pvs
[root@centos7 backup]# pvcreate -ff --uuid vrtyiU-hnNe-kGwX-Pij3-LxUK-IgiW-ifmFge --restorefile /etc/lvm//ba^Cup/vg01 /dev/vdb
Couldn’t find device with uuid vrtyiU-hnNe-kGwX-Pij3-LxUK-IgiW-ifmFge.
Physical volume “/dev/vdb” successfully created.
[root@centos7 backup]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb lvm2 — 5.00g 5.00g
[root@centos7 backup]# vgs
[root@centos7 backup]#
[root@centos7 backup]# vgcfgrestore -f /etc/lvm/backup/vg01 vg01
Restored volume group vg01
[root@centos7 backup]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 1 0 wz–n- <5.00g 508.00m
[root@centos7 backup]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi------- 4.50g

至此,pv已经恢复正常。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值