Ubuntu Server 22.04.1 LTS根文件系统被占满,/proc/kcore文件异常膨胀求助
Ubuntu Server 22.04.1 LTS根文件系统被占满,/proc/kcore文件异常膨胀求助
别急兄弟,先把心放肚子里——/proc/kcore这个文件根本没真的占用你的磁盘空间!
先给你掰扯清楚:/proc是Linux系统里的虚拟文件系统,这里面的所有文件都是内核在内存里动态生成的“假文件”,不是存在硬盘上的实体内容。kcore其实是整个系统物理内存的镜像文件,它显示的大小通常等于你的物理内存总容量(甚至加上swap),但这只是虚拟映射的大小,实际硬盘上根本没这么个大文件占地方。
你看到ls显示它有140多TB,那都是虚的!你没法删除它也很正常——虚拟文件系统里的文件本来就不能删,也完全没必要删。
那你的根文件系统被占满肯定是别的文件搞的鬼,给你几个实用步骤排查:
先确认真实的磁盘使用情况:
运行df -h /,看输出里的Used列,这才是你的根分区真正用掉的空间,和kcore显示的数字半毛钱关系都没有。查找真正吃空间的文件/目录:
- 先扫一遍根目录下各文件夹的大小(跳过虚拟文件系统,避免干扰):
sudo du -x -h / --max-depth=1
这里-x参数是让du只统计当前文件系统的内容,不会把/proc、/sys这些虚拟目录算进去。 - 找到占比高的目录(比如
/var、/home这类),再深入进去排查:
比如怀疑/var,就运行sudo du -x -h /var --max-depth=1,一步步缩小范围找到大文件。
- 先扫一遍根目录下各文件夹的大小(跳过虚拟文件系统,避免干扰):
常见的“空间凶手”:
/var/log里的日志文件可能会无限增长,尤其是某些服务报错产生的大量日志;- 如果用了Docker,
/var/lib/docker里的镜像、容器日志很容易占满空间; - 还有一种情况:有些文件已经被删除,但对应的进程还在占用它,导致磁盘空间没释放。可以用
sudo lsof | grep deleted找出这类文件,杀掉对应的进程就能释放空间。
总之,/proc/kcore是完全正常的系统文件,不用管它,把精力放在找真正的大文件上就行!
备注:内容来源于stack exchange,提问作者OldBikerPete
相关产品推荐
相关产品推荐

