본문 바로가기

Linux/Linux(terminal)

[Linux] 저널 로그(journal log)로 인한 용량 압박문제 해결

🔍 저널 로그(journal log)란?

Ubuntu와 같은 최신 Linux 배포판에서는 로그를 관리하기 위해 systemd의 구성 요소인 journald를 사용합니다.

✳️ journald는:

  • 시스템의 표준 출력(stdout), 표준 에러(stderr), 시스템 메시지 등을 수집해 저장합니다.
  • 로그는 /var/log/journal/ 디렉토리에 바이너리 형식으로 저장됩니다.
  • 로그를 조회할 때는 journalctl 명령어를 사용합니다.

✅ 저널 로그(journal log)에 들어가는 내용들

journald는 시스템 전반의 다양한 로그를 수집합니다. 대표적으로:

로그 유형설명
커널 로그 커널이 출력하는 메시지 (dmesg 내용 포함)
시스템 서비스 로그 systemd를 통해 실행되는 서비스들의 출력 (stdout, stderr)
애플리케이션 로그 로그를 표준 출력으로 내보내는 앱/스크립트의 메시지
부팅 메시지 시스템이 부팅될 때 발생하는 모든 이벤트 로그
인증 로그 로그인 시도, sudo 사용 등의 인증 이벤트
하드웨어 이벤트 장치 연결, 네트워크 상태 변화 등
 

📌 왜 로그가 쌓이면 문제가 되나?

  • 프로그램이 많은 메시지를 표준 출력으로 내보내면, systemd가 그걸 journal 로그에 저장함.
  • 이 로그가 계속 쌓이면 /var/log/journal의 디스크 공간을 점점 차지함.
  • 특히 서버처럼 GUI 없이 오래 실행되는 시스템에서는 로그 과다로 용량 부족 문제가 발생하기 쉽습니다.

🧨 용량 부족 → 전원 꺼짐의 원인

저널 로그 자체는 전원을 직접 차단하거나 시스템을 종료하진 않지만, 저널 로그가 디스크 공간을 과도하게 차지할 경우, 다음과 같은 문제로 이어집니다:

📌 1. 디스크 공간 100% 사용

  • /var/log/journal 로그 파일이 수 GB~수십 GB까지 커질 수 있음
  • 루트 디스크(/)의 공간이 부족해지면:
    • 시스템에서 새로운 파일 생성 불가
    • 임시 파일 저장 실패
    • 데몬이나 서비스 작동 중단
    • 일부 시스템은 보호 모드로 재부팅하거나 파일 시스템 손상 방지 위해 셧다운

📌 2. 메모리 압박

  • 로그가 과다하면 journald가 메모리를 많이 점유할 수 있고, 스왑까지 유발될 수 있음

📌 3. 시스템 불안정 → 전원 차단

  • 일부 임베디드 리눅스 장비나 서버에서:
    • 특정 임계치를 넘으면 보호를 위해 자동 종료
    • 또는 파일시스템 손상을 막기 위한 자동 shutdown/reboot 기능

🛠️ 해결 방법 요약

1. 디스크 용량 제한하기

/etc/systemd/journald.conf 파일에서 설정 가능:

ini
# 설정 변경 후 재시작
SystemMaxUse=100M SystemKeepFree=50M

# 명령어로 실행
sudo systemctl restart systemd-journald

 

2. 수동으로 오래된 로그 제거

sudo journalctl --vacuum-time=7d # 7일 초과 로그 삭제
sudo journalctl --vacuum-size=100M # 100MB 초과 삭제

 

3. 전원 켤 때 자동 실행하는 스크립트에서 출력 리디렉션 추가:

서비스에서 로그를 남기지 않게 하려면:

ini
# systemd 서비스 파일 설정 변경
StandardOutput=null StandardError=null

# 또는 명령어 실행 시:
your-command > /dev/null 2>&1
  • > /dev/null: 표준 출력 무시
  • 2>&1: 표준 에러도 표준 출력으로 보내서 /dev/null로 무시 
  • 이렇게 하면 journald 로그로 출력이 안 들어가므로 로그가 쌓이지 않습니다.

🔎 관련 명령어

# 전체 저널 로그 보기
journalctl
# 특정 서비스의 로그 보기
journalctl -u your-service-name
# 로그 디스크 사용량 확인
journalctl --disk-usage
# 오래된 로그 정리 (예: 1주일 전까지 유지)
sudo journalctl --vacuum-time=7d