SpinRite 是否按照它声称的那样做?

rom*_*das 65 untagged

我对 Steve Gibson 的SpinRite没有任何真正的(即专业的)经验,所以我想把它提交给 SF 社区。SpinRite 真的做到了它声称的那样吗?它是一个好用的产品吗?有了适当的备份解决方案和 RAID 容错,我从未发现需要它,但我很好奇。

似乎有一些关于它的相互矛盾的消息,并且无论哪种方式都找不到硬数据。

一方面,我听到许多家庭用户声称它对他们有帮助,但我听到家庭用户说了很多事情——大多数时候他们没有知识或经验来准确描述真正发生的事情。另一方面,Steve 自己的描述和文档也没有让我对它产生热情的模糊。

那么事情的真相是什么呢?你会用吗?

rob*_*rob 58

我对 SpinRite 的体验相当不错,但我认为它被高估了。事实上,它可能只是为了自己的利益而过于聪明。有一些免费的解决方案也同样有效(实际上,免费的可能效果更好)。

我们有一个 200 GB 的 NTFS 驱动器,它突然发生了灾难性的故障。这应该是人们临时转储东西的“共享”驱动器,但它最终变成了一个巨大的数据存储库,里面有各种各样的备份,以及一堆没人愿意在任何地方备份的文件。当驱动器死机时,无论我们运行 chkdsk 或其他工具多少次,我们都无法将其挂载。

最后,我们购买并运行了 SpinRite……它持续运行了 1 个多月。每次遇到坏集群时,它都会花费数小时试图从中恢复数据。同样,它不间断地运行了一个多月,试图从有缺陷的 200 GB 驱动器中恢复数据。(在 SpinRite 的辩护中,如果没有物理缺陷,它可以在短短几个小时内扫描驱动器。)SpinRite 最终能够恢复我们所有的文件,尽管许多较大的文件无论如何都已损坏。SpinRite 还使驱动器可再次安装。所以我肯定会说它做了一些事情。

然而,尽管它确实有效,但我不知道它是否比从 Linux CD 启动并运行 dd 将整个驱动器复制到一个文件是否有任何帮助。有一整个月没有运行一个垂死的磁盘,因为它快死了! 身体缺陷似乎有蔓延的习惯。如果在 SpinRite 运行时磁盘性能进一步下降,我不会感到惊讶。就个人而言,我宁愿尽快从磁盘中取出数据,制作多个备份映像,并尝试离线修复文件。

我们最近不得不恢复其他数据,dd 做得很好。您可以告诉它从驱动器中复制所有好的数据,然后您可以再运行几次并尝试更努力(即,使用较小的块大小)尝试从坏区域中提取数据。

如果您有一个小时左右的空闲时间,我会说值得您花时间学习如何使用 dd 而不是购买 SpinRite:http : //www.debianadmin.com/recover-data-from-a-dead -hard-drive-using-dd.html

或者走更简单的路线,只需下载 dd_rescue:http ://www.garloff.de/kurt/linux/ddrescue

如果您仍想运行 SpinRite,我强烈建议您在将所有现有数据从驱动器复制之后再运行,以防万一驱动器运行更长的时间会使其性能进一步下降。

每次获得新驱动器时,都应该从 Linux CD 启动并运行坏块以检查其是否存在缺陷。您还应该定期检查驱动器是否降级。我们至少有 2 个全新的驱动器存在缺陷,几个月内还有 3 或 4 个死亡(即使我们在将它们投入使用之前进行了彻底的测试)。

请注意,您需要以 root 身份运行 badblocks,或者如果您从 Ubuntu live CD 启动,则在命令前加上“sudo”。

全新驱动器(警告:破坏所有数据!):

badblocks -wvs /dev/sd#
Run Code Online (Sandbox Code Playgroud)

或者

badblocks -wvs /dev/hd#
Run Code Online (Sandbox Code Playgroud)

在用驱动器(只读测试):

badblocks -vs /dev/sd#
Run Code Online (Sandbox Code Playgroud)

或者

badblocks -vs /dev/hd#
Run Code Online (Sandbox Code Playgroud)

其中 # 是 Linux 中的驱动器号。IDE 驱动器通常称为 /dev/hd#,而 SCSI(通常是 SATA)驱动器称为 /dev/sd#。

有关坏块的更多信息,请访问:http : //en.wikipedia.org/wiki/Badblocks

