[Linux] ディスク使用率チェック(df, du, lsof)とdfバグを解決方法


Devlopment note / Linux    作成日付 : 2019/10/24 21:46:31   修正日付 : 2019/10/24 21:47:26

こんにちは。明月です。


CentOSを運用する時にハードディスクの量を確認しべきな時があります。それを「df」,「du」のコマンドで確認ができます。

でも、「df」と「du」の場合はチェックする方法が違い「df」の場合でバグが発生する時があります。


最近、CentOS運用中でサーバディスクがいっぱいになった時があります。普通のローカルのウィンドウPCだとハードディスクの量が足りなかったらアラムメッセージが出るからすぐ気づきますが、CentOSの場合は別にメッセージもないし、普通はリモートでターミナルで運用するからよく知ることが大変ですね。

私の場合はファイルをアップロードする時に急にアップロードができなくなって、何かとみたらハードディスクがいっぱいになっていました。

サーバでそれぞれのアプリケーションを運用するからログがたくさん貯まっていましたよね。よく確認しなければならないです。


その時に確認する方法が「df -h」コマンドでした。rootで「du -hs *」で確認する方法もあります。

すごく簡単です。そして実際に「df -h」と「du -hs *」のコマンドを実行すれば「df -h」の方が処理速度が早いです。


でもこの「df -h」はバグがあります。「df」のコマンドはそれぞれのアプリケーションでよく使うコマンドなので困りますね。

上のイメージで自分のファイルリストを見れば、トムキャットのログがすごく貯まっていますね。約36GBファイルが2つありますね。ログで。。。

実は私がトムキャットの設定が間違っているから発生したことですが、一応、そのことは対応してログを消さなければならないですね。それでそのファイルを消しました。

それでもう一度「df -h」と「du -hs *」を確認すると「du -hs *」で見るのは確実に60GBが減らしました。でも「df -h」はそのままですね。

私が確かにログファイルを消したので「du -hs *」の結果が合ってると思います。

そうすると「df -h」が問題ですが。


様々を調べると多分「IOライブラリ」と関係がありそうです。コネクションによって問題が発生したと意味ですが。。コネクションによって問題になる気がします。

以前にも私の場合は同じエラーがなった時があります。その時もハードディスクの使用率が「100%」まで使ったことがあります。やはりその時もログを全て消しましたが、ディスクがいっぱいでエラーに発生して再起動した記憶があります。

そのことが多分「df -h」と関係がありそうですね。


私の結論は「du」のコマンドは物理的データを確認するから正確値で出ますが、IOと関係あるライブラリを「df」コマンドと関係があり、実際にディスクが空いても「df -h」上でデータがいっぱいになっているともうファイル書き込むのが出来ないという意味です。


それで「lsof」コマンドでIOクリアができるので、インストールしましょう。

そして「lsof」コマンドを実行したら下記とおりの結果が出ました。

確実に「5388」のPSを持っているアプリが「deleted」ファイルのコネクションを捕まっていることが見えます。プロセスキルするほうが簡単ですが、ただプロセスキルよりなんのプログラムということを確認して再起動がいいでしょう。

「ps」のコマンドで確認すると知れるが、上のイメージだけでもトムキャットだってすぐ予想ができますね。

それでトムキャットを再起動しましょう。

再起動をすれば、一応アプリが落ちる時にリソースを全てOSに返却するので、コネクションも解除されますね。その後「df -h」のコマンドで確認するとハードディスクが戻りました。

それで別にプロセスキルや再起動しなくてもリソースを使えるようになりました。

多分、ディスクがあるのにIOエラーが発生する方はこの方法も考慮するほうが良いと思いますね。

最新投稿