[Linux] ディスク容量が少ない時の簡単な調査方法
長い時間運用しているサーバーだと、気づかないうちにディスクの使用率が90%を超えたりして監視ツールから警告が来たりします。
そのサーバーの用途がはっきりしていて誰かがすぐに見当を付けられるのであれば良いんですが、時々誰も知らないような通称幽霊サーバーからそういった通知が来ると、まず何がディスクを食っているのかを調査する段階から始めないとならない事が多いです。
そんな時、いつも私がやっている方法を書き残しておきますので、是非ご参考に。
※この方法は同じディレクトリに少数のファイルが多くの容量を使っている場合に特に有効な方法なので、別ディレクトリに分散しているとやや面倒です
この記事の目次
覚えるコマンドは1つだけ
と言っても、実は覚えるコマンドは1つだけなので、正直めっちゃ簡単です。
du ./ -h --max-depth=1
はい、これだけです。
duコマンドというものがありまして、これはディスクの使用量を見るためのものになるんですが、それにいくつかのオプションを付けた形の完成形になります。
使い方
実際にこのコマンドをどう使うかと言うと、まずはrootユーザー等のなるべく権限が上位のユーザーに切り替えて下さい。
でないと実行したユーザーには参照する権限すら無いファイルが計算されないので、正確な値が表示されなくなってしまいます。
ユーザーを適切なものに切り替えたら、まずはルートディレクトリに移動します。
これはどこのディレクトリが容量を食っているかの見当が全くついていない場合の話なので、例えば既にどのディレクトリが怪しいとかがわかっているのであれば、最初からそのディレクトリに移動でも大丈夫です。
目的のディレクトリに移動したら、先程のduコマンドを投げて結果を確認します。
多分カレントディレクトリ配下のディレクトリ一覧と、ディレクトリの中にあるファイルの全合計使用容量が表示されると思います。
後は一番容量を食っているディレクトリに移動し、再度duコマンドを投げて……の繰り返しになります。
duコマンドではファイル自体の容量は表示されないので、duコマンドを再度投げる前にll -hコマンド等でファイル一覧の容量も見ておくと良いと思います。
何回か繰り返せば、肥大化したログファイル等の目的のファイルが発見できると思います。
コマンドの意味
最後に今回利用したコマンドのオプションの意味を解説します。
まずduコマンドの後ろの「./」はカレントディレクトリを表します、操作対象をどのディレクトリにするかのオプションになります。
なので、別にディレクトリをわざわざ移動しなくてもここを変えていけば同じ事ができますが、調査後はどうせファイルを消したりするので、だったらカレントディレクトリを移動しながら調査したほうが効率がいいかなという思いです。
次の「-h」は人間が見やすい単位で容量を表示するオプションです、これを付けないとすべてバイト表示になるのでちょっと見にくいので。
最後のオプションが結構大事で「–max-depth=1」は表示するディレクトリの階層を1つ下までにする、という意味です。
これを指定することにより、直下のディレクトリ内での総容量を表示できるので、どのディレクトリに移動するかの判断に繋がります。
とまあこんな感じですが、duコマンドの便利さを知ってもらえたらと思います。