如何检查OS X上外部USB硬盘上是否存在坏扇区?


Answers:


5

相关问题

  1. 修复Mac硬盘上的坏块 –包括一些非自由和封闭源代码软件
  2. 我可以在Mac硬件上使用哪些免费或开源软件来验证磁盘每个块的完整性……?

有时使用驱动器的自动扇区重定位功能是不合适的,因此ohho提出的问题变得与众不同:

  • 这是关于发现的

实质上

如果扇区存在缺陷,那么您将:

  • 关心该部门内的数据;要么
  • 不关心

执行可能导致重定位(或重新映射或保留,或您所说的任何事情)的任何操作之前,请考虑这一点。

为什么要在意呢?

虽然SpinRite 6不适用于Mac,但是2003版的第5版令人鼓舞:

请注意有关自动重定位和相关数据丢失风险的部分。

除了SpinRite之外,从2003年到2013年是十年:


对这里的问题...

如何检查OS X的USB硬盘上是否存在坏扇区?

对于Mac –对于OS X –我不知道像SpinRite 那样强大和小心的东西(没有禁用自动重定位)。

因此,就目前情况而言:要使用OS X验证USB 磁盘的扇区,我们可能仅限于使用可能导致重定位的实用程序。我无法估计相关数据丢失的风险程度,但是如果这种风险可以接受,那么我应该首先转向:

  • 在上述相关问题(1)和(2)中被投票或推荐的实用程序。

提示:相关问题(1)下的内容更易于使用。

聪明

仅OS不能在总线外部的驱动器(例如USB 2.0和FireWire)上使用SMART技术。

在其他地方,有大量的信息(还有误解;),所以我将答案的这一部分仅集中于一点:

  • 使Apple的操作系统与带有外部 USB和FireWire驱动器的SMART技术一起使用。

OS X SAT SMART驱动程序

kasbert / GitHub上的OS-X-SAT-SMART-Driver

…Mac OS X外部USB或FireWire驱动器的内核驱动程序。通过提供对驱动器SMART数据的访问,它扩展了标准驱动程序的行为。SMART数据的接口与ATA系列驱动程序的接口相同,因此大多数现有应用程序都可以使用。该驱动程序需要具有SAT(SCSI ATA转换)功能的外部驱动器机箱。…

如果与Lion一起尝试此KEXT,则与任何第三方内核扩展一样,请谨慎操作。


15

OS X内置命令fsck_hfs具有一个选项-S,该选项显然将检查OS X上USB硬盘上是否存在坏块。

官方手册页

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

例:

fsck_hfs -fy -S /dev/disk3s11

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


1
此外,我们可以使用diskutil列表获取可用的磁盘路径
Freeman

是。或df。我更喜欢它的输出!
马修·艾维

2

在“应用程序/实用工具”中打开Terminal.app。

在内部剪切并粘贴以安装Brew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

使用brew安装e2fsprogs: brew install e2fsprogs

键入diskutil list以找到您的设备(/ dev / diskX)

badblocks在您的设备上运行:(用设备号替换X)

/usr/local/Cellar/e2fsprogs/1.44.3/sbin/badblocks -v /dev/diskX


您可能需要在以下行中调整版本号(此处为1.44.3):'/usr/local/Cellar/e2fsprogs/1.44.3/sbin/badblocks -v / dev / diskX'–
brunobhr

在macOS High Sierra 10.13.6上:(Operation not permitted while trying to determine device size带有/不带有sudo)
bonh '19

可以将其链接到SIP保护吗?osxdaily.com/2015/10/05/...
brunobhr

0

根据驱动器上的文件系统,您可以运行

fsck_msdos /dev/disk1s1

这将检查FAT FS。也许那就是你想要的?可能的命令是:

fsck_cs
fsck_exfat
fsck_hfs
fsck_msdos
fsck_udf

3
这些命令检查(并选择修复)卷数据结构,它们不扫描磁盘以了解磁盘表面的可读性/可写性。
戈登·戴维森

1
fsck_hfs -S扫描整个文件系统内容,并将具有I / O错误的块映射到名称。
siefca

0

真正知道的唯一方法是写回每个扇区,然后再读一遍,以查看是否返回相同的内容,并检查途中是否有错误。

badblocks在Linux下可以做到这一点。 badblocks具有非破坏性的读/写测试模式。

在Windows下,我相信如果你调用chkdsk/F/B/R选项会测试每个扇区坏扇区。它也是非破坏性的,但是我不确定它是否实际写入每个扇区进行测试。

这个超级用户的答案表明SpinRite 6可能也做同样的事情,但是我还没有测试。


0

如果您怀疑/知道自己有坏扇区,请允许我以什么顺序进行处理:

1)使用dd将整个分区复制到另一台设备(使用来查找分区名称df)。在容量为400Gb的USB2磁盘上,这可能需要一段时间,甚至可能需要一天以上的时间。bs=加快速度(5或更多倍),sync如果有任何读取错误,则用零填充输入块。

dd if=/dev/disk3s8 of=/dev/disk4s9 bs=1024k conv=noerror,sync

2)然后检查它是否确实起作用,不仅检查文件夹结构,还要打开内容。

3)如果没有,请尝试在文件级别复制分区的内容。

cp -Rp /Volumes/<source>/ /Volumes/<destination>/

4)直到现在,您已尝试在不接触文件系统的情况下尽可能多地保存文件,然后对分区进行检查。-f即使看起来不错,该选项也会强制执行,以-S扫描错误的块。不能保证此操作是非限制性的,但是它可以节省磁盘。

fsck_hfs -fS /dev/disk3s8
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.