systemd:掛載 NFS 共享失敗:mount.nfs:網路無法訪問,直到啟動過程的後期
我的筆記型電腦有一個 USB 乙太網適配器。顯然,網路直到啟動過程的後期才會出現。我的 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
我確實在使用 _netdev 和 systemd。在閱讀了 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
mount 選項的爭議使用,使用它的決定是在多年的hard
選項問題之後做出的。使用 hard 選項,任何連接失去都會凍結系統並強制重啟。我正在執行 BTRFS我不想冒險。我已經決定我soft
的更適合我的情況。但是,隨著soft
我調整 retrans、timeo 和重試選項。我不確定我是否優化了它們,但總體而言體驗比使用該hard
選項要好得多。)
這對我來說適用於 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
在 CentOS 7 上,網路文件系統掛載依賴於
network-online.target
. 一旦介面啟動並設置了 ip,就會到達。這假定第一個介面上的第一個 ip 足以讓主機名被解析。然而,情況並非如此。
network-online.target
我們可以寫
systemd services
來測試網路是否應該被標記為“ up ”並使network-online.target
依賴於該服務。有關模板,請查看: https ://gitlab.com/ggeurts/extend-network-online.target