[AWS] EC2(Linux) 용량이 가득 찼을때 대처법, EBS 볼륨 크기 늘리기 java.io.IOException: java.io.FileNotFoundException (No space left on device)
EC2에서 실행되고 있는 SpringBoot 서버의 사진을 저장하는 기능이 잘 되다가 갑자기 500에러를 냈습니다.
로그를 확인해보자
java.io.IOException: java.io.FileNotFoundException: [이미지 이름] (No space left on device)
와 같은 에러를 뱉어내었고 수시간의 삽질 끝에 EC2 용량을 늘려주어야한다는 사실을 알았습니다.
1. 용량 확인
$ df -Th
위 명령어를 통해 용량을 확인해보면 /dev/xvda1 용량이 8.0G/8.0G (100%)로 꽉 찬것을 알 수 있습니다.
2. EBS 볼륨 크기 수정
인스턴스 요약에서 스토리지로 들어가줍니다. 볼륨 크기가 8GiB인 것을 확인하고 볼륨 ID를 눌러 들어가줍니다.
해당 볼륨을 선택하고 작업 > 볼륨 수정을 들어가줍니다.
크기 부분을 16으로 바꾸고 수정 버튼을 눌러줍니다.
16GiB로 잘 변경되었습니다.
$ lsblk
위 명령어를 통해 /dev/xvda가 8G에서 16G로 크기가 늘어난걸 확인할 수 있습니다.
하지만 /dev/xvda의 파티션 /dev/xvda1의 용량이 아직 8G이고 이를 늘려주어야합니다.
3. 파티션 크기 늘리기
$ sudo growpart /dev/xvda 1
# xvda와 1 사이에 띄어쓰기 주의!
lsblk 명령어를 통해 파티션 또한 크기가 잘 변경된 것을 확인할 수 있습니다.
4. 파일 시스템에 파티션 크기 적용
df -Th 명령어를 통해 /dev/xvda1의 타입을 알 수 있습니다. xfs의 경우 xfs_growfs 명령어를, ext4의 경우 resize2fs 명령어를 사용하여 파일 시스템에 적용시켜줍니다.
$ sudo xfs_growfs /dev/xvda1 # xfs Type
$ sudo resize2fs /dev/xvda1 # ext4 Type
df -Th 명령어를 통해 확인해보면 /dev/xvda1 용량이 8.1G/16G (51%)로 잘 늘어난 것을 확인할 수 있습니다.
500에러를 내던 기존 기능도 잘 작동하네요! 똑같은 문제를 겪으신 분들이 덜 고생하시길 바랍니다.
그리고 EBS 볼륨 크기는 30GB까지 프리티어로 무료로 사용할 수 있습니다!