質問: Linuxで下記のような事象に遭遇しました。ご存じの方は教えて欲しいです。 ### 事象 `df -h` コマンドでマウントしているボリュームが50GBのサイズを有している `du -h` コマンドでマウントしているディレクトリの総サイズを調べてみたら、59GBでした。 ### 質問1 何故duで計算した結果はボリュームのサイズを超えたか? ### 質問2 この二つのコマンドの計算が違うか? ### 試したこと * duのハードリンク、シンボルリンクと辿らないようなオプションを付ける * findコマンドでtypeがfの全部を探して、duで個々のサイズを計算し、総量を出す ### 想像した原因 1. ハードリンク、シンボルリンクが数回duによって計算された → findでファイルだけ出して計算しても同じなので、関係なさそう 2. 該当ディレクトリのしたにまたは別のボリュームがマウントしている → なかった 3. Windowsのような、ファイルを圧縮して保存という機能が有効 → 不明
回答: ボリュームのマウントポイント(=計測ポイント)のディレクトリのサブディレクトリに別のボリュームをマウントしている場合、「`du`」の結果が「`df`」の結果を超える(ボリュームサイズを超える)ことがあると思います。 例えば、次のような場合、`du`の結果が`df`の結果を超えます。 ``` Filesystem Size Used Avail Use% Mounted on /dev/sda3 50G 40G 10G 80% /var /dev/sda4 20G 18G 2G 90% /var/log ``` * `df -h /var`は`50G`となる。(50GBのSize) * `du -sh /var`は`58G`となる。(Usedの`40G`と`18G`の合計値)