我正面临 报告错误 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
刷新了一些内部结构。
希望它能对某人有所帮助。