Fedora 安装损坏:无法读取 /dev/nvme0n1p4 上的超级块

Fedora 安装损坏:无法读取 /dev/nvme0n1p4 上的超级块

老实说,我不知道这是怎么发生的,据我所知,我只使用 openSUSE Tumbleweed(我的第一个发行版),但在某些时候我无法再在 Fedora(我的第二个发行版)上启动。

我无法真正理解日志和错误,因此这里有一些信息,请随意询问更多信息:

正确启动的 Fedora 的挂载树是(当它仍然有效时):

  • /dev/nvme0n1p1镶嵌在/boot/efi
  • /dev/nvme0n1p2镶嵌在/boot
  • /dev/nvme0n1p4镶嵌在/
  • swapon /dev/nvme0n1p3

我目前正在运行 openSUSE Tumbleweed /dev/sda1(并且有一个/dev/sda2交换分区)。这些是我的两个磁盘上的所有分区。

发现问题的最简单方法是在 openSUSE 中执行此操作:

> sudo mount /dev/nvme0n1p4 /mnt
mount: /mnt: can't read superblock on /dev/nvme0n1p4.
       dmesg(1) may have more information after failed mount system call.

另一种方法是在 Fedora 上启动,并在进入修复控制台后查找错误。我也这样做了,这是日志的最后几行(rdsosreport.txt):

[    5.974350] gamestation systemd[1]: Mounting sysroot.mount - /sysroot...
[    5.984799] gamestation kernel: BTRFS info (device nvme0n1p4): using crc32c (crc32c-intel) checksum algorithm
[    5.984820] gamestation kernel: BTRFS info (device nvme0n1p4): using free space tree
[    6.016320] gamestation kernel: BTRFS info (device nvme0n1p4): enabling ssd optimizations
[    6.016329] gamestation kernel: BTRFS info (device nvme0n1p4): auto enabling async discard
[    6.016333] gamestation kernel: BTRFS info (device nvme0n1p4): start tree-log replay
[    6.016557] gamestation kernel: BTRFS error (device nvme0n1p4): parent transid verify failed on logical 75616649216 mirror 1 wanted 3774 found 3773
[    6.016741] gamestation kernel: BTRFS error (device nvme0n1p4): parent transid verify failed on logical 75616649216 mirror 2 wanted 3774 found 3773
[    6.016755] gamestation kernel: BTRFS warning (device nvme0n1p4): failed to read log tree
[    6.019725] gamestation mount[509]: mount: /sysroot: can't read superblock on /dev/nvme0n1p4.
[    6.019725] gamestation mount[509]:        dmesg(1) may have more information after failed mount system call.
[    6.019962] gamestation kernel: BTRFS error (device nvme0n1p4): open_ctree failed
[    6.020361] gamestation systemd[1]: sysroot.mount: Mount process exited, code=exited, status=32/n/a
[    6.020489] gamestation systemd[1]: sysroot.mount: Failed with result 'exit-code'.
[    6.027539] gamestation systemd[1]: Failed to mount sysroot.mount - /sysroot.
[    6.027691] gamestation systemd[1]: Dependency failed for initrd-root-fs.target - Initrd Root File System.
[    6.027749] gamestation systemd[1]: Dependency failed for initrd-parse-etc.service - Mountpoints Configured in the Real Root.
[    6.027796] gamestation systemd[1]: initrd-parse-etc.service: Job initrd-parse-etc.service/start failed with result 'dependency'.
[    6.027841] gamestation systemd[1]: initrd-parse-etc.service: Triggering OnFailure= dependencies.
[    6.028086] gamestation systemd[1]: initrd-root-fs.target: Job initrd-root-fs.target/start failed with result 'dependency'.
[    6.028137] gamestation systemd[1]: initrd-root-fs.target: Triggering OnFailure= dependencies.
[    6.028698] gamestation systemd[1]: Stopped target basic.target - Basic System.
[    6.028859] gamestation systemd[1]: Reached target initrd-fs.target - Initrd File Systems.
[    6.028909] gamestation systemd[1]: Stopped target sysinit.target - System Initialization.
[    6.028965] gamestation systemd[1]: dracut-initqueue.service: Deactivated successfully.
[    6.039256] gamestation systemd[1]: Stopped dracut-initqueue.service - dracut initqueue hook.
[    6.039569] gamestation systemd[1]: dracut-pre-udev.service: Deactivated successfully.
[    6.048075] gamestation systemd[1]: Stopped dracut-pre-udev.service - dracut pre-udev hook.
[    6.048196] gamestation systemd[1]: dracut-cmdline.service: Deactivated successfully.
[    6.054063] gamestation systemd[1]: Stopped dracut-cmdline.service - dracut cmdline hook.
[    6.054162] gamestation systemd[1]: dracut-cmdline-ask.service: Deactivated successfully.
[    6.060064] gamestation systemd[1]: Stopped dracut-cmdline-ask.service - dracut ask for additional cmdline parameters.
[    6.070201] gamestation systemd[1]: Started emergency.service - Emergency Shell.
[    6.070605] gamestation systemd[1]: Reached target emergency.target - Emergency Mode.
[    6.070690] gamestation systemd[1]: Startup finished in 9.729s (firmware) + 7.721s (loader) + 1.540s (kernel) + 0 (initrd) + 4.529s (userspace) = 23.521s.
[    6.087557] gamestation systemd[1]: Received SIGRTMIN+21 from PID 426 (plymouthd).
[    6.100118] gamestation systemd[1]: Received SIGRTMIN+21 from PID 426 (plymouthd).

