磁盘在读取顶部文件夹时完全停止响应

磁盘在读取顶部文件夹时完全停止响应

这是一个不寻常的故障,与典型情况并不完全相同,它始于磁盘上的一个简单文件夹重命名,导致负责的进程完全冻结,随后出现稳定的症状:

  • 当 HDD 直接通过 SATA 连接时:
    • BIOS 延迟启动大约 10 秒,并且该磁盘不再可见,即无法识别磁盘的存在。

由于最初这是通过 USB 连接的外部硬盘盒,因此我有不同的连接选项:
1)直接通过 SATA
2)标准 SATA -> 内部盒适配器至 Micro-B USB 3.0 -> USB 3.0
3)拆下​​盒,直接 SATA -> USB 3.0 适配器(似乎与 2 相同)

  • 通过 USB 连接时,即 2) 或 3)
    • 如果在启动期间连接,PC 会在启动时冻结(直到拔下电源插头)
      如果在关机时连接(仅在挂起状态之后?),PC 最终不会关闭(直到拔下电源插头)
    • 如果以标准方式连接,即在实时 Windows 上使用外部 USB:
      Windows 会显示磁盘需要修复通知,NTFS 分区会被识别。
      chkdsk几乎立即冻结,访问磁盘的程序有时可以看到根文件夹,但在读取其内容时会冻结。

第一次冻结后,机箱指示器显示磁盘开始完全无响应,直到拔下并重新插入。
所有冻结都可以通过拔下电源插头来恢复,并且不会完全挂起 PC,但只会挂起相关进程。
似乎磁盘碎片整理在故障前某一时刻显示 100% 碎片,但可能只是碎片整理错误。
故障很稳定,可在其他 PC 上重现。

什么是最佳恢复路径?
在我的具体案例中,降速解决方案(发布如下)解决了恢复问题,但读取时冻结的根本原因是什么?
例如,下一个恢复步骤可能是将磁盘提取到其他机箱或更换控制器板?

答案1

磁盘数据通常可以恢复,但会出现此类症状。
为了解释读取冻结,我们需要看看发生了什么:

在驱动级别

造成这种死机的最可能原因是驱动器无法从磁盘表面读取数据。现代驱动器的编程方式是尝试从有问题的扇区恢复数据,而不会轻易放弃。

以下是错误恢复过程的一个例子:

如果驱动器检测到无法即时纠正的错误,它将按以下顺序重试数据字段读取操作。默认重试算法重复八次,总共重试 128 次或直到数据恢复。- 这需要时间。

1. Initial read
2. First retry
3. Read retry with data threshold offset +1
4. Read retry with data threshold offset -1
5. Read retry with data window offset +1
6. Read retry with data window offset -1
7. Write Spash
8. Read retry with data threshold offset +2
9. Read retry with data threshold offset -2
10. Read retry with data window offset +2
11. Read retry with data window offset -2
12. Normal read retry
13. Read retry with servo offset +8%
14. Read retry with servo offset -8%
15. Normal read retry
16. Software (2-burst) EDAC correction attempt

来源:http://www.hddoracle.com/viewtopic.php?f=18&t=1133

如果驱动器在某个时刻成功读取扇区数据,它可能会决定重新分配该扇区。——这需要时间。

在操作系统级别

一旦驱动器经历了上述错误恢复并且假设它不成功,Windows 将重试读取数据多达 9 次。这意味着上述过程(驱动器级别恢复)将重复 9 次。

来源:https://www.deepspar.com/blog/Software-Recovery-Attempts-2.html

还可能发生这样的情况:Windows 认为等待的时间太长并决定“放弃该驱动器”(它将不再显示在磁盘管理中)。

所描述的症状很可能是由于表面问题和固件问题造成的。在这种情况下,更换驱动器的 PCB 是没用的。

最佳数据恢复方法

  • 如果可能的话,减少抽象层的数量。例如,如果您正在处理外部 USB 硬盘驱动器,则可以将驱动器从其外壳中取出并直接连接到 SATA 端口。原因是许多 USB 桥接器处理错误的能力很差。您与驱动器的对话越直接越好。如果驱动器是原生 USB,数据恢复专家可以将驱动器转换为 SATA 并将其连接到他的专用硬件(例如PC3000)。
  • 首先避开有问题的区域,先复制容易获得的数据。数据恢复专家将使用专门的硬件成像器。例如,这些成像器允许中断上述驱动器级别恢复程序,这可能是第一次尝试时所需要的。此类工具还可以自动检测驱动器是否已停止响应并关闭驱动器电源。硬盘超级克隆是一款开源工具,它遵循此原理,使用多通道策略,甚至可以配置为控制继电器进行自动电源循环。另一种不太先进的工具是救援。虽然您可能想从文件系统级别(逐个文件复制)来处理驱动器,但这可能会给驱动器带来额外的压力,在处理可能不稳定的驱动器时应避免这种情况。尽量让每次读取都有意义。
  • 从 HDDSuperClone 或 ddrescue 生成的磁盘映像或克隆中提取数据。根据坏扇区的数量和文件系统数据的损坏程度,您可能需要使用文件恢复工具来虚拟重建文件系统。

