• 2008-03-20

    Ubuntu的load/unload cycles损伤硬盘的问题 - [软件]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://brucebot.blogbus.com/logs/17373564.html

     

      今天很累也很困了,但是在浏览文章中发现了Ubuntu如果设置不好,会损坏甚至毁坏笔记本硬盘的问题,于是决定将这篇文章看完并写下这篇文章。这里就是看到的第一篇文章<Ubuntu电源管理问题的说明和解决方案>,看完之后对这个所谓的Load/unload Cycle还不是很了解,于是就做了一些调查,并且发现这个问题已经发给官方了,具体BUG Report可以在这里看到(https://bugs.launchpad.net/ubuntu/+bug/104535)。请看上图,所谓的load/unload cycle就是slider与硬盘盘片接触的周期,每一个硬盘出厂前都会有这么一个参数是固定的,也就是当硬盘快接近这个出厂参数时,就意味着这块硬盘已经接近报销的边缘。在西部数据官方上找到我的硬盘的相关参数信息,里面就有一个是Load/unload cycles at ambient condition 600,00(DATA Sheet),也就是说,我的硬盘的寿命取决于现有使用的这个参数值与官方值是否接近,具体查看及设置方法如下:
    • 安装smartmontools,因为需要名为smartctl的来检查相关的信息
      sudo apt-get install smartmontools
    • 启用硬盘SMART监控功能
      sudo smartctl -s on /dev/sda
      brucebot@brucebot-laptop:/etc/laptop-mode$ sudo smartctl -s on /dev/sda
      smartctl version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
      Home page is http://smartmontools.sourceforge.net/

      === START OF ENABLE/DISABLE COMMANDS SECTION ===
      SMART Enabled.

      注:/dev/sda请选择你的硬盘,如果是IDE的,则是/dev/hda
    • 查看当前硬盘的详细状态
      sudo smartctl -d ata -A /dev/sda
      brucebot@brucebot-laptop:/etc/laptop-mode$ sudo smartctl -d ata -A /dev/sda
      smartctl version 5.37 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
      Home page is http://smartmontools.sourceforge.net/

      === START OF READ SMART DATA SECTION ===
      SMART Attributes Data Structure revision number: 16
      Vendor Specific SMART Attributes with Thresholds:
      ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
        1 Raw_Read_Error_Rate     0x000f   199   197   051    Pre-fail  Always       -       426
        3 Spin_Up_Time            0x0003   185   180   021    Pre-fail  Always       -       1733
        4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       450
        5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
        7 Seek_Error_Rate         0x000f   200   200   051    Pre-fail  Always       -       0
        9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       480
       10 Spin_Retry_Count        0x0013   095   095   051    Pre-fail  Always       -       23
       11 Calibration_Retry_Count 0x0012   100   100   051    Old_age   Always       -       0
       12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       263
      192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       153
      193 Load_Cycle_Count        0x0032   195   195   000    Old_age   Always       -       15977
      194 Temperature_Celsius     0x0022   108   099   000    Old_age   Always       -       39
      196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
      197 Current_Pending_Sector  0x0012   200   200   000    Old_age   Always       -       0
      198 Offline_Uncorrectable   0x0010   100   253   000    Old_age   Offline      -       0
      199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
      200 Multi_Zone_Error_Rate   0x0009   100   253   051    Pre-fail  Offline      -       0
      请看,红色的即为我的硬盘的load/unload cycles看起来,已经有了四分之一多了,也就是说这块硬盘的四分之一寿命已经没有了。
      当然,如果仅仅想知道这个参数,可以使用sudo smartctl -a /dev/sda | grep Load_Cycle_Count仅仅导出这个参数。如果你安装了Ubuntu,并且没有经过相应的设置,再次执行上面的命令后,load_Cycle_count的数值会不断增大。 Ubuntu默认不会改动内置的参数,笔记本硬盘内置的自动进入低耗状态的参数过于严厉,导致频繁的Load/Unload,其他系统则无视或者不使用硬盘的这一功能,反而保护了硬盘的寿命。也就是说,只有Ubuntu存在这个问题。
    • 解决方法
      1. 关闭高级电源管理模块(Advanced Power Management setting)
        Sudo hdparm -B 255 /dev/sda
        brucebot@brucebot-laptop:/etc/laptop-mode$ sudo hdparm -B 255 /dev/sda

        /dev/sda:
         setting Advanced Power Management level to disabled
      2. 使用laptop-mode-tools
        • Sudo apt-get install laptop-mode-tools
        • 查看Laptop-mode是否启动
          grep ENABLE_LAPTOP_MODE /etc/default/acpi-support
          brucebot@brucebot-laptop:/etc/laptop-mode$ grep ENABLE_LAPTOP_MODE /etc/default/acpi-support
          ENABLE_LAPTOP_MODE=false
        • 启动laptop-mode
          sudo cp /etc/default/acpi-support /etc/default/acpi-support_backup
          sudo gedit /etc/default/acpi
          找到ENABLE_LAPTOP_MODE=false,并且将其设置成true

          注:我是同时设置了两种方法,使用命令sudo smartctl -d ata -A /dev/sda多次后可以看到,Load_cycle_count的值没有再增长。至此,问题解决!
           

    收藏到:Del.icio.us




    评论

  • 这个我倒是没有碰到过这个问题的。不过也是,有些时候,为一些软件问题弄的很烦的。还好现在我的系统一直工作正常。
  • 还有个问题,你有没有比较过Ubuntu和winxp下硬盘的声音?我发现Ubuntu下读写盘比较响。起初我以为是Ubuntu的问题,后来我又装了Debian,发现也一样。
    我等Ubuntu8.04出来后再装一次看看,现在用WinXP。不能让软件系统本身太浪费精力。
  • Performance Specifications
    Data transfer rate - buffer to host
    (maximum burst rate) 150 MB/s
    Max buffer to disk 600 Mbits/s max
    Average read seek 12.0 ms (average)
    Track-to-track seek 2.0 ms (average)
    Average latency 5.5 ms
    Rotational speed 5400 RPM
    Read cache Adaptive
    Write cache Yes
    Buffer 2 MB (WD400BEAS, WD600BEAS, WD800BEAS, WD1000BEAS, WD1200BEAS, WD1600BEAS, WD2000BEAS, WD2500BEAS)
    8 MB (WD400BEVS, WD600BEVS, WD800BEVS, WD1000BEVS, WD1200BEVS, WD1600BEVS, WD2000BEVS, WD2500BEVS)
    Drive ready time 4.5 sec. (average)
    Load/unload cycles at ambient condition 600,000
    Master/Slave support N/A
    Error rate (non-recoverable) <1 in 1014 bits read

    这是我的硬盘官方DATASHEET的一部分,load/unload cycles=600,000
  • 我是在win XP下用HD Tune看的。 现在Load_Cycle_Count 已经从刚才的152460 增加到了 152475。 貌似这个参数不用过分关注吧?
    b.t.w 我的硬盘已经加电 15135 了
  • sudo hdparm -H /dev/sda
    这个命令专门为日立硬盘的使用的查看温度的。
  • 我的日立硬盘已经 152460 了

发表评论

您将收到博主的回复邮件
记住我