LVM灾难修复

本文介绍了如何使用LVM自带命令进行灾难恢复。

操作场景

LVM(Logical Volume Manager)是逻辑卷管理的简写。在应对由人为因素导致的灾难时,LVM提供了一套完整的数据备份和配置信息备份的工具集。这些工具能够有效地用于创建备份,以便在发生物理卷、逻辑卷或卷组损坏的情况下,通过备份来恢复数据,最大限度地减少因灾难造成的数据丢失。

名词解释:

PV:物理卷(Physical Volume,简称PV)是LVM的基本存储单元,它可以是硬盘分区、整个硬盘或者回环文件;

VG:卷组(Volume Group,简称VG)是一个或多个物理卷的集合,它用于组合多个物理卷的存储空间,以形成一个连续的可用存储空间;

LV:逻辑卷(Logical Volume,简称LV)是建立在卷组之上的逻辑存储单元,它可以被格式化并挂载到文件系统中。

前提条件

本次教程示例步骤使用以下资源版本:

  • 操作系统:BC-Linux for Euler 22.10 64位
  • LVM:2.03.14-4.oe2203.x86_64

操作步骤

教程环境设置

本次教程使用LVM对三块云硬盘sdb(15G)、sdc(10G)和sdd(10G)进行操作。逻辑卷PV为/dev/sdb、/dev/sdc和/dev/sdd,卷组VG为test_vg(35G),逻辑卷LV为test_lv(30G),文件系统格式为ext4,挂载目录为/test。

在/test目录下使用dd命令随机生成3个二进制文件,记录其md5值,用于验证灾难恢复后数据是否有损坏或丢失。

案例1:LVM标签被删除,但分区表正常

使用dd 命令模拟sdb对应的lvm2的标签被擦除,但保留分区表的现象。

可以观察到,标识为sdb的物理卷已呈现为未知设备状态。但因为分区表未遭受损坏,导致文件系统仍可挂载并访问。

修复操作步骤如下:

    1. 备份位于/test目录下的文件。

    2. 从备份文件中获取物理卷的UUID,备份文件的路径为:/etc/lvm/backup/test_vg,从文件的physical_volumes中找到sdb对应的UUID。

    3. 在本案例中,g9FQVj-S1jF-vatm-ffVa-KHQ1-OVXk-6rfTdm是物理卷sdb的UUID,使用它来恢复PV。

        执行以下命令,恢复物理卷:

pvcreate -ff --uuid <物理卷uuid> --restorefile <备份文件位置> <物理卷位置>

注意

恢复PV之前需要先取消挂载/test目录,并停用卷组,否则会出现Can't open /dev/sdb exclusively. Mounted filesystem? 的情况。

         执行以下命令,停用卷组:

vgchange -a n <卷组名称>

    4. 物理卷sdb成功被创建,并使用pvs命令查看。

    5. 执行以下命令,恢复卷组。

vgcfgrestore -f <备份文件位置> <卷组名称>

    6. 执行以下命令,激活卷组。

vgchange -ay <卷组名称>

    7. 可见PV已恢复,VG和LV也恢复正常。

    8. 使用md5sum验证数据,没有丢失或者损坏。

 

案例2:LVM标签、元数据和分区表都被删除

使用dd 命令清除sdd前400个扇区,模拟sdd对应的lvm2的标签、元数据和分区表被删除的现象。

此时sdd对应的PV已经变成了unknown未知设备,/test目录下的文件也都消失了。

修复操作步骤如下:

    1. 在控制台新订购一块云硬盘,通过新的硬盘替换掉故障硬盘sdd。

    2. 获取LVM备份文件/etc/lvm/backup/test_vg中sdd的UUID,通过pvcreate命令将sdd中的信息恢复到新硬盘sde中。在本案例中,sdd的UUID为PXl3vN-LJsy-mBbX-72ZV-Jyv6-0z4w-PTDGkj。执行以下命令,恢复物理卷。

pvcreate --restorefile <备份文件位置> --uuid <故障物理卷uuid> <新建硬盘位置>

    3.  如下图所示,可见sde已经成功替换掉了sdd。

    4. 恢复并激活VG。

    5. 可见PV已恢复,VG和LV也恢复正常。

    6. 使用md5sum验证数据,没有丢失或者损坏。

本文档内容整理自移动云官方帮助中心(查看原文),仅供参考。