概要
- systemd-journald が予想以上の ディスクI/O を発生させている問題
- Debian 13環境、 カーネル6.12.57、XFSファイルシステムでの再現
- 2行/秒 のログ書き込みで ~50 IOPS 発生
- syslogに比べて 非効率な書き込みパターン とファイルサイズの肥大化
- 以前報告された #15292 Issue の再発
systemd-journaldによる過剰なディスクI/O問題
- systemd-journald は、ログをディスクに書き込む際に 異常に高いIOPS を発生させる現象
- Debian 13、カーネルバージョン 6.12.57+deb13-amd64、XFSファイルシステム上で確認
- syslog と比較して、同等のログ量でも IO負荷が桁違い に高い
- 2行/秒 のログ書き込みで ~50 IOPS を消費
- VM上での観測例: iotop などのツールを用いても高IOPSを確認可能
- journaldのファイル形式 が非効率で、実際のログサイズよりも ファイルサイズが数倍大きくなる 傾向
- クラッシュや不正シャットダウン時 にファイルが破損しやすいという報告もあり、 堅牢性にも疑問
- 以前のIssue (#15292) と同様の内容で、根本的な解決がされていない状況
再現手順
- journald を ディスク書き込みモード で稼働させる
- XFSファイルシステム を使用する
- VM上で 一定間隔(例:2秒ごと) にログエントリを出力し続ける
- VMのIOトラフィックを監視 し、journaldによる高いIOPSを確認
- syslog に切り替えた場合と比較すると、journaldの 非効率性 が明らか
根本的な課題と考察
- journaldのログフォーマット が、頻繁なメタデータ更新や小さな書き込みを多発させる設計
- バッファリングや書き込み合成 が不十分で、物理I/Oの発生頻度が高い
- ログファイルの肥大化 および 破損リスク の増加
- syslog などの従来方式に比べて、 パフォーマンス・堅牢性ともに劣る 場合がある
推奨対応策
- journald.conf の各種パラメータ( Storage=, SyncIntervalSec= 等)を調整し、I/O頻度を抑制
- バッファリングの強化 や 書き込み合成の有効化 を検討
- ログバックエンドをsyslogに切り替える ことで、I/O負荷の低減
- journaldの設計改善要望 をsystemdコミュニティへ再度提起
- 定期的なバックアップと検証 による、 ログ破損リスク への備え
まとめ
- systemd-journald は現状、 高頻度なディスクI/O や ログファイル肥大 などの問題を抱える
- 運用環境に応じてsyslogへの切り替え や journald設定の最適化 が推奨
- systemdコミュニティ へのフィードバックと、 今後の改善動向の注視 が必要
https://github.com/systemd/systemd/issues/40262#issuecomment...