[Linux/Ubuntu] Ubuntu 서버 LVM 루트 디스크 용량 부족 문제 해결

2025. 6. 1. 01:14·개발 (Development)/Linux

얼마 전, 제가 관리 중인 Ubuntu 서버에서 갑작스럽게 여러 서비스가 멈추고, SSH 연결 후 명령어 실행이 지연되는 현상이 발생했습니다. 처음에는 단순한 일시적 부하라고 생각했지만, 확인해보니 루트 파일 시스템의 디스크가 꽉 차 있는 상황이었습니다. 정확히는 /dev/mapper/ubuntu--vg-ubuntu--lv가 100% 사용 중이었고, 이로 인해 여러 문제가 동시다발적으로 발생하고 있었습니다.

1. 증상: 서버 응답 지연 및 서비스 중단

문제가 발생했을 당시, 다음과 같은 현상이 나타났습니다.

  • 시스템 로그가 더 이상 기록되지 않음
  • crontab 실행 실패
  • nginx, postgresql 등 서비스 재시작 실패
  • df, top 명령어 실행조차 느림

2. 원인 진단

SSH로 접속한 후 가장 먼저 디스크 사용량을 확인했습니다.

df -h

결과는 다음과 같았습니다:

/dev/mapper/ubuntu--vg-ubuntu--lv  100%

루트 파티션이 LVM 구조로 되어 있었고, 그 파티션이 꽉 차면서 시스템 전반에 문제가 발생한 것이었습니다.

3. 원인 추적: 어떤 디렉터리가 용량을 잡아먹고 있는가?

다음 명령어로 루트 디렉터리 하위에서 가장 많은 용량을 차지하는 디렉터리를 확인했습니다.

sudo du -h --max-depth=1 / | sort -hr | head -n 10

출력 결과 /var와 /snap이 상당한 공간을 차지하고 있었습니다.

특히 /var/log와 /var/lib/snapd/snaps 디렉터리가 의심되었습니다.

4. 조치 사항: 공간 확보

(1) APT 캐시 삭제

sudo apt clean

캐시 파일들을 정리했지만 큰 효과는 없었습니다.

(2) 로그 파일 정리

sudo journalctl --vacuum-time=7d

7일이 지난 로그 파일을 삭제해 약 1GB 가량 확보했습니다.

추가로 압축된 로그들도 삭제했습니다.

sudo rm -rf /var/log/*.gz /var/log/*.[0-9]

(3) Snap 패키지 정리

snap list --all

이전 버전이 남아있는 snap 패키지들이 많았고, 이를 제거하여 공간을 크게 확보할 수 있었습니다.

sudo snap remove <패키지명> --revision=<버전>

(4) 임시파일 삭제

sudo rm -rf /tmp/*

(5) 사용자 휴지통 비우기

rm -rf ~/.local/share/Trash/*

5. LVM 루트 파티션 확장 (남은 공간이 있는 경우)

위 작업으로 3~4GB 정도 여유 공간을 확보하긴 했지만, 용량 부족이 자주 반복될 수 있다고 판단되어 LVM 자체의 크기도 확장하기로 했습니다.

우선 볼륨 그룹의 여유 공간을 확인했습니다.

sudo vgs
sudo lvs

여유 공간이 존재했기 때문에, 다음 명령어를 실행했습니다.

sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

이로써 루트 파티션의 전체 용량이 약 10GB 이상 확장되어 여유롭게 운영이 가능해졌습니다.

6. 마무리

이번 경험을 통해 다음과 같은 교훈을 얻었습니다:

  • LVM 구조라면 디스크 확장이 유연하므로, 초기 설정 시 이를 활용하는 것이 좋다.
  • 주기적인 디스크 사용량 체크가 매우 중요하다.
  • snap, journalctl, /tmp 등 자동으로 쌓이는 파일들을 주기적으로 정리해야 한다.
  • 용량이 부족한 상황에서는 시스템의 거의 모든 기능이 마비될 수 있으므로, 사전 예방이 중요하다.
반응형

'개발 (Development) > Linux' 카테고리의 다른 글

[Linux] Bash에서 `source` 명령어 사용법 정리  (0) 2025.09.07
[Linux] 서버 Memory Swap 사용량  (1) 2025.02.17
[Linux] ll 명령어 완벽 가이드  (0) 2025.02.17
[Linux] 서버 캐시 정리 명령어  (0) 2024.12.21
[Linux/Ubuntu 20.04 LTS] 부팅할 때 특정 파일을 실행  (0) 2024.05.07
'개발 (Development)/Linux' 카테고리의 다른 글
  • [Linux] Bash에서 `source` 명령어 사용법 정리
  • [Linux] 서버 Memory Swap 사용량
  • [Linux] ll 명령어 완벽 가이드
  • [Linux] 서버 캐시 정리 명령어
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • 개발 (Development) (165)
        • Algorithm (1)
        • Angular (1)
        • AWS (6)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (31)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (11)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Vue.js
    Spring boot
    Kafka
    리눅스 마스터 2급
    Linux master
    JPA
    오답노트
    Kubernetes
    백준온라인저지
    MyBatis
    docker
    deepseek
    자바
    Linux
    pandas
    백준
    JSON
    PostgreSQL
    데이터분석
    DevOps
    java
    springboot
    timescaledb
    javascript
    리눅스 마스터 2급 2차
    python
    백준자바
    백준알고리즘
    AWS
    ADsP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Linux/Ubuntu] Ubuntu 서버 LVM 루트 디스크 용량 부족 문제 해결
상단으로

티스토리툴바