首页 » Linux » Linux中启动jenkins时报No space left on device错误的解决办法

Linux中启动jenkins时报No space left on device错误的解决办法

原文 http://blog.csdn.net/u013066244/article/details/76425170

2017-07-31 15:20:13阅读(518)

环境

Linux服务器:centos5
jenkins:2.5

场景

今天jenkins无缘无故连接不上gitlab啦,百思不得奇解,因为我ssh配置没有问题。
无奈之下,只好重启,结果呢,就在出了问题:

Starting Jenkins daemon --user jenkins --pidfile /var/run/jenkins.pid /usr/java/jdk1.7.0_51/bin/java -Djava.awt.headless=true -DJENKINS_HOME=/home/jenkins/dataspace -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=7080 --ajp13Port=-1 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
Exception in thread "main" java.io.IOException:  No space left on device(设备上没有空间)

上面就是报的错误信息。

分析

上面的主要信息就是说设备上没有空间,也就是说磁盘满了。

查看磁盘命令:df -hT

Linux中启动jenkins时报No space left on device错误的解决<a href=办法" src="http://img.blog.csdn.net/20170731122145530?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzA2NjI0NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">

上面可以看出,avail为4.3M。这已经很小了,并且Use%占用100%,表示这个区的磁盘空间已经满了。
之后我接着去jenkins目录中查看,默认情况下,jenkins的jobs是在/var/lib/jenkins里面,由于这个目录空间很小,所以我换到home下,原则上,不应该出现这个所谓空间不够的情况,不过可以看出是内存被占用的所剩无几。

Linux中启动jenkins时报No space left on device错误的解决办法

既然构建记录并没有占用很大空间,那么就对jenkins大目录查看大小:
Linux中启动jenkins时报No space left on device错误的解决办法

这里我说明下
①workspace,这个目录我是用来存放项目代码(包括jar包)的,也就是jenkins拉的代码都在这里
②dataspace,这个目录是存放jenkins构建记录,日志,配置信息

之后我进入workspace目录再进行分析,到底哪个目录文件很大:
Linux中启动jenkins时报No space left on device错误的解决办法

这我就惊讶啦,为什么一个项目会占用2个多G(我知道这个项目并没有这么大),
这种项目为什么占空间的就是lib目录了,毕竟里面全是jar包。我用计数器大致加了下,所有的目录加起来也没有2个G啊!所有呢,我就把大小2G以上的全部删除。
(因为jenkins重新构建的时候,会再次生成,所以没关系)

删除后,我接着重启,还是不行,依然报没有空间的错误。

已经网上查阅资料后,这段话是查看是网上的:

在Linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行。这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小。

接着我们查看jenkins占用的进程是否还有残留:
命令:

lsof -n | grep jenkins

结果显示:
Linux中启动jenkins时报No space left on device错误的解决办法

我图片上的文字是:

满满的一个屏幕都显示不完,说明jenkins咱执行脚本时,包括定时任务;其开了很多进程,并且这些进程在关闭jenkins服务后,并没有自动关闭,这就导致其占用了很多资源。

接着关闭进程:

kill 14241 30485

之后再次重启jenkins就好了。

但是我发现,使用df -hT,查看时,还是Use% 100%

Filesystem           Type   Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos01-lv_root
                     ext4    20G   19G   21M 100% /
tmpfs                tmpfs   32G     0   32G   0% /dev/shm
/dev/sda1            ext4   485M  121M  339M  27% /boot
/dev/mapper/vg_centos01-lv_home
                     ext4   985G  175G  760G  19% /home
/dev/sdb1            ext4   3.3T  202G  2.9T   7% /mongo
//192.168.0.138/files
                     cifs   453G  280G  173G  62% /file
//192.168.0.138/file cifs   453G  280G  173G  62% /file

唯一的变化就是Avail变成了21M。

总结

问题虽然解决了,但是Use% 100%这一块依然不是很了解。
这么低的可用空间,感觉用不了多久,还会报空间不够问题。
当jenkins空间不够时,未必会直接报出来,比如下次报gitlab连接不上。

参考地址:
http://www.cnblogs.com/starRebel/p/5897450.html

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