systemd-tmpfiles-setup이 RequiresMountsFor를 준수할 수 있나요?

systemd-tmpfiles-setup이 RequiresMountsFor를 준수할 수 있나요?

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별도의 사용자 정의 서비스를 추가해야 할 것입니다.

관련 정보