저널링된 로그 파일이 왜 그렇게 큰가요?

저널링된 로그 파일이 왜 그렇게 큰가요?

내가 할 때 journalctl --disk-usage그것은 다음과 같이 말합니다.300MB저널 파일의 크기이지만 실제 텍스트를 보면 journalctl | wc -c대략적인 것 같습니다.28MB. 글쎄, Journald에는 압축 기능이 있으며 심지어 타임스탬프, UID, 메시지 해시 등과 같은 메타데이터를 고려하더라도 터무니없는 디스크 공간 낭비처럼 보입니다.

내부의 실제 텍스트에 비해 저널 파일이 왜 그렇게 큰지 누군가 말해 줄 수 있나요?

답변1

두 가지 이유가 있습니다. 첫째, @Mella가 언급했듯이 현재 로그와 모든 로그에는 차이가 있습니다.

둘째, 에 설명된 대로 man journalctl다양한 출력 형식이 있습니다. 가장 작고 가장 세밀하지 않은 크기를 측정하고 있었습니다. 시스템 저널에서 최대 데이터를 보려면 다음을 사용하십시오.

journactl --output=verbose

내 경우 압축 저널 출력은 32MB의 데이터를 반환하는 반면 128MB는 로 반환되고 --output=verbose152M은 journalctl --disk-usage활성 저널과 보관된 저널을 모두 포함합니다.

우려되는 경우 man journald.conf디스크 공간 사용을 제한하는 방법을 알아 보십시오 .journald

답변2

  1. 그것은 일종의 버그이기 때문에 엄청납니다.

표시된대로상류따라서 저널드 개발자들에게 알려진 바이너리 로그 형식에 사용된 형식은 전혀 훌륭하지 않습니다(아직?).

  1. 압축이 활성화되지 않았기 때문에 크기가 매우 큽니다.

/etc/systemd/journald.conf또한 명명 된 옵션이 있는데 Compress=yes, 이는 시스템에서 활성화되지 않을 수 있으므로 사실상 압축이 없습니다.

  1. 여기서는 보관된 저널의 문제가 중요하지 않습니다.

원칙적으로 Journald가 다음을 구별한다는 것은 사실입니다.활동적인그리고보관된man journalctl저널 로그에 따르면 이것은 명백하게 다음 과 같이 다른 답변에 대한 오해의 소지가 있는 답변입니다 .

출력은 회전되었거나 현재 작성 중인지, 시스템 자체에 속해 있는지 또는 액세스 가능한 사용자 저널인지 여부에 관계없이 액세스 가능한 모든 저널 파일에서 인터리브됩니다.

따라서 다른 답변은 오해의 소지가 있습니다.

  1. 일부 파일 할당, 조각화, 부패 방지 조치로 인해 Journalctl의 디스크 사용량은 엄청납니다(즉, 비슷한 수준의 정보가 있는 일반 텍스트 파일(즉, 필드)보다 큼).

"파일 조각화/할당 문제"

내 상자에는 journalctl --version == "systemd 239[...]"데이터가 포함된 저널 파일이 8MiB의 배수인 파일 크기로 존재합니다. 결과적으로 내 시스템 저널 파일은 실제로 데이터의 일부(예: 56kiB)만 저장되는 경우에도 8MiB 크기가 됩니다.

"부패 방지 문제" 개발자 중 한 명인 Poettering에 따르면 저널이 에 의해 손상된 것으로 간주되는 경우 journald추가 문제를 방지하기 위해 "수정"되지 않고 그대로 유지됩니다. (보다systemdjournaldhttps://bugs.freedesktop.org/show_bug.cgi?id=64116#c3)

물론 이는 압축되지 않은 거의 비어 있는 저널 바이너리 로그 파일이 var 로그에 배치되어 정상적인 일반 텍스트 대안보다 훨씬 더 커질 가능성이 높다는 것을 의미합니다.

답변3

journalctl매개변수 없이(출력을 측정하고 있는 wc -c) 활성 저널의 저널 항목만 표시합니다(회전율을 유발하는 것이 무엇인지 확실하지 않습니다). journalctl --disk-usage보관된 저널과 활성 저널이 사용하는 공간을 표시합니다.

관련 정보