systemd:NFS共有をマウントできません。 mount.nfs:起動プロセスの後半までネットワークにアクセスできません。

systemd:NFS共有をマウントできません。 mount.nfs:起動プロセスの後半までネットワークにアクセスできません。

私のラップトップにはUSB-Ethernetアダプタがあります。明らかに、ネットワークは通常より遅く、ブートプロセスが終了するまで現れません。私のNFS共有は起動時にマウントされません。ただし、ノートブックが起動したら、次を使用してすべての共有をマウントできます。

mount -a -t nfs,nfs4

エラーはありません。現時点では、すべてが正常です。ただし、起動時に共有を自動的にマウントしたいです。だからこれいいえNFS構成の問題。問題は、systemd、ブートプロセス、およびUSBイーサネットアダプタの可用性タイミングに関連していると思います。

NFS共有がマウント試行を放棄した後にネットワークが表示されることを示すログの関連部分を含む、私が確認する必要があるすべては次のとおりです。関連する設定ファイルが含まれていますが、私が知っている限り、デフォルト値から変更されませんでした。

Jul 31 21:22:32 host systemd[1]: Mounted /var/log.
...
Jul 31 21:22:33 host mount[898]: mount.nfs: Network is unreachable
...
Jul 31 21:22:34 host mount[880]: mount.nfs: Resource temporarily unavailable
Jul 31 21:22:34 host systemd[1]: share1.mount: Mount process exited, code=exited status=32
Jul 31 21:22:34 host systemd[1]: share1.mount: Failed with result 'exit-code'.
Jul 31 21:22:34 host autossh[896]: starting ssh (count 9)
Jul 31 21:22:34 host autossh[896]: ssh child pid is 1033
Jul 31 21:22:34 host systemd[1]: Failed to mount /share1.
...
Jul 31 21:22:37 host autossh[899]: ssh: connect to host 10.10.0.201 port 22: Network is unreachable
Jul 31 21:22:37 host autossh[899]: ssh exited with error status 255; restarting ssh
...
Jul 31 21:22:38 host NetworkManager[792]: <info>  [1533086558.3237] manager: NetworkManager state is now CONNECTING
...
Jul 31 21:22:38 host NetworkManager[792]: <info>  [1533086558.3487] manager: NetworkManager state is now CONNECTED_LOCAL
Jul 31 21:22:38 host NetworkManager[792]: <info>  [1533086558.3492] manager: NetworkManager state is now CONNECTED_SITE
Jul 31 21:22:38 host NetworkManager[792]: <info>  [1533086558.3493] policy: set 'Wired connection 1' (eth1) as default for IPv4 routing and DNS
Jul 31 21:22:38 host NetworkManager[792]: <info>  [1533086558.3497] device (eth1): Activation: successful, device activated.
Jul 31 21:22:38 host nm-dispatcher[1017]: req:3 'up' [eth1]: new request (0 scripts)


# systemctl status  NetworkManager.service 
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/NetworkManager.service.d
        └─NetworkManager-ovs.conf
Active: active (running) since Tue 2018-07-31 21:22:33 EDT; 42min ago
    Docs: man:NetworkManager(8)
Main PID: 792 (NetworkManager)
    Tasks: 3 (limit: 4915)
Memory: 33.4M
CGroup: /system.slice/NetworkManager.service
        └─792 /usr/bin/NetworkManager --no-daemon

