tmpfsは仮想メモリに全ファイルを保持するファイルシステム。頻繁にアクセスするファイルをtmpfsに置けば、読み書きが速くなり、HDDの負荷を減らすこともできる。
HotSaNICは取得したデータを保存するために、rrdファイルを頻繁に更新する。そこでrrdファイルをtmpfsに保存して、HDDへのアクセスを減らすようにする。
tmpfsのマウント
/tmpにマウントする。サイズは512MBを上限とする。
# mount tmpfs /tmp -t tmpfs -o size=512m
fstabに追加して起動時にマウントするようにする。
# vi /etc/fstab tmpfs /tmp tmpfs defaults,size=512m 0 0
HotSaNICの設定
HotSaNICが生成するrrdファイルは各modulesディレクトリのrrdディレクトリに保存される。rrdディレクトリをtmpfsへのシンボリックリンクとして、シャットダウン時にrrd_bakへコピー、起動時にrrdディレクトリへコピーするようにする。
rrdディレクトリをrrd_bakにリネーム。
# cd /usr/local/HotSaNIC # for mods in ./modules/* ; do mv $mods/rrd $mods/rrd_bak ; done
rrdファイルをコピーするスクリプトを作成する。
# vi copyrrd.sh
#!/bin/bash
RRDDIR=/tmp/HotSaNIC
cd "/usr/local/HotSaNIC"
. ./settings
case $1 in
start)
for mods in $RUN
do
if [ ! -d $RRDDIR/$mods ]; then
mkdir -p $RRDDIR/$mods
fi
if [ ! -e ./modules/$mods/rrd ]; then
ln -s $RRDDIR/$mods ./modules/$mods/rrd
fi
cp -f ./modules/$mods/rrd_bak/*.rrd ./modules/$mods/rrd/
done
;;
stop)
for mods in $RUN
do
if [ ! -d ./modules/$mods/rrd_bak ]; then
mkdir ./modules/$mods/rrd_bak
fi
cp -f ./modules/$mods/rrd/*.rrd ./modules/$mods/rrd_bak/
done
;;
restart)
$0 stop
$0 start
;;
esac
rrdgraphを修正してcopyrrd.shを実行するようにする。
# vi rrdgraph
case $1 in
start)
./copyrrd.sh start
echo "Starting rrdtimer..."
./rrdtimer.pl Dp
;;
stop)
echo "Stopping rrdtimer..."
if [ -e "$PIDFILE" ]; then
PID=`cat "$PIDFILE"`
for nn in $PID ; do kill $nn; done
else
echo "pid-file not found, rrdtimer not running?!"
fi
./clearall CLEAR_COUNTERS
./copyrrd.sh stop
;;
rrdgraphはそのままinitスクリプトとして使えるが、setup.plを実行すると書き換えられるので、別名でコピーして/etc/init.dにシンボリックリンクを作成。
# cp rrdgraph rrdgraph.init # ln -s /usr/local/HotSaNIC/rrdgraph.init /etc/init.d/ # update-rc.d rrdgraph.init defaults
トラックバックURL