본문 바로가기

카테고리 없음

리눅스 서버 디스크 용량 부족 해결법: df와 du 명령어로 대용량 파일 찾기

 

리눅스 서버를 운영하다 보면 어느 순간 디스크 공간이 부족해지는 문제가 발생할 수 있습니다.

처음 서버를 구축했을 때는 충분한 디스크 공간이 남아 있었는데 웹사이트를 운영하고 로그와 백업 파일, 데이터베이스가 계속 쌓이면서 저장 공간이 빠르게 줄어드는 경우가 있습니다.

디스크 공간이 부족해지면 단순히 파일을 저장하지 못하는 것에서 끝나지 않습니다.

Nginx와 같은 웹 서버가 정상적으로 로그를 기록하지 못하거나 데이터베이스가 오류를 발생시킬 수 있고, 심한 경우 서비스 자체가 정상적으로 동작하지 않을 수도 있습니다.

리눅스에서는 이러한 문제를 확인하기 위해 df와 du 명령어를 가장 기본적으로 활용할 수 있습니다.

이번 글에서는 df와 du를 이용해 디스크 사용량을 확인하고, 어떤 디렉터리와 파일이 많은 공간을 차지하고 있는지 찾아서 안전하게 정리하는 방법을 알아보겠습니다.


1. 리눅스 서버 디스크 용량 부족이

발생하는 이유

서버의 디스크 공간이 부족해지는 원인은 한 가지가 아닙니다.

대표적인 원인은 다음과 같습니다.

  • Nginx 및 Apache 로그 파일 증가
  • 애플리케이션 로그 누적
  • 오래된 백업 파일
  • Docker 이미지와 컨테이너 데이터 증가
  • 데이터베이스 파일 증가
  • 임시 파일 누적
  • 오래된 패키지 및 캐시
  • 사용하지 않는 파일과 디렉터리
  • 삭제했지만 프로세스가 계속 사용 중인 파일

특히 서버를 장기간 운영할수록 로그와 백업 데이터가 계속 누적될 수 있기 때문에 정기적으로 디스크 사용량을 확인하는 것이 좋습니다.


2. df 명령어로 디스크 전체 사용량 확인하기

먼저 서버의 디스크 사용량부터 확인해야 합니다.

가장 기본적인 명령어는 다음과 같습니다.

df -h

-h 옵션은 사람이 읽기 편한 단위로 디스크 용량을 표시합니다.

실행 결과는 대략 다음과 같은 형태로 나타납니다.

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G   42G  5.5G  89% /
tmpfs           1.9G     0  1.9G   0% /dev/shm

여기서 가장 중요하게 봐야 하는 부분은 Use%입니다.

예를 들어 다음과 같이 표시된다면:

/dev/vda1   50G   48G   2G   96%   /

전체 디스크의 96%를 사용하고 있다는 의미입니다.

일반적으로 디스크 사용량이 지나치게 높아지기 전에 원인을 찾아 정리하는 것이 좋습니다.


3. 특정 파일 시스템만 확인하기

서버에 여러 디스크나 파티션이 연결되어 있다면 파일 시스템별 사용량을 확인할 필요가 있습니다.

다음 명령어를 사용할 수 있습니다.

df -hT

-T 옵션을 사용하면 파일 시스템 종류도 함께 확인할 수 있습니다.

예를 들어 다음과 같은 정보를 확인할 수 있습니다.

  • 파일 시스템 이름
  • 전체 용량
  • 사용 용량
  • 남은 용량
  • 사용률
  • 마운트 위치
  • 파일 시스템 유형

서버의 디스크 구조를 파악할 때 유용한 명령어입니다.


4. 디스크가 부족하다면 du로 원인 찾기

df는 전체 디스크가 얼마나 사용되고 있는지 확인하는 데 적합합니다.

하지만 어떤 디렉터리가 많은 공간을 차지하고 있는지는 du 명령어를 사용하는 것이 좋습니다.

