私はduとdfの間にわずかな違いがあることを知っていますが、duの私のRAMディスクは13Gを占めていますが、dfは16GBを使用しているとマークされています。これはかなり大きな違いのようです。これは普通ですか?
[root@zserver2 ramdisk]# du -h .
...
13G .
[root@zserver2 ramdisk]# df -h
Filesystem Size Used Avail Use% Mounted on
...
none 16G 16G 0 100% /home/stuff/ramdisk
RAMディスクはfstabで定義されており、デフォルトは32 GB RAMの50%です。
# cat /etc/fstab
...
none /home/stuff/ramdisk tmpfs mode=774,uid=500,gid=501 0 0
答え1
一部のファイルはラムディスクから削除されましたが、一部のプロセスにはまだ開いているファイルハンドルがある可能性があります。これを確認する簡単な方法は、開いているがlsof /home/stuff/ramdisk
ファイルシステムに存在しないファイルを使用して「(削除済み)」とマークすることです。
たとえば、 "/dev/shm/test"ファイルを削除しましたが、まだPythonスクリプトによって開かれています。
% df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
shm 512M 257M 256M 51% /dev/shm
% du -h /dev/shm
84K /dev/shm
% lsof /dev/shm
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
[...]
python 39756 adaephon 5r REG 0,13 268435456 44790 /dev/shm/test (deleted)
答え2
あなたはできます
RAMディスクから削除されたが、一部のプロセスまたはスレッドによってまだ開いているファイルはありますか? [これらのプロセス/スレッドが終了すると、OSは実際にこれらのinodeを解放するため、dfは以前より3GB少なく報告されます。]
duはディレクトリ/ファイル内の多くのエントリにアクセスできませんか? 【編集証?ルートキットまたは隠された悪意のあるコンテンツかもしれません...]
私の頭の中に浮かぶ他の可能性があると確信しています。 [ファイルシステムのメタデータ?日記ですか?ファイルが多いですか? "du" は、"lost+found" ディレクトリまたは使用している FS に存在するディレクトリに対応する内容を無視しますか?など。 ]