长答案

长答案

我的三星 HM640JJ 硬盘(在 HP Pavilion dv6 笔记本电脑中)的 SMART C5 值为“黄色状态 = 警告”

C5 昨天是 10,今天是 21。

C4 (Reallocation Event Count) = 005 (Reallocated Sectors Count) = 0

我如何强制固件重新分配它们?

  • 我删除了分区,重新创建了它们并格式化了整个驱动器。
  • 我跑了chkdsk /r /f
  • 我运行了 BIOS 磁盘检查实用程序和其他诊断/修复工具

答案1

简短回答:向扇区中写入一些新内容(甚至是零 - 长格式就是这样的)。

长答案

如今,硬盘驱动器试图向主机隐藏坏扇区。主机只需要求驱动器返回特定扇区号的内容即可。通常情况下,驱动器会读取该扇区,并将其返回给主机,一切正常。

硬盘知道它读取的值是否有效,因为驱动器使用纠错码 (ECC)验证它读取的内容是否正确。如果驱动器检测到扇区的内容无效,它将重试读取。希望的是,如果它只是再次读取它,它可能会得到正确的扇区内容。它将继续重试,直到得到一个好的值,或者它已经达到它的时间限制(正式称为命令完成时间限制,或 CCTL)。

在这些重试过程中,驱动器将看似死机;因为它不再响应命令

备用扇区

大多数现代驱动器都包含许多“空闲的”扇区(例如 1,024 个备用扇区)。如果驱动器将某个扇区识别为坏扇区,它将停止使用它。任何读取或写入该损坏扇区的请求都将透明地重定向到备用扇区。这种标记坏扇区并将其数据重新分配到备用扇区的过程称为重新分配事件。已重新分配的扇区总数(以及已用完的备用扇区数)是重置扇区计数

在我的一个硬盘上,有 64 个扇区被发现是坏的。这意味着驱动器的 64 个备用扇区已被使用:

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ===
(05) Reallocated Sector Count  192      192    140        64

在同一块硬盘上,有 4重新分配事件。这意味着驱动器有四次将扇区标记为坏扇区,并使用备用扇区代替。

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ===
(05) Reallocated Sector Count  192      192    140         64
(C4) Reallocated Event Count   196      196    0            4

如果它永远无法读取数据怎么办?

这些重新读取扇区、消耗备用扇区的操作都是在计算机背后进行的,这是一件好事。这意味着主机操作系统不必处理扇区故障的问题。驱动器本身可以自行处理这些细节。

奖金聊天:以前,硬盘出厂时会贴上一张贴纸。该贴纸上写着工厂缺陷清单;驱动器上所有已知坏点的列表。

在此处输入图片描述

如果你对驱动器进行了低级格式化,则必须使用工具输入所有气缸盖扇区坏点的位置。SCSI
驱动器有一个命令,IOCTL_DISK_REASSIGN_BLOCKS,告诉他们在操作系统检测到驱动器上的坏点后重新分配它。在 IDE 驱动器中,这一切都是自动发生的,无需操作系统干预。

理想情况下,驱动器会识别出扇区出现故障,将数据移至备用扇区,并且不再使用原始扇区。但如果驱动器无法成功读取该扇区,会发生什么情况?

这就是Pending Sectors。驱动器检测到一个扇区出现故障,需要重新映射到备用扇区。但它在成功读取数据之前无法执行此操作。当驱动器知道某个扇区是坏的,需要重新映射,但它还无法执行此操作,因为它正在等待从该扇区获得良好的读取:这称为待处理扇区数

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ====
(05) Reallocated Sector Count  192      192    140          64
(C4) Reallocated Event Count   196      196    0             4
(C5) Current Pending Sector    100      100    0             2

我的硬盘有2驱动器识别为坏扇区,但目前无法重新分配。如果您读取其中一个“待处理扇区”,驱动器可能会重试(重试,重试),并最终向主机操作系统返回读取错误:

在此处输入图片描述

放弃待处理的部门,它将被重新分配

有两种方法可以最终重新分配该扇区,并消耗另一个备用扇区:

  • 它终于被好好读了一遍
  • 你不再关心这个行业的情况

如果驱动器最终读取了该扇区,那么它就知道它可以重新分配该扇区。

驱动器重新分配扇区的另一种方法是,如果您让它知道该扇区的内容无关紧要;您不再关心其中的内容。您如何做到这一点?

通过为该领域撰写一些新内容。

