Systemd 저널 한도 설정: 디스크 사용량 최적화 및 로그 순환

journald.conf, journalctl 및 안전한 로그 정리 명령을 사용하여 systemd 저널 크기 및 보존 한도를 구성합니다.

Systemd 저널 한도 설정: 디스크 사용량 최적화 및 로그 순환

시스템 로그는 조용히 디스크를 가득 채울 때까지 유용합니다. systemd를 사용하는 Linux 시스템에서 systemd-journald는 인덱싱된 로그를 저장하고 크기 및 기간 제한을 적용하여 저널이 시스템의 나머지 부분을 밀어내지 않으면서 충분한 기록을 유지하도록 할 수 있습니다.

이 가이드에서는 systemd 저널 한도를 구성하는 위치, 영구 저장소와 휘발성 저장소의 차이점, 그리고 journalctl을 사용하여 정리를 확인하는 방법을 설명합니다.

저널 저장 모드 이해

한도를 설정하기 전에 저널이 로그를 저장하는 위치를 이해하는 것이 중요합니다. systemd-journaldjournald.confStorage= 지시문에 의해 정의된 두 가지 기본 저장 모드를 지원합니다.

1. 휘발성 저장소 (/run/log/journal)

휘발성 저장소는 일반적으로 tmpfs 또는 메모리 기반 디렉토리인 임시 파일 시스템에 로그를 보관합니다. 여기에 저장된 로그는 시스템 재부팅 시 손실됩니다.

  • 사용 사례: 임시 로그가 많거나, 지속적인 기록이 필요하지 않은 리소스 제약 환경.
  • 구성: Storage=volatile로 설정합니다.

2. 영구 저장소 (/var/log/journal)

영구 저장소는 시스템 재부팅 후에도 로그가 유지되도록 보장하므로 서버 및 프로덕션 시스템의 표준 선택입니다. /var/log/journal 디렉토리가 아직 존재하지 않으면 생성됩니다.

  • 사용 사례: 감사 추적 및 기록 분석이 필요한 프로덕션 시스템.
  • 구성: Storage=persistent 또는 Storage=auto(기본값, /var/log/journal이 존재하는 경우 영구 저장소 활성화)로 설정합니다.

팁: 시스템이 Storage=auto로 구성되어 있고 /var/log/journal이 존재하지 않는 경우, 영구 디렉토리가 생성될 때까지 로그는 기본적으로 휘발성 저장소에 저장됩니다.

기본 구성 파일

systemd-journald의 모든 기본 한도 및 동작은 일반적으로 /etc/systemd/journald.conf에 있는 기본 구성 파일을 통해 제어됩니다.

# 기본 구성 파일 편집
sudo nano /etc/systemd/journald.conf

향후 패키지 업데이트가 사용자 지정을 덮어쓰지 않도록 하려면 /etc/systemd/journald.conf.d/ 디렉토리에 재정의 파일을 만드는 것이 좋습니다. 예를 들어 /etc/systemd/journald.conf.d/01-custom-limits.conf를 만듭니다.

디스크 최적화를 위한 크기 제한 구현

저널 증가를 제어하는 가장 일반적인 방법은 최대 디스크 사용량 제한을 설정하는 것입니다. 지정된 크기를 초과하면 journald는 한도에 도달할 때까지 가장 오래된 보관 로그를 자동으로 삭제하기 시작합니다.

SystemMaxUse (절대 영구 한도)

이 지시문은 영구 저널 파일(/var/log/journal)이 차지할 수 있는 최대 총 디스크 공간을 정의합니다. 이는 영구 디스크 사용량을 제어하는 주요 메커니즘입니다.

총 크기가 이 값을 초과하면 저널 파일이 순환되고 정리됩니다. 일반적인 단위로는 K(킬로바이트), M(메가바이트), G(기가바이트), T(테라바이트)가 있습니다.

지시문 설명 예시 값
SystemMaxUse 영구 저널 데이터의 최대 크기입니다. 500M 또는 2G

구성 예시:

영구 저널 저장소를 최대 1GB로 제한하려면:

[Journal]
SystemMaxUse=1G

SystemKeepFree (디스크 안전 버퍼)

SystemMaxUse가 상한을 설정하는 반면, SystemKeepFree는 중요한 안전 조치 역할을 합니다. 저널 파일이 포함된 파일 시스템에 남아 있어야 하는 최소 디스크 공간을 지정합니다.

사용 가능한 여유 공간이 SystemKeepFree 값 아래로 떨어지면 SystemMaxUse 한도에 아직 도달하지 않았더라도 journald가 로그를 정리합니다. 이는 로그 증가로 인해 디스크가 완전히 채워지고 중요한 시스템 작업이 중단되는 것을 방지합니다.

