修复 Mac 硬盘上的坏块

And*_*Vit 24 disk-utility hard-drive bad-sectors

我有一个用 TechTool 扫描的硬盘,它报告了一个坏块。据我所知,TechTool 只扫描并报告失败。它不解决任何问题。

过去,Norton Disk Doctor 负责在 Mac 上扫描和标记(重新映射)坏块。今天我们有各种工具来修复 HFS+ 目录错误(磁盘工具、fsck、DiskWarrior、TechTool),但我不知道有任何工具可以进行表面扫描修复坏块。

有什么软件可以做到这一点?

如果我知道坏块的地址,是否有用于标记它的低级终端实用程序?

rob*_*rob 14

如果您在运行文件系统完整性检查时看到坏块,则硬盘驱动器很可能已经超过了它可以重新映射的块数,并且已经耗尽了它的“备用”扇区。 您应该立即备份您的数据(如果您还没有备份)并在问题变得更糟并丢失数据之前更换驱动器。

如果您不确定要信任哪个 SMART 诊断,我建议下载smartmontoolsGSmartControl以查看 SMART 诊断作为另一种检查。

如果 SMART 诊断报告没有重新分配的扇区(或者如果“重新分配的扇区计数”的 VALUE 列仍然远低于阈值),则有一种简单的方法可以执行表面扫描并同时重新映射坏块。(注意:请务必先备份您的数据!)

强制驱动器执行自己的坏块重新映射的最简单方法是从Ubuntu Live CD启动,然后打开终端并运行以下命令:

sudo badblocks -nvs /dev/sda
Run Code Online (Sandbox Code Playgroud)

这将在第一个驱动器上进行非破坏性随机读写测试,沿途重新映射坏扇区。

如果您有多个硬盘,您可以将 /dev/sda 替换为 /dev/sdX,其中 X 是小写字母。您可以通过键入以下命令来获取所有硬盘(/dev/sdX 设备)的列表:

sudo fdisk -l
Run Code Online (Sandbox Code Playgroud)

由于您使用的是基于 BSD 的 Mac OS X,您可能还想阅读badsectbad144,它们是用于处理坏块的内置 BSD 命令行实用程序。


irr*_*ohn 11

我不知道有什么工具可以进行表面扫描并修复坏块。

您遇到什么类型的 Mac 和什么类型的硬盘驱动器问题?

我怀疑您会找到任何软件工具来“修复”坏块,至少对于最近的硬件而言。我不知道它是什么时候开始的,但一段时间后重新映射坏扇区的能力被合并到硬盘驱动器的固件中。

如果您使用SMARTReporter 之类的工具查看驱动器的SMART 寄存器,您应该会看到 ID 号为 05 且标题为“重新分配的扇区计数”的条目。这是驱动器重新映射的坏扇区数。

也许磁盘战士的“坏块”指的是别的东西?(我猜不出那可能是什么)。


更新回复评论(如下):

SMARTReporter 似乎是一个相当“古怪”的实用程序。实际上,您可以查询和显示驱动器的 SMART 寄存器的内容,您只需要跳过意想不到的环节即可。

SMARTReporter 常见问题解答中,您可以找到以下花絮
SMARTReporter 能否准确告诉我哪个 SMART 测试失败?
是的,从 2.4.5 版开始!右键单击首选项窗口中驱动器列表中的驱动器,然后选择“检查 SMART 属性”。

另一个 SMARTReporter 怪癖是,当您使用菜单栏条目时,剪切粘贴显然仅适用于这些显示窗口。键盘快捷键和鼠标“右键单击”上下文窗口不会这样做。另一方面,SMARTReporter免费的。;-)

但我离题了...

奇怪的是,当所有其他实用程序将其显示为“已验证”时,SMART 实用程序将驱动器称为“失败”。它显示 1 个待处理的坏扇区。那么,如何将“待处理”的坏扇区更改为“已删除”或“重新分配”的坏扇区?

