[EC2/Error] No space left on device. EBS/볼륨 확장

[EC2/Error] No space left on device. EBS/볼륨 확장

No space left on device.

EC2 를 사용 중 디바이스에 남은 공간이 없다는 에러가 뜨는 경우가 있다.

해결방법:

- AWS EC2 콘솔 > EBS Volume 메뉴에서 해당 EC2 의 EBS 볼륨을 찾는다.

- 볼륨을 선택하고 modify volume > Size 를 원하는만큼 수정한다. (수정후 콘솔화면에서 최적화 완료 기다리기)

- 리눅스 터미널에서 growpart 명령어로 파일 시스템을 확장해준다.

(콘솔 볼륨 업 이전 lsblk)

(flask) ubuntu@ip-172-16-1-79:~$ lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

loop0 7:0 0 32.3M 1 loop /snap/snapd/12159

loop1 7:1 0 33.3M 1 loop /snap/amazon-ssm-agent/3552

loop2 7:2 0 32.3M 1 loop /snap/snapd/12398

loop3 7:3 0 55.5M 1 loop /snap/core18/1997

loop4 7:4 0 55.5M 1 loop /snap/core18/2074

nvme0n1 259:0 0 8G 0 disk

└─nvme0n1p1 259:1 0 8G 0 part /

(콘솔 볼륨 업 이후 lsblk)

ubuntu@ip-172-16-1-79:~$ lsblk

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/12398

loop3 7:3 0 32.3M 1 loop /snap/snapd/12159

loop4 7:4 0 55.5M 1 loop /snap/core18/2074

nvme0n1 259:0 0 16G 0 disk

└─nvme0n1p1 259:1 0 8G 0 part /

=> 밑에 8G가 현재 사용중이다가 꽉 찬 볼륨이고, 위 16G가 콘솔에서 늘린 볼륨이다.

ubuntu@ip-172-16-1-79:~$ df -h

Filesystem Size Used Avail Use% Mounted on

udev 16G 0 16G 0% /dev

tmpfs 3.2G 8.7M 3.1G 1% /run

/dev/nvme0n1p1 7.7G 7.7G 0 100% /

tmpfs 16G 0 16G 0% /dev/shm

tmpfs 5.0M 0 5.0M 0% /run/lock

tmpfs 16G 0 16G 0% /sys/fs/cgroup

/dev/loop1 56M 56M 0 100% /snap/core18/1997

/dev/loop0 34M 34M 0 100% /snap/amazon-ssm-agent/3552

/dev/loop2 33M 33M 0 100% /snap/snapd/12398

/dev/loop4 56M 56M 0 100% /snap/core18/2074

/dev/loop3 33M 33M 0 100% /snap/snapd/12159

tmpfs 3.2G 0 3.2G 0% /run/user/1000

=> 콘솔에서 볼륨을 늘려줘도 growpart 이전에는 여전히 꽉차있음.

// extend partition sudo growpart /dev/nvme0n1 1 // resize sudo resize2fs /dev/nvme0n1p1

위 명령어 수행 후,

ubuntu@ip-172-16-1-79:~$ df -h

Filesystem Size Used Avail Use% Mounted on

udev 16G 0 16G 0% /dev

tmpfs 3.2G 716K 3.2G 1% /run

/dev/nvme0n1p1 16G 4.5G 12G 29% /

tmpfs 16G 0 16G 0% /dev/shm

tmpfs 5.0M 0 5.0M 0% /run/lock

tmpfs 16G 0 16G 0% /sys/fs/cgroup

/dev/loop1 56M 56M 0 100% /snap/core18/1997

/dev/loop0 34M 34M 0 100% /snap/amazon-ssm-agent/3552

/dev/loop2 33M 33M 0 100% /snap/snapd/12398

/dev/loop4 56M 56M 0 100% /snap/core18/2074

/dev/loop3 33M 33M 0 100% /snap/snapd/12159

tmpfs 3.2G 0 3.2G 0% /run/user/1000

tmpfs 10M 0 10M 0% /tmp

ubuntu@ip-172-16-1-79:~$ lsblk

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/12398

loop3 7:3 0 32.3M 1 loop /snap/snapd/12159

loop4 7:4 0 55.5M 1 loop /snap/core18/2074

nvme0n1 259:0 0 16G 0 disk

└─nvme0n1p1 259:1 0 16G 0 part /

정상적으로 반영된 것을 확인.

다만 이 파티션 확장 명령어(growpart)조차 No space left on device 에러가 뜨기도 하는데,

불필요하거나 쉽게 다시 채울 수 있는 데이터를 조금 지운 후 실행하면 정상적으로 실행된다.

reference

- https://djangoworld.tistory.com/17

- https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

- https://aws.amazon.com/ko/premiumsupport/knowledge-center/ebs-volume-size-increase/

from http://maclaurin.tistory.com/15 by ccl(A) rewrite - 2021-07-14 20:26:41