我有一台旧的 Titanium,驱动器上有坏的部分。这不是我的主系统,我用它来查看电子邮件、收听语音邮件服务器等。它基本上是半退役的,但仍然有用。几周前,我在使用它时开始定期听到旋转的沙滩球。我以为系统内存已经用完了,但活动监视器告诉我并非如此。系统在减速时也会发出一些噪音。
经过一番研究后,我发现了这篇文章:
http://www.scsc-online.com/Bad%20Hard%20Drive%20Signs%20and%20Symptoms.html
他们所说的“chug-a-chug-a”噪音正是我听到的,所以我继续购买了他们的驱动器测试工具 Scannerz。我运行了该程序,驱动器扫描完美,直到驱动器的最后 3GB。进入这个范围时,一直运行非常快速的 Scannerz 突然变慢了。不规则计数从 0 开始突然以每秒 1 的速度增加。然后 Scannerz 的速度进一步减慢,然后错误增量上升。这发生在测试的最后 3GB 中。
我把 Scannerz 调到探测模式,对驱动器的最后 3GB 进行了测试,以确定损坏程度。经过大约 15 分钟的测试后,我取消了测试,因为很明显这些区域的损坏相当严重。
这实际上是我两个问题:
第 1 部分:不久前,该系统中的驱动器从原来的 40GB 更换为 80GB。当时 40GB 驱动器不够大,无法容纳我所有的东西。我最终把它放在了 iBook 中。我猜大概是在 2006 年。80GB 驱动器上只使用了大约 50GB。
这是问题 1:如果这个东西只使用 50GB 的空间,为什么它会在 77-80GB 范围内给我带来问题?我以为操作系统会按顺序写入内容,让一切保持井然有序。
第 2 部分:这个系统很旧,我不想更换驱动器。IDE 硬盘现在价格昂贵(是 SATA 硬盘价格的两倍),因为很难找到好的新硬盘。新的 IDE 驱动器的价格可能比这类计算机在 ebay 上的售价还要高。这个系统太旧了,我知道总有一天我会打开它,里面会冒出一股烟,LCD 背光会坏掉,或者根本就打不开。这种情况会发生,可能在明年之内。这东西已经 11 年了。
话虽如此,我正在考虑对驱动器进行分区以排除最后 3GB。我想我可以将分区分成一个 77GB 卷和一个 3GB 卷,然后删除 3GB 卷。
如果我这样做,是否能完全消除驱动器坏区被操作系统访问的问题,从而结束旋转沙滩球问题?我认为会的。有人能证实或反驳这一点吗?
答案1
驱动器读取和写入数据块的方式因操作系统和介质类型而异。在具有传统硬盘的 MacOS 上,当文件被删除时,它不一定会被删除,而是会将块标记为“可用”。在写入操作期间,HFS+ 将尝试收集尽可能多的空闲或标记为可用的连续块。这减少了碎片整理。一些驱动器实用程序具有“恢复”模式,当它们尝试恢复已删除的数据时,它们实际上所做的是查看所有标记为可用的包含数据的块。
SSD 有所不同,因为与可以随时将块标记为可用并覆盖的 HD 不同,SSD 块需要先清除或擦除才能再次写入。SSD 的擦除速度非常慢,因此 SSD 制造商在驱动器上实施了“TRIM 支持”,以后台进程清除可用块。
驱动器尾部出现坏扇区的原因在于,当操作系统尝试查找连续的空闲块时,它会首先尝试用尽所有从未使用过的块,然后开始覆盖曾经包含数据的“可用”块。因此,最终文件将被写入驱动器的末尾,即使驱动器中可能有很多明显的空闲空间。
关于减少分区大小并阻止驱动器的坏区,这可能有效,但即使是 HFS+ 也会使用驱动器尾部的某些区域。Apple 有一份文档描述了文件系统的布局方式,您可以在以下链接中查看:
http://developer.apple.com/legacy/mac/library/#technotes/tn/tn1150.html
我不确定它是否是最新的,但如果你仔细检查,你会注意到它将一些信息放在卷的尾端,因此你可能希望绝对确定你的卷在坏扇区开始之前结束。
要找到终止缩小分区的位置,它应该位于 Scannerz 日志文件中,以供测试。确保该区域没有异常,因为它们可能是由于磁头碰撞而损坏的薄弱扇区。您可以尝试将坏扇区重新映射到备用扇区,这是 Brad Patton 的回答中暗示的,但如果 Scannerz 发现了大量坏扇区,则可能需要重新映射的扇区可能太多了。我推测,通过缩小卷的大小,驱动器的坏区域将永远不会发生写入,因此如果好扇区中出现坏扇区,备用扇区可能仍然可用(假设还有剩余)。
为了好玩,我搜索了二手 Titanium 和新 IDE 驱动器。钛驱动器在 eBay 上的典型价格约为 30 美元到 120 美元(状况良好),而一个约 120G 的全新未使用 IDE 则要 100 多美元,所以我理解你为什么要考虑更注重成本的方法。
答案2
我实际上并不是在回答我自己的问题,我只是想告诉你我做了什么。
我不想尝试重新映射坏块,因为我认为驱动器末端的损坏非常严重,它会吞噬所有备用扇区(如果还有剩余的话)。
我备份了驱动器,然后使用 Scannerz 的日志文件找到了驱动器上损坏块的位置。使用这些数据,我将驱动器分成两个卷,一个仍然很大,占据了驱动器的大部分空间,另一个位于驱动器的末端,包含坏数据。为了安全起见,我将第二个坏卷的起始点移到了其起始点之前约 500MB。我正常格式化了两个分区 - 没有清零 - 然后删除了包含驱动器坏区域的分区。
我使用 Scannerz 重新测试。如果我选择我新创建的良好卷,它会顺利通过测试。如果我选择测试整个主驱动器(包括已删除的卷在内的整个驱动器),问题仍然存在 - 这只是为了澄清问题并没有神奇地消失,它们只是不再可见了。
我重新安装了操作系统和数据,现在一切运行正常。
它能用多久?谁知道呢。这个驱动器很老了,我很惊讶它能用这么久。我知道有一天我会打开这个老朋友,驱动器会发出刺耳的声音,显示屏上的灯会熄灭,或者可能根本就打不开。我知道这个老朋友很老了,总有一天它会离开我……
.....但不是今天!!!! :-)
答案3
虽然最初数据是以整齐有序的方式写入驱动器的,但这种状态不会持续很长时间。随着文件的创建和删除(不仅是您的数据,还有像交换文件这样的操作系统文件),包含这些文件的数据块会被释放。随着新文件的创建,操作系统将重新使用这些块,但也会在列表末尾使用新块。顺便说一句,这是硬盘上的数据碎片化的原因之一。HTS+ 有多种方法可以减少这种碎片化(请参阅这里),但某种程度上这种情况仍会发生。
因此,问题实际上不是数据以何种顺序写入,而是是否可以访问整个硬盘盘片来读取和写入数据。答案是可以的。
如果你确定驱动器的所有坏扇区都在末尾,那么你可以用一个单独的分区将它们隔离开来。考虑到这个驱动器的年限,我不确定我是否会同意。
我建议你阅读这个超级用户问题修复 Mac 硬盘上的坏块并遵循一些关于使用工具制作坏块的建议,以便操作系统不会尝试使用它们。
哦,还要准备好备份,因为正如你所说,这个东西随时都可能坏掉。