某些东西(大概是 mkswap)损坏了我的 btrfs 分区

某些东西(大概是 mkswap)损坏了我的 btrfs 分区

我对 arch 有点陌生(尤其是 endeavour os),但我不确定问题出在系统中。简而言之,我的笔记本电脑在合上盖子后不会进入休眠状态,因为它没有交换文件来保存会话。然后,我使用 command 继续按照 arch wiki 上编写的指南进行创建mkswap。在完成了 arch wiki 上描述的一些操作后,我尝试让我的笔记本电脑休眠,但什么也没发生。有几天,我的系统运行良好,但后来我尝试使用 yay 进行更新并重新启动。笔记本电脑没有重新启动,但它已经加载了我尝试休眠时的会话。从该会话重新启动后,它没有启动。问题出在系统分区上,但fsck已修复。然后它无法启动,因为它无法安装损坏的 btrfs 分区。据了解,有问题的 btrfs 分区位于 Linux 系统分区之前,并且包含没有备份的重要数据。

我的假设是 mkswap 试图通过挤压系统分区来弥补交换分区,但不知何故它影响了 btrfs 分区,我相信,它没有识别它。

这是 btrfs 检查的输出:

Opening filesystem to check...
checksum verify failed on 246038528 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 246038528 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 246038528 wanted 0x00000000 found 0xb6bde3e4
bad tree block 246038528, bytenr mismatch, want=246038528, have=0
ERROR: could not setup csum tree
ERROR: cannot open file system

重要提示,系统分区功能齐全,并且我在双引导中使用我的膝上,其中 w10 看到 btrfs 分区也损坏了。

尝试过 btrfs 检查 --repair:

Starting repair.
Opening filesystem to check...
checksum verify failed on 246038528 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 246038528 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 246038528 wanted 0x00000000 found 0xb6bde3e4
bad tree block 246038528, bytenr mismatch, want=246038528, have=0
WARNING: could not setup csum tree, skipping it
parent transid verify failed on 71958528 wanted 45315 found 45751
parent transid verify failed on 71958528 wanted 45315 found 45751
parent transid verify failed on 71958528 wanted 45315 found 45751
Ignoring transid failure
parent transid verify failed on 201768960 wanted 45297 found 45330
parent transid verify failed on 201768960 wanted 45297 found 45330
parent transid verify failed on 201768960 wanted 45297 found 45330
Ignoring transid failure
checksum verify failed on 202014720 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 202014720 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 202014720 wanted 0x00000000 found 0xb6bde3e4
bad tree block 202014720, bytenr mismatch, want=202014720, have=0
ERROR: failed to read block groups: Input/output error
ERROR: cannot open file system

尝试过btrfs restore -v(跳过有关项目的重复文本墙):

ERROR: root [5 0] level 0 does not match 2

Could not open root, trying backup super
ERROR: superblock bytenr 274877906944 is larger than device size 101518934016
Could not open root, trying backup super

我什至尝试在 GParted 中调整它的大小,但由于错误而不允许。

编辑:那么...有什么方法可以从中恢复数据吗?

EDIT2:我尝试创建交换文件的方式是:

sudo swapoff -a
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
sudo mkswap /swapfile
free
sudo swapon /swapfile
grep SwapTotal /proc/meminfo

重要提示:我忘记编辑 /etc/fstab,以便它包含有关交换分区的信息,但问题是交换分区没有创建,而是我的系统部分和 btrfs 部分(仅包含数据)被 f-ed 了。

相关内容