物理卷、逻辑卷、超级块消失了……如何启动?

物理卷、逻辑卷、超级块消失了……如何启动?

一个故事非常相似这个昨天发生在我身上。

更新: 我唯一的硬盘/dev/sda最初是这样分区的:

Device     Boot   Start        End     Blocks  Id  System
/dev/sda1  *       2048    1026047     512000  83   Linux
/dev/sda2       1026048  976773119  487873536  83   Linux

/dev/sda1/boot分区,没有加密。该/dev/sda2分区最初是包含卷组的 LUKS 分区fedora_pedro,该卷组本身包含以下逻辑卷:

/dev/mapper/fedora_pedro-root
/dev/mapper/fedora_pedro-home
/dev/mapper/fedora_pedro-swap

我在一个活动磁盘上,正要缩小以下/dev/sda2分区那些步骤突然,我不得不停下来拔掉电脑电源。我刚刚使用

cryptsetup luksOpen /dev/sda2 fedora_pedro

并环顾四周(我第一次使用 LVM 和 LUKS),安装和卸载不同的逻辑卷(交换、根、主目录),当时我不得不匆忙关闭终端而不关闭 LUKS 分区(exitexit)。我并没有真正注意,在关机程序结束之前取出了 Live CD,然后按下电源按钮关闭了笔记本电脑。

几个小时后,当我启动计算机时,启动挂在“已达到目标基本系统”;我在救援模式下从硬盘启动得到的唯一提示是

dracut-initqueue [...] unit file of systemd-cryptsetup@luksMYUUID changed on disk

使用救援磁盘,我打开了驱动器 ( cryptsetup luksOpen /dev/sda2 fedora_pedro),并使用 查询了分区的状态e2fsck,这返回了一个漂亮的结果

fsck.ext4: Superblock invalid, trying backup blocks...
fsck.ext4: Bad magic number in super-block while trying to open /dev/sda2

pvdisplay返回所有 PE 都是空闲的(因此该卷显示为实际上是空的),并且vgscan也分享了这一观点,并提到我的卷组不包含任何逻辑卷。lvdisplay什么也没返回。

我还没有调整任何东西的大小,所以我对这个问题感到非常困惑。

testdisk /dev/mapper/fedora_pedro

显示了正确的卷(交换、根和主目录)并允许访问系统上的所有数据,因此我选择了Write partition to the disk,希望在重新启动后能够看到它们。然而这并没有发生,尽管fdisk -l /dev/mapper/fedora_pedro现在又回来了

Disk /dev/mapper/fedora_pedro: 465.3 GiB, 49958403712 bytes, 975742976 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 / 4096 bytes
Disklabel type: dos
Disk identifier: 0x0000000

Device                      Boot     Start        End     Blocks  Id  System
/dev/mapper/fedora_pedro1  *         2048    8161279    4079616  82  Linux swap / Solaris
/dev/mapper/fedora_pedro2         8161280  870885375  431362048  82  Linux
/dev/mapper/fedora_pedro3       870885376  975742975   52428800  82  Linux

我仍然无法单独安装这些卷,因为当一切正常时我能够卸载它们。事实上,我在 中找不到它们/dev/mapper。此外,由于我将表复制到磁盘,我再也看不到物理卷,更不用说组和逻辑卷了(pvscan, vgscan&lvscan命令不返回任何内容)。但我仍然充满信心,并且确信这个问题的解决方案并非遥不可及:

  • 也许重命名分区表中的卷条目以匹配 grub 中的原始卷条目。 <-- 不太可能
  • vgcfgrestore也许找到一个备份并使用或等效工具恢复系统。 <-- 可能见下文
  • 也许可以使用 重写磁盘上的超级块mke2fs -S,正如我在开头提到的故事中所建议的那样。testdisk区块大小为正:4096。<-- 有风险

但所有这些解决方案(以及您可能提出的其他解决方案)都超出了我对逻辑卷系统的有限知识,正如阅读内容可能已经揭示的那样。我想知道哪种程序适合再次正常启动。

来自前线的消息

我再次使用 访问我的旧系统testdisk。如前所述,分区很好,我查看了我的旧文件系统,特别是/etc看看是否可以获取一些有价值的信息来恢复。这个游戏玩得越久,我就越觉得这只是一个标签问题。我复制/etc/lvm到实时文档文件并尝试将其用作 的备份文件vgcfgrestore,但它返回的结果很差

Couldn't find device with uuid cZ83jX-WXkk-tNG4-ulGT-sAqq-HlKq-Omtqc8.
PV unknown device missing from cache
Format-specific setup for unknown device failed
Restore failed.