顺便说一句,即使dd和badblocks是Linux程序,你也可以在NTFS驱动器上使用它们,你甚至可以在Linux中挂载NTFS分区,无论你使用的是MBR分区、动态磁盘还是GPT磁盘。

Steve 的文档讨论了 SpinRite 理论上可以帮助解决的许多假设问题。例如:数据随着时间的推移逐渐消失,需要通过读取每个块并将其再次写回磁盘来“刷新”,或者反复重新定位块两侧的读头最终会让您在统计上占卜的概念存储在该块中的原始数据。从逻辑上讲,这些事情是有道理的,但我认为它们只是解决现实世界中可能不会真正出现的学术问题。(至少,对于硬盘——也许是 Zip 磁盘等更容易受到数据衰减的影响。)如果 Steve 引用了有关这些主题的论文,或者如果这些技术已被实验证明是有效的,那么我希望有许多开源或商业上可用的 SpinRite 克隆。编写包含所有 SpinRite 记录功能的 Python、Perl 或 UNIX shell 脚本完全在普通脚本程序员的能力范围内。

  • 您是否先放入冷冻袋并冷冻驱动器?它可以帮助一个垂死的磁盘工作足够长的时间来安装和复制内容。有时。 (9认同)
  • @Ethan:谢谢,我已经更新了这篇文章。我试图指出,SpinRite 可能过于聪明,不利于自身利益——也就是说,Steve 似乎有一个习惯,即在没有正确研究问题的情况下过度设计他的解决方案。例如,他在汇编中编写了两个实用程序来启用/禁用 Windows 中的几个网络端口,并写了一篇关于它的大而长的文章——后来才发现他可以通过取消选中一个框来轻松完成同样的事情视窗。 (4认同)
  • 评论回复:史蒂夫不相关。此响应提供信息,但可以通过删除它们来清理。 (3认同)
  • @Alex:SpinRite 类似于 chkdsk 或 badblocks;它只是更加努力地尝试。它真正需要尝试的难度有多大值得商榷。当磁头来回扫动试图读取坏块时,它也可能在盘片上刮灰尘,对它们造成更大的损坏。拯救数据是好的,但对已经快死的驱动器造成更多的磨损是不好的。我认为,如果您已经拥有 SpinRite 并想要运行它,那么您应该只在复制现有数据后才这样做。然后运行 ​​SpinRite,再次复制数据,看看有什么变化,如果有的话。还有:谢谢!:) (3认同)
  • 哇。+1 有关坏块的重要信息。 (2认同)

ten*_*ner 28

过去曾编写过磁盘驱动器固件(从 80 年代开始),这里对驱动器固件的作用存在很多误解。我也花了很多时间在 GRC 论坛上,但除了作为用户之外,我没有以任何方式与 SpinRite 建立联系。

首先,至少从 80 年代开始,驱动器固件就一直在恢复和重新映射扇区(当时我编写了固件来做到这一点)。这绝对没有什么新鲜事。当驱动器遇到问题扇区时,它们会自行重试几次,但次数有限,因为驱动器不允许在一个读取命令上运行几秒钟——如果驱动器没有完成一个命令,许多操作系统会感到不安不到一秒钟。如果驱动器可以恢复数据,它通常会在认为错误不仅仅是一次打嗝时自动重新映射扇区。因此,诸如chkdsk或 之类的程序dd仅读取磁盘驱动器将触发此行为,就像 SpinRite 一样。

真正的问题是当驱动器固件无法恢复扇区数据时会发生什么。SpinRite 会做而大多数其他程序不会做的是进行数千次重新读取和重新搜索,以查看它是否可以让磁盘成功读取一次数据。如果发生这种情况,SpinRite 会通知驱动器重新映射扇区并将恢复的数据写入其中。根据我的经验,多次重读和重新搜索的成功率有限,正如其他人在此处指出的那样,可能会导致使用故障驱动器的剩余有限生命周期。因此,在尝试使用SpinRite 之前尝试使用dd或始终是一个好主意chkdsk

问题是无论尝试多少次重新读取和重新搜索,驱动器都无法恢复数据。SpinRite 多次从扇区读取未校正的原始数据,并对返回的数据进行统计分析以尝试恢复实际数据。然后它告诉驱动器重新映射扇区并将恢复的数据写入其中。据我所知,SpinRite 的这一部分是独一无二的,当其他一切都失败时,这是最后的努力。结果,我使用 SpinRite 恢复了其他程序没有的数据(dd、制造商诊断等)已经能够。但是当您运行 SpinRite 时,您必须接受恢复的数据可能只是部分正确。SpinRite 还具有映射出所有坏块的作用,可以使驱动器再次可用。但简单地写入所有坏扇区也可以做到这一点,这可以通过badblocks.

