centos/redhat 系统误删除逻辑卷之后如何恢复
此次操作只针对同一台机器的逻辑卷,如果不同机器物理卷分区的start 和 end磁柱是相同的话,也可以用此方法恢复,但是还是只建议通过备份文件恢复本机逻辑卷
首先查看系统卷组和逻辑卷的信息
[root@master ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb iso lvm2 a-- <50.00g 0 /dev/sdc iso lvm2 a-- <100.00g 0 [root@master ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 iso 2 1 0 wz--n- 149.99g 0 [root@master ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g iso iso -wi-ao---- 149.99g [root@master ~]#
逻辑卷iso就是本次测试的卷,现在查看/dev/mapper/iso-iso的挂载和使用情况,确定一会删除逻辑卷,恢复逻辑卷的操作之后,改卷里面存储的数据还在
[root@master ~]# mount|grep iso /dev/sr0 on /mnt type iso9660 (ro,relatime) /dev/mapper/iso-iso on /iso type xfs (rw,relatime,attr2,inode64,noquota) [root@master ~]# ll -h /iso/ total 12G drwxrwxr-x 8 root root 301 Dec 14 15:16 Aug_c7 -rw-r--r-- 1 root root 3.7G Apr 13 09:55 CentOS-6.7-x86_64-bin-DVD1.iso -rw-r--r-- 1 root root 3.7G Apr 13 09:58 rhel-server-6.10-x86_64-dvd.iso -rw-r--r--. 1 root root 4.2G Dec 16 2020 rhel-server-7.6-x86_64-dvd.iso drwxr-xr-x 2 root root 329 Dec 24 2020 xrdp_rpm [root@master ~]# md5sum /iso/CentOS-6.7-x86_64-bin-DVD1.iso 51f90e8ddd2ea199780065eaf75130ad /iso/CentOS-6.7-x86_64-bin-DVD1.iso
目前/dev/mapper/iso-iso 挂载点是 /iso ,随便测试一个该目录下文件的md5值,接下来卸载/iso 删除逻辑卷/dev/mapper/iso-iso
[root@master ~]# pwd /root [root@master ~]# umount /iso/ [root@master ~]# mount|grep iso /dev/sr0 on /mnt type iso9660 (ro,relatime) [root@master ~]# lvremove /dev/mapper/iso-iso Do you really want to remove active logical volume iso/iso? [y/n]: y Logical volume "iso" successfully removed [root@master ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g [root@master ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 iso 2 0 0 wz--n- 149.99g 149.99g [root@master ~]# vgdisplay iso --- Volume group --- VG Name iso System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 8 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 149.99 GiB PE Size 4.00 MiB Total PE 38398 Alloc PE / Size 0 / 0 Free PE / Size 38398 / 149.99 GiB VG UUID iGQ1co-OmqO-twIM-2q0k-DOXo-scwU-GKvLaV
现在已经看不到逻辑卷/dev/mapper/iso-iso了,接下来的是本次测试的重点,通过/etc/lvm/backup 下面的文件恢复误删除的逻辑卷
[root@master ~]# vgcfgrestore -l iso
File: /etc/lvm/archive/iso_00000-1039582144.vg
Couldn't find device with uuid M5ny55-aaxW-B1a6-mfO8-71KS-esUy-vVR7US.
VG name: iso
Description: Created *before* executing 'lvcreate -l 100%VG -n iso iso'
Backup Time: Wed Dec 16 22:49:04 2020
File: /etc/lvm/archive/iso_00001-526221888.vg
VG name: iso
Description: Created *before* executing 'vgextend iso /dev/sdc'
Backup Time: Tue Apr 6 10:37:32 2021
File: /etc/lvm/archive/iso_00002-911244127.vg
Couldn't find device with uuid zi6nCl-SafG-ZeMQ-BLWr-eBfJ-M3cQ-bXBYO4.
VG name: iso
Description: Created *before* executing 'lvextend -l +100%FREE /dev/mapper/iso-iso'
Backup Time: Tue Apr 6 10:41:34 2021
File: /etc/lvm/archive/iso_00003-618668943.vg
VG name: iso
Description: Created *before* executing 'lvremove /dev/mapper/iso-iso'
Backup Time: Tue Apr 19 08:46:26 2022
File: /etc/lvm/backup/iso
VG name: iso
Description: Created *after* executing 'lvremove /dev/mapper/iso-iso'
Backup Time: Tue Apr 19 08:46:26 2022
从备份文件查看卷组iso的元数据信息,因为/dev/mapper/iso-iso 是从卷组iso创建出来的,备份文件中有两条信息比较重要
File: /etc/lvm/archive/iso_00003-618668943.vg VG name: iso Description: Created *before* executing 'lvremove /dev/mapper/iso-iso' #该备份文件是在remove逻辑卷之前创建的备份文件,我们一会通过该文件恢复 Backup Time: Tue Apr 19 08:46:26 2022 File: /etc/lvm/backup/iso VG name: iso Description: Created *after* executing 'lvremove /dev/mapper/iso-iso' #该备份文件是所有关于卷组操作之后最终状态的备份文件 Backup Time: Tue Apr 19 08:46:26 2022
我们根据 /etc/lvm/archive/iso_00003-618668943.vg 恢复逻辑卷 /dev/mapper/iso-iso
[root@master ~]# vgcfgrestore -f /etc/lvm/archive/iso_00003-618668943.vg iso Restored volume group iso Scan of VG iso from /dev/sdb found mda_checksum 24fd491d mda_size 1283 vs previous c4bc5e04 864 Scan of VG iso from /dev/sdc found mda_checksum 24fd491d mda_size 1283 vs previous c4bc5e04 864 [root@master ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g iso iso -wi------- 149.99g #此时iso卷虽然恢复,但是还没有激活,相关知识点跳过本文最后附加知识点去看
或者通过以下命令查看
[root@master ~]# lvscan
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<17.00 GiB] inherit
inactive '/dev/iso/iso' [149.99 GiB] inherit #inactive 未激活
[root@master ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 iso 2 1 0 wz--n- 149.99g 0
激活vg,挂载验证
[root@master ~]# vgchange -ay iso
1 logical volume(s) in volume group "iso" now active
[root@master ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
iso iso -wi-ao---- 149.99g #此时逻辑卷已经激活
[root@master ~]# mount /dev/mapper/iso-iso /iso/
mount: /dev/mapper/iso-iso is already mounted or /iso busy
/dev/mapper/iso-iso is already mounted on /iso
[root@master ~]# ll -h /iso/
total 12G
drwxrwxr-x 8 root root 301 Dec 14 15:16 Aug_c7
-rw-r--r-- 1 root root 3.7G Apr 13 09:55 CentOS-6.7-x86_64-bin-DVD1.iso
-rw-r--r-- 1 root root 3.7G Apr 13 09:58 rhel-server-6.10-x86_64-dvd.iso
-rw-r--r--. 1 root root 4.2G Dec 16 2020 rhel-server-7.6-x86_64-dvd.iso
drwxr-xr-x 2 root root 329 Dec 24 2020 xrdp_rpm
[root@master ~]# md5sum /iso/CentOS-6.7-x86_64-bin-DVD1.iso
51f90e8ddd2ea199780065eaf75130ad /iso/CentOS-6.7-x86_64-bin-DVD1.iso #md5值一样,说明数据恢复回来了
因为数据是最终存储在底层的,所以即使删除了lv,也不会真的把数据删除
附加知识点
pvs 显示字段
参数 标题 描述
dev_size DevSize 创建物理卷的基本设备的大小
pe_start 1st PE 在基本设备中调整到第一个物理扩展的起始位置
pv_attr Attr 物理卷状态:可分配(a)或者导出的(x)。
pv_fmt Fmt 物理卷的元数据格式(lvm2 或者 lvm1)
pv_free PFree 物理卷中剩余的可用空间
pv_name PV 物理卷名称
pv_pe_alloc_count Alloc 已经使用的物理扩展数目
pv_pe_count PE 物理扩展数量
pvseg_size SSize 物理卷的片段大小
pvseg_start Start 物理卷片段的起始物理扩展
pv_size PSize 物理卷的大小
pv_tags PV Tags 附加到物理卷的 LVM 标签
pv_used Used 目前物理卷中已经使用的空间量
pv_uuid PV UUID 物理卷的 UUID
vgs 显示字段
参数 标题 描述
lv_count #LV 卷组中含有的逻辑卷数目
max_lv MaxLV 卷组中最多可用逻辑卷数量(如果没有限制就是 0)
max_pv MaxPV 卷组中最多允许的物理卷数目(如果没有限制就是0)
pv_count #PV 定义卷组的物理卷数目
snap_count #SN 卷组包含的快照数目
vg_attr Attr 卷组状态:可写入(w)、只读(r)、可重新定义大小(z)、导出 的(x)、不完整的(p)和群集的(c)。
vg_extent_count #Ext 卷组中的物理扩展数目
vg_extent_size Ext 卷组中物理扩展的大小
vg_fmt Fmt 卷组(lvm2 或者 lvm1)的元数据格式
vg_free VFree 卷组中剩余可用空间
vg_free_count Free 卷组中可用物理扩展数目
vg_name VG 卷组名称
vg_seqno Seq 代表修正卷组的数字
vg_size VSize 卷组大小
vg_sysid SYS ID LVM1 系统 ID
vg_tags VG Tags 附加到卷组中的 LVM 标签
vg_uuid VG UUID 卷组的 UUID
lvs 显示字段
参数 标题 描述
chunksize Chunk 快照卷的单位大小
chunk_size
copy_percent Copy% 镜像卷的同步化比例,还可在使用 pv_move 命令移动物理扩展时使
用。
devices Devices 组成逻辑卷的基本设备:物理卷、逻辑卷以及起始物理和逻辑扩展
lv_attr Attr 逻辑卷状态。逻辑卷属性字节如下:
字节 1:卷类型:镜像(m)、不带初始同步的镜像(M )、源(o)、pvmove(p)、快照(s)、不可用快照(S)、虚拟(v)
字节 2:权限:可写入(w),只读(r)
字节 3:分配策略:持续(c)、正常(n)、任意(a)、继承(i)。如果在修改分配时锁定了卷,就会显示成大写,比如在执行pvmove 命令的时候。
字节 4:固定的副号码(m)
字节 5:激活(a)、暂停的(s)、不可用快照(I)、不可用暂停 快照(S)、不带表格的映射设备(d)、带未激活表格的映射设备(i)
字节 6:设备开放(o)
lv_kernel_major KMaj 逻辑卷的真实主设备号码(如果是未激活就减 1)
lv_kernel_minor KMIN 逻辑卷的真实副设备号码(如果是未激活就减 1)
lv_major Maj 逻辑卷持久的主设备号码(如果未指定就减 1)
lv_minor Min 逻辑卷持久的副设备号码(如果未指定就减 1)
lv_name LV 逻辑卷名称
lv_size LSize 逻辑卷的大小
lv_tags LV Tags 附加到逻辑卷的 LV 标签
lv_uuid LV UUID 逻辑卷的 UUID
mirror_log Log 镜像分支所在设备
modules Modules 使用此逻辑卷符合内核设备映射器目标需要
move_pv Move 用 pvmove 命令创建的临时逻辑卷的源物理卷
origin Origin 快照卷的源设备
regionsize Region 镜像逻辑卷的单元大小
region_size
seg_count #Seg 逻辑卷中片段的数目
seg_size SSize 逻辑卷中片段的大小
seg_start Start 修正逻辑卷中的片段
seg_tags Seg Tags 附加到逻辑卷片段的 LVM 标签
segtype Type 逻辑卷的片段类型(例如:镜像、条状、线性)
snap_percent Snap% 已经使用的快照卷的比例
stripes #Str 逻辑卷中条带或者镜像的数目
stripesize Stripe 条状逻辑卷中条带的单位大小
stripe_size