지시문 설명 예시 값
SystemKeepFree 저널 파일 시스템에 필요한 최소 여유 공간입니다. 10% 또는 4G

모범 사례: SystemMaxUseSystemKeepFree를 모두 설정하는 것이 좋습니다. 대용량 드라이브의 경우 더 나은 확장성을 위해 SystemKeepFree에 백분율(%)을 사용하십시오.

RuntimeMaxUse (휘발성 저장소 한도)

휘발성 저장소(/run/log/journal)를 사용하거나 영구 저장소가 활성화된 상태에서도 메모리/tmpfs 사용량을 제어하려는 경우 RuntimeMaxUse를 사용하십시오. 이는 메모리나 tmpfs에 상주하는 임시 휘발성 저널 파일이 사용하는 디스크 공간을 제어합니다.

지시문 설명 예시 값
RuntimeMaxUse 휘발성 저널 데이터의 최대 크기입니다. 300M

로그 보존을 위한 시간 제한 구현

크기 기반 제한은 디스크 공간이 유지되도록 보장하지만 로그의 기간을 보장하지는 않습니다. 로그 볼륨이 적으면 로그가 무기한 유지될 수 있습니다. 시간 기반 제한은 총 크기와 관계없이 특정 기간 후에 로그가 순환되도록 합니다.

MaxRetentionSec

이 지시문은 로그를 보존해야 하는 최대 시간을 지정합니다. 이 기간보다 오래된 로그는 자동으로 제거되어 크기 제한을 보완합니다.

지시문 설명 예시 값
MaxRetentionSec 유지할 로그의 최대 기간입니다. 30 days, 1 month, 2 weeks

구성 예시:

로그가 30일을 초과하지 않고 총 영구 저장소가 5GB를 초과하지 않도록 하려면:

[Journal]
Storage=persistent
SystemMaxUse=5G
SystemKeepFree=10%
MaxRetentionSec=30 days

참고: MaxRetentionSec이 30일로 설정되고 SystemMaxUse가 5G로 설정된 경우, journald는 먼저 도달하는 제한을 따릅니다. 5G 제한이 10일 만에 도달하면 10일보다 오래된 로그가 제거되어 30일 보존 정책을 무시합니다.

실용적인 단계: 구성 적용 및 확인

1. 현재 저널 사용량 확인

변경하기 전에 저널의 현재 디스크 사용량을 확인하십시오:

journalctl --disk-usage

출력 예시:

Journals take up 3.4G of disk space.

2. 한도 구성

/etc/systemd/journald.conf(또는 재정의 파일)를 편집하고 원하는 지시문의 주석을 해제/설정합니다. 예를 들어, 최대 사용량 500MB 및 30일 보존을 보장하려면:

[Journal]
Storage=persistent
SystemMaxUse=500M
SystemKeepFree=1G
MaxRetentionSec=30 days

3. 저널 서비스 다시 시작

변경 사항을 적용하려면 systemd-journald 서비스를 다시 시작해야 합니다. 이는 활성 로깅에 영향을 미치지 않지만 데몬에게 새 크기 제약 조건을 즉시 적용하고 정리 프로세스를 시작하도록 지시합니다.

sudo systemctl restart systemd-journald

4. 수동으로 강제 정리

새 제한에 따라 디스크 공간을 즉시 확보해야 하는 경우 서비스 재시작으로 충분한 경우가 많습니다. 또는 journalctl을 사용하여 명시적으로 파일을 정리할 수 있습니다.

마지막 500MB만 남기고 공간을 확보하기 위해 로그를 정리하려면:

sudo journalctl --vacuum-size=500M

7일보다 오래된 로그를 정리하려면:

sudo journalctl --vacuum-time=7d

주요 지시문 요약

지시문 범위 목적
Storage 전역 저장 위치 정의 (영구, 휘발성, 자동).
SystemMaxUse 영구 (/var/log/journal) 영구 로그의 절대 최대 총 크기.
SystemKeepFree 영구 (/var/log/journal) 최소 여유 디스크 공간이 남아 있도록 보장.
RuntimeMaxUse 휘발성 (/run/log/journal) 휘발성 (런타임) 로그의 절대 최대 총 크기.
MaxRetentionSec 둘 다 보존된 로그의 최대 기간 정의.

핵심 요점

로그가 중단되기 전에 저널 한도를 설정하십시오. 대부분의 서버의 경우 /etc/systemd/journald.conf.d/ 아래에 드롭인을 사용하고, SystemMaxUseSystemKeepFree를 설정하고, 보존 목표가 있는 경우 MaxRetentionSec을 추가하고, systemd-journald를 다시 시작한 후 journalctl --disk-usage로 결과를 확인하십시오.