Journalctl --보고서 손상 확인

Journalctl --보고서 손상 확인

verify방금 이 옵션을 발견 journalctl하고 사용해 보기로 결정했습니다. 부패가 표시됩니다. 원인은 무엇일까요? 내가 뭔가를 해야 한다면 어떻게 해야 할까요? 더 조사해야 할까요?

journalctl --verify
PASS: /var/log/journal/19184893a1d645c7a43729e79b10a876/user-1000.journal
Invalid object contents at 3733856░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   0%
File corruption detected at /var/log/journal/19184893a1d645c7a43729e79b10a876/system.journal:3733856 (of 91734016, 4%).
FAIL: /var/log/journal/19184893a1d645c7a43729e79b10a876/system.journal (Bad message)
Invalid object contents at 21575496░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  45%
File corruption detected at /var/log/journal/19184893a1d645c7a43729e79b10a876/system@60e058db556e4de4b256d0b1ff176aa4-0000000000000001-0004e0b436d20aa1.journal:21575496 (of 44052480, 48%).
FAIL: /var/log/journal/19184893a1d645c7a43729e79b10a876/system@60e058db556e4de4b256d0b1ff176aa4-0000000000000001-0004e0b436d20aa1.journal (Bad message)
PASS: /var/log/journal/19184893a1d645c7a43729e79b10a876/user-1000@60e058db556e4de4b256d0b1ff176aa4-0000000000000a91-0004e0b4ff9a949a.journal
PASS: /var/log/journal/19184893a1d645c7a43729e79b10a876/user-1001.journal

답변1

현재 Journalctl은 손상된 저널을 감지할 수 있지만 복구를 시도하는 "fsck" 유형 명령은 없습니다. 문제가 감지되면 로그는 자동으로 새로운 "깨끗한" 파일에 쓰기로 전환되므로 이론적으로 데이터 손실은 최소화되어야 합니다.

파일 복구 명령이 나타날 때까지 손상된 로그 파일을 찾아서 삭제하는 것이 유일한 해결 방법입니다. 당신은 찾을 수 있습니다이것에 대해 더 자세히Fedora 하이퍼스레드에서는 로깅만 기본값으로 설정합니다.

꼬리 손상의 경우 일반 Journalctl 도구는 파일에서 복구할 수 있는 최대한 많은 정보를 제공합니다. 마지막 전체 로그 줄을 출력한 다음 완료됩니다. 이것은 당신이 얻을 수있는 한 가깝습니다.

중간의 비리 상황은 다릅니다. 이런 종류의 손상으로부터 데이터를 구출할 수 있는 좋은 도구는 없지만 상대적으로 쉽게 작성할 수 있습니다. 그러나 저널의 "추가 전용" 모델로 인해 TODO 목록에 표시될 가능성은 거의 없습니다.

물론, 문제의 원인이 무엇인지 먼저 파악하고 신고해 주시면 좋겠습니다.

답변2

이는 ArchLinux 위키의 다음 스레드와 관련된 것으로 보입니다.로그 제어 문제. 이 SystemMaxUse설정 과 관련이 있는 것 같습니다 /etc/systemd/journald.conf.

이 스레드는 결론을 내리지 못했지만 일부 사람들은 /var/log/journal/*아래 로그를 지우거나 값을 높이는 데 성공했습니다 SystemMaxUse.

답변3

sudo journalctl --flush
sudo journalctl --verify

~에서수동:

영구 저장소가 활성화된 경우 로그 데몬은 에 저장된 모든 로그 데이터를 플러시해야 합니다 /run/log/journal/. /var/log/journal/이 호출은 작업이 완료될 때까지 반환되지 않습니다. 이 호출은 멱등적입니다. 데이터는 시스템 런타임 중에 /run/log/journal/한 번만 새로 고쳐지며 /var/log/journal/(그러나 아래 --relinquish-var 참조) 이미 발생한 경우 이 명령은 어떤 작업도 실행하지 않고 완전히 종료됩니다. 이 명령은 /var/log/journal/반환 시 모든 데이터가 새로 고쳐지는 것을 효과적으로 보장합니다 .

버전 217에서 추가되었습니다.

관련 서비스가 있습니다 systemd-journal-flush.service.

관련 정보