Linux df -h 용량 100% 찼을 때 대형 로그 파일 찾아 안전하게 삭제하기

    서버를 운용하다가 갑자기 데이터베이스 쓰기가 멈추거나 서비스가 다운되는 현상의 상당수는 디스크 용량 초과(Disk Full) 때문입니다.

    본 문서에서는 df -h 명령어로 디스크 100% 가 채워졌을 때 원인이 되는 용량 대형 로그 및 임시 파일을 찾고 안전하게 비우는 가이드를 제시합니다.

    1. 디스크 용량 초과 시 발생하는 현상

    • 웹 서비스 500 Internal Server Error 발생
    • MySQL/MariaDB 등 DB 데몬 자동 중단 및 Table Crash
    • SSH 세션 접속 불가 또는 세션 파일 생성 실패

    2. 단계별 용량 확보 절차

    [1단계] 전체 마운트 디스크 용량 확인

    Bash

    df -h
    

    출력 결과 중 Use% 항목이 100% 또는 95% 이상인 파티션(예: / 또는 /var)을 식별합니다.

    [2단계] 가장 용량을 많이 차지하는 디렉토리 탐색

    du 명령어를 사용하여 루트(/) 디렉토리부터 하위 폴더별 용량을 상위 10개만 정렬하여 확인합니다.

    Bash

    # 루트 디렉토리 기준 용량 상위 폴더 탐색
    sudo du -ahx / | sort -rh | head -n 15
    
    # 일반적으로 용량이 차는 주요 경로 집중 점검
    cd /var/log
    sudo du -sh * | sort -rh | head -n 10
    

    [3단계] 대형 로그 파일 비우기 (rm 사용 주의!)

    실행 중인 프로세스가 잡고 있는 로그 파일을 rm 명령어로 단순 삭제하면, 프로세스가 파일 핸들을 놓지 않아 디스크 용량이 줄어들지 않는 현상(deleted 상태 지속)이 생깁니다.

    따라서 파일 내용을 0바이트로 비워주는 방식을 사용해야 합니다.

    Bash

    # 1. 특정 대형 로그 파일 내용만 0바이트로 초기화 (안전)
    sudo truncate -s 0 /var/log/nginx/access.log
    # 또는
    sudo > /var/log/syslog
    
    # 2. 삭제했으나 프로세스가 잡고 있어 용량이 안 줄어드는 파일 확인 및 프로세스 재시작
    sudo lsof | grep deleted
    

    [4단계] Journalctl 및 시스템 찌꺼기 정돈

    systemd 진단 로그가 너무 누적된 경우 일괄 정리가 가능합니다.

    Bash

    # 3일 이전의 journal 로그 삭제
    sudo journalctl --vacuum-time=3d
    
    # apt/yum 패키지 캐시 정리
    sudo apt clean        # Ubuntu
    sudo yum clean all    # CentOS

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다