LinuxでRouterを作る - CFの寿命を延ばすために

Last Modified: 2004.02.18

11. CFの寿命を延ばすために
CFへの書き込みは、30万回で寿命になる。。
10分に1回書き込んだとしても、1年で52,560回の書き換えになる。危ない。
CFの寿命を延ばすために、メモリをディスクとして使う tmpfs を利用する。
tmpfsについては、http://www-6.ibm.com/jp/developerworks/linux/011207/j_l-fs3.htmlを参照。

ところで、こんなやり方でいいのかな....?

1. /var/logに頻繁に書き換えがあるファイルを集める。

/var/lib/logrotate.status, /var/run/utmp, /var/dhcpを/var/logへのシンボリックリンクとする。
なお、xntpdが使うntpd.driftファイルは、既に/var/logに置くように設定してある。

 [root@router root]# cd /var/lib
 [root@router lib]# cp -p logrotate.status ../log
 [root@router lib]# rm logrotate.status
 [root@router lib]# ln -s ../log/logrotate.status .
 [root@router lib]# 
 [root@router lib]# cd /var/run
 [root@router run]# cp -p utmp ../log
 [root@router run]# rm utmp
 [root@router run]# ln -s ../log/utmp .
 [root@router run]# 
 [root@router run]# cd /var
 [root@router var]# cp -a dhcp log
 [root@router var]# rm -r dhcp
 [root@router var]# ln -s log/dhcp .

2. /etc/rc.localの編集

/var/logをtmpfsとするように、/etc/rc.localの最後に以下を書き加える。

 cp -a /var/log /tmp                                      <--- 現在の/var/logの内容をバックアップ
 mount tmpfs /var/log -t tmpfs -o size=10m                <--- /var/logを最大10Mのtmpfsとしてマウント
 cp -a /tmp/log/* /var/log                                <--- 元の/var/logの内容をコピー
 rm -rf /tmp/log                                          <--- バックアップの削除

3. /etc/init.d/haltの編集

tmpfs上の/var/logの内容は、再起動すると消えてしまう。
再起動時に現在の状況を保持するため、/etc/init.d/haltを編集する。

 # Kill all processes.
 [ "${BASH+bash}" = bash ] && enable kill
 
 #runcmd "Sending all processes the TERM signal..." /sbin/killall5 -15
 #sleep 5
 #runcmd "Sending all processes the KILL signal.."  /sbin/killall5 -9
 
 echo "Sending all processes the TERM signal..."
 kill -15 -1
 sleep 5
 echo "Sending all processes the KILL signal.."
 kill -9 -1
 
 # umount tmpfs                                           <--- 上のkill all processesの次に追加
 cp -a /var/log /tmp                                      <--- 現在の/var/logの内容をバックアップ
 umount /var/log                                          <--- /var/logをアンマウント
 cp -af /tmp/log/* /var/log                               <--- 現在の/var/logの内容をコピー
 rm -rf /tmp/log                                          <--- バックアップの削除
 
 # Write to wtmp file before unmounting /var
 halt -w

4. 動作確認

dfコマンドで確認してみる。

 [root@router root]# df
 Filesystem           1k-blocks      Used Available Use% Mounted on
 /dev/hdc1                58453     46811      8514  85% /
 tmpfs                    10240       844      9396   9% /var/log

<Prev Top Next>
Copyright(C) 2001-2003 Katsuyuki Kobayashi.
このサイトへのリンクや引用時はメール頂戴
webmaster@kkoba.com