ubuntu の仮想マシンをきれいに整理しようとしたらログがいっぱいあることに気づいた。
現在のログの容量を確認する。
journalctl --disk-usage
実行例
$ sudo journalctl --disk-usage Archived and active journals take up 344.0M in the file system.
調べていたら、Storage=volatile
でファイルが /var/log にない場合でも disk-usage がゼロにはならない。
なので、--disk-usage
はディスクの使用量ではなく、ログの容量である。
Storage=auto
のとき
実際に保存されているログの容量
takuya@pi-ubuntu:$ du -cksh /var/log/journal/ 345M journal/ 345M total
journalctl が報告するディスク使用量(ログ容量)
takuya@pi-ubuntu:/var/log$ sudo journalctl --disk-usage Archived and active journals take up 344.0M in the file system.
Storage=volatile
のとき
journald が報告するディスク使用量
takuya@pi-zero:~ $ sudo journalctl --disk-usage Archived and active journals take up 9.2M in the file system.
実際のディスク使用量
sudo du -cksh /var/log/journal/ 8.0K /var/log/journal/ 8.0K 合計
/run/log/journal (tmpfs/RAMディスク)にファイルが格納されている。
takuya@pi-zero:~ $ sudo du -cksh /run/log/journal/ 9.3M /run/log/journal/ 9.3M 合計
ログ削除
不要なログを削除する
sudo journalctl --vacuum-time=3d
今すぐ全部消す
sudo journalctl --vacuum-time=1sec
ログ設定の見直し
rsyslog (syslog)に転送する*1ので、journald 自体のログはそこまでいらないかもしれない。 /etc/systemd/journald.conf
Storage=volatile SystemMaxUse=50M ForwardToSyslog=yes
journald を少なくすると、systemctl status でのログが見づらいので少々困るが、安定運用してたらあまり困ることはない。 docker の起動ログとかゴミばっかり。
ログ設定の反映
systemctl status systemd-journald
rsyslog のほうが tail し易いので私は好き
まとめ
journalctl はディスクを結構食いつぶす。
現在の使用量は次のコマンドでわかる。
sudo journalctl --disk-usage
ただし、Storage設定がauto persist のときにのみ信用して良い。