【Linux】duコマンドとdfコマンドの違い。/proc/*/fd/*の意味を学んだ。

投稿者: | 2019-02-20

はじめに

昨日、disk fullになってしまった検証サーバのディスク容量を開けたときのことを書いていく。

duコマンドの使い方がわかってなかった

めっちゃ恥ずかしことですが、しっかりと理解できていませんでした。
ですが、こういうことも発信していくのがこのブログです。

ん?duの/以下の合計値とdfの/で使っている容量が違うぞ!?

duコマンドとdfコマンドにて容量を確認しました。

んー?なんでこんなに使用率の合計に差があるの・・・
この45Gと15Gの差はなんぞやと下記の記事を参考に調べてみました。

https://www.unknownengineer.net/entry/2017/06/11/231301

なるほど。

・duコマンド:ファイルのディスク使用量を推定する
・dfコマンド:ファイルシステムのディスク容量の使用状況を表示する

つまり今回の現象は「ファイルが使っているサイズは15Gだが、ディスクとしてみると45G使っている」ということになる。
となると、ファイル以外の何かが容量を食っていることになります。

こちらの記事に答えが書いてありました。
https://doruby.jp/users/rick_blog/entries/CentOS_disk__df_du_

なんか削除されたファイルを掴んでいるのがプロセスが101もある・・・
ファイルとしては削除されているとなっているが、プロセスが掴んだまま暴走しているためdfコマンドで見たときは
ファイルが存在するようにみえているの・・・かな?

なお、/proc/*/fd/*の意味はprocのmanを参照。
http://man7.org/linux/man-pages/man5/proc.5.html

td-agentのサービスを確認すると起動していない。
そのため、正義のkill9コマンドでtd-agentのプロセスを一つずつkillしました。

その結果。

無事に容量が空きました。
その後td-agentのサービスを起動してめでたしめでたし。

学んだこと

・duコマンドとdfコマンドの違い
・prock/*/fd/*の意味
・必ず原因はあるので諦めずに調べていくこと。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です