shutdown.target과 충돌하지 않는 서비스의 의미

shutdown.target과 충돌하지 않는 서비스의 의미

<TL;DR>
현재 Debian 10 Buster와 커널 ntfsd를 기반으로 NFSv4 전용 파일 서버를 조정하고 있습니다. 시스템 v241. 배포판의 패키지 nfs-kernel-server시스템 스크립팅이 약간 이상하다는 생각이 들었습니다. 자체를 포함한 몇 가지 서비스 정의 파일에는 systemd.service(5)에 따라 장치가 자동으로 종속성을 가져오지 않도록 nfs-server.service설정이 함께 제공됩니다 .DefaultDependencies=noConflicts=shutdown.target

[ ] [s] 서비스 단위는 유형 및 에 DefaultDependencies=yes[...] 종속성을 갖습니다 . 이는 시스템 종료 전에 일반 서비스 장치 [...]가 완전히 종료되도록 보장합니다.Conflicts=Before=shutdown.target

다른 systemd 자체 패키지에서 본 것과 달리 이들 중 어느 것도 명시적으로 제공되지 않습니다. 명령

systemctl show nfs-server.service | egrep '^(Want|Requ|Bind|Bound|Before|After|Confl)'

이것이 실제로 사실임을 확인합니다. 그러한 종속성은 없습니다. 매뉴얼은 계속해서,

조기 부팅 또는 늦은 시스템 종료와 관련된 서비스만 이 옵션을 비활성화해야 합니다.

NFS 서버는 정확히 그렇지 않습니다. 네트워크가 완전히 가동될 때까지 서비스를 시작할 수 없으며 시스템 종료가 시작되자마자 로드가 부족한 상태에서 새 요청 및 레임덕 수락을 중지해야 하기 때문입니다.

이것은 비슷한 설정을 가진 패키지의 단일 서비스가 아니지만 이것이 가장 걱정스럽습니다. 나는 클라우드 설정에서 단일 목적의 VM을 출시할 예정이며, 파일 서버에는 htop(1)에서 볼 수 있듯이 파일 시스템 캐시로 가득 찬 엄청난 양의 RAM(64-128G)이 있을 수 있습니다. 그리고 이것은 파일 저장 기계이기 때문에 매뉴얼에 따르면 "시스템 종료 전에 완전히 종료"되도록 서버가 얼마나 원하는지 표현하기가 어렵습니다. 내보낸 파일 시스템의 ext4 마운트 옵션 data=writebacknobarrier¹을 사용한 성능.
</TL;DR>

그래서 나의한 문장으로 압축된 질문은 다음과 같습니다.

시스템이 실제로 종료되면 종속성이 Conflicts=없는 시스템 서비스는 어떻게 되나요 ?Before=shutdown.target


¹ 이는 클라우드 제공업체의 SLA와 일련의 성능 테스트 결과를 바탕으로 평가된 신중한 엔지니어링 절충안이며 질문의 본질과 완전히 관련이 없습니다.

관련 정보