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であることを示しています。
df
du
それでは、ディスク上のデータの内容と宣言の間に約2.9Gの違いをどのように見つけることができますか?
ベストアンサー1
これは完全な答えではないかもしれませんが、これらの違いには2つの原因があることを知っています。
df
次よりも多くのスペースを表示du
(別名不可能なほど大きなファイル)
スパースファイルがこれに起因する可能性があります。例:VMWareのバグにより、多くの仮想マシンの/var/log/lastlogが非常に大きいと報告されます(例:1.2TB)。実際にはそれほど大きくはなく、ただ希薄なファイルにすぎません。それらを扱うことはそれらを無視することです。実際に利用可能なディスク容量df
よりも常に正確です。du
df
表示されているものよりもいっぱいのディスク表示du
(ディスクスペースを占める見えないファイルとも呼ばれます)
これの一般的な原因は、プロセスがまだ開いているファイルを削除することです。これは通常、アップグレード後の再起動前の場合です。すべての古いライブラリファイルは、「削除」されているかdu
で表示されなくても、ファイルハンドルを持つプロセスによってまだ開いていますls
。
これを処理する最も簡単な方法は再起動することですが、より賢く処理できます。たとえば、最初にlsof | grep -c DEL
削除されたファイルがまだ開いていることを確認してください。 (一定量は比較的正常であり、必ずしも病理的ではありませんが、まだディスク容量の違いについて学ぶのに適した場所です。)