Azure에서 Linux(CentOS Stream 8) VM의 "임시 디스크"에 있는 파일을 관리하기 위해 systemd-tmpfiles를 사용하려고 합니다. 시스템 시작 후 수동으로 systemd-tmpfiles
실행해 보면 구성이 올바른 것 같습니다 . 그러나 서비스는 마운트된 파일 시스템이 아닌 마운트 지점 디렉터리에 파일을 생성하므로 서비스에서는 작동 systemd-tmpfiles --create
하지 않습니다 . systemd-tmpfiles-setup
물론 이것은 전체 운동에 의미가 있습니다.
임시 디스크가 마운트되기 전에 실행 중이었기 때문에 이런 일이 발생했다고 생각하여 재정의 앱 속성을 구성하여 문제를 해결 systemd-tmpfiles-setup
하려고 했습니다 .RequiresMountsFor
/etc/systemd/system/systemd-tmpfiles-setup.service.d/override.conf
[Unit]
RequiresMountsFor=/mnt/resource
Systemd는 적절한 마운트 장치를 나열하여 판단하여 이를 인식하는 것으로 보이지만 systemctl list-dependencies systemd-tmpfiles-setup
재부팅 시 마운트된 임시 디스크가 아닌 마운트 지점 디렉터리에 필요한 파일을 계속 생성합니다.
아마도 명시적인 단위 파일이 없는 필수 설치 단위와 관련이 있을 것입니다. 저는 systemd를 사용하여 scan 을 통해 단위를 생성합니다 /etc/fstab
.
/etc/fstab:
# ...
/dev/disk/cloud/azure_resource-part1 /mnt/resource auto defaults,nofail,x-systemd.requires=cloud-init.service,comment=cloudconfig 0 2
내가 무엇을 놓치고 있나요? 내가 하고 있는 일이 효과가 없는 데에는 타당한 이유가 있나요?
답변1
물론 질문을 했을 때 답을 찾았습니다. 시스템 로그의 다음 항목은 현재 상황을 설명합니다.
Apr 11 21:51:02 vm-**** systemd[1]: sysinit.target: Found ordering cycle on systemd-tmpfiles-setup.service/start
Apr 11 21:51:02 vm-**** systemd[1]: sysinit.target: Found dependency on mnt-resource.mount/start
Apr 11 21:51:02 vm-**** systemd[1]: sysinit.target: Found dependency on cloud-init.service/start
Apr 11 21:51:02 vm-**** systemd[1]: sysinit.target: Found dependency on NetworkManager.service/start
Apr 11 21:51:02 vm-**** systemd[1]: sysinit.target: Found dependency on dbus.service/start
Apr 11 21:51:02 vm-**** systemd[1]: sysinit.target: Found dependency on basic.target/start
Apr 11 21:51:02 vm-**** systemd[1]: sysinit.target: Found dependency on sysinit.target/start
Apr 11 21:51:02 vm-**** systemd[1]: sysinit.target: Job systemd-tmpfiles-setup.service/start deleted to break ordering cycle starting with sysinit.target/start
(문서화되지 않음: sysinit.target은 systemd-tmpfiles-setup.service에 따라 다릅니다.)
Systemd는 최선의 적용 범위 요구 사항을 무시하여주기를 중단합니다. 따라서 systemd-tmpfiles를 사용하여 이 작업을 수행하고 싶다면 systemd-tmpfile-setup
별도의 사용자 정의 서비스를 추가해야 할 것입니다.