Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

journalctl vacuum이 0B만 해제했나요? 활성 저널을 로테이션하고 용량 하한을 이해하세요

활성 저널 파일과 아카이브된 파일을 구분하고, 영구 저장소와 휘발성 저장소에 맞는 한도를 선택한 뒤 사용량이 요청한 목표보다 높게 남는 이유를 확인하세요.

디스크 사용량에는 활성 저널과 아카이브된 저널이 포함되지만 vacuum은 아카이브된 파일만 삭제한다는 점을 보여 주는 자체 제작 설명 그림.
자체 제작 개념 일러스트: 활성 파일 때문에 공간이 전혀 해제되지 않았다면 일회성 vacuum을 실행하기 전에 활성 저널을 로테이션하세요. Watch at Ease

journalctl vacuum이 정상적으로 실행되어도 0B만 해제하거나 디스크 사용량이 요청한 크기보다 높게 남을 수 있습니다. 이것만으로 명령이 잘못 작동했다고 볼 수는 없습니다. 표시되는 사용량에는 활성 저널 파일과 아카이브된 파일이 모두 포함되지만, vacuum은 아카이브된 파일만 삭제합니다. 지금까지 기록된 데이터를 일회성 정리에 포함하려면 먼저 로테이션하세요.

일회성 vacuum과 앞으로 적용할 저장 용량 한도는 서로 다릅니다. /var/log/journal 아래의 영구 저널에는 System 설정을, /run/log/journal 아래의 휘발성 저널에는 Runtime 설정을 사용합니다. 한도를 올바르게 설정한 뒤에도 활성 저널 하나가 남는 점과 파일 크기에 따른 처리 단위 때문에 전체 사용량이 명목상 값보다 높을 수 있습니다.

1. 삭제하기 전에 기준 상태를 기록하세요

sudo journalctl --disk-usage를 실행하고 출력을 기록하세요. 그런 다음 sudo du -sh /var/log/journal /run/log/journal 2>/dev/null과 sudo journalctl --list-boots의 출력을 확인하세요. 첫 번째 명령은 저널 관점의 사용량을 보여 주고, 디렉터리 확인은 해당 저장소가 영구 저장소인지, 휘발성 저장소인지, 아니면 둘 다인지 알려 줍니다. 배포판 이름만으로 저장소 유형을 추정하지 마세요.

정리하기 전에 사고 조사, 감사 또는 지원 요청에 필요한 로그를 보존하세요. 이 절차는 로컬 저널 저장소를 관리합니다. journal-remote의 보존 정책, 내보낸 아카이브, 사용 중인 저널 디렉터리 계층 밖으로 복사한 파일은 다루지 않습니다.

2. 설정을 바꾸기 전에 0B 결과의 이유를 확인하세요

업스트림 매뉴얼에 따르면 --disk-usage에는 활성 파일과 아카이브된 파일이 모두 포함되지만, vacuum은 아카이브된 파일을 대상으로 작동합니다. 저장소에 활성 파일만 있다면 작은 목표를 지정해도 0B만 해제될 수 있습니다. Server Fault 사례가 정확히 이 패턴을 보여 주며, 나중에 아카이브된 파일이 생긴 뒤에야 공간이 해제됩니다.

--vacuum-size=0을 모두 지우는 지름길로 사용하지 마세요. 현재 systemd 문서에서 0은 해당 기준에 제한을 두지 않는다는 뜻입니다. 시스템 진단에 충분한 기록을 남길 수 있도록 0이 아닌 목표를 선택하세요.

3. 범위를 정해 일회성 정리를 수행하세요

지금까지 기록된 데이터를 포함하려면 sudo journalctl --rotate --vacuum-size=500M을 실행하고, 500M을 검토한 목표값으로 바꾸세요. 두 옵션을 함께 사용하면 먼저 활성 파일을 로테이션한 다음 아카이브된 파일에 vacuum을 적용합니다. journald가 사용 중인 .journal 파일을 수동으로 삭제하지 마세요.

sudo journalctl --disk-usage를 다시 실행하고, 해제된 바이트 수 메시지와 새 전체 사용량을 모두 기록하세요. 공간이 여전히 사용되고 있다고 해서 자동으로 실패를 의미하지는 않습니다. 새 활성 파일은 남으며, 별도의 네임스페이스나 저장소가 사용량에 포함될 수도 있습니다.

4. 저장소 유형에 맞는 장기 한도를 선택하세요

/var/log/journal 아래의 영구 저장소에는 로컬 journald.conf drop-in 설정 파일에서 SystemMaxUse를 지정하고, 더 세밀한 삭제 단위가 필요하면 SystemMaxFileSize도 설정하세요. /run/log/journal 아래의 휘발성 저장소에는 대신 RuntimeMaxUse와 RuntimeMaxFileSize를 사용하세요. SystemKeepFree와 RuntimeKeepFree는 여유 공간을 확보하며, journald는 적용되는 한도 중 더 작은 값을 사용합니다.

Red Hat은 영구 저널 활성화를 별도 절차로 설명하며, /var/log/journal이 존재하고 파일을 포함하는지 확인합니다. Storage=auto가 적용되는 시스템에서는 이 디렉터리의 존재 여부가 중요합니다. 특정 시스템 역할에만 맞는 예제를 그대로 복사하지 말고, 사용 중인 배포판의 설정 방식과 검증 도구를 따르세요.

5. 설정을 적용하고 검증하세요

로컬 drop-in을 추가한 뒤에는 배포판에서 제공하는 도구로 실제 적용되는 설정을 검증하세요. 지원되는 절차에 따라 systemd-journald의 설정을 다시 읽어 들이거나 서비스를 재시작하고, 예상한 저장 디렉터리를 확인하세요. 그런 다음 일반 로그를 생성하고, 필요한 경우 로테이션을 기다린 뒤 디스크 사용량을 다시 확인하세요. 설정 파일의 구문이 올바르더라도 잘못된 저장소 유형을 대상으로 할 수 있습니다.

정리 직후의 결과뿐 아니라 안정 상태를 시험하세요. 활성 파일 크기, 아카이브된 파일의 총량, 설정한 MaxUse와 MaxFileSize, 여유 공간을 기록하세요. 이렇게 하면 실제 사용량 증가 문제를 문서에 설명된 활성 파일의 하한이나 큰 파일 단위에 따른 차이와 구분할 수 있습니다.

6. 이 결과가 입증하는 범위를 이해하세요

로테이션과 vacuum의 결과가 입증하는 것은 적격한 로컬 아카이브 저널 파일이 선택한 기준에 따른 검토 대상에 포함되었다는 사실뿐입니다. 모든 애플리케이션 로그가 journald에 저장된다는 뜻도, 원격 아카이브가 정리되었다는 뜻도, 앞으로의 용량 한도가 설정되었다는 뜻도 아닙니다.

사용량이 예상한 안정 상태 범위를 넘어 계속 증가한다면 실제 디렉터리, 활성 파일과 아카이브된 파일의 크기, 저널 네임스페이스, 실제 적용되는 설정, systemd 버전을 수집하세요. 어떤 구성 요소가 공간을 소비하는지 증거로 확인하기 전에는 목표값을 계속 낮추지 마세요.

var 아래의 영구 저널 저장소와 run 아래의 휘발성 저널 저장소, 각각에 적용되는 용량 설정을 비교하는 자체 제작 설명 그림.
자체 제작 개념 일러스트: 영구 저장소에는 System 설정을, 휘발성 저장소에는 Runtime 설정을 선택한 뒤 실제 경로와 활성 파일의 하한을 확인하세요. Watch at Ease