df显示的“可用空间”不包含缓存,它是文件系统真正可写入的空间,已排除内核页缓存、slab等内存占用;这些缓存只占ram,不占磁盘块。

df 显示的“可用空间”包含缓存吗?
不包含。df 显示的 Available 列是**文件系统真正可写入的空间**,已自动排除了被内核页缓存、slab、dentries/inodes 缓存等占用的内存——这些缓存本身不占磁盘块,只占内存。所以 df -h 的结果里,“可用”就是你能往磁盘上写新文件的真实余量,和缓存无关。
为什么 df 和 du 加起来比总空间小很多?
这不是缓存导致的,而是常见三类真实磁盘空间“隐身”原因:
- 被删除但进程仍在写入的文件:用
lsof +L1查,这类文件在df中计为已用,但du找不到路径,所以不统计 - 挂载覆盖:比如
/var/log下原有数据,后来挂了新磁盘到该路径,du会扫被盖住的老数据(虚拟不可见),df只反映新设备 - 文件系统预留空间:ext4 默认为 root 保留 5%,普通用户看不到这部分,但
df的Available已扣除它
想看内存缓存占用了多少 RAM,不是磁盘空间
如果你实际想确认的是“系统用了多少内存做磁盘缓存”,那该看 free,不是 df:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
-
free -h输出中,buff/cache行就是内核用于缓存磁盘读写的数据总量 - 这部分内存是动态的:有应用需要时会自动释放,不影响磁盘空间本身
- 不要试图“清空 buff/cache 来腾磁盘空间”——这是两个完全不同的资源层
真正影响磁盘可用性的“伪缓存”只有两类
某些场景下,用户误以为是“缓存”,实则是磁盘空间已被实际占用:
-
/var/log/journal:systemd-journald 日志默认无限增长,不是缓存,是真实文件,用journalctl --disk-usage查,journalctl --vacuum-size=100M清 -
/var/cache/apt/archives或/var/lib/dpkg/info:包管理器缓存,用apt autoremove && apt clean清,不是内核缓存
这些目录里的东西看着像缓存,但每字节都实实在在占着磁盘块,df 和 du 都会如实计入。别被名字误导。










