17.5. 在 LVM 物理卷中恢复元数据

这个过程恢复被损坏或者替换为新设备的物理卷的元数据。您可以通过重写物理卷的元数据区域从物理卷中恢复数据。

警告

不要在正常的 LVM 逻辑卷中尝试这个步骤。如果您指定了不正确的 UUID,将会丢失您的数据。

先决条件

流程

  1. 恢复物理卷中的元数据:

    # pvcreate --uuid physical-volume-uuid \
               --restorefile /etc/lvm/archive/volume-group-name_backup-number.vg \
               block-device
    注意

    该命令只覆盖 LVM 元数据区域,不会影响现有的数据区域。

    例 17.4. 在 /dev/vdb1上恢复物理卷

    以下示例使用以下属性将 /dev/vdb1 设备标记为物理卷:

    • FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk 的 UUID
    • VG_00050.vg 中包含的元数据信息,它是卷组最新的好归档元数据。
    # pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk" \
               --restorefile /etc/lvm/archive/VG_00050.vg \
               /dev/vdb1
    
      ...
      Physical volume "/dev/vdb1" successfully created
  2. 恢复卷组的元数据:

    # vgcfgrestore myvg
    
      Restored volume group myvg
  3. 显示卷组中的逻辑卷:

    # lvs --all --options +devices myvg

    逻辑卷目前不活跃。例如:

      LV     VG   Attr   LSize   Origin Snap%  Move Log Copy%  Devices
      mylv myvg   -wi--- 300.00G                               /dev/vdb1 (0),/dev/vdb1(0)
      mylv myvg   -wi--- 300.00G                               /dev/vdb1 (34728),/dev/vdb1(0)
  4. 如果逻辑卷的片段类型是 RAID,则重新同步逻辑卷:

    # lvchange --resync myvg/mylv
  5. 激活逻辑卷:

    # lvchange --activate y myvg/mylv
  6. 如果磁盘中的 LVM 元数据至少使用了覆盖其数据的空间,这个过程可以恢复物理卷。如果覆盖元数据的数据超过了元数据区域,则该卷中的数据可能会受到影响。您可能能够使用 fsck 命令恢复这些数据。

验证步骤

  • 显示活跃逻辑卷:

    # lvs --all --options +devices
    
      LV     VG   Attr   LSize   Origin Snap%  Move Log Copy%  Devices
     mylv myvg   -wi--- 300.00G                               /dev/vdb1 (0),/dev/vdb1(0)
     mylv myvg   -wi--- 300.00G                               /dev/vdb1 (34728),/dev/vdb1(0)