6.3. 恢复物理卷元数据
如果物理卷的卷组元数据区域意外覆盖或被破坏,您将收到一条错误消息,表明元数据区域不正确,或者系统无法找到带有特定 UUID 的物理卷。您可以通过在物理卷中编写新元数据区域来从物理卷中恢复数据,并指定与丢失的元数据相同的 UUID。
警告
您不应该尝试使用可以正常工作的 LVM 逻辑卷执行这个步骤。如果您指定了不正确的 UUID,将会丢失您的数据。
以下示例显示了您可能看到元数据区域是否缺失或损坏的输出类型。
# lvs -a -o +devices
Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
Couldn't find all physical volumes for volume group VG.
Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
Couldn't find all physical volumes for volume group VG.
...
您可能可以通过在
/etc/lvm/archive
目录中查找覆盖的物理卷的 UUID。查看卷组的最后一个已知有效归档 LVM 元数据的 VolumeGroupName_xxxx.vg
文件。
另外,您可能会发现取消激活卷并设置
部分
(-P
)参数,您可以找到缺少的物理卷的 UUID。
# vgchange -an --partial
Partial mode. Incomplete volume groups will be activated read-only.
Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
...
使用 pvcreate 命令的
--uuid
和 --restorefile
参数来恢复物理卷。以下示例将 /dev/sdh1
设备标记为带有上述 UUID 的物理卷,FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk
。此命令使用 VG_00050.vg
中包含的元数据信息恢复物理卷标签,这是卷组的最新好归档元数据。restorefile
参数指示 pvcreate 命令使新物理卷与卷组中的旧物理卷兼容,或者新元数据不会放置在旧的物理卷包含数据的位置(例如,如果原始 pvcreate 命令使用了控制元数据放置的命令行参数,或者物理卷最初是使用不同默认值的不同软件版本创建的)。pvcreate 命令只覆盖 LVM 元数据区域,不会影响现有数据区域。
# pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk" --restorefile /etc/lvm/archive/VG_00050.vg /dev/sdh1
Physical volume "/dev/sdh1" successfully created
然后,您可以使用 vgcfgrestore 命令恢复卷组的元数据。
# vgcfgrestore VG
Restored volume group VG
现在您可以显示逻辑卷。
# lvs -a -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
stripe VG -wi--- 300.00G /dev/sdh1 (0),/dev/sda1(0)
stripe VG -wi--- 300.00G /dev/sdh1 (34728),/dev/sdb1(0)
以下命令激活卷并显示活跃卷。
#lvchange -ay /dev/VG/stripe
#lvs -a -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Devices stripe VG -wi-a- 300.00G /dev/sdh1 (0),/dev/sda1(0) stripe VG -wi-a- 300.00G /dev/sdh1 (34728),/dev/sdb1(0)
如果磁盘中的 LVM 元数据尽可能多地消耗超过它的空间,这个命令就可以恢复物理卷。如果覆盖元数据的数据超过了元数据区域,则该卷中的数据可能会受到影响。您可能能够使用 fsck 命令恢复这些数据。