[转载]Ubuntu笔记本硬盘寿命相关Load_Cycle_Count
Ubuntu系统的ACPI电源管理机制存在缺陷,会大幅减少笔记本硬盘的寿命。
如果安装了Ubuntu的笔记本用户转入电池供电模式,则“/etc/acpi/power.sh”中的默认配置会导致极其频繁的载入循环,报告称100 小时即可达到7000多次,而资料显示大多数笔记本硬盘最多只能承受60万次这种循环。换算下来,这相当于一块全新的笔记本硬盘只能连续实用不到1年。


这个问题主要出在笔记本上,此Bug造成的后果为令硬盘的Load/Unload Cycle次数疯狂增长,我的机器就不幸中彩,每分钟就增加好几次,网上称一般硬盘的设计是能够承受600000次。最让我受刺激是我一个朋友跟我差不多 时间买的硬盘,他的这个数值是0,而我的是11060……

先来验证下这个问题……,需要安装smartmontools包(sudo apt-get install smartmontools)。
然后开启S.M.A.R.T.监视,运行sudo smartctl -s on $HDD($HDD在我机器上是/dev/sda),然后运行sudo smartctl -a $HDD | grep Load_Cycle_Count。
输出结果如下:
225 Load_Cycle_Count 0x0032 099 099 000 Old_age Always - 11060
我的是11060,刷新几次,如果你的数值增长很快,那很幸运,你中彩了。

解决办法,网上有两个:
方法1、创建一个名为"99-hdd-spin-fix.sh"的文件(文件名保留99-和.sh,中间可以随便写),写如下两行字:
#!/bin/sh
hdparm -B 254 /dev/sda
并将该文件复制到以下三个位置:
/etc/acpi/suspend.d/
/etc/acpi/resume.d/
/etc/acpi/start.d/

注:原作者说这种方法只适用于SATA硬盘,不过我的硬盘是IDE的,也有效。此外,据说这种解决方法会造成硬盘过热,不过现在是冬天,感觉不太明显,再看看吧。

方法2、安装laptop-mode-tools(好像UBuntu 7.10默认就装了的),并修改文件/etc/laptop-mode/laptop-mode.conf,设置CONTROL_HD_POWERMGMT=1。

注:第二种方法测试了下,在我的机器上无效。


上面两个方法都需要用sudo执行。

反正现在我的Load/Unload Cycle数是不再增长了,貌似解决了吧。不过感觉硬盘地方有点热,心里作用?


其他人说的第二种方法:
第二种方法应该是这样,本人验证有效:

In /etc/laptop-mode-laptop-mode.conf:
CONTROL_HD_IDLE_TIMEOUT=1
LM_AC_HD_IDLE_TIMEOUT_SECONDS=300
LM_BATT_HD_IDLE_TIMEOUT_SECONDS=300
NOLM_HD_IDLE_TIMEOUT_SECONDS=7200
CONTROL_HD_POWERMGMT=1
BATT_HD_POWERMGMT=254
LM_AC_HD_POWERMGMT=255
NOLM_AC_HD_POWERMGMT=255

In /etc/default/acpi-support:
ENABLE_LAPTOP_MODE=true
SPINDOWN_TIME=60

In /etc/acpi/power.sh:
Changed "$HDPARM -B 1 /dev/$drive 2>/dev/null" to "$HDPARM -B 254 /dev/$drive 2>/dev/null"


acpi-support 这个包,你仔细看/etc/acpi/power.sh

针对laptop确实存在

function laptop_mode_enable {
$LAPTOP_MODE start

for x in /sys/bus/ide/devices/*/block; do
       drive=$(basename $(readlink $x));
       $HDPARM -S $SPINDOWN_TIME /dev/$drive 2>/dev/null
       $HDPARM -B 1 /dev/$drive 2>/dev/null
done

for x in /sys/bus/scsi/devices/*/block; do
       drive=$(basename $(readlink $x));
       $HDPARM -S $SPINDOWN_TIME /dev/$drive 2>/dev/null
       $HDPARM -B 1 /dev/$drive 2>/dev/null
done
}


Bugzilla中对这个问题的讨论结果呢,我大概的看了一下,是两个解决方案:

A, 因为这个情况是在 laptop_mode_enable的时候才会起的效果,可以在/etc/laptop-mode/laptop-mode.conf
中,将
CONTROL_HD_POWERMGMT=1

另外一种思路是针对ACPI对硬盘的控制的:
B, 首先确保你是一个有sudo权限的帐户,或者提升了权限为root, 创建一个
"99-hd-spin-fix.sh"   请确认是99这样一个启动顺序(策略)
    然后在这个文件中写入下面的信息
#!/bin/sh
hdparm -B 255 /dev/sda  
它针对PATA硬盘修复了上述问题

保存退出后,将这个sh文件拷贝到下面的三个位置
    /etc/acpi/suspend.d/
    /etc/acpi/resume.d/
    /etc/acpi/start.d/
就可以了

希望这样一个介绍能协助解决这个困扰

以下是我别处转来的。 http://forum.ubuntu.org.cn/viewt ... d9b62562fb6f5212767


https://launchpad.net/bug59695.html

Bug #59695, first reported on2006-09-09 by Gilles Schintgen

从这个BUG被提交到现在,ubuntu都经过了6.10(06年10月发布).7.04(07年4月发布)和7.10(07年10月18日发布)3个正式发布版了。

您不如贴个win98的xxx bug 来的有意义。

再说了,WINDOWS那么多次谋杀都死不了,这点算啥,起码知道的话,通过修改参数什么的可以解决。

如果是windows系统出现这种BUG,只有等无敌的ms发布下个补丁。