내가 할 때 journalctl --disk-usage
그것은 다음과 같이 말합니다.300MB저널 파일의 크기이지만 실제 텍스트를 보면 journalctl | wc -c
대략적인 것 같습니다.28MB. 글쎄, Journald에는 압축 기능이 있으며 심지어 타임스탬프, UID, 메시지 해시 등과 같은 메타데이터를 고려하더라도 터무니없는 디스크 공간 낭비처럼 보입니다.
내부의 실제 텍스트에 비해 저널 파일이 왜 그렇게 큰지 누군가 말해 줄 수 있나요?
답변1
두 가지 이유가 있습니다. 첫째, @Mella가 언급했듯이 현재 로그와 모든 로그에는 차이가 있습니다.
둘째, 에 설명된 대로 man journalctl
다양한 출력 형식이 있습니다. 가장 작고 가장 세밀하지 않은 크기를 측정하고 있었습니다. 시스템 저널에서 최대 데이터를 보려면 다음을 사용하십시오.
journactl --output=verbose
내 경우 압축 저널 출력은 32MB의 데이터를 반환하는 반면 128MB는 로 반환되고 --output=verbose
152M은 journalctl --disk-usage
활성 저널과 보관된 저널을 모두 포함합니다.
우려되는 경우 man journald.conf
디스크 공간 사용을 제한하는 방법을 알아 보십시오 .journald
답변2
- 그것은 일종의 버그이기 때문에 엄청납니다.
표시된대로상류따라서 저널드 개발자들에게 알려진 바이너리 로그 형식에 사용된 형식은 전혀 훌륭하지 않습니다(아직?).
- 압축이 활성화되지 않았기 때문에 크기가 매우 큽니다.
/etc/systemd/journald.conf
또한 명명 된 옵션이 있는데 Compress=yes
, 이는 시스템에서 활성화되지 않을 수 있으므로 사실상 압축이 없습니다.
- 여기서는 보관된 저널의 문제가 중요하지 않습니다.
원칙적으로 Journald가 다음을 구별한다는 것은 사실입니다.활동적인그리고보관된man journalctl
저널 로그에 따르면 이것은 명백하게 다음 과 같이 다른 답변에 대한 오해의 소지가 있는 답변입니다 .
출력은 회전되었거나 현재 작성 중인지, 시스템 자체에 속해 있는지 또는 액세스 가능한 사용자 저널인지 여부에 관계없이 액세스 가능한 모든 저널 파일에서 인터리브됩니다.
따라서 다른 답변은 오해의 소지가 있습니다.
- 일부 파일 할당, 조각화, 부패 방지 조치로 인해 Journalctl의 디스크 사용량은 엄청납니다(즉, 비슷한 수준의 정보가 있는 일반 텍스트 파일(즉, 필드)보다 큼).
"파일 조각화/할당 문제"
내 상자에는 journalctl --version == "systemd 239[...]"
데이터가 포함된 저널 파일이 8MiB의 배수인 파일 크기로 존재합니다. 결과적으로 내 시스템 저널 파일은 실제로 데이터의 일부(예: 56kiB)만 저장되는 경우에도 8MiB 크기가 됩니다.
"부패 방지 문제" 개발자 중 한 명인 Poettering에 따르면 저널이 에 의해 손상된 것으로 간주되는 경우 journald
추가 문제를 방지하기 위해 "수정"되지 않고 그대로 유지됩니다. (보다systemd
journald
https://bugs.freedesktop.org/show_bug.cgi?id=64116#c3)
물론 이는 압축되지 않은 거의 비어 있는 저널 바이너리 로그 파일이 var 로그에 배치되어 정상적인 일반 텍스트 대안보다 훨씬 더 커질 가능성이 높다는 것을 의미합니다.
답변3
journalctl
매개변수 없이(출력을 측정하고 있는 wc -c
) 활성 저널의 저널 항목만 표시합니다(회전율을 유발하는 것이 무엇인지 확실하지 않습니다). journalctl --disk-usage
보관된 저널과 활성 저널이 사용하는 공간을 표시합니다.