BIOS更新后LVM提示设备文件丢失,如何修复硬件识别问题并更新LV UUID?
BIOS更新后LVM提示设备文件丢失,如何修复硬件识别问题并更新LV UUID?
看起来BIOS更新把LVM的硬件识别数据库给搞乱了,先帮你理清楚问题根源,再一步步彻底解决——你现在的临时 workaround 虽然能用,但还是得把LVM的设备数据库给修正回来,避免后续出问题。
首先先解答你的几个疑惑:
- 关于dm-0/dm-1的问题:这些是Linux
device mapper生成的映射节点,你的root和swap是LVM逻辑卷(LV),逻辑卷是通过device mapper把物理卷(PV,也就是你的sda3)的存储空间抽象出来的,所以需要dm节点来提供访问入口;而sda3本身是物理分区,是LV的底层存储,自然不需要额外的dm映射~ - blkid的信息困惑:/dev/sda3显示的UUID是LVM物理卷的PVID,和lsblk里的一致,这个是没问题的;问题出在LVM的设备数据库里记录的磁盘WWID(
naa.57c35481cc13b195)和当前磁盘实际的WWID不匹配了——BIOS更新很可能重置了磁盘的硬件识别信息,导致WWID变了,LVM找不到对应的设备。
接下来是彻底修复的步骤:
步骤1:确认当前磁盘的WWID
先看看现在你的sda实际的WWID是什么:
lsblk -o NAME,WWID
或者如果装了sg3_utils包,用更准确的命令:
sg_inq -i /dev/sda
找到sda对应的WWID,对比LVM报错里的旧WWID(naa.57c35481cc13b195),应该已经不一样了。
步骤2:重置并更新LVM设备数据库
你之前重命名system.devices的操作让LVM fallback到用设备名识别,但我们要重新生成正确的设备数据库:
- 先备份现有的(如果还没做的话):
mv /etc/lvm/devices/system.devices /etc/lvm/devices/system.devices.bak - 重新扫描并添加当前的物理卷到设备数据库:
或者更全面的,让LVM重新扫描所有卷组并更新缓存:lvmdevices --adddev /dev/sda3vgscan --cache - 验证修复效果:
执行pvscan,看是否还会弹出设备找不到的报错;再试试之前失败的命令:
应该能正常执行了。grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
步骤3:检查LVM配置和BIOS设置
- 确认
/etc/lvm/lvm.conf里的use_devicesfile参数是1(默认值),这样LVM会继续使用设备数据库,避免后续依赖不稳定的设备名。 - 进BIOS检查磁盘模式(比如AHCI/RAID模式),BIOS更新很可能重置了这个设置,导致磁盘的WWID变化,确保和BIOS更新前的模式一致,防止下次重启再出问题。
为什么临时 workaround 有效?
当你重命名system.devices后,LVM无法读取旧的硬件识别记录,就会按照文档里说的fallback到用设备名(比如/dev/sda3)来识别物理卷,所以系统能正常运行,也能执行grub配置命令。但这种方式不够稳定——如果后续你新增磁盘导致设备名变化(比如sda变成sdb),LVM就会找不到PV了,所以还是建议修复设备数据库。
备注:内容来源于stack exchange,提问作者cogito
相关产品推荐
相关产品推荐

