Arch Linux升级后如何修复提示‘设备未找到’的LVM卷?
解决Arch Linux升级后LVM分区无法引导的问题
碰到过好多次Arch升级后LVM抽风的情况,给你一步步拆解解决:
1. 先手动恢复LVM访问(临时修复)
既然你已经注释fstab里的LVM分区能正常启动了,先手动挂载确认数据没问题:
- 加载LVM核心模块:
modprobe dm_mod - 刷新PV缓存,识别你的物理卷:
这时候应该能看到你那个提示里的PV UUID,确认它被识别到。pvscan --cache - 扫描并激活卷组:
vgscan vgchange -ay - 查看可用的逻辑卷:
lvdisplay - 临时挂载测试数据完整性:
进去看看文件都在,就说明数据没问题,只是启动时没加载LVM。mount /dev/mapper/你的卷组名-逻辑卷名 /mnt/test
2. 修复启动时的LVM自动加载(永久解决)
问题大概率出在initramfs缺少LVM钩子,或者fstab里用了不稳定的设备路径:
2.1 用UUID更新fstab
别再用/dev/sdb1这种容易变的设备路径,改用LV的UUID:
- 获取LV的UUID:
blkid /dev/mapper/你的卷组名-逻辑卷名 - 编辑
/etc/fstab,把之前注释的LVM分区行改成:
(注意替换成你实际的文件系统类型,比如xfs、btrfs)UUID=这里填你查到的UUID /你的挂载点 ext4 defaults 0 2
2.2 修复initramfs的LVM钩子
Arch升级后有时候会误删LVM的启动钩子,导致启动时加载不了LVM:
- 编辑
/etc/mkinitcpio.conf,找到HOOKS配置行,确保lvm2钩子存在,并且放在filesystems之前,比如:
如果你用了加密LVM,还要把HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block lvm2 filesystems fsck)encrypt钩子放在lvm2前面。 - 重新生成所有内核的initramfs:
mkinitcpio -P
3. 验证修复
重启系统,这次应该能正常引导,并且自动挂载LVM分区了。如果还是有问题,可以贴出pvdisplay和vgdisplay的输出,我再帮你排查细节。
内容的提问来源于stack exchange,提问作者Guillaume Deshors
相关产品推荐
相关产品推荐

