树莓派:硬盘休眠

此文转自:http://mkitby.com/2016/05/15/raspberry-pi-nas-manage-hdd-power/  我是用第二种方法实现休眠的。html

为了延长硬盘使用寿命,当硬盘不使用时,须要让硬盘休眠,目前有一些软件能够自动作这事,像 hdparm, hd-idle 和 sdparm,具体用哪一个取决于USB to SATA控制器和硬盘自己,其实说白了就是一个一个试,哪一个有用就用哪一个。固然,这里说的都是机械硬盘,固态硬盘没研究过。linux

 

注意:不要让机械硬盘频繁地休眠唤醒,这样会给电机和轴承较大负荷,会加重硬盘损耗. 通常制造商建议的最小休眠时间是 3-5 分钟。参考(http://hd-idle.sourceforge.net/)vim

 

首先查看硬盘设备名,通常就是/dev/sda,dev/sdb之类的缓存

 

sudo blkid测试

例如输出flex

 

/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="15CD-3B79" TYPE="vfat"ui

/dev/mmcblk0p2: UUID="13d368bf-6dbf-4751-8ba1-88bed06bef77" TYPE="ext4"this

/dev/sda1: UUID="7e623443-f19a-4564-8e60-e9d2170ac32a" TYPE="ext4".net

/dev/sdb1: LABEL="COLORSPACE" UUID="F8E6-4FDB" TYPE="vfat"3d

/dev/sdb2: UUID="3007-F316" TYPE="exfat"

硬盘设备名为/dev/sdb,硬盘有两个分区

 

安装和配置hdparm

先测试hdparm是否支持。

 

安装 hdparm,

 

sudo apt-get install hdparm -y

确保你的硬盘支持hdparm,

 

sudo hdparm -y /dev/sdb

若是输出以下结果,就代表支持,

 

/dev/sdb:

 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

检查硬盘是否支持写缓存功能,

 

sudo hdparm -I /dev/sdb | grep 'Write cache'

若是看到 * (星号),表示支持,

 

* Write cache

若是没有看到 * (星号),表示不支持,

 

Write cache

编辑配置文件,

 

sudo vim /etc/hdparm.conf

spindown_time值乘以 5 获得总的时间(单位秒). 例如想配置成空闲10分钟就休眠,spindown_time = 10 * 60 / 5 = 120

 

在文件结尾加入,

 

/dev/sdb {

write_cache = on

spindown_time = 120

}

若是不支持写缓存,去掉 write_cache = on。

 

重启 hdparm 服务,

 

sudo service hdparm restart

更多hdparm配置能够参考这(http://www.linux-magazine.com/Online/Features/Tune-Your-Hard-Disk-with-hdparm)

 

安装和配置 hd-idle

若是你的硬盘不支持 hdparm,或者就想试下hd-idle, 能够删除hdparm

 

sudo apt-get remove hdparm -y

hd-idle 使用一个特殊的系统文件来检测磁盘活动, 若是没有这个文件,那么就不能使用hd-idle。输入

 

cat /proc/diskstats

应该会看到以下的输出, 若是提示找不到文件或目录,那就不支持hd-idle。

 

8 16 sdb 5604 130363 146538 16780 1814 51838 429152 763380 0 18230 780150

8 17 sdb1 5075 130363 139418 15370 8 0 8 10 0 8680 15370

8 18 sdb2 512 0 6984 1290 1805 51838 429144 763360 0 9770 764650

 

hd-idle的本身编译,

 

sudo 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,

 

sudo hd-idle -i 0 -a sda -i 300 -d

You should see output like this

 

probing sda: reads: 13418, writes: 594344

probing sdb: reads: 146538, writes: 429152

 

按 Ctrl+C 中止 hd-idle

 

编辑配置文件,

 

sudo vim /etc/default/hd-idle

修改下面来开启hd-idle

 

START_HD_IDLE=true

调整空闲时间为10分钟 (60 秒 * 10)

 

HD_IDLE_OPTS="-a sda -i 600 -l /var/log/hd-idle.log"

重启服务,

 

sudo service hd-idle restart

若是hd-idle也不支持,能够试下 sdparm

 

安装和配置 sdparm

首先删除 hdparm 和 hd-idle

 

sudo apt-get remove hdparm -y

sudo dpkg -r hd-idle

安装 sdparm

 

sudo apt-get install sdparm -y

测试sdparm是否支持,中止一切硬盘操做,输入

 

sydo sdparm --flexible --command=stop /dev/sdb

应该能够看到以下输出,

 

/dev/sdb: SANHO IUSBPORT 0

若是须要每隔10分钟休眠硬盘,能够用以下crontab命令

 

sudo crontab -l | { cat; echo "/10 * * * * sdparm --command=stop /dev/sda"; } | sudo crontab -

通过以上折腾,终于能够放心了,不用担忧硬盘一天24小时不要命的转。

 

参考

http://sg.danny.cz/sg/sdparm.html

http://www.nslu2-linux.org/wiki/FAQ/SpinDownUSBHarddisks

http://hd-idle.sourceforge.net/

相关文章
相关标签/搜索