今天早上,我的笔记本电脑启动时出现问题。我强制关闭电源,但磁盘不再被检测到。我启动了一个实时的 ubuntu 驱动器,试图修复磁盘。
此磁盘是三星 1TB Nvme 卡。它有 3 个分区
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 1945135103 1944084480 927G Linux filesystem
/dev/nvme0n1p3 1945135104 1953523711 8388608 4G Linux swap
我首先尝试使用 - 按照提示恢复备份块并删除脏标志来修复启动分区 nvme0n1p1 fsck -p /dev/nvme0n1p1
。 执行此操作后,我能够挂载启动分区(尽管系统仍无法识别)
我现在已经竭尽全力尝试恢复主分区,/dev/nvme0n1p2
但收到各种错误:
gparted 的错误
Error fsyncing/closing /dev/nvme0n1p2: No data available
文件系统检查
ubuntu@ubuntu:~$ sudo fsck /dev/nvme0n1p2
fsck from util-linux 2.37.2
e2fsck 1.46.5 (30-Dec-2021)
Ubuntu: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? yes
fsck.ext4: Input/output error while recovering journal of Ubuntu
fsck.ext4: unable to set superblock flags on Ubuntu
Ubuntu: ********** WARNING: Filesystem still has errors **********
尝试从超级块备份中恢复。尝试了所有方法
ubuntu@ubuntu:~$ sudo dumpe2fs /dev/nvme0n1p2 | grep -i superblock
dumpe2fs 1.46.5 (30-Dec-2021)
Primary superblock at 0, Group descriptors at 1-116
Backup superblock at 32768, Group descriptors at 32769-32884
Backup superblock at 98304, Group descriptors at 98305-98420
Backup superblock at 163840, Group descriptors at 163841-163956
...
...
dumpe2fs: Block bitmap checksum does not match bitmap while trying to read '/dev/nvme0n1p2' bitmaps
ubuntu@ubuntu:~$ sudo e2fsck -f -b 32768 /dev/nvme0n1p2
e2fsck 1.46.5 (30-Dec-2021)
Superblock needs_recovery flag is clear, but journal has data.
Recovery flag not set in backup superblock, so running journal anyway.
Ubuntu: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Recovery flag not set in backup superblock, so running journal anyway.
e2fsck: Input/output error while recovering journal of Ubuntu
Superblock needs_recovery flag is clear, but journal has data.
Recovery flag not set in backup superblock, so running journal anyway.
e2fsck: unable to set superblock flags on Ubuntu
Ubuntu: ***** FILE SYSTEM WAS MODIFIED *****
Ubuntu: ********** WARNING: Filesystem still has errors **********
运行坏块给我 1500 多个坏块。我很快就停止了。但也许我应该尝试修复这些块?
ubuntu@ubuntu:~$ sudo badblocks -c 4096 /dev/nvme0n1p2 > /home/$USER/badblocks.txt
ubuntu@ubuntu:~$ wc -l /home/$USER/badblocks.txt
1325 /home/ubuntu/badblocks.txt
尝试直接挂载超级块
ubuntu@ubuntu:~$ sudo mount -o sb=32768 /dev/nvme0n1p2 /mnt/backupSuperblock
mount: /mnt/backupSuperblock: wrong fs type, bad option, bad superblock on /dev/nvme0n1p2, missing codepage or helper program, or other error.
尝试使用 gparted 检查扇区对齐。显示一切正常,但我不太确定,因为它存在 IO 问题。
root@ubuntu:~# parted /dev/nvme0n1p2
Warning: Error fsyncing/closing /dev/nvme0n1p2: Input/output error
Retry/Ignore? Ignore
GNU Parted 3.4
Using /dev/nvme0n1p2
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) align-check opt 1
1 aligned
我检查的卡上没有物理写入锁定开关。我也在同一个接口上尝试了不同的 nvme 存储卡,它工作正常。
我已经用尽了所有能想到的办法来寻找线索。我能够恢复其他 2 个分区,这让我觉得该卡并没有受到无法修复的物理损坏,并且能够进行 io。我真的希望至少可以恢复这个分区,以便能够安装它并恢复一些工作。
有人知道如何修复这个损坏的分区吗?
答案1
希望这对任何人有帮助。如果所有备份也损坏了,似乎没有办法恢复超级块。如果您知道偏移量,您仍然可以安装磁盘的使用部分来恢复数据。
另一个 Ubuntu 论坛将我引向测试磁盘。我能够使用此实用程序从磁盘恢复数据。