当然,有些驱动器是丢失的原因,没有程序可以保存。如果您确实需要这些数据,请将驱动器带到驱动器恢复中心,该中心将尝试更换驱动器的故障部件和其他技术,以尽可能多地取回数据。准备好花费数千美元。这是一个非常劳动密集型的过程,需要昂贵的洁净室,而且这些地方必须为回溯多年的每个商业发布的驱动器维护更换零件的库存。

在撰写本文时,Steve 正在开发 SpinRite 的第 7 版,其中将包括类似于dd_rescue他现在所做的扇区恢复工作的数据恢复。据说这将在他专注于单个坏扇区之前完成,这样他就不会在仅恢复一个扇区时耗尽垂死的驱动器的寿命。

  • 我认为大多数人的保留意见在于史蒂夫的无数失误,如果该程序有一些秘密武器,那么现在有人会发现它并试图复制它。 (3认同)
  • Tenner,关于 [ATA 命令规范](http://www.t13.org/documents/UploadedDocuments/docs2008/D1699r6a-ATA8-ACS.pdf) 中的哪个命令集,您是否有任何详细信息可以读取“未更正的“部门?据我所知,这既不可能也不可取,因为表面记录和读取采用统计方法,不可避免地会产生错误,这些错误需要通过纠错码中包含的冗余信息进行纠正。 (2认同)
  • 以前可以使用 Read Long 命令,该命令将原始数据从扇区发送回主机,假设驱动器获得了完整扇区的数据(有时扇区损坏严重,甚至无法做到这一点)无论数据损坏程度如何)。最初的目的是允许主机测试驱动器的 ECC 稳健性。史蒂夫从来没有说过这是否是他使用的。但是,已从 ATA 规范的最新版本中删除了 Read Long 命令。如果这是史蒂夫目前使用的,我不知道他将来会做什么。 (2认同)

Gre*_*ith 10

SpinRite 在很久以前编写的那个时代是一个很棒的程序。那时,它会通过比驱动器固件本身更持久来恢复看似烤面包的驱动器。

但在 2009 年,它毫无价值。现代驱动器自己进行复杂的扇区映射和测试,而 SpinRite 太老了,不知道如何在所有驱动器上正确触发这些。相反,您应该做的是学习如何使用smartmontools,可能是通过 Linux 引导 CD(因为您需要它们的主要时间是驱动器已经吐司)。

当驱动器开始返回时,我通常的例行程序是使用 dd 备份其数据,运行 smartmontools 以查看其报告的错误,触发自检并再次检查错误,然后启动制造商的恢复软件以查看是否问题可以通过它来纠正。SpinRite 比 SMART 和制造商工具提供的接口更了解驱动器的想法至少已经过时了十年。此外,如果您需要将驱动器视为有缺陷的 RMA,则将信息输入 SMART 日志会有所帮助,而 SpinRite 对此无能为力。

