windows下解决机械硬盘Load_Cycle_Count过高的问题
通常,硬盘制造商规定的Load_Cycle_Count数目上限是600,000次,要是超过300,000次就会影响到正常的读写,再多的话就差不多要报废了。windows下通过修改高级电源设置虽然可以减慢Load_Cycle_Count增长的速度,但是对于我的硬盘似乎没什么用处,在连接电源的情况下,Load_Cycle_Count的增长速度还是超过了60/小时。
于是就想使用linux下的hdparm软件的windows移植版来直接修改APM参数。
环境:Windows 10 21H2
下面的截图是在 Windows 8 截取的,Windows 10 下面基本上没啥变化,看着改就行了。
Load_Cycle_Count 增长情况数据
条件:
- 没有开启 hdparm 软件。
- 在 Windows 电源设置里面把 "在此时间后关闭硬盘" 设置为了 "0" 分钟(也就是 "从不" )。
硬盘: Seagate 希捷酷鱼 2TB SMR 硬盘 ST2000DM008-2FR102
时间跨度:从 2022-05-18 到 2023-01-24,总共 251 天。
使用 Victoria 软件采集到的 SMART 数据,包括历史值:
Load/unload cycle count: 37744 -> 103316
Power-on time: 7637h -> 10123h
没有使用任何软件调整 APM 参数的时候,"Load/unload cycle count" 增长率: (103316 - 37744) / (10123h - 7637h) = 26.38/h
作为对比,用了 hdparm 一天后,发现 "Load/unload cycle count" 只因为冷启动(关机之后开机)增加了 2,热启动(重启)不会增加这个数值。
1 下载安装 hdparm
下载安装包,并安装
这个应该是软件的官网: http://disablehddapm.blogspot.com/
2 Windows 10, 7, 8 and Vista需要修改兼容性设置
原始文章见这里
注意:在 Windows 10 21H2 上测试发现,只是使用管理员权限运行程序,不设置成 Windows XP SP3 兼容模式的话,程序运行会报错。所以下面的步骤不能省略。
2.1 找到hdparam.exe文件,在兼容性设置中点击更改所有用户设置
2.2 如图所示进行
3 禁用掉hdparm安装后自带的设置apm的启动项
经过测试,这个启动项在睡眠和休眠恢复后解锁用户账户,并不会自动运行。而且它运行时会有烦人的提示信息。就直接删除掉,改用我下面提供的方法来自动修改APM好了。
删除 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\Enable HDD APM (for max performance).lnk
4 找到正确的磁盘编号
hdparm使用Unix的方法表示磁盘。/dev/sda表示第一个sata设备,/dev/sdb表示第二个sata设备,以此类推。/dev/hda表示第一个IDE设备,/dev/hdb表示第二个IDE设备。可以依次运行hdparm -i /dev/sda, hdparm -i /dev/sdb,然后查看 Model= 后面的数据是否正确来检查这是不是你要设置的硬盘。
5 创建bat脚本
注意:经过测试,在 "任务计划程序" 里面创建直接调用 hdparm.exe 的任务,会执行失败。估计是这个程序依赖 cmd.exe 提供的终端的一些特性。所以创建这个 cmd 脚本是不能省略的。
echo off
hdparm -B 254 /dev/sda
将/dev/sda替换为第四步中找到的正确的磁盘编号
将上述脚本保存到 C:\Program Files (x86)\hdparm\enable sda apm max performance.cmd
6 创建计划任务
6.1 打开 "任务计划程序"
6.2 在 "操作" 菜单中点击 "创建任务"
6.3 在弹出来的窗口的"常规"选项卡中,设置名称为apm,安全选项中选择以“SYSTEM”账户运行,并勾选使用最高权限运行,配置选择“Windows 10”
6.4 在“触发器”选项卡中,添加两个触发器,如下图所示
6.5 在“操作”选项卡中,新建一个操作,如下图所示。操作类型为启动程序,程序或脚本填写 "enable sda apm max performance.cmd" 注意包括双引号,起始于填写 C:\Program Files (x86)\hdparm\
6.6 如下图所示设置条件选项卡
6.7 如下图所示设置“设置”选项卡
7 测试设置是否生效
在 Windows 10 21H2 下面,`hdparm -I /dev/sda` 命令已经没法正确检测 `Advanced power management level` 信息了,必须使用第三方软件来检测设置是否生效。比如可以使用 "Crystal Disk Info",在 "菜单栏 - 功能 - 高级设置 - AAM/APM 控制" 里面,应该能看到 APM 的值被改成了 "FEh"。
测试下,在下面的情况下是否会正确调整 APM 参数:
- 睡眠后重新唤醒
- 重启。重启就是关机+开机,所以不用单独测试冷启动的场景。
- 休眠后唤醒。如果你用到休眠功能的话,也测试下。现在 Windows 10 系统默认不提供休眠的选项了。
现在不管使用电池还是连接电源,Load_Cycle_Count都不会疯涨了。