我的理解是不会这样做。驱动器的固件应该自己自动完成。请注意维基百科 SMART 文章表格中的内容

  • 05 重新
    分配的扇区数 重新分配的扇区数。当硬盘驱动器发现读/写/验证错误时,它会将此扇区标记为“重新分配”并将数据传输到特殊保留区(备用区)。此过程也称为重新映射,“重新分配”的扇区称为重新映射。
    这就是为什么在现代硬盘上测试表面时找不到“坏块”的原因——所有坏块都隐藏在重新分配的扇区中。然而,随着重新分配扇区数量的增加,读/写速度趋于降低。
    原始值通常表示已找到并重新映射的坏扇区数的计数。因此,属性值越高,驱动器必须重新分配的扇区就越多。

  • C5 Current Pending Sector Count
    “不稳定”扇区的数量(等待重新映射,因为读取错误)。如果随后成功写入或读取不稳定扇区,则该值会减小并且不会重新映射该扇区。扇区上的读取错误不会重新映射该扇区(因为稍后可能会读取它);相反,驱动器固件会记住该扇区需要重新映射,并在下次写入时重新映射。

因此,如果上述情况属实,那么显然需要谨慎解释待定扇区数。扇区读取错误很可能发生在您之前使用 TechTool 进行的磁盘扫描期间。(顺便说一句,你是说TechTool Deluxe 3.1.3吗?)因为 TechTool 可能没有尝试写入扇区,所以它(尚未)重新分配。

可以在不重新格式化的情况下完成吗?

我认为“重新格式化”只会在格式写入驱动器上的每个扇区时才能完成。我不知道使用磁盘工具进行标准(非安全)擦除是否……这就是我相信您在 MAC 上下文中重新格式化的意思……可以实现这一点。

如果你这样做了,这将是一项非常耗时的任务。我最近用 500GB 的笔记本电脑驱动器做了这样的事情,花了不到 2 1/2 小时就完成了。当然,您必须花时间(希望)从(希望值得信赖的)备份中恢复您的系统。

我不清楚您是否需要尝试积极强制“纠正”这一点。据说驱动器的固件应该在下次尝试写入坏扇区时自行处理。此外,在我看来,有问题的扇区目前没有被用作任何文件的一部分。TechTool 只是在扫描驱动器的所有扇区时“偶然发现”了它。

但是,如果您想尝试强制更正,那么我想您必须执行一些强制写入该扇区的操作。不过,这似乎不值得付出努力。我会继续备份您的文件并密切关注您的驱动器,以防它开始进一步降级。

  • 为了记录,最终做到了这一点:使用“写零”选项重新格式化需要一些时间,然后从我的备份中克隆回来。我在 SMART Utility 中报告的“待处理”坏块消失了:它刚刚消失,驱动器现在没有显示坏块... /耸肩/ (3认同)

小智 6

我对来自 grc.com 的 SpinRite 的体验非常积极。我已经设法恢复了至少 4 个磁盘,这些磁盘每次尝试修复它们都失败了。唯一的缺点是它需要一台基于 BIOS 的机器,这意味着它不能在基于 EFI 的现代 Mac 上运行。好消息是几乎任何其他 poc PC 都可以从软盘、CD 或闪存驱动器运行它。在实际检查单个扇区的内容和恢复数据方面,我还没有发现任何其他实用程序作为坏块丢弃的数据。


Mat*_*TIN 6

OS X 内置命令 fsck_hfs 有一个选项 -S 显然将扫描和纠正 OS X 硬盘上的坏块。

从文档:

-S 使 fsck_hfs 扫描整个设备以查找 I/O 错误。它将尝试将有错误的块映射到名称,类似于 -B 选项。

例子:

fsck_hfs -fy -S /dev/disk3s11

这似乎是这样做的时候AA盘上运行,而不坏块,但我还没有检查/文件什么时候有它坏块。

警告:fsck_apfs 不能这样做;虽然它也有一个 -S 选项,但它不会导致扫描;它完全做其他事情。