HDD 出现 DRDY ERR 错误

HDD 出现 DRDY ERR 错误

突然间,我的笔记本电脑运行 Linux 时出现 DRDY ERR,某些消息看起来像......

    ata1:00: status: { DRDY ERR }
    ata1.00: error {UNC }
    ata1:00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
    ata1:00: BMDMA stat 0x25
    ata1:00: failed command: READ DMA

最后,它将我带入命令提示符,要求我输入运行级别,然后

    INIT: no more processes left in this runlevel

怀疑是硬盘崩溃了,我把它取出来,在另一台电脑上用作外置 USB 硬盘,我能够挂载并查看其中的所有分区和文件。所以我认为光盘没问题。

[编辑/更新]

我还能够从装有 Linux 的 USB 笔式驱动器启动笔记本电脑,甚至能够看到磁盘上的所有分区并访问它们。

还取出了硬盘并将其放入外壳中,并尝试启动同一台笔记本电脑,但出现了以下不同的错误

    end_request: critical target error, dev sda, sector 32839936
    EXT4_fs error: (device sda5): ext4_find_entry:935: inode #393217: comm init: reading directory lblock 0

    INIT: No inittab file found
    Enter runlevel:

所以我猜想,HDD 可以作为存储设备访问,但不能启动。如果有帮助的话,该 HDD 上的分区方案如下。(GPT 方案)

    partition   FileSystem  size    flags
    ---------   ----------- ----    -----
    /dev/sda1   unknown     2.00MB  bios_grub
    /dev/sda2   ext2        128MB           # was supposed to be common boot partition for chain loading
    /dev/sda3   swap        1.5GB
    /dev/sda4   ext4        8GB         # Linux 1 (somehow, Grub does not show this in the menu, cannot boot into)
    /dev/sda5   ext4        8GB         # Linux 2 (I could only boot into this one from Grub.)
    /dev/sda6   ext4        94GB        # DATA
    unallocated _           1MB

我已经相继安装了 Linux,实际上想在 /dev/sda2 中安装 Grub 并 chainload Linux 1 & 2,但在我这样做之前,我遇到了这个障碍!

有什么想法吗?解决方案?

[更新 2]

  • 问题标题不再适用*

我从 USB 启动,并在所有分区上执行了“fsck”。所有分区(/sda5 除外)都报告为干净。/dev/sda5 报告了许多错误(大概有几百个),我只在所有提示符下一直输入“y”。其间有消息,如“链接‘lost+found’....”在所有分区上运行 2 次后,当我从 HDD 重新启动时,这是最新的错误...

    INIT: verision 2.88 booting
    INIT: No inittab file file found

    Enter runlevel:

看起来我是否能够恢复操作系统实例并启动?

答案1

您报告的第一个错误:

ata1:00: status: { DRDY ERR }
ata1.00: error {UNC }
ata1:00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata1:00: BMDMA stat 0x25
ata1:00: failed command: READ DMA

说对READ DMAATA 端口 1 上的磁盘的 ATA 命令失败(状态ERR包括错误)。该端口很可能是硬盘,错误表明驱动器有问题。该DMA部分可能可以忽略;DMA 是直接内存访问这是目前主要的传输模式,如果您遇到 RAM 或 RAM 总线问题,并且反复遇到类似问题,那么如果系统能够正常运行,您可能会看到更多的错误。

第二个错误:

end_request: critical target error, dev sda, sector 32839936
EXT4_fs error: (device sda5): ext4_find_entry:935: inode #393217: comm init: reading directory lblock 0
INIT: No inittab file found

说 /dev/sda 的扇区 32839936 存在问题,该扇区有 512 字节,物理上位于 /dev/sda5 分区的末尾,这与device sda5文件系统驱动程序报告的一致。报告的错误init以及文件系统驱动程序的错误详细信息表明文件系统存在问题,导致 /etc/inittab 不可用或(不太可能)无法读取。这意味着根目录、/etc 目录或 /etc/inittab 文件条目以某种方式与损坏有关。考虑到 inode 编号,我会尝试将 /etc/inittab 视为罪魁祸首,直到证明错误为止。

你写道(我强调):

由于怀疑硬盘崩溃,我将其取出并在另一台电脑上用作外部 USB 硬盘驱动器,并且能够安装并查看其中的所有分区和文件。因此我认为 Disc 没问题。

我会这样说你的假设没有根据。磁盘显然有问题;如果幸运的话,很容易修复。

我要做的第一件事您的情况是刷新我备份的磁盘上所有内容。请确保不要覆盖或删除最新备份中的任何内容,因为您肯定有可能需要它。也许最好的选择是将您能够访问的所有内容备份到新的(或至少以前未用于您自己的备份的)驱动器上。在制作该副本时,源上可能会出现一些 I/O 错误。

第二尝试恢复。幸运的是,考虑到错误,这是一个单扇区或几个扇区的问题,导致少量文件系统损坏,在这种情况下e2fsck 应该能够修复大部分损坏。您的一些文件可能已经丢失,但如果运气好的话,在 e2fsck 完成其能做的事情后,您可能能够在文件系统的挂载根目录下的 /lost+found 中找到它们(例如,如果您将 /dev/sda5 挂载在 /data 上,则意味着 /data/lost+found)。否则,请与问题开始之前的最新备份进行比较,并从备份中恢复相关文件。(我是否提到过,如果发生不好的事情,备份是有用的,因为它们不可避免地会发生?)

第三随之而来的问题就是,您是否可以信任该驱动器以供将来使用。从驱动器的角度来看,几个坏扇区不一定是灾难性的,但目前大多数尺寸的 100 GB 左右的旋转驱动器几乎都无法买到新的,这表明这是一个相对较旧的驱动器。就我个人而言,我可能会接受驱动器已经过了使用寿命并更换,但话又说回来,在涉及我的数据时,我相当谨慎;您的情况可能有所不同。您必须权衡更换驱动器的成本与彻底失败的风险驱动器和随后的驱动器上的所有数据彻底丢失。

相关内容