"journalctl --disk-usage"와 "journalctl | wc"가 잘 일치하지 않는 이유는 무엇입니까?

"journalctl --disk-usage"와 "journalctl | wc"가 잘 일치하지 않는 이유는 무엇입니까?

긴 이야기 짧게로그는 약 770MiB를 저장하지만 표시 로그는 90MiB의 데이터만 생성하는 이유는 무엇입니까?

#고쳐 쓰다# 나는 journalctl -a -o verbose적어도 약 530MiB를 생성했지만 저널이 디스크에서 사용하는 770MiB보다 적은 를 만들었습니다. 어쨌든 디스크의 로그는 어떻게든 압축되어 530MiB보다 작아야 하며 더 크지 않아야 합니다. 무슨 일이야?

#업데이트2#

journald대부분 빈 로그 파일을 생성하는 경향이 있는 것 같습니다 .

$> cat [email protected]~ | wc -c
8388608
#> cat [email protected]~ | sed 's/\x00//g' | wc -c
47181

이것이 @Mioriin의 의견이 제안하는 것일 수 있습니다. 저널드가 저장한 로그 파일이 8MiB인데 거의 비어 있는 이유가 있나요?

배경이 있는 긴 버전

/var/log내 시스템은 Linux 커널 dmesg 출력, gnome DE 등으로 매우 수다스럽습니다. 슬프게도 사용하는 시스템 로거를 통해 내 디렉토리를 채웁니다 journald(여전히 표준 시스템 아치 Linux에서).

찾아보니 du -hs /var/log대략 2GiB정도 나오는데 주로 journald저널이더군요. 90일이 지난 데이터를 삭제했는데 journalctl --vacuum-time=90d안타깝게도 3개월이 지난 로그는 삭제되어 journald로그에 사용되는 디스크 공간이 약 770MiB로 줄었습니다.

$> journalctl --disk-usage 
Archived and active journals take up 768.0M in the file system.

정말 대단해요. 하지만 내 아치 리눅스 박스에 담긴 90일간의 770MiB 데이터는 꽤 많은 것 같아서 770MiB가 어떤 용도로 사용되는지 조사해 보았습니다. 로그 출력의 초기 크기를 측정하기 위해 IMHO 첫 번째 논리적 단계를 수행했습니다.

$> journalctl | wc
584467 7662317 90227741

그리고 다시 한 번 확인해 보세요.

$ journalctl | dd of=/dev/null iflag=fullblock bs=1M
86+1 records in
86+1 records out
90244229 bytes (90 MB, 86 MiB) copied, 9.21893 s, 9.8 MB/s

어떤 이유에서든 읽고 있음을 나타냅니다."공간을 절약하기 때문에 바이너리입니다." journald일반 텍스트는 770MiB 미만의 데이터를 생성하지 않고 90MiB만 생성합니다.

이제 제 질문은 왜 이 두 숫자가 일치하지 않는 걸까요? 사랑하는 사람이 어떻게 journald770MiB를 사용하여 90MiB의 데이터를 저장할 수 있습니까?

"결과를 측정하고 혼란스러워하는 것" 외에 나 자신을 돕기 위해 또 무엇을 했습니까?

나는 긴 콘텐츠를 훑어보고 man journactl그것이 제공하는 다소 복잡한 세부 사항에 확실히 압도당했지만, 이진 압축 저널 데이터가 이진 압축 저널 데이터보다 더 많은 공간을 사용하게 만들 수 있는 반직관적인 내용을 제안하는 내용을 찾을 수 없었습니다. 실제 일반 텍스트 복제 로그입니다.

나는 "간단한" 설명이 있어야 한다고 생각한다.

관련 정보