ハードディスクのスピンダウン

パピーを名犬にするための技、テクニック

モデレータ: 暇人, YoN, nyu

返信する
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

ハードディスクのスピンダウン

投稿記事 by シノバー »

hdparm コマンドを使い、アクセスの少ないハードディスクの回転数を落とすこと(スピンダウン)ができます。アクセスがしばらくないとハードディスクが回転数を落とす standbyモードに。アクセスがあると高速回転に戻るのに数秒かかりますが、その後は通常の速度でアクセスできます。

この方法を用いると省電力で発熱も小さくなります。長寿命も期待されますが、頻繁に回転速度を変えると却って短寿命となることがあるので、用途と時間設定に注意が必要です。

参考ページ:
http://manuu.yi.org/index.php?Linux%20% ... A%20%A1%C1 など

一般にはシステムディスクにこれを適用するのは、定期的にディスクにアクセスするプロセスを止めるなど、ちょっとたいへんです。しかしパピーはRAMディスクをうまく使うことでハードディスクへのアクセスを減らすように設計されているので、比較的やりやすいでしょう。
最後に編集したユーザー シノバー [ 14/07/31(木) 14:51 ], 累計 2 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

USBメモリでの運用

投稿記事 by シノバー »

とりわけ古いノートパソコンの内蔵ハードディスクは遅くてイライラすることがあります。SSDに換装すれば快適でしょう。でも高価なSSDを使わずとも安価なUSBメモリで代用することができます。ただしRAMは十分に、可能なまで増設しておきます。少なくとも512MBは必要です。望むらくは 1GB以上。

USBメモリにパピーをインストールし、基本はUSBメモリで運用することとして、PC本体のハードディスクはstandby状態にしておきます。

/etc/rc.d/rc.local に次の 2行を書いておきます。

コード: 全て選択

/sbin/hdparm -S 120 /dev/sda
/sbin/hdparm -y /dev/sda
1行目で本体のハードディスク /dev/sda に10分間アクセスがなければ standby に移行するよう設定。
2行目で、いますぐ standby に移行させます。

注意
Winfonts などで /dev/sda にある Windowsの仮想メモリやフォントを利用していると、/dev/sda にアクセスしています。/dev/sda にスワップ・パーティションがあると、やはりこれにアクセスします。RAMが十分に必要なのは、スワップが使えないということもあります。

USBメモリは内蔵HDD以上に遅いです。なのでUSBメモリへのアクセスも極小にしないと快適ではありません。ブラウザなどのキャッシュはゼロにするか、/tmpなどを利用しましょう。
viewtopic.php?f=25&t=2576#p20202

いずれにせよ古いハードでUSBメモリでの運用は、パピー以外では真似できません。パピーでこれができるのは、 USBフラッシュメモリへの書き込みを最小にするモードがあるからです(pmedia=usbflash ブートオプションで PUPMODE=13 となる)。
最後に編集したユーザー シノバー [ 14/07/31(木) 16:58 ], 累計 1 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

定期的にスピンダウン

投稿記事 by シノバー »

我が家ではパピーに sambaサーバーをインストールし、NASとして利用しています。主に録画を収めていて、24時間通電しているけれど、しょっちゅう観るものでもありません。これにハードディスクのスピンダウンを施しました。

ところがどういうわけか hdparm -S によるタイムアウトが有効に働きません。当該ハードディスクをアンマウントしてアクセスの無い状況にしておき、設定時間後に hdparm -C でステータスを調べても active/idele となっています。 hdparm -y を実行して hdparm -C でテストすると standby となっていることが確認できるので、スピンダウンそのものはできますが、アクセスがあると通常の回転数に戻ります。

ネットで調べてみると hdparm -S によるタイムアウトが効かないケースはあるようで、みなさんいろいろと苦労をされています。この場合、単純に定期的に hdparm -y を実行してやればよいのではないか。そのときたまたまアクセスがあった場合 hdparm -y は無視され standby には移行しない。テストしてみたが、録画視聴中に途切れるということはない。

パピーには「pschedule 定時のタスク」があるので、それを利用してもよいのだが、私は慣れないので、直接 cron を使うこととする。

/root/crontab-root というファイルを作り(ファイル名は任意、次のような内容にする。

コード: 全て選択

0 * * * * /sbin/hdparm -y /dev/sda
このあと、次のコマンドで cron に登録。
# crontab crontab-root
cron への登録状況は crontab -l で確認できる。
この例では1時間おき、毎時0分に /sbin/hdparm -y /dev/sda が実行される。

crontab -e コマンドは登録された内容を編集するものだが、mp などのコンソールエディタが立ち上がるので、慣れないと使い辛い。代わりに geany などのテキストエディタで crontab-root ファイルを使う方法を紹介した。

参考: crontab-root ファイルの書式 (コマンド man 5 crontab でも見ることができる。)
http://linuxjm.sourceforge.jp/html/cron ... tab.5.html
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

HDDへのアクセスを少なくする

投稿記事 by シノバー »

HDDが遅い場合にUSBメモリで運用する方法を紹介しまいtた。でも、USBメモリを使わず内蔵HDDにインストールされた場合でもHDDへのアクセスを少なくする方法があります。

まずはブラウザがやたらキャッシュを作るのを制限することはすでに述べました。 viewtopic.php?f=25&t=2576#p20202

パピーでは /tmpをRAMディスク上に取ります。しかし /var 以下にもシステムはいろんな書き込みをします。これを RAM上にするには、USBメモリと同じ方法が採れます。パピーが内蔵HDDにインストールされているとき、ブートオプションに pmedia=ataflash と追加します。 こうすると、usbflash と同じ動作を内蔵HDDに対して行えます。実装RAMが 512MB以上、望むらくは 1GB、十分なRAMがあることが前提です。

ただしデフォルト設定で 30分おきに pupsaveを HDDに書きに行きます。このため pupsaveを HDD上に置いている場合はHDDのスピンダウンはおすすめできません。30分おきにまたHDDが高速運転に切り替わるからです。頻繁にHDDのスピンを変更することはかえってHDDの寿命を縮めます。

Puppyイベントマネージャでセッションの保存間隔を 0 に設定すればシャットダウンまでpupsaveを書き戻さない設定ができます。シャットダウン前でも必要なときは Save アイコンをクリックすれば書き戻せます。使いこなしをうまくできるならば、このように設定しておいて、通常はHDDをスピンダウンしておくという運用も可能です。

EDIT: pupsaveへの書き込みはシャットダウンまでなくなるが、読み込みは発生します。pupsaveのある HDDのスピンダウンは難しいかもしれません。
The bar master, Shino's Bar
http://shinobar.net/
返信する