でもなんかpolipo入れればネットが速くなる魔法のソフトのような理解をしている方もいるみたい。polipoはあくまでもproxyサーバーなので。そこのとこをひとつよろしくね。
さて、MacユーザやWindowsユーザの苦労を尻目に快適に動いている我等が ubuntu でのpolipoなのですが、先日ニコニコ動画を連続視聴していましたら、急にストリームが受信できなくなって、なんでかなーと調べたら、polipoのキャッシュを保存してあるHDDのパーティションの使用率が100%になっていました。(^_^;)
いやあ、あせったあせった。
polipo にはディスクキャッシュのサイズを指定する設定がないみたい。そんなわけでディスクキャッシュを切り詰める、polipo_trimcache というツールがあるので、さくっと落として利用。
インストール
polipo_trimcache は/usr/local/bin に放り込みました。~/bin に入れてそこからリンクを貼ってもいいかもしれません。wget http://ely.ath.cx/~piranha/software/polipo_trimcache/polipo_trimcache-0.2.py
sudo mv polipo_trimcache-0.2.py /usr/local/bin
cd /usr/local/bin
sudo ln -s polipo_trimcache-0.2.py polipo_trimcache
使い方
sudo polipo_trimcache /var/cache/polipo 1000Mのように使います。上の例は、サイズを1Gに指定しています。
それで、後は上のコマンドを定期的にシェルスクリプトで動かせばいいわけですが、今回のように動画連続視聴でキャッシュいっぱいとか、いつハードディスクが満杯になるかわかりません。
いろいろ考えたんですが、 quota 使うとか、dfを10秒ごとに回して使用量をチェックするとか。
んでまあ、ファイルのイベントを通知する inotify を利用することにしました。
キャッシュディレクトリを監視し、新規にファイルが作られたら、HDDの空き容量をチェックして、指定した閾値以上になったら polipo_trimcache を実行します。
事前に polipo_trimcache と inotify が必要なので入れておきます。
sudo apt-get install inotify-tools入れたら以下のスクリプトを polipo-diskcache-check.sh として保存します。実行属性を付けてね。
#!/bin/sh
# last updated : 2008/03/19 02:44:25 JST
# $Id: polipo-diskcache-check.sh,v 1.2 2008/03/18 18:04:30 yama Exp $
# polipo のキャッシュのあるパーティションの使用率が指定した
# パーセントを越えるとキャッシュを指定したサイズまで削除する。
#
# 設定
# キャッシュのあるディレクトリを指定する。
CacheDir="/var/cache/polipo"
# キャッシュのあるパーティションの使用割合(パーセントで指定する)
LimitDiskSize=84
# 指定サイズまで切り詰める。
CacheSize="1200M"
# polipo_trimcach の指定。
polipo_trimcache='/usr/local/bin/polipo_trimcache'
#---------------------------------------------------
#echo "初期値は、" $LimitDiskSize "%です。"
while inotifywait -q -q -r -e create $CacheDir ; do
AB=`df --sync /var | awk '/^\/dev/{sub(/\%/,"", $5);print $5}'`
if [ $AB -gt $LimitDiskSize ]; then
nice -n 15 $polipo_trimcache $CacheDir $CacheSize &> /dev/null
fi
done
あとはこいつを実行すれば、キャッシュがHDDを圧迫しそうになったら自動的にお掃除してくれます。
/etc/init.d/polipo を修正して同時に起動するようにしておくと楽でしょう。
2008/03/19 追記:
具体的には、/etc/init.d/polipo の40行目あたり、の下に
case "$1" in
start)
echo -n "Starting $DESC: "
$PPCTL start
polipo-diskcache-check.sh &と追記。
45行目あたり、
の下に
stop)
echo -n "Stopping $DESC: "
$PPCTL stop
killall polipo-diskcache-check.sh inotifywaitを追記します。
後は、
sudo /etc/init.d/polipo restartとしてpolipoを再起動し、
ps aux | grep polipoと、psコマンドでちゃんと動いているか確認してみてください。
いやあ便利べんり。ubuntu 最高。
0 件のコメント:
コメントを投稿