最后输出结束dmesg

[   17.184467] sddm-greeter[1856]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set
[   22.770519] wlp1s0: authenticate with 7c:16:89:d7:b9:b4
[   22.817934] wlp1s0: send auth to 7c:16:89:d7:b9:b4 (try 1/3)
[   22.818996] wlp1s0: authenticated
[   22.823705] wlp1s0: associate with 7c:16:89:d7:b9:b4 (try 1/3)
[   22.826980] wlp1s0: RX AssocResp from 7c:16:89:d7:b9:b4 (capab=0x511 status=0 aid=117)
[   22.830069] wlp1s0: associated
[   22.830376] ath: EEPROM regdomain: 0x80fa
[   22.830383] ath: EEPROM indicates we should expect a country code
[   22.830387] ath: doing EEPROM country->regdmn map search
[   22.830391] ath: country maps to regdmn code: 0x37
[   22.830395] ath: Country alpha2 being used: FR
[   22.830400] ath: Regpair used: 0x37
[   22.830404] ath: regdomain 0x80fa dynamically updated by country element
[   22.873404] wlp1s0: Limiting TX power to 23 (23 - 0) dBm as advertised by 7c:16:89:d7:b9:b4
[   31.647894] warning: `kded5' uses wireless extensions which will stop working for Wi-Fi 7 hardware; use nl80211
[   32.940643] Bluetooth: RFCOMM TTY layer initialized
[   32.940654] Bluetooth: RFCOMM socket layer initialized
[   32.940660] Bluetooth: RFCOMM ver 1.11
[  810.731875] BTRFS info (device sda1): qgroup scan paused
[  845.654708] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

这就是我的处境。我已经在所有四个分区上以 root 身份运行fsck,但只有dev/nvme0n1p2( /boot) 我得到了真正的输出。对于/dev/nvmesd4,唯一的输出是fsck some-version-number,并且我仍然遇到这个超级块问题。

有人可以帮忙吗? (如果我能尽快拿回我的 Fedora,我真的很感激,因为我有一些事情需要它......)

谢谢!


编辑:我终于发现重新排列分区的正确工具是btrfsbtrfs filesystem。所以我在网上做了一些研究,尝试了一些命令,现在一切正常。我不太记得了(而且我现在无法检查我的 TW 的历史记录),但我想我跑了:

  • sudo btrfs rescue super-recover -v /dev/nvme0n1p4;
  • sudo btrfs rescue zero-log /dev/nvme0n1p4 我不知道这些命令是否是我使用的确切命令,但一旦你知道了这一点,我想用谷歌搜索你需要的东西就非常简单了。

我希望有一天这会对某人有所帮助!

相关内容