事实上,blkid不会返回任何类似的 uuid。更令人兴奋的(可能也是我自己的行为)是blkid为我的 Ext4 文件系统返回以下内容:

/dev/sda1: "9f2a5417-dce6-45c1-8d93-1ee753e5c75c" TYPE="ext4" PARTUUID="0006282d-01"
/dev/sda2: "a33beb04-1147-446e-8f3b-7ff9d6bc226b" TYPE="crypto_LUKS" PARTUUID="0006282d-02"
[...]
/dev/mapper/fedora_pedro: PTTYPE="dos"

Write partition to disk我认为我在 中犯了一个错误testdisk,因为我当前的 uuidfedora_pedro与原始 uuid 完全不匹配。事实上,fedora_pedro没有 uuid。是否可以将之前工作单元的所有规格归于此卷:uuid、逻辑分区……如果可以,如何操作?

越来越近?

vgchange -ay fedora_pedro回报

Volume group "fedora_pedro" not found
Skipping volume group fedora_pedro

/etc/lvm/backup/即使我使用与 或中提到的原始卷组名称相同的卷组名称/etc/lvm/archivevgdisplay说的完全一样。

有趣的是输出lvmdiskscan

/dev/mapper/live-rw        [   4.00 GiB]
/dev/sda1                  [ 500.00 MiB]
/dev/mapper/live-base      [   4.00 GiB]
/dev/loop2                 [ 886.75 MiB]
/dev/sda2                  [ 465.27 GiB]
/dev/mapper/live-osimg-min [   4.00 GiB]
/dev/mapper/loop3          [   4.00 GiB]
/dev/mapper/fedora_pedro   [ 465.27 GiB] LVM physical volume
/dev/loop4                 [ 512.00 MiB]
3 disks
5 partitions
1 LVM physical volume whole disk
0 LVM physical volume

如果我理解正确的话,有人知道那里有一个物理卷。但它不想表现出来。

$ pvdisplay fedora_pedro
Failed to read physical volume "fedora_pedro"

$ pvdisplay /dev/mapper/fedora_pedro
No physical volume found in lvmetad cache for /dev/mapper/fedora_pedro
Failed to read physical volume "/dev/mapper/fedora_pedro"

$ pvdisplay /home/liveuser/Documents/etc/lvm/archive/fedora_pedro_00000-1031984471.vg
Failed to read physical volume "/home/liveuser/Documents/etc/lvm/archive/fedora_pedro_00000-1031984471.vg"

我不知道如何更进一步。我lvmdump -m查看了 dmsetup_ls_tree、dmsetup_table、dmsetup_status 和 dmsetup_info。 dmsetup_info 返回 fedora_pedro 的以下 UUID

Name         Maj Min Stat Open Targ Event UUID
fedora_pedro 253   3 L--w    0    1     0 CRYPT-LUKS1-a33beb04-1147-446e-8f3b-7ff9d6bc226b-fedora_pedro

blkid这与for返回的 UUID 相同/dev/sda2。这也和我在第 26 行找到的相同/home/liveuser/Documents/etc/lvm/archive/fedora_pedro_00000-1031984471.vg

[...]
pv0 {
       id = "cZ83jX-WXkk-tNG4-ulGT-sAqq-HlKq-Omtqc8"
       device = "/dev/mapper/luks-a33beb04-1147-446e-8f3b-7ff9d6bc226b" # Hint only
[...]

并在grub.cfg文件中/dev/sda1

正如我在上面的列表中所写的,将尝试将 id 和 UUID 匹配在一起,但我认为问题出在其他地方。

答案1

不知为何,我已经擦除了卷组和其中的物理卷。这只是一个问题使用元数据恢复它们我可以使用testdisk.我将原始/etc/lvm文件夹复制到实时用户的桌面上,然后

$ pvcreate --uuid "cZ83jX-WXkk-tNG4-ulGT-sAqq-HlKq-Omtqc8" \
--restorefile /home/liveuser/Desktop/etc/lvm/archive/VG.vg /dev/sda2
  Physical volume "/dev/sda2" successfully created

$ vgcfgrestore VG
  Restored volume group VG

$ lvchange -ay /dev/VG/home /dev/VG/root /dev/VG/swap

$ lvs -a -o +devices

之后,vgdisplay -v fedora_pedro返回一致的输出,提到原始的逻辑卷和物理卷,我被允许安装和探索。然而,几分钟后,我不幸地擦除了 luks 容器的标头,试图将这些更改写入磁盘。于是一切都白费了……

相关内容