duとdfへの異なる出力

duとdfへの異なる出力

いいですね。私を完全に混乱させる質問があります。

df -h
Dateisystem          Größe Benut  Verf Ben% Eingehängt auf
/dev/sda2             3,8G  1,5G  2,2G  41% /
/dev/sda1             122M   13M  103M  11% /boot
tmpfs                1014M     0 1014M   0% /dev/shm
/dev/sdb1            1016M  866M  150M  86% /srv

しかし:

du -hs /srv
55M     /srv

参考としてのみ使用してください。

mount | grep srv
/dev/sdb1 on /srv type xfs (rw)

そのうち86%が私に警告メールを送りました(意図的なものです)、この/srvメールは数時間前に削除されました。

を使用すると、duそのパーティション内の正しい量のデータを取得できます。しかし、dfこれは理解できないようです。なぜ? (この出力に基づいて定期的に警告メールを受信するため、少し迷惑です。)

これが重要かどうかはわかりませんが、CentOSバージョン5.11(最終)サーバーを使用しています。

答え1

dfdu各ファイルのサイズ情報を使用して、ファイルシステムから割り当てられたブロックを計算します。さまざまな理由で違いが発生する可能性があります。

1) アプリケーションでまだ開いている切断された (削除された) ファイル。 lsof +aL1 <filesystem>プロセスを識別するのに役立ちます。

2)マウントポイントの下にファイルを隠すと便利ですdudebugfs

$ sudo debugfs 
debugfs 1.42.12 (29-Aug-2014)
debugfs:  open /dev/<the / file system  device>
debugfs:  cd /boot
debugfs:  ls -l 
 1966081   40755 (2)      0      0    4096 26-May-2016 16:28 .
      2   40555 (2)      0      0    4096 11-May-2016 10:43 ..
 1974291  100644 (1)      0      0       0 26-May-2016 16:28 bob   <---<<< /boot/bob is hidden by /boot fs

三)スパースファイル実際よりも大きく見えますね。割り当てられていないブロックはファイルサイズに含まれませんが、df含まれます。

ハードリンクは欺瞞的ではありません。du

答え2

アプリケーションがまだファイルを開いている場合、プロセスが終了するまでディスク領域は解放されません。何が使用されているかを確認し、停止/srv/再開

関連情報