除上述之外,数据恢复专家还可以操纵驱动器的固件:例如,可能需要禁用驱动器的自动重新分配算法。

最佳数据恢复方法背后的总体思路

数据恢复专家会假设最坏的情况,并且从此时起驱动器会进一步恶化。换句话说,我们剩下的读取次数有限,所以我们必须让每次读取都有意义。

上述所有错误恢复步骤都可以视为读取,而驱动器最终能够从故障扇区读取数据的机会是不确定的。因此,首先尝试读取好数据,同时尽可能避免潜在的非生产性读取,这是基本的想法。这是我建议不要使用 SpinRite 之类的工具的原因之一是,它会尝试 1000 次读取坏扇区。这是 1000 * 驱动器的内部错误恢复程序!

由于驱动器在很大程度上是一个后箱,即使可以使用先进的数据恢复硬件,如 AceLab 的 PC3000 或 DeepSpar 的工具,我们也必须依赖于我们可以观察和测量的实际驱动器行为。

例如,驱动器会报告各种状态,如 BUSY 或 READY,它会告诉我们在上次发送的命令期间是否发生了错误。因此,如果我们读取一个扇区(我们几乎从不只读取一个扇区,但为了简单起见),我们可以观察到:

  • 驱动器响应数据或错误所需的时间
  • 如果我们遇到错误,驱动器可能会显示错误类型

如果驱动器停止响应,则可能是故意的,或者驱动器的固件可能只是“崩溃”了。

  • 如果驱动器故意设置设备故障位
  • 如果它停止响应并且未设置故障位,我们就知道它崩溃了。

在其他情况下,驱动器可能需要很长时间才能响应,但仍会向我们提供数据而不报告异常。

  • 驱动器长时间处于繁忙状态
  • 但最终还是传递了数据,没有报告错误

在这种情况下,固件很可能认为它有更重要的事情要处理,而不是将我们试图读取的扇区的数据提供给我们。一个例子就是所谓的“WD 慢响应错误”,我们在某个时候读取了一个坏扇区,即使我们希望驱动器做其他事情,它也会不断尝试重新分配这个扇区。

现在为了论证的目的,我假设我们没有工具来修改固件,例如让它停止尝试重新分配扇区。

那么,我们该怎么做才能防止驱动器进行过多的重新读取、重新分配等操作,从而蚕食我们宝贵的剩余读取量呢?答案是重置和电源循环。电源循环只是最后的手段,因为它们本身会给驱动器带来“压力”(就机械驱动器而言)。

  • 由于“坏区”或坏扇区经常成群出现(例如,磁头撞到驱动器表面),因此我们在每个无法读取的扇区后跳过 n 个扇区,并跟踪无法读取和跳过的扇区,以便在下一次遍历中解决这些问题。因此,在遍历 1 中,我们尝试消除任何问题区域。
  • 为了防止驱动器过度重试,我们会在 m 毫秒后重置驱动器,跳过 n 个扇区并重试。为了确定一个好的超时值,我们会检查从驱动器读取一个好扇区平均需要多长时间。例如,对于这个(闪存)驱动器,我花了读取一个好扇区所需的时间,增加了一些时间,并将读取超时设置为 200 毫秒。在此处输入图片描述
  • 如果驱动器无法响应重置,我们将对驱动器进行电源循环
  • 如果我们怀疑并确定问题出在驱动器的固件而不是我们尝试读取的扇区上,我们可以尝试重置/关闭电源并立即尝试再次读取同一扇区。通常这样我们可以在固件再次被后台任务占用之前读取一段扇区。以下是一个例子:在此处输入图片描述 当然,在成像过程中,我们不会等待 40 秒来断开驱动器连接,而是会更快地发送重置/电源循环。

如果采用多遍策略,我们可以在下一次遍历期间尝试跳过的扇区,然后再尝试从已确认的坏扇区(导致错误的扇区)中恢复数据。

不!

  • 运行chkdsk
  • 运行磁盘修复工具,例如 SpinRite 或 HDD Regenerator
  • 冻结驱动器

答案2

对于问题的恢复数据部分,这可能会或可能不会帮助所有具有相同症状的人,但

  • 使用磁盘制造商工具查看 SMART
  • 减慢磁盘旋转速度选项

帮助我正常读取所有数据,而不会再次出现同样的冻结。就我而言,那是 Seagate,并使用了他们的免费工具,选项高级->旋转向下。

补充笔记:
  • 该磁盘上没有关键数据,因此无法恢复的故障是可以接受的。
  • 最初在冻结之前,这是外部 USB 硬盘。冻结后,我拆开机箱并通过直接 SATA -> USB 电缆连接,而不是使用原装内部适配器。
    如果没有可用的 SATA 替代品,这可能是一个无法恢复的机箱。也就是说,当它最初是内部 SATA 磁盘时,这种 USB 方法可能会有所帮助,因为 BIOS 后根本无法识别它。

相关内容