먼저 / 아래의 주요 디렉터리 사용량을 확인해보겠습니다.

sudo du -sh /*

이 명령어를 실행하면 /etc, /home, /var, /usr 등의 디렉터리가 각각 얼마나 공간을 사용하는지 확인할 수 있습니다.

예를 들어 다음과 같은 결과가 나올 수 있습니다.

2.1G    /etc
8.7G    /home
18G     /var
12G     /usr

이 경우 /var 디렉터리가 18GB를 사용하고 있기 때문에 /var 내부를 추가로 확인할 필요가 있습니다.


5. /var 디렉터리에서 대용량 공간 찾기

리눅스 서버에서는 /var 디렉터리에 로그나 캐시, 애플리케이션 관련 데이터가 저장되는 경우가 많습니다.

다음 명령어를 실행해보겠습니다.

sudo du -sh /var/*

예를 들어:

1.2G    /var/cache
14G     /var/log
2.5G    /var/lib

이런 결과가 나온다면 /var/log의 사용량이 매우 큰 것을 확인할 수 있습니다.

그렇다면 다시 로그 디렉터리를 자세히 살펴봅니다.

sudo du -sh /var/log/*

이렇게 단계적으로 범위를 좁혀가면 어떤 디렉터리가 디스크를 많이 사용하는지 쉽게 찾을 수 있습니다.


6. 가장 큰 디렉터리를 빠르게 찾는 방법

많은 디렉터리 중에서 어떤 곳이 가장 큰지 확인하려면 sort와 함께 사용할 수 있습니다.

sudo du -h /var | sort -h

결과의 마지막 부분에 용량이 큰 항목이 표시되므로 대용량 디렉터리를 찾는 데 도움이 됩니다.

서버의 루트 디렉터리에서 확인하려면 다음과 같이 사용할 수도 있습니다.

sudo du -xh / | sort -h | tail -n 20

다만 /proc, /sys 등의 가상 파일 시스템 때문에 시스템 환경에 따라 결과가 복잡하게 나타날 수 있습니다.

처음에는 /var, /home, /opt, /srv처럼 실제 데이터가 많이 저장되는 디렉터리부터 확인하는 것이 효율적입니다.


7. 대용량 파일 직접 찾기

디렉터리뿐만 아니라 특정 파일 하나가 엄청난 용량을 차지하는 경우도 있습니다.

예를 들어 1GB보다 큰 파일을 찾으려면 다음과 같은 명령어를 사용할 수 있습니다.

sudo find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null

이 명령어를 이용하면 서버 전체에서 1GB보다 큰 일반 파일을 찾아볼 수 있습니다.

파일 크기를 확인하면서 다음 항목을 주의해서 살펴보세요.

  • 오래된 백업 파일
  • 압축 파일
  • 대용량 로그 파일
  • 데이터베이스 백업
  • 애플리케이션 생성 파일
  • Docker 관련 데이터

중요한 것은 큰 파일을 발견했다고 바로 삭제하면 안 된다는 것입니다.

먼저 해당 파일이 어떤 용도로 사용되고 있는지 확인해야 합니다.


8. Nginx 로그가 디스크를 많이 사용하는 경우

웹 서버를 운영하는 환경에서는 Nginx 로그가 예상보다 빠르게 증가할 수 있습니다.

일반적으로 Nginx 로그는 다음과 같은 위치에서 확인할 수 있습니다.

sudo du -sh /var/log/nginx/*

예를 들어 다음과 같은 결과가 나온다고 가정해보겠습니다.

850M    /var/log/nginx/access.log
2.4G    /var/log/nginx/error.log

이 경우 로그가 디스크 공간을 상당히 차지하고 있다는 것을 알 수 있습니다.

하지만 운영 중인 로그 파일을 무작정 rm으로 삭제하는 것은 권장하지 않습니다.

로그 관리 정책과 logrotate 설정을 확인하고 필요한 경우 보관 기간과 압축 정책을 조정하는 것이 더 안전합니다.


9. logrotate 설정 확인하기

리눅스에서는 로그가 무한정 커지는 것을 방지하기 위해 logrotate를 사용하는 경우가 많습니다.

설정 파일은 일반적으로 다음 위치에서 확인할 수 있습니다.

ls /etc/logrotate.d/

Nginx 관련 설정이 있는지 확인하려면:

cat /etc/logrotate.d/nginx

서버 환경에 따라 설정 내용은 다를 수 있지만 일반적으로 오래된 로그를 압축하거나 일정 기간이 지나면 삭제하도록 관리할 수 있습니다.

로그 파일이 계속 커지고 있다면 단순히 현재 로그를 삭제하기보다 로그 로테이션이 정상적으로 작동하고 있는지 확인하는 것이 중요합니다.


10. Docker가 디스크를 많이 사용하는 경우

Docker를 사용하는 서버에서는 컨테이너와 이미지, 볼륨 등이 디스크 공간을 상당히 사용할 수 있습니다.

먼저 Docker의 디스크 사용량을 확인합니다.

docker system df

컨테이너 목록은 다음과 같이 확인할 수 있습니다.

docker ps -a

사용하지 않는 이미지나 컨테이너가 계속 쌓이면 디스크 공간이 부족해질 수 있습니다.

다만 Docker 데이터를 정리할 때는 현재 운영 중인 컨테이너와 필요한 이미지, 볼륨을 반드시 확인해야 합니다.

특히 볼륨에는 데이터베이스와 애플리케이션의 중요한 데이터가 저장되어 있을 수 있기 때문에 무조건 삭제해서는 안 됩니다.


11. 삭제한 파일인데 디스크 공간이 돌아오지 않는 경우

가끔 큰 파일을 삭제했는데도 df -h에서 디스크 사용량이 줄어들지 않는 경우가 있습니다.

이런 상황에서는 삭제된 파일을 프로세스가 계속 열고 있는 경우를 확인할 수 있습니다.

다음 명령어를 사용할 수 있습니다.

sudo lsof +L1

출력 결과에 (deleted)라고 표시된 파일이 있다면 프로세스가 삭제된 파일을 계속 사용하고 있을 가능성이 있습니다.

이 경우 파일 자체는 디렉터리에서 삭제되었지만 프로세스가 파일 핸들을 유지하고 있기 때문에 실제 디스크 공간이 바로 반환되지 않을 수 있습니다.

해당 프로세스를 확인한 후 서비스 재시작 등이 필요한지 판단해야 합니다.

운영 서버에서는 프로세스를 무작정 종료하지 말고 서비스 영향부터 확인해야 합니다.


12. 디스크 사용량을 확인한 후 안전하게 정리하기

대용량 파일을 찾았다고 해서 바로 삭제하는 것은 위험합니다.

다음 순서로 확인하는 것이 좋습니다.

1단계

파일 또는 디렉터리의 용도를 확인합니다.

2단계

현재 실행 중인 서비스가 사용하고 있는지 확인합니다.

3단계

필요한 데이터라면 백업 여부를 확인합니다.

4단계

불필요한 파일이라면 삭제 또는 별도 저장을 결정합니다.

5단계

정리 후 다시 디스크 사용량을 확인합니다.

df -h

정리 전후의 사용량을 비교하면 실제로 공간이 확보되었는지 확인할 수 있습니다.


13. 디스크 용량 부족을 예방하는 방법

디스크가 가득 찬 뒤 해결하는 것보다 미리 관리하는 것이 훨씬 좋습니다.

정기적으로 다음 항목을 확인하는 것을 추천합니다.

  • df -h로 전체 디스크 사용률 확인
  • /var/log 로그 크기 확인
  • 오래된 백업 파일 확인
  • Docker 이미지와 컨테이너 확인
  • 데이터베이스 저장 공간 확인
  • 임시 파일 및 캐시 확인
  • 로그 로테이션 상태 확인
  • 대용량 파일 정기 점검

특히 서버 운영 환경에서는 디스크 사용률이 일정 수준을 넘어가면 관리자에게 알림을 보내도록 모니터링 시스템을 구성하는 것도 좋은 방법입니다.


14. 디스크 부족 문제를 해결하는 실전 점검 순서

실제 서버에서 디스크 부족 경고가 발생했다면 다음 순서로 확인해보세요.

① 전체 디스크 사용량 확인

df -h

② 용량이 큰 디렉터리 확인

sudo du -sh /*

③ /var 확인

sudo du -sh /var/*

④ 로그 확인

sudo du -sh /var/log/*

⑤ 대용량 파일 검색

sudo find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null

⑥ Docker 사용량 확인

docker system df

⑦ 삭제된 파일 확인

sudo lsof +L1

⑧ 정리 후 다시 확인

df -h

이 순서대로 점검하면 디스크 용량 부족의 원인을 비교적 체계적으로 찾아갈 수 있습니다.


15. 디스크가 100% 사용되었을 때 주의할 점

디스크 사용률이 100%에 가까워졌다면 가능한 한 빠르게 원인을 찾아야 합니다.

특히 다음과 같은 문제가 발생할 수 있습니다.

  • 로그 기록 실패
  • 웹 서버 오류
  • 데이터베이스 오류
  • 애플리케이션 실행 실패
  • 임시 파일 생성 실패
  • SSH 접속 이후 명령 실행 문제
  • 서버 서비스 비정상 종료

이때 중요한 것은 무작정 여러 파일을 삭제하지 않는 것입니다.

먼저 df -h로 어느 파일 시스템이 가득 찼는지 확인한 후 du를 이용해 원인을 찾아야 합니다.

운영 중인 서버의 데이터베이스 파일이나 Docker 볼륨, 애플리케이션 데이터를 잘못 삭제하면 더 큰 장애로 이어질 수 있습니다.


16. df와 du의 차이점 정리

두 명령어는 비슷해 보이지만 역할이 다릅니다.

명령어주요 용도

df -h 파일 시스템 전체 사용량 확인
df -hT 파일 시스템 종류까지 확인
du -sh 특정 디렉터리 용량 확인
du -sh /* 주요 디렉터리별 용량 확인
find 특정 크기 이상의 파일 검색
lsof +L1 삭제됐지만 프로세스가 사용하는 파일 확인
docker system df Docker 디스크 사용량 확인

간단하게 기억하면 df는 전체 상태를 확인하고, du는 어디에서 공간을 사용하고 있는지 찾는 명령어라고 생각하면 됩니다.


마무리

리눅스 서버의 디스크 용량 부족 문제는 서버 운영 중 비교적 자주 발생하는 문제입니다.

특히 웹 서버 로그, 데이터베이스, Docker 데이터, 백업 파일 등이 장기간 누적되면 예상보다 빠르게 디스크 공간이 줄어들 수 있습니다.

문제가 발생했을 때는 먼저 다음 명령어로 전체 상태를 확인합니다.

df -h

그다음 du를 이용해 용량을 많이 사용하는 디렉터리를 찾아갑니다.

sudo du -sh /*

필요하다면 대용량 파일까지 검색합니다.

sudo find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null

그리고 Nginx 로그, Docker 데이터, 백업 파일 등 실제 원인을 확인한 뒤 필요한 데이터와 불필요한 데이터를 구분해서 안전하게 정리하는 것이 중요합니다.

서버 디스크 관리는 장애가 발생한 후 한 번 처리하는 작업이 아니라 정기적으로 확인해야 하는 기본적인 운영 업무입니다.

다음 글에서는 이와 연결해서 **「리눅스 서버 메모리 부족 원인과 free·top·ps 명령어로 프로세스 분석하는 방법」**을 다루면 서버 장애 대응 시리즈를 자연스럽게 이어갈 수 있습니다.


 


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 블로그 이름