问题
重新启动后,系统将不会启动或者激活 LVM 卷组之一。
尝试手动激活组会产生以下消息:
Couldn't find device with uuid '[UUID]'
解决方案
元数据位置的字符串 LABELONE 将设备标记为 LVM 设备的一部分。
如果没有此字符串,lvm3 将不会尝试将该设备用作物理卷。
由于系统错误或者故意的手动操作,物理设备元数据可能会被覆盖。
对于 Linux 版本 4 或者 5,默认元数据区域为 192Kb。
对于 Linux 版本 6,默认元数据为 1Mb。
在尝试任何恢复或者修复活动之前,强烈建议我们制作此区域的备份副本:
# /bin/dd if=/dev/xvdd of=/root/xvdd.metadata bs=1K count=[192_or_1024]
要检查 LVM 签名,请执行以下操作:
# /bin/strings /root/xvdd.metadata | /bin/fgrep LABELONE
如果未产生任何输出,则元数据已损坏。
查看以下信息的变化:
/etc/lvm/backup /etc/lvm/archives
如果这些已更改或者不一致,则还原活动可能会损坏整个卷数据。
验证物理设备或者 LUN 是否仍然可用,或者仍然提供给此服务器。
勤于对所有 LVM 卷进行定期备份。
虽然它们可能是可恢复的,但错误配置也有可能完全破坏整个数据集。
- 请注意,仅当系统上还有任何多路径设备时,此项才重要。
如果我们不在同一台服务器上使用 LVM 和多路径,我们可以安全地跳过此项。
在系统启动过程中,每次有块设备(例如磁盘驱动器或者LUN)时都会通知LVM 子系统,以便可以使用该设备构建LVM 卷。
这是一个异步过程;无法保证每次系统启动时都会以相同的顺序发现设备。
这意味着多路径设备的物理路径很可能在复合逻辑设备完成之前被发现,从而导致 LVM 子系统在多路径子系统被提供给设备之前声明物理路径。
这种情况有两个不良结果:
a)
LVM 仅利用和声明多路径设备的单一路径,使系统容易受到单点故障的影响,从而导致与存储的连接性灾难性丢失。
b) 由于 LVM 获得了物理路径的独占所有权,因此多路径层将设备报告为忙碌并且无法构建多路径设备。
这使得存储受到单点故障的影响,无法访问存储。
解决方案是强制 LVM 只考虑那些实际持有 LVM 卷一部分的块设备。
这样做的方法是查看 /etc/lvm/lvm.conf 文件:
# /bin/fgrep -n -e 's/#.*//' -e '/filter/p' /etc/lvm/lvm.conf filter = [ "a/.*/" ]
如果输出如上所示,则我们有一个 LVM 配置问题,如果我们在系统上使用它们,可能会破坏任何多路径设备。
更改此参数超出了本说明的范围。
我们将继续假设我们已更正此值。
- 有时保存LVM数据的存储识别速度慢,系统稳定后访问可能挂载成功。
首先,我们将清点可用的块设备并确定 UUID:
# /sbin/vgscan Reading all physical volumes. This may take a while... Couldn't fine device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. Found volume group "data_vg" using metadata type lvm2
现在我们有了导致问题的 UUID,我们必须找到关联的设备:
# /sbin/pvs -o +uuid Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. PV VG Fmt Attr PSize PFree PV UUID /dev/xvdc data_vg lvm2 a-- 996.00M 0 VrVT1L-CTcT-9Nn9-oIAx-BnEA-X7sv-vJO6RE /dev/xvde data_vg lvm2 a-- 996.00M 428.00M tGIqvd-lsYv-7JmV-1bfD-t7BL-HaGi-rmIYW0 unknown device data_vg lvm2 a-m 996.00M 0 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt
- 我们可以这样查看逻辑卷在物理设备上的分布情况:
# /sbin/lvs -o +devices Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. LV VG Attr LSize Oroirn Snap% Move Log Copy% Convert Devices data_vg_lv data_vg -wi-a- 2.50G /dev/xvdc(0) data_vg_lv data_vg -wi-a- 2.50G unknown device(0) data_vg_lv data_vg -wi-a- 2.50G /dev/xvde(0) =
- 尝试激活卷组:
# /sbin/vgchange -a y data_vg Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. Refusing activation of partial LV data_vg_lv. Use --partial to override. 1 logical volume(s) in volume group "data_vg" now active
- 尝试缩小卷组并移除丢失的设备:
# /sbin/vgreduce --removemissing data_vg Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. WARNING: Partial LV data_vg_lv needs to be repaired or removed. WARNING: There are still partial LVs in VG data_vg. To remove them unconditionally use: vgreduce --removemissing --force. Proceeding to remove empty missing PVs.
# /sbin/vgreduce --removemissing data_vg --force Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. Removing partial LV data_vg_lv. Logical volume "data_vg_lv" successfully removed Wrote out consistent volume group data_vg
- 从组中删除丢失的设备后,LVM 设备应激活:
# /sbin/pvs PV VG Fmt Attr PSize PFree /dev/xvdc data_vg lvm2 a-- 996.00M 996.00M /dev/xvde data_vg lvm2 a-- 996.00M 996.00M
# /sbin/lvs -o +devices #
# /sbin/vgscan Reading all physical volumes. This may take a while... Found volume group "data_vg" using metadata type lvm2
# /sbin/vgdisplay --- Volume group -- VG Name data_vg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 1.95 GB PE Size 4.00 MB Total PE 498 Alloc PE / Size 0 / 0 Free PE / Size 498 / 1.95 GB VG UUID yTOvvd-ZjUe-gXP0-41BT-qUIk-8uPR-lpr9Pw
- 我们可以尝试使用 /etc/lvm/archive/ 目录中存储的信息来恢复卷组:
# /sbin/vgcfgrestore -f data_vg_00003-1023778751.vg data_vg Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. Cannot restore Volume Group data_vg with 1 PVs marked as missing. Restore failed.
- 尝试根据从卷组信息派生的 UUID 设置覆盖或者重新分配设备信息:
# /sbin/pvcreate --restorefile /etc/lvm/archive/data_vg_00003-1023778751.vg --uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt /dev/xvdd Couldn't find device with uuid 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt. Writing physical volume data to disk "/dev/xvdd" Physical volume "/dev/xvdd" successfully created
- 使用文本编辑器打开卷组信息,例如 /etc/lvm/archive/data_vg_00003-1023778751.vg 并从标志条目中删除“MISSING”字符串,如下所示:
flags = [ ]
- 使用修改后的条目恢复 LVM:
# /sbin/ vgcfgrestore -f /etc/lvm/archive/data_vg_00003-1023778751.vg data_vg Restored volume group data_vg
- 验证环境:
# /sbin/vgscan Reading all physical volumes. This may take a while... Found volume group "data_vg" using metadata type lvm2
# /sbin/ pvs -o +uuid PV VG Fmt Attr PSize PFree PV UUID /dev/xvdc data_vg lvm2 a-- 996.00M 0 VrVT1L-CTcT-9Nn9-oIAx-BnEA-X7sv-vJO6RE /dev/xvdd data_vg lvm2 a-- 996.00M 0 70FBaa-3QKh-HTAF-gUzZ-u3mu-2RRs-hI3BIt /dev/xvde data_vg lvm2 a-- 996.00M 428.00M tGIqvd-lsYv-7JmV-1bfD-t7BL-HaGi-rmIYW0
- 验证 LVM 可用性:
# /sbin/lvs -o +devices LV VG Attr LSize Oroirn Snap% Move Log Copy% Convert Devices data_vg_lv data_vg -wi--- 2.50G /dev/xvdc(0) data_vg_lv data_vg -wi--- 2.50G /dev/xvdd(0) data_vg_lv data_vg -wi--- 2.50G /dev/xvde(0)