du は df に示される空間を考慮しません。

du は df に示される空間を考慮しません。

CentOSインストーラのデフォルトのフルディスク使用パーティションスキームに従って、XFSでフォーマットされた16Gドライブを持つvSphereクラスタでCentOS 7.2(最小)仮想マシンが実行されています。システムはテストhttpdサービスを実行していますが(すべてのソフトウェアはデフォルトのcentosリポジトリにあります)、ディスク容量の使用量が増加しています。この部分は問題のApacheエラー/アクセスログ(サイズ2 GB以上)で発生するため、これらの長い部分を削除するといくつかのスペースを解放できます。私はドライブスペースを占めるものが何であるかについてあまり気にしません(私は最終的にその問題を核兵器として扱います)。しかし、ファイルサイズを確認するためにdfとduを実行すると、違いが発生し、これが混乱します。

df -hまず、ファイルシステムの使用量を表示するために実行しました。

[root@svrhttp03 httpd]# df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/centos_svrhttp03-root   14G  4.8G  9.1G  35% /
devtmpfs                           902M     0  902M   0% /dev
tmpfs                              912M     0  912M   0% /dev/shm
tmpfs                              912M   97M  816M  11% /run
tmpfs                              912M     0  912M   0% /sys/fs/cgroup
/dev/sda1                          497M  169M  329M  34% /boot
tmpfs                              183M     0  183M   0% /run/user/0

これは、ルートFSで4.8Gが使用されていることを示します。

次に、次のコマンドを実行して、ファイルシステムのルートにあるすべてのエントリのサイズを確認しました。

[root@svrhttp03 httpd]# du -a -h -t 10K / 2> /dev/null | grep -v -E "[A-Z,a-z,0-9]/." | sort -h
16K /home
7.4M    /root
31M /etc
97M /run
143M    /boot
324M    /var
1.3G    /usr
1.9G    /

これは、1.9Gのみが使用され、報告されたすべてのディレクトリサイズの合計が予想どおり約1.9Gであることを示しています。

dfduそれでは、ディスク上のデータの内容と宣言の間に約2.9Gの違いをどのように見つけることができますか?

ベストアンサー1

これは完全な答えではないかもしれませんが、これらの違いには2つの原因があることを知っています。

  • df次よりも多くのスペースを表示du(別名不可能なほど大きなファイル)

スパースファイルがこれに起因する可能性があります。例:VMWareのバグにより、多くの仮想マシンの/var/log/lastlogが非常に大きいと報告されます(例:1.2TB)。実際にはそれほど大きくはなく、ただ希薄なファイルにすぎません。それらを扱うことはそれらを無視することです。実際に利用可能なディスク容量dfよりも常に正確です。du

  • df表示されているものよりもいっぱいのディスク表示du(ディスクスペースを占める見えないファイルとも呼ばれます)

これの一般的な原因は、プロセスがまだ開いているファイルを削除することです。これは通常、アップグレード後の再起動前の場合です。すべての古いライブラリファイルは、「削除」されているかduで表示されなくても、ファイルハンドルを持つプロセスによってまだ開いていますls

これを処理する最も簡単な方法は再起動することですが、より賢く処理できます。たとえば、最初にlsof | grep -c DEL削除されたファイルがまだ開いていることを確認してください。 (一定量は比較的正常であり、必ずしも病理的ではありませんが、まだディスク容量の違いについて学ぶのに適した場所です。)

おすすめ記事