![救援磁盘无法看到 lvm 物理卷](https://linux22.com/image/550994/%E6%95%91%E6%8F%B4%E7%A3%81%E7%9B%98%E6%97%A0%E6%B3%95%E7%9C%8B%E5%88%B0%20lvm%20%E7%89%A9%E7%90%86%E5%8D%B7.png)
我们的系统已设置为具有冗余文件系统(包括启动分区)。现在,系统无法在任一启动分区上正确启动。启动时,系统提示无法找到卷组。
在 CentOS 救援磁盘上启动时,fdisk -l 会看到所有分区:
第一个 Raid 有
/dev/sda1 Boot
/dev/sda2 swap
/dev/sda3 LVM
第二个 Raid 有
/dev/sdc1 Boot
/dev/sdc2 swap
/dev/sdc3 LVM
RAID 磁盘上还有第三个 LVM,仅用于存储数据。它也没有被读取。
运行 pvscan 时,提示“未找到匹配的物理卷”。有没有办法查看为什么它无法识别 LVM 物理卷?
答案1
扫描结果显示
将为您提供非常详尽的输出,说明为什么 vgscan 将任何特定卷视为卷组的一部分。您还可以运行pvs -a
以查看物理卷的摘要以及卷组分配。
其中一个分区的 vgscan -vvvv 输出:
Opened /dev/sdc3 RO /dev/sdc3: size is 3772817055 sectors
Closed /dev/sdc3 /dev/sdc3: size is 3772817055 sectors
Opened /dev/sdc3 RO O_DIRECT /dev/sdc3: block size is 512 bytes
Closed /dev/sdc3 Using /dev/sdc3
Opened /dev/sdc3 RO O_DIRECT /dev/sdc3: block size is 512 bytes
/dev/sdc3: No label detected
Closed /dev/sdc3
pvs -a 没有显示任何内容。列出的所有物理卷均未分配卷组
“未检测到标签”听起来很可悲。您确定它是 LVM2 分区,而不是 md-raid 使用的分区吗?您可以使用检查mdadm --examine /dev/sdc3
。然后请发帖fdisk -l /dev/sdc
是的,我确定它是 LVM2 分区。mdadm 命令显示“未在 /dev/sdc3 上检测到 md 超级块”,fdisk 显示 /dev/sdc3 是 Linux LVM 分区。
啊,那么你将很幸运(这里有点讽刺,抱歉)可以尝试 LVM 恢复,因为数据结构可能已损坏。关于 LVM 恢复的指导这可能会给你一个起点 - 尝试从磁盘本身(使用dd if=/dev/sdc3 bs=512 count=255 skip=1
)或从/etc/lvm/备份将你以前的根文件系统的文件夹(我理解为在 /dev/sdc1 上)放入/etc/lvm/备份/并重新发出vgscan
命令。
我在 sda3 和 sdc3 上都尝试过(如您所见,我有 3 个 lvm 分区也可以这样做),它们都在输出文本文件中生成二进制文件。好的,更正。文件中有一些 lvm 元数据,但它位于文件中的几个字节中。我正在查看数据,但它看起来是正确的。我将继续尝试完成该恢复过程。
这是预料之中的——VG 和 LV 配置都是二进制结构内的明文。
我最终使用了比这里概述的略微修改的流程。我最终从 LVM 中的字节数据创建了一个 cfgbackup 文件,执行了 pvcreate,然后执行了 vgcfgrestore。之后,它就成功了。谢谢你的帮助。