修复 SSD 驱动器上的坏超级块:e2fsck 可以安全运行吗?

修复 SSD 驱动器上的坏超级块:e2fsck 可以安全运行吗?

症状:

我无法再启动我的 Xubuntu 22.04 Linux 机器,发生以下情况:

有一次,我的主目录文件系统进入了只读状态(据我所知,这很可能是一种保护措施)。然后我重新启动,以为这只是一个一次性故障,但事实并非如此:它无法启动,我的 /dev/sdb 磁盘上出现日志错误(这是我存储主目录的地方,与位于 /dev/sda 上的操作系统分开)。

我可以重新启动到安装 USB,并挂载 /dev/sda 和 /dev/sdb。运行 fsck 时,出现以下错误:

# fsck /dev/sdb
fsck from util-linux 2.37.2
e2fsck 1.46.5 (30-Dec-2021)
ext2fs_open2: Bad magic number in super-block
e2fsck: Superblock invalid, trying backup blocks...
e2fsck: Bad magic number in super-block while trying to open /dev/sdb

The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem.  If the device is valid and it really contains an ext2/ext3/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>
 or
    e2fsck -b 32768 <device>

Found a gpt partition table in /dev/sdb

此后,我将该驱动器上的主目录备份回 /dev/sda,这似乎正在运行,尽管在传输一些我可以重新创建的文件时出现了错误。

问题:

我正在考虑尝试使用以下说明修复 /dev/sdb 驱动器:

https://askubuntu.com/a/1335193/340383

但它的这句话把我吓坏了,它没有解释为什么:

Note: do NOT bad block a SSD

因此,在那个答案中,他们提到了跑步:

sudo e2fsck -fccky /dev/sdXX # non-destructive read/write test (recommended)

就我而言,我推测需要的是:

sudo e2fsck -fccky /dev/sdb1

这是否会损害我修复 /dev/sdb 问题的能力,还是它是无害的并且是真正的非破坏性测试?

给出这里的答案:

https://askubuntu.com/a/1233241/340383

而原帖者的问题暗示他们成功使用了 e2fsck,我得出结论,继续操作是安全的。是吗?

子问题:

另外,我不知道这部分输出fsck想要传达什么:

Found a gpt partition table in /dev/sdb

这是否说明我运行fsck不正确?我不想按照输出中的建议尝试不同的超级块,直到我确认这不仅仅是我自己的用户错误。

2023-07-02 09:08:57:运行 sudo e2fsck -C0 -p -f -v /dev/sdb1

评论,我听从了Ubuntu 14.04 在手动硬启动后无法正常启动通过(这是卸载 /dev/sda* 和 /dev/sdb* 驱动器):

sudo e2fsck -C0 -p -f -v /dev/sdb1

并得到:

Inode898044343 extent tree (at level 2) could be narrower.  IGNORED.0.1%
DRIVE8: Inode 103942010 extent tree (at level 2) could be narrower.  IGNORED.
DRIVE8: Inode 103942011 extent tree (at level 2) could be narrower.  IGNORED.
 ... <snip mostly duplicate types of output lines here> ...
DRIVE8: Inode 103942324 extent tree (at level 1) could be narrower.  IGNORED.
Inodes:that=were=part=of=a=corrupted=orphan linked list found.   / 59.7%
DRIVE8: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
    (i.e., without -a or -p options)

答案1

您不能在 sdb 这样的驱动器上运行 fsck,而是在 sdb1 这样的 ext4 格式的分区上运行

从工作的实时闪存驱动器,所以一切都未安装,如果需要,请交换,将分区 sdb1 所示的示例更改为您的分区,以查看所有 ext4 分区

sudo parted -l

e2fsck 用于检查 ext2/ext3/ext4 系列文件系统。-p 尝试修复不需要响应的情况 以不同的参数运行这两个命令。新的 NVMe 驱动器将类似于 /dev/nvme0n1pY,其中 pY 是分区。SATA 和 NVMe 都显示为示例,主要用于其他用途:

sudo e2fsck -C0 -p -f -v /dev/sdb1
sudo e2fsck -C0 -p -f -v /dev/nvme0n1p2

如果出现错误:-y 自动回答是,对于需要响应的修复,另请参阅 man e2fsck

sudo e2fsck -f -y -v /dev/sdb1
sudo e2fsck -f -y -v /dev/nvme0n1p2

相关内容