[척척학사] 디스크 용량 부족으로 인한 JVM 실행 실패 해결기

박상민·2025년 6월 30일
0

척척학사

목록 보기
12/15
post-thumbnail

문제 상황

EC2 인스턴스에서 Spring Boot .jar 파일을 실행하던 중 다음과 같은 오류가 발생했다.

OpenJDK 64-Bit Server VM warning: Insufficient space for shared memory file:
   367920
Try using the -Djava.io.tmpdir= option to select an alternate temp location.

디스크 상태를 확인하자, 루트 디렉토리(/)가 완전히 가득 찬 상태였다.

ubuntu@ip-172-31-36-253:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       6.8G  6.7G     0 100% /

EC2 디스크 용량 부족 문제, 유료 전환 없이 해결하는 방법

문제 요약

디스크 용량 부족으로 인해 JVM이 임시 디렉토리에 접근하지 못해 .jar 실행에 실패한 문제


✅ 근본적인 해결 방법 3가지

1. EC2 볼륨 크기 확장 (프리티어 내 가능)

EC2 인스턴스의 EBS 루트 볼륨 크기를 늘리는 방법이다.
예: 8GB → 30GB (30GB까지 프리티어 내에서 무료)

절차:
1. EC2 대시보드 → 인스턴스 → 루트 볼륨(EBS) 클릭
2. “작업” > “볼륨 수정” > 새 크기 입력 (ex. 30)
3. 인스턴스에 접속하여 아래 명령 실행

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1

2. 로그 및 캐시 주기적 정리 (무료 유지)

불필요한 로그/캐시로 디스크가 가득 찼다면 주기적으로 아래 명령어 실행

일정 주기마다 자동으로 로그를 정리하는 방법이 뒤에서 나온다.

sudo journalctl --vacuum-time=2d
sudo rm -rf /tmp/*
sudo apt-get clean

3. 외부 스토리지 활용 (선택 사항)

Amazon S3 또는 EFS 등을 활용해 로그/파일 업로드 경로를 외부화하면
루트 디스크 부담을 줄일 수 있다.


결과 확인

디스크 용량 확장 후 상태:

ubuntu@ip-172-31-36-253:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G  6.5G   22G  23% /
  • 루트 디스크 /dev/root 용량이 29GB로 확장됨
  • 사용량 6.5GB, 여유 공간 22GB → 문제 해결 완료

✅ 자동 로그 정리 설정으로 재발 방지

디스크를 한 번 늘려도 시간이 지나면 다시 공간 부족이 발생할 수 있다.
따라서 시스템 로그가 자동으로 정리되도록 설정하는 것이 중요하다.

systemd journal 로그 용량 제한 설정

설정 파일 열기

sudo nano /etc/systemd/journald.conf

다음 설정 수정

[Journal]
SystemMaxUse=100M # 전체 로그 크기를 100MB로 제한
SystemMaxFileSize=50M # 단일 로그 파일 크기 최대 50MB
MaxRetentionSec=2week # 최대 보관 기간 2주

변경 사항 적용

sudo systemctl restart systemd-journald

정리하며

디스크 용량 부족 문제는 단순히 "jar 파일이 실행되지 않는다"는 현상으로만 나타나지만,
그 원인을 정확히 파악하고 디스크 증설, 로그 정리, 캐시 관리까지 체계적으로 대응해야 한다.
이번 경험을 통해 시스템 리소스를 점검하고 관리하는 능력이 얼마나 중요한지 다시 한 번 느꼈다.

0개의 댓글