Quando eu faço journalctl --disk-usage
isso diz algo sobre300MBtamanho dos arquivos do diário, mas quando olho para o texto real, é journalctl | wc -c
algo sobre28 MB. Bem, o journald tem compactação e mesmo considerando os metadados como carimbo de data / hora, uid, hash de mensagem e coisas assim, me parece um desperdício ridículo de espaço em disco.
Alguém pode me dizer por que os arquivos do diário são tão grandes em comparação com o texto real dentro dele?
Responder1
Existem duas razões. Primeiro, como @Mella mencionou, há uma diferença entre o log atual e todos os logs.
Em segundo lugar, conforme documentado em man journalctl
, existem vários formatos de saída. Você estava medindo o tamanho do mais compacto/menos detalhado. Para ver o máximo de dados no diário do systemd, use:
journactl --output=verbose
No meu caso, a saída do diário compacto retorna 32 Megas de dados, enquanto 128 MB são retornados --output=verbose
e 152M são encontrados com journalctl --disk-usage
, cobrindo diários ativos e arquivados.
Consulte man journald.conf
para saber como limitar a quantidade de espaço em disco journald
usado se você estiver preocupado.
Responder2
- Eles são enormes, porque é uma espécie de bug:
Como está indicadorio acimae, portanto, conhecido pelos desenvolvedores do journald, o formato de log binário usado não é nada bom (ainda?).
- Eles são enormes, porque talvez a Compressão não esteja ativada
Também existe uma opção em /etc/systemd/journald.conf
nomeado Compress=yes
, que pode não estar ativa em seu sistema, de modo que efetivamente não há compactação.
- A questão dos periódicos arquivados não importa aqui.
Embora em princípio seja verdade que o Journald distingue entreativoearquivadologs de diário, esta é uma resposta enganosa das outras respostas, pois man journalctl
afirma inequivocamente:
A saída é intercalada de todos os arquivos de diário acessíveis, estejam eles rotacionados ou sendo gravados no momento, e independentemente de pertencerem ao próprio sistema ou serem diários de usuário acessíveis.
A outra resposta é, portanto, enganosa aqui.
- O uso do disco do journalctl é enorme (ou seja, maior do que arquivos de texto simples com nível comparável de informações - isto é, campos) devido a algumas medidas de alocação, fragmentação e anticorrupção de arquivos.
"problemas de fragmentação/alocação de arquivos"
Na minha caixa, journalctl --version == "systemd 239[...]"
os arquivos de diário que contêm os dados existem em tamanhos de arquivo múltiplos de 8 MiB. Como consequência, meu arquivo de diário do sistema terá 8 MiB de tamanho, mesmo quando apenas uma fração (como em um caso, 56 KiB) de dados estiver realmente armazenada nele.
"problema anticorrupção" De acordo com Poettering, um dos desenvolvedores journald
e systemd
no caso de um periódico ser considerado corrompido por journald
, ele não será "consertado", mas deixado como está, para evitar mais problemas. (verhttps://bugs.freedesktop.org/show_bug.cgi?id=64116#c3)
É claro que isso significa que há uma boa chance de que arquivos de log binário de diário descompactados e quase vazios fiquem espalhados em seu log var, tornando-o efetivamente muito maior do que uma alternativa sensata de texto simples.
Responder3
journalctl
sem parâmetros (cuja saída você está medindo wc -c
) está exibindo apenas lançamentos no diário ativo (não tenho certeza do que gera uma rotatividade). journalctl --disk-usage
está exibindo o espaço usado pelos diários arquivados, bem como pelo diário ativo.