奇怪的问题, df 命令显示 Used 为负数

2023-12-06 15:17:22 +08:00
 HeiXiaoBai

服务器是物理机,根目录用了 LVM+xfs
第一次遇到这种情况,df 查看根目录的已用空间为负数,已用空间大于总空间
root 用户能正常登陆,且文件读写正常无报错
普通用户登录报错failed to execute /bin/bash: Resource temporarily unavailable

查了一下,ext4 有保留应急空间的机制,非保留空间耗尽后只有 root 用户能使用保留空间,但 xfs 没有这个应急空间的机制,也没有做过配额限制
du 命令看根目录下的文件总大小也才 68G ,lsof 看 deleted 的文件也没有什么比较明显的未释放文件
现在也没啥排查的思路了,计划明天关机尝试xfs_repair看看能不能修复,实在不行就备份文件重新格式化

但是对这个问题还是挺好奇的
以下是命令输出

# df -h /
Filesystem               Size  Used Avail Use% Mounted
/dev/mapper/centos-root  206G  -20G 226G  -    /

# xfs_quota -x -c "df -h" /
Filesystem               Size   Used  Avail  Use%      Mounted
/dev/mapper/centos-root  205.8G 16.0E 225.3G 4054232%  /
1383 次点击
所在节点    Linux
4 条回复
ryc111
2023-12-06 15:22:35 +08:00
可能是文件系统坏了,
也可能是磁盘配额的问题,可能是你设了硬盘配额
julyclyde
2023-12-06 15:29:34 +08:00
建议先备份
McZoden
2023-12-06 15:59:17 +08:00
U 盘刻录个任何发行版的 livecd ,u 盘启动后,单独 mount 分区,再查问题,一般都能救回来的
gilgameshhh
2023-12-09 12:38:10 +08:00
df 使用文件系统提供的 statfs 接口查询可用空间,对于很多文件系统这只是个估计值,因为文件占用的空间比文件本身要大,这不只是块对齐导致的,文件系统本身的设计也会导致这个现象(比如 truncate 文件时没有缩减相应 extent )。因此,出现这种奇怪的数字应该直接去看源码。其他方法只能是捕风捉影

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/998086

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX