方法如何在Linux上备份LVM配置(vgcfgbackup和vgcfgrestore)

在用户意外干预后,卷组可能会由于多种原因而损坏。除非备用卷已经在卷组上,并且可能能够将备用路径添加到另一个卷组,否则LVM可能不知道这种情况。作为LVM的一部分提供的两个有用的命令是vgcfgbackup和vgcfgrestore。使用这些命令,您可以: 备份卷组元数据。尽管这看起来可能并不多,但在某些情况下,备份卷组元数据可以节省时间,在某些情况下还可以节省运行状况。

默认情况下,元数据备份 /etc/lvm/backup 文件和元数据档案 /etc/lvm/archive 文件每个文件的顶部是生成文件的时间/数据,因此您可能拥有与不可逆操作之前相同的旧元数据的副本。

在许多情况下,lvm配置将被破坏。另外,某些磁盘故障和lvm可能会在重新引导时损坏,从而导致操作系统无法引导。因此,保留lvm配置的备份很重要。

请参阅下面的lvm设置。

# pvs
 PV VG Fmt Attr PSize PFree 
 /dev/sda2 centos lvm2 a-- 19.51g 40.00m
 /dev/sdb vg-01 lvm2 a-- 15.00g 13.30g
 /dev/sdc vg-01 lvm2 a-- 20.00g 19.30g

卷组信息:

[email protected] admin]# vgs
VG #PV #LV #SN Attr VSize VFree 
centos 1 2 0 wz--n- 19.51g 40.00m
vg-01 2 3 0 wz--n- 34.99g 32.59g

接下来,逻辑卷信息:

# lvs
 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
 root centos -wi-ao---- 17.47g 
 swap centos -wi-ao---- 2.00g 
 lv_linear vg-01 -wi-a----- 1.00g 
 lv_mirror vg-01 rwi-a-r--- 200.00m 100.00 
 lv_stripe vg-01 -wi-a----- 1.00g

1. vgcfgbackup

每次执行lvm活动(例如lvcreate,remove,disk add …)时,都需要在每个卷组的conf文件中对其进行更新。 /etc/lvm/ 目录。如果磁盘发生故障,则可以使用此备份配置文件将LVM配置恢复到磁盘。 vgcfgbackup命令从磁盘lvm标头中检索配置元数据并将其保存到默认文件位置 /etc/lvm/backup/vg_name。默认情况下,vgcfgbackup每次都会自动运行,并且lvm命令会更改lvm配置。从磁盘的系统区域读取LVM标头详细信息,并将其复制到文件中。该文件有助于恢复新添加的磁盘的配置,以代替已损坏或发生故障的旧磁盘。

请注意,元数据备份不会备份逻辑卷中包含的用户和系统数据。建议您在LVM级别更改时进行此备份。默认情况下,所有更改LVM详细信息的LVM命令都旨在自动进行此备份,因此您无需手动运行命令。

# vgcfgbackup [-f path_newfilename ] vg_name
  • vg_name: 卷组路径名
  • -f path_newfilename:  使用在指定路径中指定的新文件名保存配置。如果 -f 如果省略,则默认文件名具有以下格式 /etc/lvm/backup/vg_name 其中,vg_name是vg_name的基本名称。如果未指定新路径,则新文件将保存在当前目录中。

范例:

# vgcfgbackup /dev/vg-01
 Volume group "vg-01" successfully backed up.

您将看到一条消息,说明备份已成功。看一下备份文件夹

# ls -l /etc/lvm/backup/
total 8
-rw-------. 1 root root 1715 Apr 25 16:50 centos
-rw-------. 1 root root 4089 May 4 01:39 vg-01

默认文件名类似于卷组名。让我们看看使用时会发生什么 -f 选件

# vgcfgbackup -f vg-01_bak /dev/vg-01
 Volume group "vg-01" successfully backed up.

这是成功。检查备份目录中的vg-01_bak文件

# ls /etc/lvm/backup/
centos vg-01

仅以前的文件存在。没有文件显示。现在检查当前目录

# ls -l
total 56392
-rwxrwxrwx. 1 admin admin 1975 Apr 25 17:01 manifest.txt
-rwxrwxrwx. 1 admin admin 2287 Apr 25 17:01 run_upgrader.sh
-rw-------. 1 root root 4074 May 4 02:05 vg-01_bak

最后一行是文件。然后重试相同的命令,但是指定默认的备份文件夹。

