우리 팀에서는 CI 도구로 젠킨스를 사용하고 있다.
코드 저장소는 회사에서 제공하는 Git을 사용하고 있으며 feature, pr-head에 대한 테스트 & 빌드를 통과해야 배포될 수 있는 구조로 구성되어 있으며 빌드가 끝나면 추출된 아티펙트를 dockerize 하여 레지스트리에 올린다(push)
디스크 사용량 확인해 주세요
빌드 머신에 하드디스크 공간을 95%나 쓰고있다고 연락이 왔다.
역시나 우연의 일치로 동료분에게 메시지도 왔다.
젠킨스 접속 안되는데요...
확인해 보자
# 디스크 사용량 보기
df -h
# 결과
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 394M 3.5G 11% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda3 199G 190G 9G 96% /
/dev/sda2 1014M 178M 837M 18% /boot
/dev/sda1 200M 12M 189M 6% /boot/efi
tmpfs 779M 0 779M 0% /run/user/1000
하드 디스크 사용량이 아주 빵빵!!!하다. 구글님에게 문의하자
젠킨스 용량 100% 해결하기 글이 보인다
젠킨스 용량 100% 찬 상황 해결하기
좀더 자세하게 사용 용량을 보여주는 명령이 있으니 한번 확인 해보고
# 디스크 사용량으로 정렬하여 확인
du -hsx * | sort -rh | head -n 10
# 결과
5.7G workspace
851M plugins
12.6G jobs
82M war
26M monitoring
18M org.jenkinsci.plugins.github_branch_source.GitHubSCMProbe.cache
2.4M updates
1.1M fingerprints
280K logs
52K secrets
음?...
job이 차지하는 공간이 생각보다 적은것 같다.
그래도 경고를 멈추기 위해 수동으로 job(젠킨스 작업 단위)데이터를 지워보자
# 젠킨스 job 생성 구조가 조금 다르다. 블루 오션이라 그런가?
# 올드 버전 데이터를 지우는 거니 자신의 구조에 맞게 지우면 됨
rm -rf /var/{JENKINS_HOME}/*/jobs/*/branches/*/builds/*
다시 확인해 보면
du -hsx * | sort -rh | head -n 10
# 결과
5.7G workspace
851M plugins
600M jobs # 줄기는 줄었는데..
82M war
26M monitoring
18M org.jenkinsci.plugins.github_branch_source.GitHubSCMProbe.cache
2.4M updates
1.1M fingerprints
280K logs
52K secrets
줄어든 용량이 택도 없다. 이게 아닌가보다
하긴 생각해보니 젠킨스 설정에서 이미 job 관련 보관 개수를 정해 놨기 때문에 그렇게 많은 공간을 사용할 일은 없을 것 같다.
아.. 젠킨스에서 도커 빌드를 하고 있지? 느낌이 온다
도커 이미지를 정리해 보자. prune
# 사용하지 않는 이미지 제거
# https://docs.docker.com/engine/reference/commandline/image_prune/
docker image prune
# 삭제 경고
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
0B? 지워진게 없네..
# 결과
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 394M 3.5G 11% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda3 199G 178G 21G 89% /
/dev/sda2 1014M 178M 837M 18% /boot
/dev/sda1 200M 12M 189M 6% /boot/efi
tmpfs 779M 0 779M 0% /run/user/1000
이미지도 아니라면 이젠 도커 빌드 캐시밖에 범인이 없다.
도커는 레이어 구조로 이미지를 생성하기에 빌드 속도 향상을 위해 캐시를 사용한다
(이 내용은 조만간 정리해야지)
일단 터프한 명령인 system prune + 모두(a) + 강제(f)로 날리자
# 터프한 명령어, 빌드 머신에서 실행중인 컨테이너가 없기에 쿨하게 실행
docker system prune -a -f
WARNING! ThDeleted Images:
untagged: 232123048478.dkr.ecr.ap-northeast-2.amazonaws.com/project:latest
.................................................................................
.................................................................................
.................................................................................
deleted: sha256:06b9a94d7befa1634b382f972c8844e865cd01ef6e9980116c23a1e058ebe451
Deleted build cache objects:
gsltrijb4xgdv4nzbr7coqnvk
g8po53jcf9yzm5jc7x2tt8wrk
e1lzobqbm4jf8u0o1h94gyvoa
srbvq001xgiwebnubac3mvwvu
yj4d9nyqok52c2ba3az4ll6w7
sp8fkw9cxvyy8tzy3afqst1r1
tnnoeywgfv2iipsmh4uos7vgp
vedoju5u92m3vsbly547tlpu1
tuij8wztyklet2914txtg1wx6
uxpdfdhtsunnrvcggqpz1vty5
x23qls4pp7nk89qkyxlcwhrcg
jmu8jeto10dniguyez5m2u7x8
il2relqcrwrzq6q56p2hs41gz
4k59zayzfokydkett6yoiffl6
.........................
.........................
Total reclaimed space: 163GB
엄청나게 많은 빌드 캐시가 쌓여 있었고 제거 되었다고 나왔으니 용량을 확인해 보자
$df -h
# 결과
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 394M 3.5G 11% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda3 199G 15G 185G 8% /
/dev/sda2 1014M 178M 837M 18% /boot
/dev/sda1 200M 12M 189M 6% /boot/efi
tmpfs 779M 0 779M 0% /run/user/1000
사용량이 줄었다.
디스크 사용량의 대부부을 차지하고 있던 녀석은 도커 빌드 캐시였고 이를 삭제하여 다시 평온한 상태를 유지할 수 있게 되었다. 앞으로도 이런 경우가 있다면 다음과 같이 정리해 보자