구성된 IP 주소에도 불구하고 시작 시 NFS 마운트가 실패함

구성된 IP 주소에도 불구하고 시작 시 NFS 마운트가 실패함

Raspberry Pi 4에서 부팅 시 NFS 공유를 마운트하려고 합니다. 작동하지 않습니다. systemd는 네트워크에 연결할 수 없다고 불평합니다. 각 공유를 수동으로 마운트하면 예상대로 작동합니다. 나는 지금 다른 것을 시도했습니다. /etc/fstab다음과 같이 볼륨을 마운트하기 위해 systemd 서비스를 사용하지 않습니다 .

[Unit]
Description=Mount NFS share Music
After=network-online.target
Wants=network-online.target

[Mount]
What=10.5.0.34:/music
Where=home/pi/media_storage/music
Options=auto
Type=nfs
TimeoutSec=60

[Install]
WantedBy=remote-fs.target

두 서비스가 모두 활성화 systemd-networkd.service되었습니다 systemd-networkd-wait-online.service. journalctl출력 은 다음 과 같습니다 .

Nov 30 16:30:46 NextcloudPi dhcpcd[383]: eth0: IAID 32:23:48:46
Nov 30 16:30:46 NextcloudPi dhcpcd[383]: eth0: adding address fe80::9819:5d1a:3c86:8b41
Nov 30 16:30:46 NextcloudPi dhcpcd[383]: eth0: rebinding lease of 10.5.0.43
Nov 30 16:30:46 NextcloudPi dhcpcd[383]: eth0: probing address 10.5.0.43/24
Nov 30 16:30:46 NextcloudPi dhcpcd[383]: eth0: soliciting an IPv6 router
Nov 30 16:30:47 NextcloudPi systemd-networkd[152]: eth0: Gained IPv6LL
Nov 30 16:30:47 NextcloudPi systemd-timesyncd[281]: Network configuration changed, trying to establish connection.
Nov 30 16:30:47 NextcloudPi systemd-networkd-wait-online[183]: ignoring: lo
Nov 30 16:30:47 NextcloudPi systemd[1]: Started Wait for Network to be Configured.
Nov 30 16:30:47 NextcloudPi systemd[1]: Reached target Network is Online.
Nov 30 16:30:48 NextcloudPi systemd[1]: Mounting Mount NFS share Music...
Nov 30 16:30:48 NextcloudPi systemd[1]: Started /etc/rc.local Compatibility.
Nov 30 16:30:48 NextcloudPi mount[498]: mount.nfs: Network is unreachable
Nov 30 16:30:48 NextcloudPi systemd[1]: mnt-music.mount: Mount process exited, code=exited, status=32/n/a
Nov 30 16:30:48 NextcloudPi systemd[1]: mnt-music.mount: Failed with result 'exit-code'.
Nov 30 16:30:48 NextcloudPi systemd[1]: Failed to mount Mount NFS share Music.
Nov 30 16:30:48 NextcloudPi systemd[1]: Reached target Remote File Systems.

인터페이스가 구성되었으며 journalctl유효한 IP 주소가 있습니다. 그런데 왜 mount.nfs굳이 불평을 합니까?

답변1

고장난 것 같으니 network-online.target무슨 일을 하든 다르고 믿을 수 있는 솔루션을 개발하겠습니다.

"ping_barrier"라는 일회성 시스템 스크립트를 만들었습니다. 성공할 때까지 NFS 서버를 ping합니다. 이로 WantedBy=nfs-client.target인해 NFS는 서비스가 완료될 때까지 기다립니다.

[Unit]    
Description=Ping until Success

[Service]
Type=oneshot
ExecStart=/opt/ping_barrier.sh
StandardOutput=journal

[Install]
WantedBy=nfs-client.target

다음은 ping 명령이 성공할 때까지 반복되는 ping 스크립트입니다.

#!/bin/bash    
printf "%s" "waiting for FileServer ..."
while ! ping -c 1 -n -w 1 10.5.0.34 &> /dev/null
do
    printf "%c" "."
done
printf "\n%s\n"  "Server is back online"

관련 정보