Raspberry硬盤功耗管理

Raspberry Pi從零開始搭建低成本NAS(11)-硬盤功耗管理

爲了延長硬盤使用壽命,當硬盤不使用時,需要讓硬盤休眠,目前有一些軟件可以自動做這事,像 hdparm, hd-idle 和 sdparm,具體用哪個取決於USB to SATA控制器和硬盤本身,其實說白了就是一個一個試,哪個有用就用哪個。當然,這裏說的都是機械硬盤,固態硬盤沒研究過。

注意:不要讓機械硬盤頻繁地休眠喚醒,這樣會給電機和軸承較大負荷,會加劇硬盤損耗. 一般製造商建議的最小休眠時間是 3-5 分鐘。參考(http://hd-idle.sourceforge.net/)

首先查看硬盤設備名,一般就是/dev/sda,dev/sdb之類的

sudo blkid

例如輸出

/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="15CD-3B79" TYPE="vfat"
/dev/mmcblk0p2: UUID="13d368bf-6dbf-4751-8ba1-88bed06bef77" TYPE="ext4"
/dev/sda1: UUID="7e623443-f19a-4564-8e60-e9d2170ac32a" TYPE="ext4"
/dev/sdb1: LABEL="COLORSPACE" UUID="F8E6-4FDB" TYPE="vfat"
/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="-i 0 -a sda -i 600"

重啓服務,

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/

發佈了18 篇原創文章 · 獲贊 28 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章