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