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