我正面临着由df报告错误的fs空间的问题。
我们正在谈论的裸机Ubuntu 14.04服务器,由LVMpipe理的/分区。
由df报告的大小与由fs超块报告的大小不同。 还从du -skh (在与/ partition有关的目录上)计算大小,certificatedf显示不正确的结果。
这是由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
我为df做了一个strace,发现它使用statfs syscall来获取有关特定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信息而无需重新启动或干扰此服务器的正常运行?
PS
lsof +L1 | grep deleted ) 为了同样的问题,
我通过发出unmount /dev/mapper/rootvg-lv_root解决了这个问题。 它给了我一个错误,但在df报告正确。
看起来像umount刷新了一些内部结构。
希望它能帮助别人。