每当读取或写入硬盘驱动器上的某个扇区时,都必须读取/写入全部的512 字节扇区1。您无法仅写入部分扇区。当操作系统将数据写入扇区时,它必须指定全部的512 字节。如果你告诉硬盘你希望这些新内容替换这个坏扇区,那么硬盘就知道你根本不关心坏扇区中当前的内容。然后它可以重新分配坏扇区转移到备用扇区之一,该扇区不再待办的

这就是为什么当人们问起是否Current Pending Sectors,常见的建议是使用工具(例如 Western Digital 的 Data LifeGuard)将所有零写入驱动器。

在此处输入图片描述

通过将零写入驱动器上的每个扇区,您就是在告诉驱动器它最终可以重新分配所有那些讨厌的待处理部门。抹除之后,你的一切Pending Sectors意志将变成Reallocated Sectors

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ====
(05) Reallocated Sector Count  192      192    140          66
(C4) Reallocated Event Count   196      196    0             5
(C5) Current Pending Sector    100      100    0             0

笔记:不一定需要使用 Western Digital 的 Data LifeGuard 等“低级”工具。如果您指示 Windows 执行满的格式(即非快的如果对卷使用 .NET Framework 格式进行配置,它会将卷中的每个扇区都写入零。

操作系统文件系统支持将扇区标记为坏扇区

有了这些知识,我们将探索一个常常令人困惑的场景。

集成驱动电子装置(IDE),主机操作系统负责检测坏扇区、重试读取、将数据移动到另一个扇区以及将旧扇区标记为坏扇区。

如果你使用主机操作系统运行chkdsk /r c:,它会识别出“待办的”扇区是坏的,并将其本身标记为坏的,并且永远不会再次尝试使用它们:

> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.

        12 KB in bad sectors.

因此,假设一个 512 字节扇区的硬盘驱动器,其中 12 KB 为“待处理扇区”,或者在本例中 12 KB 被操作系统标记为“坏扇区”,这对应于十进制 24 或十六进制 0x18,如 SMART 磁盘实用程序(如 Crystal Disk Information)所示:

ID   Attribute Name            Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ====
(C5) Current Pending Sector    100      100    0            18

笔记:Western Digital 的 Data LifeGuard v1.31(截至 2017 年 8 月 31 日最新版本)实用程序似乎无法正确显示当前的 SMART“原始”计数器值。

现在如果你执行完整格式 (将零写入卷中的每个扇区)

在此处输入图片描述

这意味着所有那些扇区都Pending将重新分配。现在文件系统可以安全地再次使用这些扇区了。为了指示文件系统这些扇区不再“坏的”,您执行一个选项,其中重新评估坏扇区:

>chkdsk c: /B

命令文档说

/B              NTFS only: Re-evaluates bad clusters on the volume
                (implies /R)

或者

根据: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/chkdsk

范围 描述
/B 仅适用于 NTFS。清除卷上的坏簇列表并重新扫描所有已分配和可用簇以查找错误。/b 包括 /r 的功能。将卷映像到新硬盘驱动器后使用此参数。

这是大量的文字,大量的截图,但却是一些永远不会被读到的东西。

答案2

你现在还不需要做任何事情。重新分配计数意味着“磁盘发现缺陷扇区,成功地重新分配它”。固件已经修复了这个问题。

您只需要意识到驱动器开始出现故障。将来的某个时间点,驱动器将没有剩余的扇区可供重新分配,您将丢失数据。如果丢失了某个重要块,您可能会丢失驱动器上的所有数据。

因此,请密切关注这个值或立即购买新的驱动器,这样您就可以忘记它了。

答案3

我对这里描述的方法有很好的体验https://www.smartmontools.org/wiki/BadBlockHowto。我的磁盘发出噪音并停止工作,因此我使用智能报告和公式来计算坏块并使用 dd 来清除它。我很幸运,因为智能报告仍在报告当前扇区数,但磁盘已经工作了大约 2 年。我确实买了一个替代品,但我从未使用过它。在我看来,智能报告也不太准确。

答案4

也许你不知道这个工具: 高清哨兵

Hard Disk Sentinel (HDSentinel) 是一款多操作系统 SSD 和 HDD 监控和分析软件。其目标是查找、测试、诊断和修复硬盘驱动器问题,报告和显示 SSD 和 HDD 的健康状况、性能下降和故障。Hard Disk Sentinel 提供完整的文本描述、提示,并显示/报告有关计算机内部和外部机箱(USB 硬盘/e-SATA 硬盘)中的硬盘和固态硬盘的最全面信息。提供多种不同的警报和报告选项,以确保您的宝贵数据的最大安全。

这似乎是执行此类操作的绝佳工具。但请注意,某些运行选项可能会彻底破坏数据。

相关内容