ブログ

Armadillo-IoT(G3/G3L)/X1: システムのログファイル(syslog等)のサイズの肥大化を防ぐ

at_kazutaka.bito
2017年1月6日 12時53分

Armadillo-IoT(G3/G3L)、Armadillo-X1は、ファイルをストレージに保存するため、 電源OFFにしても、syslog等のログファイルは残ります。

Armadilloを常時稼働していたり、 Armadilloの電源をOFFにすることはあっても、バッテリ電池でRTCの時刻を保持している場合は、 システムのログファイル(syslog等)は、 /etc/logrotate.d/rsyslog 内の

/var/log/syslog
{
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                invoke-rc.d rsyslog rotate > /dev/null
        endscript
}

のような設定に基づき、daily(毎日)、weekly(毎週)などの時間の条件で、 ローテーションされますので、ファイルのサイズが大きくなり続けることはありません。 また、上記ファイル内で、ローテーションするファイル数も設定できるため、ファイル数も増え続けることはありません。 (上記の場合は、"rotate 7"なので、ファイル数は7つまで。)

ただ、開発、評価など、電源ON/OFFが頻繁(かつRTC用バッテリ電池が未使用)な場合は、 電源OFFの度に時刻情報がリセットされるため、daily(毎日)、weekly(毎週)などの時間条件で、 ログファイルがローテートされません。 その結果、ログファイルが肥大化しつづけ、ストレージを圧迫します。

例)起動直後のログファイル(syslog)のサイズ

(syslogのファイルサイズを確認)

root@armadillo:~# ls -l /var/log/syslog
-rw-r----- 1 root adm 548577 Jan  1 09:00 /var/log/syslog

(電源OFF->ONして、ログイン直後にsyslogのファイルサイズを確認)

root@armadillo:~# ls -l /var/log/syslog
-rw-r----- 1 root adm 627575 Jan  1 09:00 /var/log/syslog

(電源OFF->ONして、ログイン直後にsyslogのファイルサイズを確認)

root@armadillo:~# ls -l /var/log/syslog
-rw-r----- 1 root adm 703964 Jan  1 09:00 /var/log/syslog

上記の例のとおり、syslogのファイルはログが追加されているため、サイズが大きくなりつづけています。 また、時刻情報がリセットされているため、ファイルの生成時刻は、リセットされた時刻(Jan 1 09:00)が打刻されています。 これを繰り返すと、 /var/log/syslog が肥大化しつづけます。

これを回避する方法として、ログのローテーションを強制的に行う方法があります。

root@armadillo:~# ls -l /var/log/syslog*
-rw-r----- 1 root adm 1125573 Jan  1 09:00 /var/log/syslog

(下記のようにlogrotateで強制的にログをローテーションします。)

root@armadillo:~# logrotate -f /etc/logrotate.conf

(過去のsyslogがsyslog.1に移動して、syslogのサイズが減っています。)

root@armadillo:~# ls -l /var/log/syslog*
-rw-r----- 1 root adm     547 Jan  1 09:01 /var/log/syslog
-rw-r----- 1 root adm 1125573 Jan  1 09:00 /var/log/syslog.1

以降、"logrotate"を繰り返しても、 /etc/logrotate.d/rsyslog 内で設定されたrotateの数よりファイル数は増えません(最も過去のログファイルが消える)ので、 システムのログファイルのサイズの肥大化を防ぐことができます。