nfs-server.service를 다시 시작할 수 없습니다. 트랜잭션 순서가 순환됩니다.

nfs-server.service를 다시 시작할 수 없습니다. 트랜잭션 순서가 순환됩니다.

NFS는 현재 구성에서 1년 넘게 작동해 왔지만 최근에 다음과 같은 문제가 발생했습니다.

Ubuntu 20.04 커널 5.40.0-40 NFS nfs-kernel-server/focus-updates,focus-security,이제 1:1.3.4-2.5ubuntu3.3 amd64 [설치됨]

systemctl restart nfs-server

Failed to restart nfs-server.service: Transaction order is cyclic. See system logs for details.
See system logs and 'systemctl status nfs-server.service' for details.

시스템 제어 상태:

 systemctl status nfs-server
 nfs-server.service - NFS server and services
 Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
 Drop-In: /run/systemd/generator/nfs-server.service.d
         └─order-with-mounts.conf
 Active: inactive (dead)

 Jul 03 06:37:38 acer systemd[1]: export-3T.mount: Found ordering cycle on nfs-server.service/start
 Jul 03 06:37:38 acer systemd[1]: export-3T.mount: Found dependency on export-3T.mount/start
 Jul 03 06:37:38 acer systemd[1]: export-3T.mount: Unable to break cycle starting with export-3T.mount/start
 Jul 03 06:43:47 acer systemd[1]: export-3T.mount: Found ordering cycle on nfs-server.service/start
 Jul 03 06:43:47 acer systemd[1]: export-3T.mount: Found dependency on export-3T.mount/start
 Jul 03 06:43:47 acer systemd[1]: export-3T.mount: Unable to break cycle starting with export-3T.mount/start
 

일기에서

systemd[1]: Requested transaction contains an unfixable cyclic ordering dependency: Transaction order is cyclic. See system logs for det>
systemd[1]: export-3T.mount: Unable to break cycle starting with export-3T.mount/start
systemd[1]: export-3T.mount: Found dependency on export-3T.mount/start
systemd[1]: export-3T.mount: Found ordering cycle on nfs-server.service/start

/etc/fstab

UUID=uid /mnt/3T ext4 defaults 0 0 
/mnt/3T /export/3T nfs bind 0 0 

/etc/export

/export/3T 10.0.0.0/24(rw,nohide,insecure,no_subtree_check,async) 

답변1

고쳐 쓰다

최근에 이 문제로 다시 영향을 받았는데, 다음 방법으로는 문제가 해결되지 않았습니다. 나는 우리에게 안정적인 "올바른"(?) 수정 사항을 찾았습니다.

해결책은 마운트를 /etc/fstab.systemd 장치의 장착 지점. 유용한 링크는 다음과 같습니다.

귀하의 경우 다음과 같이 보이기를 원합니다 /etc/systemd/system/mnt-3T.mount(테스트되지 않음).

[Unit]
Description=3T mount
After=network.target

[Mount]
Where=/mnt/3T
Type=nfs
Options=bind

[Install]
WantedBy=multi-user.target

(저는 이전에 NFS 바인드 마운트를 수행한 적이 없습니다. 원하는 순서를 조정 Requires=하고 구현 해야 할 수도 있습니다 )After=

원래 답변

조금 오래된 내용이지만 여러 곳에서 이 문제에 대한 다양한 내용이 보고된 것을 보았습니다. 나에게 있어서 핵심은https://bbs.archlinux.org/viewtopic.php?id=183999또는 더 구체적으로 다음을 추가 DefaultDependencies=False하세요./usr/lib/systemd/system/nfs-client.target

오류 메시지는 매우 명확하지만 반드시 직관적이지는 않습니다. systemd단위들 사이에는 종속성의 순환이 있습니다. 문제는 이 악순환을 어떻게 깨느냐이다.이 블로그문제에 대해 더 자세히 설명되어 있습니다.

또한 systemd 장치 매뉴얼 페이지에서는 기본 종속성을 설명합니다. 예를 들어,표적.target 매뉴얼 페이지에는 다음이 포함됩니다.

기본 종속성

DefaultDependencies=no설정하지 않으면 다음 종속성이 추가됩니다.

  • 지정된 단위에 설정 되지 않은 경우 대상 단위는 구성된 모든 유형 종속성 Wants=또는 Requires=유형 종속성을 자동으로 보완합니다. 또는 는 대상 단위 자체에 정의되어야 합니다. 예를 들어 some.service 에 some.target을 정의하면 자동 주문이 추가되지 않습니다.After=DefaultDependencies=noWants=Requires=Wants=

NFS의 경우 NFS 서버와 NFS 클라이언트 사이에 루프를 일으키는 원인이 무엇인지 구체적으로 말할 수는 없지만 DefaultDependencies에서 NFS를 비활성화 하면 nfs-client.target문제가 사라졌다고 경험을 통해 말할 수 있습니다. 주기가 깨졌습니다.

관련 정보