如何对 df 和 du 输出之间的差异进行分类?

如何对 df 和 du 输出之间的差异进行分类?

笔记:我完全了解该网站上的其他问题:

我的问题显示如下:

$ du -sh / --exclude=/proc
4.0G    /

$ df -h /
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_os-lv_root   18G 16.0G  1.9G  90% /
devtmpfs                   3.9G     0  3.9G   0% /dev
tmpfs                      3.9G   39M  3.8G   1% /dev/shm
tmpfs                      3.9G   17M  3.9G   1% /run
tmpfs                      3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/vda1                  497M  215M  283M  44% /boot
tmpfs                      783M     0  783M   0% /run/user/937000511
tmpfs                      783M     0  783M   0% /run/user/937000593

如何对这个问题进行分类以确定导致这种差异的原因?

答案1

在这种特殊情况下,问题是正在运行的守护程序,其文件通过该守护程序轮换,logrotate但没有发送服务kill -HUP来触发它开始记录到新文件。这导致 12G 日志文件继续显示,就好像它占用了 HDD 上的空间一样,通过df但不可见du,考虑到这两个 CLI 工具的工作方式。

拉索夫

使用lsof并查找日志文件显示了问题:

$ lsof | grep -E 'COMMAND|/var/log/maxscale'
COMMAND     PID   TID           USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
maxscale   5976             maxscale  cwd       DIR              253,1        4096      82757 /var/log/maxscale
maxscale   5976             maxscale    4w      REG              253,1 12506246848      82752 /var/log/maxscale/maxscale.log (deleted)
maxscale   5976  5977       maxscale  cwd       DIR              253,1        4096      82757 /var/log/maxscale
maxscale   5976  5977       maxscale    4w      REG              253,1 12506246848      82752 /var/log/maxscale/maxscale.log (deleted)
maxscale   5976  5978       maxscale  cwd       DIR              253,1        4096      82757 /var/log/maxscale
maxscale   5976  5978       maxscale    4w      REG              253,1 12506246848      82752 /var/log/maxscale/maxscale.log (deleted)
maxscale   5976  5979       maxscale  cwd       DIR              253,1        4096      82757 /var/log/maxscale
maxscale   5976  5979       maxscale    4w      REG              253,1 12506246848      82752 /var/log/maxscale/maxscale.log (deleted)
maxscale   5976  5980       maxscale  cwd       DIR              253,1        4096      82757 /var/log/maxscale
maxscale   5976  5980       maxscale    4w      REG              253,1 12506246848      82752 /var/log/maxscale/maxscale.log (deleted)
MHD-singl  5976  5981       maxscale  cwd       DIR              253,1        4096      82757 /var/log/maxscale
MHD-singl  5976  5981       maxscale    4w      REG              253,1 12506246848      82752 /var/log/maxscale/maxscale.log (deleted)
bash      12629                 root  cwd       DIR              253,1        4096      82757 /var/log/maxscale

输出lsof甚至显示了有问题的大小,并且它实际上已被删除:

maxscale 5976 maxscale 4w REG 253,1 12506246848 82752 /var/log/maxscale/maxscale.log(已删除)

停止守护进程释放/关闭文件描述符以释放空间:

$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_os-lv_root   18G  4.0G   14G  23% /
devtmpfs                   3.9G     0  3.9G   0% /dev
tmpfs                      3.9G   39M  3.8G   1% /dev/shm
tmpfs                      3.9G   17M  3.9G   1% /run
tmpfs                      3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/vda1                  497M  215M  283M  44% /boot
tmpfs                      783M     0  783M   0% /run/user/937000511
tmpfs                      783M     0  783M   0% /run/user/937000593

现在dfdu我们达成了一致。

相关内容