请注意,您偶尔会看到 SpinRite“修复”问题的报告是巧合。如果您访问现代驱动器上的一个坏扇区,该驱动器通常会从为此目的保留的备件中为您重新映射它。SpinRite 所做的只是访问坏扇区,实际上并没有修复任何东西。这就是为什么您仍然会收到与它相关的这些轶事“它对我有用”的报告——同样的事情如果使用 SMART 扫描会更好地完成。

  • kmarsh,我认为您不了解扇区重映射的工作原理。当任何读/写操作返回边缘信号时,现代驱动器固件将自动重新映射扇区。GRC 声称 SpinRite 通过“强制”扇区重新映射来“刷新”磁盘,这*技术上*是正确的,但任何读取整个磁盘的命令也是如此。启动任何实时 Linux CD 并运行“cat /dev/sda >/dev/null”,您就“刷新”了磁盘,而无需支付 89 美元。 (9认同)
  • 强制扇区重新映射并非巧合导致轶事,它是 SpinRite 战略的重要组成部分。此外,SpinRite 已经让驱动器认识到我无法运行 smartmontools,因为它“不存在”。我不认为 SpinRite 在 2010 年和 1999 年一样不可或缺,但“毫无价值”,我不这么认为,我用它恢复了太多的驱动器,只需很少的努力。即使现在存在其他方法,您也无法在实用性方面击败它。只需启动并运行。 (7认同)
  • Ryan,根据您阅读的关于“当前未决扇区计数”的来源,成功读取并不总是会导致重新映射。[Acronis 指示](http://kb.acronis.com/content/9133) 如果“仍然发生错误”,则会发生这种情况。其他人说它只会发生在像[维基百科文章](https://en.wikipedia.org/wiki/Self-Monitoring,_Analysis,_and_Reporting_Technology)这样的文章中(这可能是有条件的)。在任何情况下,您都不需要 SpinRite 来执行此循环。SpinRite 声称的不同之处并不是立即放弃挂起的扇区(dynastat 是否有效,我不确定)。 (2认同)
  • Ryan,如果无法恢复数据,驱动器不会自动重新映射扇区。假设他们这样做了。由于无法从原始扇区恢复数据,驱动器在重新映射扇区后会向该扇区写入什么内容?在它重新映射之后,该扇区总是读得一样好——但数据是错误的。这是数据损坏,驱动器制造商不会故意这样做。此外,如果一个扇区不好,许多 OEM 不希望自动重新映射。他们更愿意允许多个主机重试,如果驱动器自动重新映射扇区,这是不可能的。 (2认同)

tyl*_*erl 10

我可以肯定地告诉你,这个工具可以恢复其他工具(比如ddrescue)不能恢复的数据。因此,如果您的驱动器出现故障,则值得使用。当所有其他工具都失败时,Spinrite 为我恢复了一个驱动器。但是,它只能恢复某些类型的错误,并且并非每次都有效。

也就是说,在某些重要情况下,您甚至不应该尝试使用 spinrite 或任何其他基于软件的解决方案来恢复您的磁盘。也就是说,如果您的磁盘由于未知原因出现故障并且其中的数据绝对至关重要——您应该立即拔下磁盘并将其直接运送到专业维修店(不是 极客队数据医生)或其他消费者商店),他们可以在那里拆卸它以找出并解决问题。这些车间在洁净室环境中运营,并拥有更换磁头、电机、PCB 和任何其他可能出现故障的组件的工具。它们并不便宜——单个磁盘的价格在 800 美元到 3000 美元(或更多)之间,但它们绝对是您最好的选择。

最重要的是,如果机箱内有物理损坏,简单地旋转驱动器可能会不可挽回地破坏您的数据,使任何未来的恢复尝试都徒劳无功。Spinrite 无法恢复已损坏组件的磁盘。如果里面有松散的碎片,出于任何原因启动驱动器都是非常具有破坏性的。

此外,Spinrite 不能“非破坏性”工作——也就是说,它在读取坏扇区后重新映射它们,这可能会影响未来的恢复工作。因此,如果您想尝试基于软件的恢复,您应该使用诸如 之类的工具转储您可以使用的内容ddrescue然后在驱动器上使用 spinrite。


the*_*bit 6

这里仍然缺少的一个重要点是 SpinRite 是由史蒂夫·吉布森 (Steve Gibson) 编写的——他多年来一直被批评为无能,并在他晚期的“职业生涯”中对风车进行了无数次 攻击 。虽然这并不一定意味着他的“吉布森研究公司”出不出好的软件,但至少应该让每个人检查两次。正如许多人所指出的,有很多开源替代品(主要是 Linux Live CD)用于数据恢复,它们至少也能正常工作。

  • +1。尽管我想为此多次 +1,但正如措辞一样,它读起来像是 *评论* 而不是 *答案*。 (5认同)
  • 其中三篇文章是由同一个人 Thomas C. Greene 撰写的。不太公平。 (2认同)

p.c*_*ell 5

会用,用过,推荐。

我有一个 160gb 的 SATA 硬盘,上面装满了 Solidworks 图纸。一天停电,这台机器停电了。之后机器只会在启动时蓝屏。

最后我们在尝试ChkDsk和制造商的简单实用程序后购买了 SpinRite 。SpinRite 在磁盘上发现并修复了这些错误。之后所有数据都可以恢复。

如果您的硬盘很出色,并且您的数据价值高于新磁盘的成本,那么购买 89 美元是值得的。

  • 你没有备份?我宁愿建议做备份和做 RAID。 (2认同)