为了延长硬盘使用寿命,当硬盘不使用时,需要让硬盘休眠,目前有一些软件可以自动做这事,像 hdparm, hd-idle 和 sdparm,具体用哪个取决于USB to SATA控制器和硬盘本身,其实说白了就是一个一个试,哪个有用就用哪个。当然,这里说的都是机械硬盘,固态硬盘没研究过。
注意:不要让机械硬盘频繁地休眠唤醒,这样会给电机和轴承较大负荷,会加剧硬盘损耗. 一般制造商建议的最小休眠时间是 3-5 分钟。参考(http://hd-idle.sourceforge.net/)
首先查看硬盘设备名,一般就是/dev/sda,dev/sdb之类的
- blkid
例如输出
硬盘设备名为/dev/sda,硬盘有1个分区
安装和配置hdparm
先测试hdparm是否支持。
安装 hdparm,
- apt-get install hdparm -y
确保你的硬盘支持hdparm,
- hdparm -y /dev/sdb
如果输出如下结果,就表明支持,
- /dev/sda1:
- issuing standby command
如果看到类似如下输出,就表明不支持,可以跳到 hd-idle 或者 sdparm,
- dev/sda:
- issuing standby command
- SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
检查硬盘是否支持写缓存功能,
- hdparm -I /dev/sdb | grep 'Write cache'
如果看到 * (星号),表示支持,
- * Write cache
如果没有看到 * (星号),表示不支持,
- Write cache
编辑配置文件,
- vim /etc/hdparm.conf
- spindown_time值乘以 5 得到总的时间(单位秒). 例如想配置成空闲10分钟就休眠,spindown_time = 10 * 60 / 5 = 120
在文件结尾加入,
- /dev/sda {
- write_cache = on
- spindown_time = 120
- }
如果不支持写缓存,去掉 write_cache = on。
重启 hdparm 服务,
- service hdparm restart
更多hdparm配置可以参考这(http://www.linux-magazine.com/Online/Features/Tune-Your-Hard-Disk-with-hdparm)
安装和配置 hd-idle
如果你的硬盘不支持 hdparm,或者就想试下hd-idle, 可以删除hdparm
- apt-get remove hdparm -y
hd-idle 使用一个特殊的系统文件来检测磁盘活动, 如果没有这个文件,那么就不能使用hd-idle。输入
- cat /proc/diskstats
应该会看到如下的输出, 如果提示找不到文件或目录,那就不支持hd-idle。
hd-idle的自己编译,
- apt-get install build-essential fakeroot debhelper -y
获取源代码,
- wget http://sourceforge.net/projects/hd-idle/files/hd-idle-1.05.tgz
解压缩进入目录
- tar -xvf hd-idle-1.05.tgz && cd hd-idle
编译安装,
- dpkg-buildpackage -rfakeroot
- sudo dpkg -i ../hd-idle_*.deb
继续检查硬盘是否支持hd-idle,
- hd-idle -i 0 -a sda -i 300 -d
You should see output like this
probing sda: reads: 13418, writes: 594344
按 Ctrl+C 停止 hd-idle
编辑配置文件,
- vim /etc/default/hd-idle
修改下面来开启hd-idle
- START_HD_IDLE=true
调整空闲时间为10分钟 (60 秒 * 10)
- HD_IDLE_OPTS="-i 0 -a sda -i 600"
重启服务,
- service hd-idle restart
如果hd-idle也不支持,可以试下 sdparm
安装和配置 sdparm
首先删除 hdparm 和 hd-idle
- apt-get remove hdparm -y
- dpkg -r hd-idle
安装 sdparm
- apt-get install sdparm -y
测试sdparm是否支持,停止一切硬盘操作,输入
- sdparm --flexible --command=stop /dev/sda
应该可以看到如下输出,
- /dev/sda: SANHO IUSBPORT 0
如果需要每隔10分钟休眠硬盘,可以用如下crontab命令
- crontab -l | { cat; echo "/10 * * * * sdparm --command=stop /dev/sda"; } | sudo crontab -
经过以上折腾,终于可以放心了,不用担心硬盘一天24小时不要命的转。

评论