Jul 31 22:00:59 host NetworkManager[792]: <info>  [1533088859.6259] dhcp4 (eth1):   gateway 192.168.0.1
Jul 31 22:00:59 host NetworkManager[792]: <info>  [1533088859.6334] dhcp4 (eth1): state changed bound -> bound
Jul 31 22:03:12 host NetworkManager[792]: <info>  [1533088992.7755] dhcp4 (eth1):   address 192.168.0.237
Jul 31 22:03:12 host NetworkManager[792]: <info>  [1533088992.7756] dhcp4 (eth1):   plen 24
Jul 31 22:03:12 host NetworkManager[792]: <info>  [1533088992.7756] dhcp4 (eth1):   expires in 300 seconds
Jul 31 22:03:12 host NetworkManager[792]: <info>  [1533088992.7757] dhcp4 (eth1):   nameserver '192.168.0.1'
Jul 31 22:03:12 host NetworkManager[792]: <info>  [1533088992.7758] dhcp4 (eth1):   domain name 'oaks'
Jul 31 22:03:12 host NetworkManager[792]: <info>  [1533088992.7758] dhcp4 (eth1):   hostname 'host'
Jul 31 22:03:12 host NetworkManager[792]: <info>  [1533088992.7759] dhcp4 (eth1):   gateway 192.168.0.1
Jul 31 22:03:12 host NetworkManager[792]: <info>  [1533088992.7769] dhcp4 (eth1): state changed bound -> bound


# systemctl status share1.mount
● share1.mount - /share1
Loaded: loaded (/etc/fstab; generated)
Active: failed (Result: exit-code) since Tue 2018-07-31 21:22:34 EDT; 25min ago
    Where: /share1
    What: server:/share1/
    Docs: man:fstab(5)
        man:systemd-fstab-generator(8)

Jul 31 21:22:33 host systemd[1]: Mounting /share1...
Jul 31 21:22:34 host mount[880]: mount.nfs: Resource temporarily unavailable
Jul 31 21:22:34 host systemd[1]: share1.mount: Mount process exited, code=exited status=32
Jul 31 21:22:34 host systemd[1]: share1.mount: Failed with result 'exit-code'.
Jul 31 21:22:34 host systemd[1]: Failed to mount /share1.


# cat /usr/lib/systemd/system/NetworkManager.service
[Unit]
Description=Network Manager
Documentation=man:NetworkManager(8)
Wants=network.target
After=network-pre.target dbus.service
Before=network.target 

[Service]
Type=dbus
BusName=org.freedesktop.NetworkManager
ExecReload=/usr/bin/dbus-send --print-reply --system --type=method_call --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager.Reload uint32:0
#ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/bin/NetworkManager --no-daemon
Restart=on-failure
# NM doesn't want systemd to kill its children for it
KillMode=process
CapabilityBoundingSet=CAP_NET_ADMIN CAP_DAC_OVERRIDE CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID CAP_SYS_MODULE CAP_AUDIT_WRITE CAP_KILL CAP_SYS_CHROOT

# ibft settings plugin calls iscsiadm which needs CAP_SYS_ADMIN
#CapabilityBoundingSet=CAP_SYS_ADMIN

ProtectSystem=true
ProtectHome=read-only

[Install]
WantedBy=multi-user.target
Alias=dbus-org.freedesktop.NetworkManager.service
Also=NetworkManager-dispatcher.service

# We want to enable NetworkManager-wait-online.service whenever this service
# is enabled. NetworkManager-wait-online.service has
# WantedBy=network-online.target, so enabling it only has an effect if
# network-online.target itself is enabled or pulled in by some other unit.
Also=NetworkManager-wait-online.service

# cat /usr/lib/systemd/system/NetworkManager.service.d/NetworkManager-ovs.conf 
[Unit]
After=openvswitch.service

# cat /etc/NetworkManager/NetworkManager.conf
# Configuration file for NetworkManager.
# See "man 5 NetworkManager.conf" for details.

# tree /etc/NetworkManager/conf.d/
/etc/NetworkManager/conf.d/
0 directories, 0 files

# cat /usr/lib/systemd/system/NetworkManager-wait-online.service
[Unit]
Description=Network Manager Wait Online
Documentation=man:nm-online(1)
Requires=NetworkManager.service
After=NetworkManager.service
Before=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/nm-online -s -q --timeout=30
RemainAfterExit=yes

[Install]
WantedBy=network-online.target


Arch Linux 4.17.11-arch1 #1 SMP PREEMPT Sun Jul 29 10:11:16 UTC 2018 x86_64 GNU/Linux
KDE

