无法挂载 ext4 SSD:`JBD:未找到有效的日志超级块`

And*_*eja 6 linux ssd data-recovery ubuntu

我有点问题。我在笔记本电脑上运行 Ubuntu 10.04 LTS,大约 2 年前,我用 32 GB SSD 替换了老化的 HDD。今天我试图启动我的电脑,但它不能。

因此,我已将 SSD 放入外部 HDD 机架并启动 Live CD Ubuntu 10.10 以尝试从 SSD 恢复数据。SSD 出现在下拉菜单中,但不会挂载。

日志:

ubuntu@ubuntu:~$ dmesg | tail
[ 2125.445659] sd 8:0:0:0: [sda] 62533296 512-byte logical blocks: (32.0 GB/29.8 GiB)
[ 2125.446983] sd 8:0:0:0: [sda] Write Protect is off
[ 2125.446988] sd 8:0:0:0: [sda] Mode Sense: 17 00 00 08
[ 2125.446992] sd 8:0:0:0: [sda] Assuming drive cache: write through
[ 2125.449084] sd 8:0:0:0: [sda] Assuming drive cache: write through
[ 2125.449098]  sda: sda1 sda2 < sda5 >
[ 2125.454285] sd 8:0:0:0: [sda] Assuming drive cache: write through
[ 2125.454293] sd 8:0:0:0: [sda] Attached SCSI disk
[ 2125.777836] JBD: no valid journal superblock found
[ 2125.777840] EXT4-fs (sda1): error loading journal
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题,以便我可以恢复我的数据?

lua*_*art 5

只需执行:

mke2fs -t ext4 -O ^has_journal /dev/sdX
Run Code Online (Sandbox Code Playgroud)

(在您的情况下 sdX 是)在启用日志的情况sda1重新创建 ext4 分区。或者重新格式化分区:

mke2fs -F -L "PartitionLabel" -t ext4 -O ^has_journal /dev/sdX
Run Code Online (Sandbox Code Playgroud)


ner*_*ler 1

你尝试过跑步fsck吗?

从实时启动中,尝试以下操作:

fsck.ext4 -Dcfy -C 0 /dev/sdX#
Run Code Online (Sandbox Code Playgroud)

这将:

-D - Optimize directories
-c - Check for bad sectors
-f - Force a check
-y - Assumes 'yes' to all questions
-C 0 - Prints info to stdout
Run Code Online (Sandbox Code Playgroud)

您只需要确保在 X(SSD)和每个分区(仅适用于 EXT4 分区)上运行它,我相信无需安装。

这应该可以修复系统已知问题,如果您不介意的话请报告,如果我找到其他选项,我可以更新。


还发现了一个谈论“超级块”的链接,尽管我对此不熟悉,但可能值得检查,但它使用类似的命令:

sudo fsck.ext4 -v /dev/sdX
Run Code Online (Sandbox Code Playgroud)

坏超级块的输出应如下所示:

fsck /dev/sda5
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
fsck.ext4: **Group descriptors look bad**... trying backup blocks...
fsck.ext4: Bad magic number in super-block while trying to open /dev/sda5

The superblock could not be read or does not describe a correct ext4
filesystem.  If the device is valid and it really contains an ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
Run Code Online (Sandbox Code Playgroud)

然后检查超级块备份的位置:

sudo mke2fs -n /dev/sdX
Run Code Online (Sandbox Code Playgroud)

它应该告诉您超级块备份是stored on blocks: # # #

最后恢复备份(如果存在):

sudo e2fsck -b block_number /dev/sdX
Run Code Online (Sandbox Code Playgroud)

再说一次,我还没有尝试过这个方法,也不能说它的有效性——希望其他人可能对这个方法有更多的了解。 来源

  • **请不要盲目地在损坏的磁盘或文件系统上运行 fsck:** 它可以*非常容易*让事情迅速变得更糟,*特别是*当使用“-y”时。即使在 2013 年这个问题出现时,32 GB 的存储空间也相对微不足道。常见的建议是制作扇区级副本(在这种情况下甚至可能是两个,只触及其中一个)并处理该副本,看看是否可以使文件系统恢复到稳定状态,然后恢复固定状态复制原始文件,或者只是将固定副本中的数据提取到新介质上。 (2认同)