在我使用的一台 Linux 开发服务器上,我发现根“/”级别的空间使用率为 100%。根文件夹有一个名为“生产”的文件夹,该文件夹与根所在的文件管理器位于不同的安装/文件管理器上。 Root 拥有接近 7.7/8 GB 磁盘空间。
我正在对所有以 MB 或 GB 为单位的文件夹进行搜索“du -chs”,并且还查找根“/”使用的总空间(不包括/生产),但我没有得到其他空间的位置是的,以及为什么当所有文件夹(不包括/生产)都显示它已 100% 使用时,它总共只有 2.8GB。
如何找回丢失的空间?
为什么 df -kvh 和 du 命令不能反射(reflect)所有已使用/未正确使用的空间(当我们说 100% 使用而 du 说根“/”级别为 2.8GB 时)?大约(7.7 已分配 - 2.8 已使用)GB 空间在哪里?
任何想法!我在这里可能缺少什么。
[root@linux-server /]# df -kvh / && echo && echo && df -kvh /production
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-root
7.7G 7.3G 0 100% /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-production
258G 231G 14G 95% /production
[root@linux-server /]#
[root@linux-server /]# ls -1|grep -v "production" | xargs du -chs 2>/dev/null|egrep "total|[0-9][0-9]*[MG]"
7.8M bin
20M boot
106M etc
320M lib
25M lib64
60M root
39M sbin
1.9G usr
364M var
2.8G total
[root@linux-server /]#
最佳答案
好的。我不知道是谁否决了这个问题,但找出导致这种行为的原因对我来说很重要。我想与社区分享答案。
因此,即使根“/”处有接近 5 GB 的可用空间,df 命令也没有显示它,可能是因为某些操作系统(bug/任何设计)。
似乎如果您杀死一个进程并且它留下了一些子进程,或者如果您杀死一个正在使用文件夹的进程并且删除该文件夹(当进程正在进行时),那么这可能会出现问题。
高级,如果系统没有以某种方式杀死子进程/pid(这不是必需的)进程,则“df”命令将无法正确反射(reflect)您的空间(因为该子进程/进程仍然以某种方式持有资源) .
现在,我是如何解决的。
我看到有一些 Jenkins (java) 进程正在运行,我杀死了它们。那仍然没有恢复我的空间(我只看到 420KB 可用),然后我执行“ps -eAf”并看到以下进程正在运行。
c123456 23019 1 99 Oct21 ? 3-07:57:35 readelf -Wa /tmp/Goslr0qbOe/content2/jdk16-solaris-1.6.0.3.tar/jdk1.6.0_03/jre/lib/sparc/libioser12.so
(上述过程是由某些实用程序启动的,可能是“pkgdiff”或由 pkgdiff 实用程序启动的某些子步骤/过程。我的一位团队成员正在比较 JDK 1.6 与 JDK 1.7 tar 文件,不知何故,上述过程仍然是即使在我杀死了主 pkgdiff/相关 PID 并在两天前删除了/tmp/Goslr0qb0e 后仍然运行)。
我一杀掉上面的PID(23019)...shenzi!我又开始工作了。
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-root
7.7G 2.5G 4.9G 34% /
即使在我重新启动 Jenkins 实例之后,df 现在也正确显示根“/”分区/挂载/文件管理器有 4.9G 可用空间,这证实了上述过程占用了资源(现在我假设是超出“df”命令输出的控制/范围)。
关于filesystems - df -kvh 未显示可用空间 - 剩余空间在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26539204/