更新:fstabについて要求された情報は次のとおりです。

すべてのnfsマウントには次のオプションがあります。

nfs     _netdev,defaults,noatime,nodiratime,soft,retrans=6,timeo=20,retry=0,rsize=32768,wsize=32768,proto=tcp   0 0

私はsystemdで_netdevを使用します。 Filipe Brandenburgerのコメントを読んだ後、このオプションはsystemdで意味がないか有害であるかわかりません。

systemctl cat share1.mount
# /run/systemd/generator/share1.mount
# Automatically generated by systemd-fstab-generator

[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
Before=remote-fs.target

[Mount]
Where=/share1
What=server:/share1/
Type=nfs
Options=_netdev,defaults,noatime,nodiratime,soft,retrans=6,timeo=20,retry=0,rsize=32768,wsize=32768,proto=tcp

# systemctl show -p Wants network-online.target
Wants=NetworkManager-wait-online.service

これは更新ですそして@sourcejediが要求した情報

sudo systemctl list-dependencies share1.mount
share1.mount
● ├─-.mount
● ├─home.mount
● ├─system.slice
● └─network-online.target

sudo systemctl list-dependencies --after share1.mount
share1.mount
● ├─-.mount
● ├─home.mount
● ├─system.slice
● ├─systemd-journald.socket
● ├─network-online.target
● │ └─network.target
● │   ├─dhcpcd.service
● │   ├─NetworkManager.service
● │   ├─wpa_supplicant.service
● │   └─network-pre.target
● ├─network.target
● │ ├─dhcpcd.service
● │ ├─NetworkManager.service
● │ ├─wpa_supplicant.service
● │ └─network-pre.target
● └─remote-fs-pre.target

# sudo journalctl -b -u share1.mount -u network-online.target -u NetworkManager-wait-online -u NetworkManager --no-pager
-- Logs begin at Sun 2018-06-10 17:09:08 EDT, end at Sat 2018-12-22 19:07:16 EST. --
Dec 22 17:58:38 laptop1 systemd[1]: Starting Network Manager...
Dec 22 17:58:38 laptop1 NetworkManager[463]: <info>  [1545519518.3825] NetworkManager (version 1.14.5dev+17+gba83251bb-1) is starting... (for the first time)
Dec 22 17:58:38 laptop1 NetworkManager[463]: <info>  [1545519518.3826] Read config: /etc/NetworkManager/NetworkManager.conf (lib: 20-connectivity.conf)
Dec 22 17:58:38 laptop1 NetworkManager[463]: <info>  [1545519518.3836] wifi-nl80211: (wlan0): using nl80211 for WiFi device control
Dec 22 17:58:38 laptop1 NetworkManager[463]: <info>  [1545519518.3895] bus-manager: acquired D-Bus service "org.freedesktop.NetworkManager"
Dec 22 17:58:38 laptop1 systemd[1]: Started Network Manager.
Dec 22 17:58:38 laptop1 NetworkManager[463]: <info>  [1545519518.3900] manager[0x55b8543f4060]: monitoring kernel firmware directory '/lib/firmware'.
Dec 22 17:58:38 laptop1 systemd[1]: Reached target Network is Online.
Dec 22 17:58:38 laptop1 systemd[1]: share1.mount: Directory /share1 to mount over is not empty, mounting anyway.
Dec 22 17:58:38 laptop1 systemd[1]: Mounting /share1...
Dec 22 17:58:39 laptop1 mount[546]: mount.nfs: Network is unreachable
Dec 22 17:58:39 laptop1 systemd[1]: share1.mount: Mount process exited, code=exited status=32
Dec 22 17:58:39 laptop1 systemd[1]: share1.mount: Failed with result 'exit-code'.
Dec 22 17:58:39 laptop1 systemd[1]: Failed to mount /share1.
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3695] hostname: hostname: using hostnamed
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3696] hostname: hostname changed from (none) to "laptop1"
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3698] dns-mgr[0x98059644079A]: init: dns=default, rc-manager=symlink
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3708] rfkill2: found WiFi radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/rfkill2) (driver iwlwifi)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3711] manager[0x55b8543f4060]: rfkill: WiFi hardware radio set disabled
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3711] manager[0x55b8543f4060]: rfkill: WWAN hardware radio set enabled
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3926] settings: Loaded settings plugin: NMSKeyfilePlugin (internal)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3933] settings: Loaded settings plugin: NMSIbftPlugin ("/usr/lib/NetworkManager/1.14.5dev+17+gba83251bb-1/libnm-settings-plugin-ibft.so")
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3958] keyfile: new connection /etc/NetworkManager/system-connections/USB Ethernet Adapter 1 (fc9310,"USB Ethernet Adapter 1")
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3975] keyfile: new connection /etc/NetworkManager/system-connections/walden2
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3983] keyfile: new connection /etc/NetworkManager/system-connections/NETGEAR4
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3991] keyfile: new connection /etc/NetworkManager/system-connections/Tls5
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.3999] keyfile: new connection /etc/NetworkManager/system-connections/JONES
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4062] manager: rfkill: WiFi disabled by radio killswitch; disabled by state file
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4063] manager: rfkill: WWAN enabled by radio killswitch; enabled by state file
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4064] manager: Networking is enabled by state file
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4066] dhcp-init: Using DHCP client 'internal'
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4129] Loaded device plugin: NMAtmManager (/usr/lib/NetworkManager/1.14.5dev+17+gba83251bb-1/libnm-device-plugin-adsl.so)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4210] Loaded device plugin: NMBluezManager (/usr/lib/NetworkManager/1.14.5dev+17+gba83251bb-1/libnm-device-plugin-bluetooth.so)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4232] Loaded device plugin: NMOvsFactory (/usr/lib/NetworkManager/1.14.5dev+17+gba83251bb-1/libnm-device-plugin-ovs.so)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4404] Loaded device plugin: NMTeamFactory (/usr/lib/NetworkManager/1.14.5dev+17+gba83251bb-1/libnm-device-plugin-team.so)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4420] Loaded device plugin: NMWifiFactory (/usr/lib/NetworkManager/1.14.5dev+17+gba83251bb-1/libnm-device-plugin-wifi.so)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4427] Loaded device plugin: NMWwanFactory (/usr/lib/NetworkManager/1.14.5dev+17+gba83251bb-1/libnm-device-plugin-wwan.so)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4435] device (lo): carrier: link connected
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4439] manager: (lo): new Generic device (/org/freedesktop/NetworkManager/Devices/1)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4449] manager: (eth0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/2)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4461] device (eth0): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external')
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4481] manager: (eth1): new Ethernet device (/org/freedesktop/NetworkManager/Devices/3)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4491] device (eth1): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external')
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4504] device (wlan0): driver supports Access Point (AP) mode
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4508] manager: (wlan0): new 802.11 WiFi device (/org/freedesktop/NetworkManager/Devices/4)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4513] device (wlan0): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external')
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4516] device (wlan0): set-hw-addr: set MAC address to 28:ab:29:45:F9:2B (scanning)
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4586] bluez: use BlueZ version 5
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.4656] bluez5: NAP: added interface 77:ab:29:45:F9:2F
Dec 22 17:58:39 laptop1 NetworkManager[463]: <info>  [1545519519.5063] supplicant: wpa_supplicant running
Dec 22 17:58:42 laptop1 NetworkManager[463]: <info>  [1545519522.0759] device (eth1): carrier: link connected
Dec 22 17:58:42 laptop1 NetworkManager[463]: <info>  [1545519522.0792] device (eth1): state change: unavailable -> disconnected (reason 'carrier-changed', sys-iface-state: 'managed')
Dec 22 17:58:42 laptop1 NetworkManager[463]: <info>  [1545519522.0798] policy: auto-activating connection 'USB Ethernet Adapter 1' (fc9310)
Dec 22 17:58:42 laptop1 NetworkManager[463]: <info>  [1545519522.0804] device (eth1): Activation: starting connection 'USB Ethernet Adapter 1' (fc9310)
Dec 22 17:58:42 laptop1 NetworkManager[463]: <info>  [1545519522.0806] device (eth1): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')
Dec 22 17:58:42 laptop1 NetworkManager[463]: <info>  [1545519522.0810] manager: NetworkManager state is now CONNECTING
Dec 22 17:58:42 laptop1 NetworkManager[463]: <info>  [1545519522.0895] device (eth1): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
Dec 22 17:58:42 laptop1 NetworkManager[463]: <info>  [1545519522.0899] device (eth1): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
Dec 22 17:58:42 laptop1 NetworkManager[463]: <info>  [1545519522.0902] dhcp4 (eth1): activation: beginning transaction (timeout in 45 seconds)
Dec 22 17:58:45 laptop1 NetworkManager[463]: <info>  [1545519525.7908] device (eth1): carrier: link connected
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1025] dhcp4 (eth1):   address 192.168.5.2
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1026] dhcp4 (eth1):   plen 24
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1026] dhcp4 (eth1):   expires in 108000 seconds
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1027] dhcp4 (eth1):   nameserver '192.168.5.1'
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1027] dhcp4 (eth1):   domain name 'wrkgrp'
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1027] dhcp4 (eth1):   hostname 'usb_laptop1'
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1028] dhcp4 (eth1):   gateway 192.168.5.1
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1040] dhcp4 (eth1): state changed unknown -> bound
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1075] device (eth1): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'managed')
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1108] device (eth1): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed')
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1117] device (eth1): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1134] manager: NetworkManager state is now CONNECTED_LOCAL
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1153] manager: NetworkManager state is now CONNECTED_SITE
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1155] policy: set 'USB Ethernet Adapter 1' (eth1) as default for IPv4 routing and DNS
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1161] device (eth1): Activation: successful, device activated.
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.1167] manager: startup complete
Dec 22 17:58:47 laptop1 NetworkManager[463]: <info>  [1545519527.3936] manager: NetworkManager state is now CONNECTED_GLOBAL

