在我使用的Linux开发服务器之一上,我看到root“/”级别的空间使用率为100%。根文件夹有一个名为“production”的文件夹,它位于与root所在的文件管理器不同的mount / filer上。 Root具有接近7.7 / 8 GB的磁盘空间。
我在所有文件夹上搜索“du -chs”,以MB或GB为单位,还查找Root“/”(不包括/生产)使用的总空间但是我没有得到其他空间的位置是和为什么它在所有文件夹(不包括/生产)显示时100%使用,它总共只有2.8GB。
如何找回丢失的空间?
为什么df -kvh和du命令没有反映所有使用/未正确使用的空间(当我们说100%使用和du说2.8GB在Root“/”级别)?大约(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 /]#
答案 0 :(得分:1)
行。我不知道是谁投了这个问题,但对我来说找到导致这种行为的原因非常重要。我想与社区分享答案。
所以,即使root和#34; /"有近5 GB的可用空间,但是df命令没有显示它,可能是因为某些操作系统(bug /无论如何设计)。
好像你杀了一个进程,如果它留下了一些子进程,如果你杀了一个使用文件夹的进程,如果你删除了那个文件夹(当进程正在进行中),那么问题可能会发生。
Highlevel,如果系统没有以某种方式杀死子进程/ pid(这不是必需的)进程,那么你的空间不会被" df"正确反映出来。命令(因为那个子/进程仍以某种方式保存资源)。
现在,我是如何解决的。
我看到有一些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免费为root" /"分区/挂载/文件管理器确认上面的过程占用了资源(现在我假设,它已经失去控制/范围" df"命令的输出)。
答案 1 :(得分:0)
从技术上讲,文件描述符由某些正在运行的程序使用。一旦应用程序关闭文件或应用程序结束,可以正确反映可用空间。