【发布时间】:2021-10-26 21:42:41
【问题描述】:
由于以下错误,今天我的 Jenkins 开始失败并阻止访问:
java.io.IOException: No space left on device
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.FileDispatcherImpl.write(FileDispatcherImpl.java:60)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:211)
at hudson.util.FileChannelWriter.write(FileChannelWriter.java:73)
at java.io.Writer.write(Writer.java:192)
at hudson.util.AtomicFileWriter.write(AtomicFileWriter.java:163)
at java.io.Writer.write(Writer.java:157)
at hudson.XmlFile.write(XmlFile.java:191)
at jenkins.model.Jenkins.save(Jenkins.java:3474)
at jenkins.model.Jenkins.<init>(Jenkins.java:1012)
at hudson.model.Hudson.<init>(Hudson.java:86)
at hudson.model.Hudson.<init>(Hudson.java:82)
at hudson.WebAppMain$3.run(WebAppMain.java:298)
Caused: hudson.util.HudsonFailedToLoad
at hudson.WebAppMain$3.run(WebAppMain.java:315)
事实上,我的 Jenkins 存储空间已满。根据 aws 文档,我将存储大小从门户增加到 24Gb。之后,我从终端访问我的 ec2 实例。
按照以下步骤: https://aws.amazon.com/premiumsupport/knowledge-center/ebs-volume-size-increase/
我可以按如下方式增加存储量
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 33.3M 1 loop /snap/amazon-ssm-agent/3552
loop1 7:1 0 55.5M 1 loop /snap/core18/1997
loop2 7:2 0 32.3M 1 loop /snap/snapd/13170
loop3 7:3 0 61.9M 1 loop /snap/core20/1169
loop4 7:4 0 32.3M 1 loop /snap/snapd/12883
loop5 7:5 0 55.4M 1 loop /snap/core18/2128
loop6 7:6 0 25M 1 loop /snap/amazon-ssm-agent/4046
loop7 7:7 0 70.3M 1 loop /snap/lxd/21029
loop8 7:8 0 61.8M 1 loop /snap/core20/1081
loop9 7:9 0 67.3M 1 loop /snap/lxd/21545
xvda 202:0 0 24G 0 disk
└─xvda1 202:1 0 24G 0 part /
xvda已经升级到24G了,很完美,可以启动Jenkins服务了。但是当我尝试登录时,我再次遇到上述相同的错误。
为了仔细检查一切是否正确,我运行了命令df -hT,结果是这样的
Filesystem Type Size Used Avail Use% Mounted on
/dev/root ext4 7.7G 7.7G 0 100% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 394M 41M 354M 11% /run
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/loop0 squashfs 34M 34M 0 100% /snap/amazon-ssm-agent/3552
/dev/loop1 squashfs 56M 56M 0 100% /snap/core18/1997
/dev/loop4 squashfs 33M 33M 0 100% /snap/snapd/12883
/dev/loop5 squashfs 56M 56M 0 100% /snap/core18/2128
/dev/loop6 squashfs 25M 25M 0 100% /snap/amazon-ssm-agent/4046
/dev/loop7 squashfs 71M 71M 0 100% /snap/lxd/21029
/dev/loop8 squashfs 62M 62M 0 100% /snap/core20/1081
/dev/loop9 squashfs 68M 68M 0 100% /snap/lxd/21545
/dev/loop2 squashfs 33M 33M 0 100% /snap/snapd/13170
/dev/loop3 squashfs 62M 62M 0 100% /snap/core20/1169
tmpfs tmpfs 394M 0 394M 0% /run/user/1000
tmpfs tmpfs 10M 3.2M 6.9M 32% /tmp
tmpfs tmpfs 394M 0 394M 0% /run/user/113
我看到/dev/root 已被 100% 使用。但我无法升级它的大小,也找不到任何关于如何升级卷的文档。如果我尝试运行命令:
sudo growpart /dev/root 1
我收到此错误:
WARN: unknown label
failed [sfd_dump:1] sfdisk --unit=S --dump /dev/root
sfdisk: /dev/root: does not contain a recognized partition table
FAILED: failed to dump sfdisk info for /dev/root
对不起,我是这里的新手,这是我第一次遇到这个问题。
谁能解释我如何解决这个错误
非常感谢您的宝贵时间和帮助
【问题讨论】:
-
Jenkins 通常安装在 /var/lib/jenkins 中,它似乎在根卷中。大目录是 (app) 日志目录,然后是每个构建的日志,位于 jobs/folder/jobs/jobname/builds。如果您没有日志轮换,它会增长。您可以安全地删除应用程序日志并安装 logrotate(搜索 Jenkins logrotate)。然后启动 Jenkins 并设置作业日志保留策略。你可以运行“find /var/lib/Jenkins/jobs -type d -prune -exec do -hs {} \;”看看b4及之后有多大。您可能不得不强制清理作业日志(S/O 上某处的 groovy 脚本)。
-
另外,如果您归档Artifacts,它们也会保留在构建目录中。构建后清理工作区(cleansWS)也将节省空间。考虑为 Jenkins 设置一个单独的卷并将安装移到那里。并确保周围没有核心转储!
标签: amazon-web-services jenkins amazon-ec2