soft議論の余地があるマウントオプションの使用に関してこのオプションを使用することに決めたのは長年の問題でしたhard。リスクを軽減したくはありませんが、再送信、タイミング、および再試行オプションを調整しながら、そのオプションを使用するよりも良い結果が得られるかどうかはわかりませんsoftsofthard

答え1

これはsystemdで私に効果的です。 、ネットワークがオンラインになるまでautomountマウント要求を遅らせます。requires

よくわかりませんが、nofail使用するのに問題がないようです。必ずしも必要ではありませんrequires。たぶん誰かがアイデアを持っているかもしれません。

10.0.0.110:/export/3T  /mnt/3T  nfs nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10 0 0 

答え2

CentOS 7では、ネットワークファイルシステムのマウントはに依存しますnetwork-online.target。インターフェイスが機能してIPが設定されているときに接続できます
。これは、最初のインターフェイスの最初のIPがホスト名を解決するのに十分であると仮定します。しかし、必ずしもそうする必要はありません。network-online.target

systemd servicesネットワークにラベルを付ける必要があることを確認するためにテストを作成できます。戻る「そして作ったnetwork-online.target ぶら下がるサービスに。

テンプレートの場合は、以下を確認してください。 https://gitlab.com/ggeurts/extend-network-online.target

答え3

