# 安装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
-----------------------------------------------------------------------------------------------------------
参照官方给出的暂时解决办法:
代码:
创建一个名为"99-hdd-spin-fix.sh"的文件,写如下两行字(针对SATA 硬盘):
#!/bin/sh
hdparm -B 254 /dev/sda (注意:如果你是PATA硬盘这里是/dev/hda,根据自己情况修改)
并将该文件复制到以下三个位置:
/etc/acpi/suspend.d/
/etc/acpi/resume.d/
/etc/acpi/start.d/
-------------------------------------------------------------------------------------------------------------
先看一下自己硬盘的状态(sata硬盘)
sudo hdparm -I /dev/sda |grep Advanced
接下来看 laptopmode的状态(默认是false,不启用)
grep ENABLE_LAPTOP_MODE /etc/default/acpi-support
(其实把acpi-support卸载调也可以)
如果显示结果是 ENABLE_LAPTOP_MODE=false
将其修改为ture
sudo gedit /etc/default/acpi-support
一般就是最后一行改成 ENABLE_LAPTOP_MODE=true
最后是修改laptop-mode.conf
sudo gedit /etc/laptop-mode/laptop-mode.conf
开启
CONTROL_READAHEAD=1 (默认开启)
NOLM_READAHEAD=128
改成
NOLM_READAHEAD=3072 (3MB)
(176行)这样可以有效减少硬盘读写次数
关闭或更改HD_IDLE_TIMEOUT(硬盘进入待机)
建议关闭CONTROL_HD_IDLE_TIMEOUT=0
如不关闭可以修改对应的等待时间
(在200行上)
将其中的 CONTROL_HD_POWERMGMT=0
修改成 CONTROL_HD_POWERMGMT=1
提示:可以通过查找 CONTROL_HD_POWERMGMT
(在215行上)其实这项关闭也没关系,毕竟那是硬盘的默认值
如果你愿意可以将下面
BATT_HD_POWERMGMT=1
改成128或以上的值(最大255)
LM_AC_HD_POWERMGMT=255
修改为254
注:128以下是到了等待时间后硬盘进入待机(停止转动)
数值越大等待时间越长
因为电源管理中255没有确定,一般就是254