[EC2][Server][Docker] EC2 용량 꽉 찼을 때 해결 / No space left on device 해결

이수진·2022년 2월 20일
2
post-thumbnail

얼마전에 잘만 돌아가던 도커 빌드에서 에러가 떴습니다.

에러 원인은 바로 이거더라구요

아 용량 .. 부족이었습니다.
즉, 용량이 꽉 차서 생긴 문제였구요.
쓰고 있는 ❗️EC2 인스턴스에서 볼륨의 크기를 키운 후, 파일시스템 확장으로 해결했습니다❗️

먼저, 현재 서버에 접속해서 용량을 확인해보았습니다.


용량 확인하기

  • 용량 확인 (df -h 로 확인)
ubuntu@ip-172-31-40-56:~$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  473M     0  473M   0% /dev
tmpfs          tmpfs      98M   11M   87M  11% /run
/dev/xvda1     ext4      7.7G  7.7G     0 100% /
tmpfs          tmpfs     488M     0  488M   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     488M     0  488M   0% /sys/fs/cgroup
/dev/loop0     squashfs   25M   25M     0 100% /snap/amazon-ssm-agent/4046
/dev/loop1     squashfs   44M   44M     0 100% /snap/snapd/14295
/dev/loop3     squashfs   56M   56M     0 100% /snap/core18/2284
/dev/loop4     squashfs   56M   56M     0 100% /snap/core18/2253
/dev/loop5     squashfs   44M   44M     0 100% /snap/snapd/14549
tmpfs          tmpfs      98M     0   98M   0% /run/user/1000

아니 7.7G 중 7.7G 전체를 다 썼는데,, 당연히 ,,,

해당 EC2 인스턴스 블록 디바이스의 볼륨 수정하기

EC2 > 해당 인스턴스 > 스토리지로 가줍니다.

해당 볼륨을 클릭한 후 작업으로 가서 볼륨 수정을 해줍니다. ( 8 -> 16GB 로 수정 )

lsblk 명령어로 인스턴스에 연결된 블록 디바이스 확인

ubuntu@ip-172-31-40-56:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0     7:0    0   25M  1 loop /snap/amazon-ssm-agent/4046
loop1     7:1    0 43.3M  1 loop /snap/snapd/14295
loop3     7:3    0 55.5M  1 loop /snap/core18/2284
loop4     7:4    0 55.5M  1 loop /snap/core18/2253
loop5     7:5    0 43.4M  1 loop /snap/snapd/14549
xvda    202:0    0   16G  0 disk 
└─xvda1 202:1    0    8G  0 part /

루트 볼륨 /dev/xvda 가 8GB에서 16GB로 되었습니다.
볼륨 크기는 커졌지만 /dev/xvda 의 파티션인 /dev/xvda1 은 아직 8GB인 상태입니다.
이거를 늘려야 합니다.

sudo growpart <볼륨> <파티션 번호> 명령어로 파티션 크기 늘리기

sudo growpart <볼륨> <파티션 번호>
ubuntu@ip-172-31-40-56:~$ sudo growpart /dev/xvda 1
mkdir: cannot create directory ‘/tmp/growpart.22811’: No space left on device
FAILED: failed to make temp dir

저와 같은 경우는 용량이 너어어어무 없어서 아예 명령어 작동도 안되었습니다.
어느정도 공간 확보가 꼭 필요합니다.
지금까지 도커에서 안쓰는 이미지와 컨테이너들을 관리를 안해놓아서 이 참에 안쓰는 이미지와 컨테이너들을 지워주었습니다.

  • 안쓰는 도커 이미지와 컨테이너 삭제하기
sudo docker image prune
sudo docker container prune

(진작에 좀 할걸.. 아니 1.7GB 라니)

다시 파티션 크기 늘려보고, lsblk명령어로 확인해보겠습니다.

ubuntu@ip-172-31-40-56:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0     7:0    0   25M  1 loop /snap/amazon-ssm-agent/4046
loop2     7:2    0 43.6M  1 loop /snap/snapd/14978
loop3     7:3    0 55.5M  1 loop /snap/core18/2284
loop4     7:4    0 55.5M  1 loop /snap/core18/2253
loop5     7:5    0 43.4M  1 loop /snap/snapd/14549
xvda    202:0    0   16G  0 disk 
└─xvda1 202:1    0    8G  0 part /
ubuntu@ip-172-31-40-56:~$ sudo growpart /dev/xvda 1
CHANGED: partition=1 start=2048 old: size=16775135 end=16777183 new: size=33552351,end=33554399
ubuntu@ip-172-31-40-56:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0     7:0    0   25M  1 loop /snap/amazon-ssm-agent/4046
loop2     7:2    0 43.6M  1 loop /snap/snapd/14978
loop3     7:3    0 55.5M  1 loop /snap/core18/2284
loop4     7:4    0 55.5M  1 loop /snap/core18/2253
xvda    202:0    0   16G  0 disk 
└─xvda1 202:1    0   16G  0 part /

/dev/xvda1 파티션 크기가 16GB로 늘어난 것을 확인할 수 있습니다😊

파일시스템에 바뀐 파티션의 size 적용시키기

파티션의 크기까지 늘렸으니, 이제 사용하는 파일시스템에 바뀐 파티션의 size를 적용시키면 됩니다.

sudo resize2fs <파티션>
ubuntu@ip-172-31-40-56:~$ sudo resize2fs /dev/xvda1
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/xvda1 is now 4194043 (4k) blocks long.

그리고 확인하면 다음과 같습니다.

ubuntu@ip-172-31-40-56:~$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  473M     0  473M   0% /dev
tmpfs          tmpfs      98M  932K   97M   1% /run
/dev/xvda1     ext4       16G  5.0G   11G  33% /

/dev/xvda1의 용량이 16GB로 늘어난 것을 잘 확인할 수 있습니다!

그리고 깃헙 액션으로 다시 빌드를 해보았는데요,

잘 빌드되는 것을 확인할 수 있었습니다.


[reference]

profile
꾸준히, 열심히, 그리고 잘하자

0개의 댓글