同様の問題、特にnetwork-online.targetへのNFSマウントの依存関係に直面しました。

これは私のUbuntuデスクトップnetwork-online.targetがNetworkManagerによって制御されるため、特に問題です。これは、DHCPを介してDNSまたはデフォルトパスがインストールされる前にnetwork-online.targetに達したことを示します。ここでの問題は、IP層にリモートターゲットへのデフォルトパスがない場合、fstabを介して生成されたジェネレータデバイスまたは手動で作成された.mountデバイスで実行されたすべてのmount.nfsコマンドが "Network Unreachable"メッセージで失敗することです。 。

私はNFSが正常にマウントされたかどうかにかかわらず、遅延なく安定して起動してデスクトップに移動するシステムが欲しいです。また、ネットワークが使用可能になったり、ネットワークにNFSサーバーが表示されたときに、NFSが自動的にマウントを設定できたらと思います。

この目標を達成することは予想以上に難しかったですが、他の人が役に立つと思うかもしれないので、私の経験を共有します。

"/"を除いて、fstabからすべてのマウント定義を削除しました。 fstabがダウンし、最終的にすべてのマウント操作がsystemdを介して実行されるのを見ているような気がします。ジェネレータはfstabの使用を「簡単に」します。それで、すべてのNFSマウントを私が直接作成したマウントユニットに移動しました。また、NautilusまたはNemoのどちらを選択しても、NFSマウントがユーザーのホームディレクトリにマウントされているか/ mediaにマウントされていない限り、左側のデバイスウィンドウに表示されないことがわかりました。最後にシステムを起動して実行したら、GUIツールを使用してファイルを管理したいと思います。この目的のために、サーバーに単一のNFSマウントを組み合わせてから、サーバー上の各エクスポートをデスクトップ上の目的の場所に--bindマウントするマウントデバイスセットを使用しました。デフォルトのNFSマウントポイントにバインドマウントを作成すると、systemdは実際に後ろからNFSマウントを作成します。したがって、NFSサーバーのルートディレクトリを/ mntに追加するシステム起動NFSマウントのみがあります。

