df 报告文件系统(ext4)的可用空间不正确

df 报告文件系统(ext4)的可用空间不正确

我正面临 报告错误 fs 空间的问题df

我们正在讨论裸机 Ubuntu 14.04 服务器,其/分区由 LVM 管理。

报告的大小df与 fs superblock 报告的大小不同。此外,计算来自du -skh(与分区相关的目录/)的大小也证明df显示的结果不正确。

以下是报道的内容df

Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-lv_root   20G   16G  2.8G  86% /

以下是超级块报告的内容(3616906*4096/1024**2=14128 MB free)

Last mounted on:          /
Filesystem magic number:  0xEF53
Filesystem state:         clean
Filesystem OS type:       Linux
Inode count:              1290240
Block count:              5242880 << exactly 20 GB
Reserved block count:     227170
Free blocks:              3616906 << around 14 GB free
Free inodes:              1201391
First block:              0
Block size:               4096
Fragment size:            4096

我进行了 stracedf并发现它使用statfs系统调用来获取有关特定 fs 的信息(962132*4096/1024**2=3758 MB free)

statfs("/", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=5129119, f_bfree=**962132**, f_bavail=730866, f_files=1290240, f_ffree=1091851, f_fsid={-456623966, 1549023591}, f_namelen=255, f_frsize=4096}) = 0

statfs可能是其获取 fs 信息的方式存在 问题。

为了解决这个问题,我尝试重新挂载/分区(mount / -orw,remount),但没有帮助。

我的问题是:如何df在不重新启动或干扰该服务器正常运行的情况下修复信息?

附言

  • fd 由进程保留 ( lsof +L1 | grep deleted)
  • 我知道 883 MB 是为 UID 0 的用户保留的
  • 这不是挂载点屏蔽问题(挂载 fs 时在挂载点目录中“隐藏”文件)

答案1

为了那些遇到同样问题的人:

我通过发出来解决了这个问题unmount /dev/mapper/rootvg-lv_root。它给了我一个错误,但之后df报告正确。

看起来umount刷新了一些内部结构。

希望它能对某人有所帮助。

相关内容