journal
마운트된 장치에 기본 디렉터리를 저장하고 싶지만 이것이 장치가 마운트되기 전에 실행될 수 있는 중요한 서비스이므로 갑작스러운 직접 변경이 발생할 수 있으므로 /var/log/journal/
이것이 가능한지 확실하지 않습니다 .journal
마운트된 장치에 디렉토리를 저장하는 것이 안전하고 가능합니까? journal
그렇다면 간단한 설치가 작동하지 않는 경우 어떻게 해야 합니까?
항목의 디렉토리 목록 journal
:
2019-03-18 22:16:41 root@AAEB-APP206LY:/var/log/journal/d41cf15550e34487abe7103b61fbf794 => ll
total 792M
drwxr-sr-x 1 root systemd-journal 884 Mar 12 06:35 ./
drwxr-sr-x 1 root systemd-journal 64 Feb 26 18:17 ../
-rw-r----- 1 root systemd-journal 96M Mar 18 22:16 system.journal
-rw-r----- 1 root root 120M Feb 26 18:17 system@d5301574c947425cb992f7839ae52cdb-0000000000000001-0005827c7effc14d.journal
-rw-r----- 1 root systemd-journal 96M Mar 5 12:29 system@d5301574c947425cb992f7839ae52cdb-0000000000051acb-000582cf3a7ba719.journal
-rw-r----- 1 root systemd-journal 96M Mar 12 06:35 system@d5301574c947425cb992f7839ae52cdb-00000000000872b4-000583572e31154d.journal
-rw-r-----+ 1 root systemd-journal 128M Mar 18 22:16 user-5000.journal
-rw-r-----+ 1 root root 128M Mar 5 12:29 user-5000@cf6acecdf28e48c790173a36447ec2e7-0000000000051ad9-000582cf3d435013.journal
-rw-r-----+ 1 root systemd-journal 128M Mar 12 06:35 user-5000@cf6acecdf28e48c790173a36447ec2e7-00000000000872b9-000583572e312040.journal
보시다시피 기본 파티션을 채우는 거의 800MB를 차지합니다. 따라서 다른 파일 시스템에 저장한다는 아이디어입니다.
답변1
내가 아는 한, systemd의 미리 정의된 로그 디렉터리의 위치를 변경할 수 있는 방법은 없으며, /run/log/journal
두 가지 옵션 중 어느 것을 사용할지 선택할 수 있는 구성 옵션이 /var/log/journal
있습니다 . Storage
그러나 경로를 변경할 수는 없습니다 /anotherfs/log/journal
.
당신이 할 수 있는 일은 /var/log/journal을 다른 디렉토리에 대한 심볼릭 링크로 만들고 해당 디렉토리를 다른 파일 시스템에 두는 것입니다. Systemd-tmpfiles는 이 링크를 자동으로 설정할 수 있습니다.
이 내용이 포함된 파일을 다음 위치에 넣으세요 /etc/tmpfiles.d/
.
L /var/log/journal - - - - /anotherfs/journal
이제 존재하지 않는 경우 /var/log/journal
다른 파일 시스템에 대한 링크가 되며 로그는 해당 위치로 이동됩니다.
하지만 그러면 또 다른 문제에 직면할 가능성이 높습니다. Journald는 시작 중에 /run의 비영구 로그 사용을 /var의 영구 로그 사용으로 전환하고 로그 데이터를 /run에서 /var로 플러시합니다. 분명히 우리는 이 전환을 해야 합니다뒤쪽에 /anotherfs
설치되었습니다! 심볼릭 링크가 rootfs 또는 /var/log
현재와 동일한 fs를 가리키는 경우 이는 문제가 되지 않으며 로그 데이터가 있는 경로를 변경하는 방법으로 잘 작동합니다.
이러한 정렬(파일 시스템 마운트 후 로그 플러시)은 일반적 으로 systemd-journal-flush.service
속성 을 통해 RequiresMountsFor=/var/log/journal
수행됩니다 . 심볼릭 링크 의 경우 /var/log/journal
systemd는 링크가 가리키는 파일 시스템이 아닌 링크 자체가 마운트될 파일 시스템만 기다립니다. 따라서 정렬이 작동하지 않습니다.
바인드 설치를 통해 이 문제를 해결할 수 있습니다. 다른 파일 시스템에 심볼릭 링크하는 대신 /var/log/journal
다른 파일 시스템의 디렉터리를 /var/log/journal
.
이름이 다음과 같아야 하는 단위 파일을 만듭니다 var-log-journal.mount
.
[Unit]
Description=Persistent Journal Storage Bind
[Mount]
What=/anotherfs/journal
Where=/var/log/journal
Type=none
Options=bind
[Install]
WantedBy=local-fs.target
설치하고 활성화하십시오. 이제 로그 플러시 장치는 마운트된 장치가 있음을 확인하고 var-log-journal
(정확한 이름만 찾습니다!) 이를 기다립니다. 마운트 유닛 은 디렉토리 /anotherfs/journal
를 /var/log/journal
./anotherfs
/var/log/journal
답변2
~에서시스템 로그매뉴얼 페이지:
로그 서비스는 로그 데이터를 /var/log/journal에 영구적으로 저장하거나 /run/log/journal/에 일시적인 방식으로 저장합니다(후자의 경우 재시작 시 로그 데이터가 손실됨). 기본적으로 로그 데이터는 시작 중에 /var/log/journal/이 존재하는 경우 영구적으로 저장되고, 그렇지 않은 경우 휘발성 저장소로 암시적으로 대체됩니다. /var/log/journal/ 존재 여부에 관계없이 로그 데이터의 배치 위치를 구성하려면 저널d.conf(5)에서 Storage=를 사용하십시오.
따라서 로그를 다른 곳에 저장하는 것이 가능하고 안전합니다. 추가/변경하면 됩니다
Storage=/some-filesystem-with-free-space/some-dir/
존재하다로그 구성 파일 중 하나.