起動の依存関係を克服し、ネットワークまたはサーバーが利用できない場合のNFSマウントタイムアウトを防ぐために、mnt-NFS-mx.serviceデバイスでNFSマウント操作を開始します。

[Unit]
Description=Attempting to mount server 'mx' using NFS

After=network.target

[Service]
Type=oneshot

# Add a high metric default to 'lo' interface into route table.
# This prevents the mount command from failing with "Network unreachable" is case no external phy link is available.
ExecStart=-/bin/ip route add default dev lo metric 4294967295
ExecStart=/bin/mount 10.0.0.10:/mnt/ /mnt/NFS/mx -t nfs -o nolock,nfsvers=4,fg,retry=10000,hard,timeo=20,retrans=1

# Remove the default once the mount command is successful
ExecStop=-/bin/ip route del default dev lo metric 4294967295
ExecStopPost=-/bin/ip route del default dev lo metric 4294967295

[Install]
WantedBy=network.target

これは起動時にnetwork.targetによって取得され、デフォルトパスが見つからない場合はマウントコマンドが失敗するのを防ぐためにデフォルトパスを追加するため、network.targetの後に開始する必要があります。インポート時に実際のデフォルト値を妨げない適度に高い指標を使用してください(注意してください。この指標は最大値です)。その後、NFSマウントを呼び出し、マウントコマンドが実行されている間、サービスは「アクティブ」のままです。 NFSサーバーがインストールされている場合、サービスは停止し、重複したデフォルトパスが削除されます。それ以外の場合は、サーバーを待って永久に(約1週間)停止します。しかし、これはシステムがさらなる目標を達成するのを妨げることはない。これは NFSv4 専用環境です。以前のバージョンが必要な場合は、すべてのRPCインフラストラクチャが起動していることを確認する必要があります。これらのRPCサービスをすべて無効にしたが、このレガシー環境の一部が見つからない場合、NFSv4がそれを使用していなくてもRPCのファイルロックと対話しようとしているため、NFSマウントは失敗し続けます。したがって、mountコマンドには「nolock」が必要です。これは、NFSマウント実装の従来の問題のようです。また、「timeo」オプションと「retrans」オプションをより積極的なレベルに調整して、「利用可能な」デフォルトパスが利用可能になったときにサーバーをすばやく見つけることができました。指定された設定を使用すると、クライアントは2秒間応答を待ち、応答がないと同じ要求を再送信しません。これにより、クライアントがサーバーを検索しようとするたびに再送信間隔が長くなる指数バックオフを入力できなくなります。ただし、再試行タイマーは10000分に設定されているため、同じ最大タイムアウトである2秒を使用して新しい試行ですぐに再試行し、接続が確立されるまで続行されます。私のシステムでは、network-online.targetに到達する前に、すべてのNFSマウントが所定の位置にあり、準備が整っていることがわかります。

