乐趣区

关于linux:在LVM中恢复已删除的逻辑卷

本文介绍如何复原已删除的逻辑卷,如要执行复原将应用 vgcfgrestore 命令。
在执行任何逻辑卷治理相干工作时,如果意外的删除了逻辑卷,则能够应用它的数据还原性能来复原逻辑卷。在上面的步骤中,将演示如何通过删除卷组中的任何一个逻辑卷,并复原已删除的逻辑卷。

零碎环境
Centos8

现有的文件系统
在开始本文之前曾经创立了一个逻辑卷,外面并寄存了一些文件。

[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 cl lvm2 a– <19.00g <2.00g
/dev/sda vg_data lvm2 a– <20.00g 0
/dev/sdb vg_data lvm2 a– <20.00g 0
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 2 0 wz–n- <19.00g <2.00g
vg_data 2 1 0 wz–n- 39.99g 0
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao—- 15.00g
swap cl -wi-ao—- 2.00g
lv_data vg_data -wi-ao—- 39.99g
[root@localhost ~]# df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_data 40G 318M 40G 1% /data
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
/data 目录中的文件如下:
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷

意外删除逻辑卷
为了演示起见,请删除逻辑卷 lv_data。

[root@localhost ~]# umount /data
[root@localhost ~]# lvremove -v /dev/vg_data/lv_data
Do you really want to remove active logical volume vg_data/lv_data? [y/n]: y

Accepted input: [y]
Removing vg_data-lv_data (253:2)
Archiving volume group "vg_data" metadata (seqno 2).
Releasing logical volume "lv_data"
Creating volume group backup "/etc/lvm/backup/vg_data" (seqno 3).

Logical volume “lv_data” successfully removed
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
应用 lvs 命令打印并确认咱们曾经删除了逻辑卷 lv_data:
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
因为 lv_data 卷已删除,能够看到卷组 vg_data 的残余空间是 40G。

[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 2 0 wz–n- <19.00g <2.00g
vg_data 2 0 0 wz–n- 39.99g 39.99g
开始复原逻辑卷
当初,让咱们看看如何还原已删除的逻辑卷。每当咱们执行与 LVM 相干的任何工作(时,所有内容都将被记录在 /etc/lvm/archive. 下。并应用 vgcfgbackup 命令备份卷组配置并将其存储在 /etc/lvm/backup 下。

[root@localhost ~]# ll /etc/lvm/backup/
total 8
-rw——-. 1 root root 1746 Mar 9 16:27 cl
-rw——-. 1 root root 1147 Apr 8 10:20 vg_data
[root@localhost ~]# ll /etc/lvm/archive/
total 24
-rw——-. 1 root root 1740 Dec 29 2019 cl_00000-1531402016.vg
-rw——-. 1 root root 1740 Mar 9 16:27 cl_00001-790744555.vg
-rw——-. 1 root root 1747 Mar 9 16:27 cl_00002-1369752011.vg
-rw——-. 1 root root 1150 Apr 8 09:52 vg_data_00000-919482485.vg
-rw——-. 1 root root 1155 Apr 8 09:54 vg_data_00001-1289102393.vg
-rw——-. 1 root root 1763 Apr 8 10:20 vg_data_00002-1932879749.vg
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
在下面删除逻辑卷的步骤中,应用 lvremove -v /dev/vg_data/lv_data 命令时,能够看到输入的详细信息,有 archiving 和 create backup。
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
上面列出并查看有多少个卷组元数据备份可用:

[root@localhost ~]# vgcfgrestore –list vg_data

File: /etc/lvm/archive/vg_data_00000-919482485.vg
Couldn’t find device with uuid l5rSrt-SRfc-KQNw-Tm29-gx4D-ihBw-Xzum3L.
Couldn’t find device with uuid v6wYGZ-0dGA-8ecB-kec8-r2zv-gCJi-gulSAD.
VG name: vg_data
Description: Created before executing ‘vgcreate vg_data /dev/sda /dev/sdb’
Backup Time: Thu Apr 8 09:52:49 2021

File: /etc/lvm/archive/vg_data_00001-1289102393.vg
VG name: vg_data
Description: Created before executing ‘lvcreate -l 100%FREE -n lv_data vg_data’
Backup Time: Thu Apr 8 09:54:45 2021

File: /etc/lvm/archive/vg_data_00002-1932879749.vg
VG name: vg_data
Description: Created before executing ‘lvremove -v /dev/vg_data/lv_data’
Backup Time: Thu Apr 8 10:20:53 2021

File: /etc/lvm/backup/vg_data
VG name: vg_data
Description: Created after executing ‘lvremove -v /dev/vg_data/lv_data’
Backup Time: Thu Apr 8 10:20:53 2021
–list 选项列出与 VG 无关的元数据备份和存档文件。
咱们要复原的事删除卷组之前的存档,所以抉择上面圈进去的 /etc/lvm/archive/vg_data_00002-1932879749.vg 文件。
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
在复原之前,应用 –test 选项来试运行一下:

[root@localhost ~]# vgcfgrestore vg_data -f /etc/lvm/archive/vg_data_00002-1932879749.vg –test
TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated.
Restored volume group vg_data.
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
试运行没问题之后,去掉 –test 选项,而后再执行一次:

[root@localhost ~]# vgcfgrestore vg_data -f /etc/lvm/archive/vg_data_00002-1932879749.vg
Restored volume group vg_data.
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
可看到胜利复原卷组 vg_data。

- f 选项读取由 vgcfgbackup 创立的元数据文件。

应用 lvs 查看 lv_data 逻辑卷是否已复原,并且应用 lvscan 查看逻辑卷是否激活:

[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao—- 15.00g
swap cl -wi-ao—- 2.00g
lv_data vg_data -wi——- 39.99g
[root@localhost ~]# lvscan
ACTIVE ‘/dev/cl/swap’ [2.00 GiB] inherit
ACTIVE ‘/dev/cl/root’ [15.00 GiB] inherit
inactive ‘/dev/vg_data/lv_data’ [39.99 GiB] inherit
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
可看到 lv_data 已复原,然而状态是未激活。下一步就激活逻辑卷。

激活逻辑卷
应用 lvchange 命令将逻辑卷激活:

[root@localhost ~]# lvchange -ay /dev/vg_data/lv_data
[root@localhost ~]# lvscan
ACTIVE ‘/dev/cl/swap’ [2.00 GiB] inherit
ACTIVE ‘/dev/cl/root’ [15.00 GiB] inherit
ACTIVE ‘/dev/vg_data/lv_data’ [39.99 GiB] inherit
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao—- 15.00g
swap cl -wi-ao—- 2.00g
lv_data vg_data -wi-a—– 39.99g
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
上图能够看到 ”/dev/vg_data/lv_data” 逻辑卷已激活。

挂载并测验
挂载文件系统:

[root@localhost ~]# mount /dev/vg_data/lv_data /data/
[root@localhost ~]# df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_data 40G 318M 40G 1% /data
在 LVM 中复原已删除的逻辑卷在 LVM 中复原已删除的逻辑卷
能够看到文件都曾经存在了。

总结
本文曾经胜利地从卷组的元数据中复原被删除的逻辑卷。

退出移动版