一个故事非常相似这个昨天发生在我身上。
更新:
我唯一的硬盘/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 分区(exit
;exit
)。我并没有真正注意,在关机程序结束之前取出了 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/archive
。vgdisplay
说的完全一样。
有趣的是输出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 容器的标头,试图将这些更改写入磁盘。于是一切都白费了……