いくつかのステップでは、NFSがマウントされていると仮定します。 "mx"サーバーのルート@ /mnt/NFS/mx/があります。 mnt-NFS-mx.serviceデバイスを有効にすると、インストールセクションの「WantedBy = mnt-NFS-mx.service」によって一連のバインドマウントがトリガーされます。例は次のとおりです。media-NAS_Public.mount

[Unit]
# To make remote NFS shares appear under the devices pane of Nemo
Description=--bind NFS NAS /Public onto /media/NAS_Public

DefaultDependencies=no

After=mnt-NFS-mx.service

[Mount]
What=/mnt/NFS/mx/shared_sun_NAS/Public
Where=/media/NAS_Public
Type=none
Options=bind,_netdev
TimeoutSec=0

[Install]
WantedBy=mnt-NFS-mx.service

このインストール単位の注目すべき点は、「_netdev」オプションと一緒に「DefaultDependency = no」を使用することです。 _netdevは通常、マウントデバイスが実際にネットワークに関連付けられており、ローカルファイルシステムの一部ではないことをsystemdに理解させるために使用されます。ただし、これによりRemote-fs-pre.target、network.target、およびnetwork-online.targetのAfter =に対する一連の基本依存関係が追加され、重要なのはリモート-fs.targetのbefore =に追加されます。このBefore =は、これらのマウントデバイスが成功しなかったりタイムアウトした場合にシステムがリモートfs.targetに到達するのを防ぐために問題になります。したがって、「DefaultDependency = no」を使用すると、これらの依存関係を排除し、デバイスが起動時に直接起動しないときに起動が中断されるのを防ぎます。バインドマウントが実際にマウントポイントターゲットに直接NFSマウントを作成することを通知するために、_netdevオプションを残しました。

私はこれらの.mountユニットを/ mediaに作成し、プライベートドキュメントディレクトリなどのホームディレクトリにも直接作成しました。最後に、インストールプロセスが失敗した場合にこの場所に何も記録されないように、デスクトップコンピュータにマウントポイントを作成し、これらのディレクトリ(chattr + i /media/NAS_Public)に変更できないフラグを設定しました。

私の場合は重要ではありませんが、これらのバインドマウントに "DefaultDependency = no"を使用すると、NFS接続が必要なアプリケーションの依存関係ロジックが失敗を認識しないことがわかります。ただし、After=mnt-NFS-mx.service を代替として使用できます。私はこれを試していませんでした。

結局、これはネットワークやサーバーの状態にかかわらず、信頼性が高く高速なブートシステムを提供し、サーバーの障害が修正されるとインストールがポップアップされるという追加のボーナスも提供します。

他の人もこれが役に立つと思います。

答え4

私が見つけた方法は、ディスクマウント操作を実行する専用のsystemdサービスを作成し、systemdのマウント機能を無視することです。

このアプローチの基本は次のとおりです。

  • NFSは何千もの理由でまだ利用できないかもしれません。停電から回復している可能性があり、NFS サーバーがクライアントよりも遅くなります。お客様に不明な問題により、ネットワークが一時的にダウンする可能性があります。 AWSはNFSクライアントを最初にインスタンス化できます。

  • 管理者として、私たちは「後でもう一度やり直す」と説明できることを手動で実行したくありません。コンピュータは後で再試行する方法を知っています。

  • Restartマウントが最終的に成功するまでマウントを再試行するオプションを使用して、NFS障害を基本概念として処理します。

  • NFSが利用可能になるのを待つ必要があるすべてのタスクには、このサービスが依存関係で必要になる場合があります。

[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

関連情報