Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1754741
  • 博文数量: 787
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-22 15:17
文章分类

全部博文(787)

文章存档

2008年(787)

我的朋友

分类:

2008-09-25 16:06:39

原作者:Solrex Yang
注意:本人非硬件专家,下面我仅仅阐述遇到的问题,解决方法,以及我的一些猜想。要仔细的了解这个 BUG,请阅读 Ubuntu Bug 列表的 BUG 59695:High frequency of load/unload cycles on some hard disks may shorten lifetime

我的笔记本是 DELL Latitude D630,从一开始使用我就发现 D630 的硬盘在正常使用中会经常发出“咯吱、咯吱”的响声(不是光驱,比光驱的咯吱声音要小得多),虽然我在 BIOS 里设置了硬盘模式为 Quiet。我一直认为这是正常现象,读取硬盘总会发出声响的。去年我曾经注意到 Ubuntu 的一个硬盘操作 BUG 引起了广泛的关注,但是在新闻中只提到了在电池模式下出现的问题,我也就没有仔细去浏览,而且我想随着 Ubuntu 升级,这个 BUG 应该被早已 fix。

但是今天我被一个事实给吓到了:我一直习以为常的“咯吱、咯吱”声居然是系统 BUG!而且这个 BUG 同样存在于 Windows 和 Linux 。

令我信服这一点的是,在我应用了 Ubuntu Bug 列表中提供的解决方案后,Ubuntu 下的硬盘“咯吱、咯吱”声消失了,而 Windows XP 下仍然会发出这种声音。

重要评论 by 徐宥:windows 没有专门的笔记本版, 电源管理的策略都是沿用桌面的. 如果节能设置为一直打开, 是没有问题的.

简单的来说,这个 BUG 讲述的是笔记本电脑的电源管理的一个问题:笔记本为了保持低功耗,采用了一个方法,就是在不使用硬盘的时候,将硬盘磁头 park 起来;需要使用的时候,再 unpark 磁头。而在实际使用中,这个节电策略被滥用了,导致过于频繁的 park/unpark 磁头,造成磁盘寿命变短,而且会带来磁盘“咯吱、咯吱”的噪声。这是很多笔记本电脑硬盘使用时间不超过一年的一个原因。

一些?**薪樯埽?一般磁盘设计承受的加载循环计数最多为 600,000 次,而当超过 300,000 次的时候磁盘的响应速度就会变慢,所以平均每小时的加载循环次数应该在 15 次左右,这样才能保证大约 4 年不关机的使用寿命。而我正常使用 7 个月的 D630 平均每小时加载循环次数为 76 次,是设计次数的 5 倍!!

有一个工具可以用来检测笔记本电脑硬盘的加载循环计数 smartmontools,这是开源软件,有 Linux 和 Windows 版本,在 Ubuntu 下可以直接 apt-get。Ubuntu 下用 sudo smartctl -a /dev/sda 命令,Windows 命令行下用类似的命令,可以打印出磁盘的检测信息,主要关注下面两行:
9 Power_On_Hours 0x0032 099 099 000 Old_age Always - 1647
193 Load_Cycle_Count 0x0032 037 037 000 Old_age Always - 126354

Power_On_Hours 就是硬盘使用的总时间,Load_Cycle_Count 就是加载循环计数,二者相除,就能得到每小时加载循环次数,比如我的就是 126354/1647 = 76 次,5倍于设计水平,看了真让我感到恐怖。

Ubuntu 下推荐的解决方案有一个,我简化了一下,将下面的内容保存成一个脚本文件 fix_hdd.sh,用 sudo sh fix_hdd.sh 运行,然后重启即可:
cat > 99-hdd-spin-fix.sh << EOF
#!/bin/sh
hdparm -B 255 /dev/sda
EOF
chmod a+x 99-hdd-spin-fix.sh
cp 99-hdd-spin-fix.sh /etc/acpi/suspend.d/
cp 99-hdd-spin-fix.sh /etc/acpi/resume.d/
cp 99-hdd-spin-fix.sh /etc/acpi/start.d/

使用这个解决方案后,我发现在 Ubuntu 下我的 D630 磁盘不会发出频繁的“咯吱”声了,用 smartctl 检测发现 Load_Cycle_Count 增加的非常慢,问题应该是解决了。然后我重启到 Windows XP 下,发现仍有“咯吱”声,用 smartctl 测试了一下,在 20 分钟内大约有 18 个加载循环,和 76 次每小时的平均计数差不多,说明 windows 下也存在这个问题。

这就有点儿让我想不通了,Linux 下出现问题很容易理解,硬件厂商对 Linux 的支持本来就弱,为什么 Windows 下也会有这个问题?我想这些硬盘厂商在出品之前肯定对硬盘在各种情况下的表现进行过很多次测试,Windows 下的测试应该是最重要的一个吧。难道是故意的?

快速链接:      
--------------------next---------------------

阅读(1754) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~