df コマンドでディスク容量が 100% として表示される事象があったときの対応メモ
概要
対処として不要ファイル削除や access_log削除を実施するも、ディスク容量に大きく影響することもなかった。
また、ルート「/」で du コマンド ($ du -ch) を実行するも 5.8GB/30GB の使用量となる。
その後の調査で、過去に削除したデータが kernel 上に残ることがわかり、該当プロセスを再起動することで正常なディスク容量となった。
実行手順
■ 確認方法
以下の例は rsyslogd 実行中に、/var/log/messages を削除した場合となります。
1. 下記のコマンドを実行します。lsof [1] は、オープン状態のファイルを表示します。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
# lsof / | sort -k7 -nr | grep deleted
rsyslogd 2294 root 23w REG 259,1 747870 12586215 /var/log/messages (deleted)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
[1] lsof
https://man7.org/linux/man-pages/man8/lsof.8.html
2. 上記のように (deleted) ファイルが存在していた場合、
該当するプロセスを再起動しファイルが完全に削除されたか du コマンドと df コマンドにて確認します。
以上で改善されない場合はもう一度 「1」 を実行して (deleted) が残っているか確認してください。
その後、ps コマンド ($ ps -ef | grep {プロセスを特定するための文字列}) にてプロセスを確認
ゾンビプロセスとして残っていた場合は 強制的に停止 kill コマンド($ kill {プロセス番号}) するなどをしてください。
※ただし kill コマンド する場合はシステムに影響がないことをよく確認してください