#amazon-web-services #jenkins #amazon-ec2
Вопрос:
Сегодня мой Дженкинс начал выходить из строя и блокировать доступ из-за следующей ошибки:
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)
На самом деле мое хранилище Дженкинса заполнено. Согласно документации aws, я увеличил размер хранилища с портала до 24 ГБ. После этого я получаю доступ к своему экземпляру 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
был обновлен до 24 г, с идеально, я смог запустить сервис 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
Извините, я здесь полный новичок, и я впервые сталкиваюсь с этой проблемой.
Может ли кто-нибудь объяснить мне, как я могу решить эту ошибку
Большое вам спасибо за ваше время и помощь
Комментарии:
1. Дженкинс обычно устанавливается в /var/lib/дженкинс, который, по-видимому, находится в корневом томе. Большие каталоги-это каталог журналов (приложений), а затем журналы для каждой сборки в разделе задания/папка/задания/имя задания/сборки. Если у вас нет вращения бревна, оно растет. Вы можете безопасно удалить журнал приложений и установить logrotate (поиск Jenkins logrotate) . Затем запустите Jenkins и установите политику хранения журнала заданий. Вы можете запустить «найти /var/lib/Дженкинс/задания типа d-prune-exec do-hs {};», чтобы узнать, насколько они велики в4 и после. Вам, вероятно, придется принудительно выполнить очистку журнала заданий (отличный скрипт где-нибудь в S/O).
2. Кроме того, если вы архивируете результаты, они тоже остаются в каталогах сборок. Очистка рабочей области после сборки (очистка) также сэкономит место. Подумайте о настройке отдельного тома для Дженкинса и перенесите установку туда. И убедитесь, что у вас нет свалок с ядрами, валяющихся вокруг!
Ответ №1:
Несмотря на то, что вы добавили некоторое хранилище и увеличили раздел xvda1, вы не увеличили основную файловую систему (корневую группу томов). Я был бы рад увидеть вывод команд lsblk, vgs, pvs, а также общую информацию о вашей операционной системе. Вполне вероятно, вам нужно добавить доступное пространство (из раздела xvda1) в корневой vg (у/dev/root все еще только 7,7 G).
пс. честно говоря, я не знаю команды <growpart>
, но вместо growpart /dev/root
этого я бы использовал growpart /dev/xvda 1
— для согласования с инструкцией ( /dev/xvda
это имя прикрепленного диска).
Ответ №2:
После увеличения раздела вам также потребуется изменить размер файловой системы:
resize2fs /dev/xvda1