# vgcfgbackup -f /etc/lvm/backup/vg-01_bak /dev/vg-01
 Volume group "vg-01" successfully backed up.

让我们检查一下。

# ls -l /etc/lvm/backup/
total 12
-rw-------. 1 root root 1715 Apr 25 16:50 centos
-rw-------. 1 root root 4089 May 4 01:39 vg-01
-rw-------. 1 root root 4090 May 4 02:26 vg-01_bak

2. vgcfgrestore

vgcfgrestore命令可将LVM卷组配置从存档恢复到该卷组中的所有物理卷。如果在共享模式下激活了卷组,则无法执行还原。使用vgcfgbackup命令制作现有工作配置的当前副本 -f 指定另一个文件输出的标志。这样可以确保文件不会更改。 /etc/lvm/backup/etc/lvm/archive 资料夹。确保将当前配置与要还原的配置进行比较,并确保要应用的更改只是撤消错误操作。

vgcfgrestore [-f|--file ] [-t|--test] [-v] vg_name
  • vg_name: 相应卷组的名称
  • -f filename: 指示LVM元数据备份文件的名称,该文件指定用于还原vg_name的元数据备份或存档文件
  • --test: 可用于检查可能的命令错误
  • -v: 详细了解当前情况

以下示例模拟删除逻辑卷并尝试还原它。

注意事项: 下面的例子 危险的破坏性的 因此,请非常小心,如果可能,请进行完整备份。确保在测试环境中尝试

步骤1:删除逻辑逻辑卷

# lvremove /dev/vg-01/lv_linear 
Do you really want to remove active logical volume lv_linear? [y/n]: y
 Logical volume "lv_linear" successfully removed

检查一下

# lvs
 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
 root centos -wi-ao---- 17.47g 
 swap centos -wi-ao---- 2.00g 
 lv_mirror vg-01 rwi-a-r--- 200.00m 100.00 
 lv_stripe vg-01 -wi-a----- 1.00g

步骤2:在此处找到存档文件 /etc/lvm/archive/vgname_(xxxxx).vg。只需查看删除逻辑卷的日期即可。在我们的例子中,它是列表中的最后一个文件

# ls -l /etc/lvm/archive/
total 28
-rw-------. 1 root root 1716 Apr 25 16:50 centos_00000-34432512.vg
-rw-------. 1 root root 1562 May 1 16:02 vg-01_00002-1413920221.vg
-rw-------. 1 root root 2009 May 1 16:07 vg-01_00003-718049637.vg
-rw-------. 1 root root 4097 May 4 03:51 vg-01_00004-306926489.vg

步骤3:检查文件内容中的时间/数据,以及生成文件之前的操作说明

# head /etc/lvm/archive/vg-01_00004-306926489.vg 
# Generated by LVM2 version 2.02.130(2)-RHEL7 (2015-10-14): Thu May 4 03:51:35 2017

contents = "Text Format Volume Group"
version = 1

description = "Created *before* executing 'lvremove /dev/vg-01/lv_linear'"

creation_host = "centos7-srv" # Linux centos7-srv 3.10.0-514.16.1.el7.x86_64 #1
creation_time = 1493866295 # Thu May 4 03:51:35 2017

您可以看到说明,该说明表明该文件是在运行lvremove命令之前创建的。

第4步:立即恢复。恢复之前进行测试 --test 选件

# vgcfgrestore vg-01 -v -f /etc/lvm/archive/vg-01_00004-306926489.vg 
 Found same device /dev/sdb with same pvid 3vXbKwkq63cBiydWgQfkd2aaBeYo6b5I
 Found same device /dev/sdc with same pvid E9wih1232IjADxwkSwRC9kVV3VPJbD5O
 Restored volume group vg-01

步骤5:现在您可以检查

<# lvscan
 ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
 ACTIVE '/dev/centos/root' [17.47 GiB] inherit
 inactive '/dev/vg-01/lv_linear' [1.00 GiB] inherit
 ACTIVE '/dev/vg-01/lv_stripe' [1.00 GiB] inherit
 ACTIVE '/dev/vg-01/lv_mirror' [200.00 MiB] inherit

第三行显示该逻辑未激活。激活并再次检查

# lvchange -ay /dev/vg-01/lv_linear
# lvscan | grep lv_linear
 ACTIVE '/dev/vg-01/lv_linear' [1.00 GiB] inherit

结论

如果需要还原卷组元数据,则命令vgcfgbackup和vgcfgrestore是有用的命令。您也可以使用vgcfgrestore还原元数据的先前版本。

Sidebar