FQDN 이름 확인이 실패하면 NFS/CIFS를 강제로 재시도합니다.

FQDN 이름 확인이 실패하면 NFS/CIFS를 강제로 재시도합니다.

처음에는 우분투 포럼에 이 글을 게시하려고 했지만 여기에서 더 많은 청중에게 다가가고 싶습니다.

fstab에 NFS/CIFS를 마운트한 다음 서비스에서 사용하는 설정이 있습니다(제 경우에는 서비스가 도커 컨테이너로 제공됩니다).

일반적으로 모든 것이 괜찮습니다. 내 systemd 서비스가 시작되면 마운트 지점(내 장치가 로 정의됨 RequiresMountsFor=)이 올바르게 로드되었는지 확인합니다. 내 마운트 지점은 /etc/fstab내 네트워크에서 내부적으로 확인되는 FQDN 이름을 사용하여 정의됩니다.

nas.home.ca:/mnt/HomeNAS                        /mnt/nas nfs ro 0 0
nas.home.ca:/mnt/HomeNAS/VM/Config/Alma-Docker1 /mnt/docker nfs rw 0 0
//nas.home.ca/Restore                          /mnt/restore cifs credentials=/etc/fstab.credentials.backup,file_mode=0777,dir_mode=02777 0 0

서비스가 시작될 때 내부 이름 서버가 오프라인이면 문제가 발생합니다. 마운트가 아직 존재하지 않으면 FQDN 미확인 오류로 인해 마운트가 빠르게 실패하고 systemd는 마운트를 다시 마운트하려고 시도하지 않습니다. 따라서 내 서비스도 시작되지 않고 종속성 실패로 인해 다시 시작을 시도하지 않습니다.

fstab에 사용 가능한 옵션을 살펴봤지만 x.systemd실패 시 다시 시작/재시도하도록 마운트 장치를 구성하는 항목을 찾지 못했습니다.

[eric@dockervm2 system]$ sudo systemctl start mnt-nas.mount
Job failed. See "journalctl -xe" for details.
[eric@dockervm2 system]$ sudo systemctl start mnt-restore.mount
Job failed. See "journalctl -xe" for details.
[eric@dockervm2 system]$ sudo systemctl start mnt-docker.mount
Job failed. See "journalctl -xe" for details.
[eric@dockervm2 system]$ sudo journalctl -xe

그래서 서비스를 시작하려고 하면 다음과 같은 오류 메시지가 나타납니다.

[eric@dockervm2 system]$ sudo systemctl start backup-docker-compose
A dependency job for backup-docker-compose.service failed. See 'journalctl -xe' for details.

재시도할 수 있도록 마운트 지점을 어떻게 설정합니까? 문제는 내 네임서버가 오프라인이고 내 네임서버가 백업되어 실행될 때까지 XXX초마다 다시 시작하려고 한다는 것입니다. fqdn(또는 /etc/hosts 파일의 로컬 항목) 대신 fstab의 IP를 사용하여 이 문제를 해결할 수 있다는 것을 알고 있지만 그런 종류의 목적은 무산됩니다.

재시도를 계속하기 위해 systemd에서 로컬로 구성하는 방법이 있습니까?

답변1

많은 분들이 문의하셨는데, 대답은 '아니요'인 것 같습니다.

https://github.com/systemd/systemd/issues/4468

저는 systemd 마운트를 무시하고 마운트를 서비스로 구현하여 이 문제를 해결했습니다. 예를 들어:

[root@adele ~]# cat /etc/systemd/system/srv-music.service 
[Unit]
Description=Media devices
After=network.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/mount -t nfs4 -o vers=4,minorversion=1,owner,ro darknight.localdomain6:/Media /srv/music
ExecStop=/usr/bin/umount /srv/music
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

위의 키워드는 Restart및 입니다 RestartSec.

관련 정보