请稍侯

OS X 解决硬盘 C1 值激增问题

10 August 2013

笔记本买来不久就发现硬盘时不时滴滴作响,而且有时候会假死1-2秒钟,由于没有多大影响,所以一直都没有在意。最近装了黑苹果后,这种现象愈发严重了,用 ST 写文档的时候,隔一会儿就卡一下,实在受不了了,于是 Google 了一下,发现原来中了所谓的“C1门”。

关于 C1 值

C1门,指一些 WD 硬盘使用时间不长,但是 C1 值却非常高,看电影、玩游戏时出现周期性的卡顿现象,有的硬盘会出现“咔咔”的声音的现象。HDTune Pro 中的 C1 值是磁头伸出周期计数,也就是 LCC(Load Cycle Count)。这与机械硬盘采用的一种 Load/Unload 技术有关。简单来说,Load/Unload技术有点像老式的点唱机,当盘片转速降低无法再产生空气薄膜的时候,就将磁臂以及磁头旋转一下,停靠到磁盘旁边的一个小斜坡上。这样就完全避免了磁头与盘片的直接接触。总体来说,Load/Unload 技术是有利的,比如可以提高硬盘的可靠性,可以提高硬盘的面密度以及可以有效地降低功耗等。WD 提出了自己的一套 GreenPower Technology 技术,其中的 IntelliPark 技术:在空闲时自动卸载读写头,减低空气阻力并分离读/写通道电子器件,能耗更低。为了省电,WD预设是连续8秒没有读写,就让读头进入停放区。这项技术与 Load/Unload 技术差不多,因此也可能导致C1值升高很快。

虽然 Load/Unload 技术有很多优点,但毫无疑问频繁的 Load/Unload 操作会造成磁头的磨损,严重的话会造成数据读写失效,也会造成出现“咔咔”的声音。另外,在游戏和视频播放中出现卡顿的现象。原因可能是:磁头复位后当程序请求读取硬盘数据时,磁头需要重新启动并寻址到指定位置,这一过程需要一定时间,而程序就会在这个间隙中出现假死现象。

C1 值多少次硬盘会挂呢?西部数据的一份产品规格说明书上明确标示的是 60W 次。有人反映,只要C1超过 10w 次,就可能会出现卡顿现象。但也有人达到 100多W 次仍然正常工作的,有的不到 60W 次就挂了,所以 C1 的高低无法确定硬盘什么时候会挂。

降低 C1 增长速度的方法

方法有两种,一种是在硬盘固件中直接修改参数,另一种是系统运行时用软件维持参数。下面分别介绍:

1. 通过 WD 官方工具来修改

WD 官方提供了一个 DOS 下的工具 wdidle3.exe 可以用来修改固件参数,使用方法:

  1. 用 U 盘启动进 DOS 界面。我是用 WinImage 打开 DOS98.IMG,将 wdidle3.exe 拖入,保存,然后用 Grub4Dos 引导软盘镜像启动到 DOS 环境。
  2. 先用 wdidle3 /r 查看一下硬盘的 idle3 timer 设置的情况。结果显示我的设置为 3000 毫秒,也就是只要 3 秒钟没有磁盘操作,就自动将磁头复位。显然,这个时间设置的太短,难怪我的 C1 值暴涨到了将近 100w。
  3. 输入 wdidle3 /d 关闭,再输入 wdidle3 /r 检查关闭了没有。显示 Disabled 表示已关闭。

2. 使用软件修改参数

Windows 平台上可以用 CrystalDiskInfo 或者 quietHDD,具体用法请 Google。Linux 下可以通过 hdparm 命令行工具手动修改硬盘ATA参数。Mac OS X 下可以使用一个小工具 hdapm 来修改。相关参数:

  • AAM:Automatic acoustics-management ,即自动声音管理。在相同的环境下,同类硬盘的转速越高,噪音越大。硬盘通过AAM的调节,在安静模式/高性能模式中调节以满足用户的需求。也就是牺牲部分性能换来静音。AAM(128~254) 设置为128,表示适当降低转速,换取静音;设置为254表示不降低转速。
  • APM:Advanced Power Management,这里特指硬盘高级电源管理。为了省电,在硬盘没有读取操作的时候,就将磁头复位。APM(0~255) 设置为0,表示完全开启,硬盘连续一段时间没有读写,磁头会复位;设置为255表示,关闭APM,磁头除了在开关机和睡眠时复位,其他时间不复位。

hdapm 只能修改 APM 参数。安装时会将 hdapm.plist 复制到 /Library/LaunchDeamons 目录下,这样将在开机时自动执行:hdapm max -log,将 APM 设为最大,硬盘会以最佳I/O性能模式运行。可以修改这个命令以指定对某个设备有效,如:hdapm disk0 max -log,将只修改 disk0 的 APM 参数。也可以将 max 改为你想设置的数值(可以选择:min、max、default 或 1-254)。

PS:经测试,第一种方法无效,用第二种方法解决了。

参考:

  1. 修复Mac OS X Load_Cycle_Count激增问题
  2. WD硬盘 C1门、卡顿门 事件全报道