プロジェクト

全般

プロフィール

遅めのマシンでNFSの起動時マウントに失敗した話 » 履歴 » バージョン 2

sylow castle, 2019/12/08 18:04

1 2
# 遅めのマシンでNFSの起動時マウントに失敗した話
2
3
## 概要
4
5
/etc/fstabの設定はあっている(mount -aしたら成功する)のに起動時にNFSのマウントに失敗したという話
6
7
### 原因
8
9
ネットワークが立ち上がるのほうが後だった。
10
11
### 対策
12
13
ネットワークの起動を待つサービスの待ち時間を長くする
14
15
## 作業
16
17
とりあえずログでも見る
18
19
```
20
21
# tac /var/log/messages | grep -ni nfs
22
2819:Dec  7 23:21:30 ringo systemd: Unit mnt-nfs.mount entered failed state.
23
2822:Dec  7 23:21:30 ringo systemd: Failed to mount /mnt/nfs.
24
2823:Dec  7 23:21:30 ringo systemd: mnt-nfs.mount mount process exited, code=exited status=32
25
2824:Dec  7 23:21:30 ringo mount: mount.nfs4: Network is unreachable
26
2827:Dec  7 23:21:30 ringo kernel: NFS: Registering the id_resolver key type
27
2829:Dec  7 23:21:30 ringo kernel: FS-Cache: Netfs 'nfs' registered for caching
28
2834:Dec  7 23:21:30 ringo systemd: Started Notify NFS peers of a restart.
29
2838:Dec  7 23:21:30 ringo systemd: Mounting /mnt/nfs...
30
2845:Dec  7 23:21:30 ringo systemd: Starting Notify NFS peers of a restart...
31
```
32
33
2845行目付近を見ると
34
35
```
36
# tac /var/log/messages | cat -n |  head -n 3000 | tail -n 300
37
  2844  Dec  7 23:21:30 ringo systemd: Dependency failed for Remote File Systems.
38
  2845  Dec  7 23:21:30 ringo systemd: Failed to mount /mnt/nfs.
39
  2846  Dec  7 23:21:30 ringo systemd: mnt-nfs.mount mount process exited, code=exited status=32
40
  2847  Dec  7 23:21:30 ringo mount: mount.nfs4: Network is unreachable
41
  2848  Dec  7 23:21:30 ringo kernel: Key type id_legacy registered
42
  2849  Dec  7 23:21:30 ringo kernel: Key type id_resolver registered
43
  2850  Dec  7 23:21:30 ringo kernel: NFS: Registering the id_resolver key type
44
  2851  Dec  7 23:21:30 ringo kernel: Key type dns_resolver registered
45
  2852  Dec  7 23:21:30 ringo kernel: FS-Cache: Netfs 'nfs' registered for caching
46
  2853  Dec  7 23:21:30 ringo systemd: Started OpenSSH server daemon.
47
  2854  Dec  7 23:21:30 ringo kernel: FS-Cache: Loaded
48
  2855  Dec  7 23:21:30 ringo systemd: Started System Logging Service.
49
  2856  Dec  7 23:21:30 ringo rsyslogd: [origin software="rsyslogd" swVersion="8.24.0" x-pid="1053" x-info="http://www.rsyslog.com"] start
50
  2857  Dec  7 23:21:30 ringo systemd: Started Notify NFS peers of a restart.
51
  2858  Dec  7 23:21:30 ringo systemd: Starting Postfix Mail Transport Agent...
52
  2859  Dec  7 23:21:30 ringo systemd: Starting OpenSSH server daemon...
53
  2860  Dec  7 23:21:30 ringo systemd: Starting System Logging Service...
54
  2861  Dec  7 23:21:30 ringo systemd: Mounting /mnt/nfs...
55
```
56
57
ネットワークに失敗してる…
58
59
```
60
  2480  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1356] device (enp1s0): Activation: successful, device activated.
61
  2481  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1307] policy: set 'enp1s0' (enp1s0) as default for IPv4 routing and DNS
62
  2482  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1304] manager: NetworkManager state is now CONNECTED_SITE
63
  2483  Dec  7 23:21:39 ringo dhclient[816]: bound to 192.168.0.20 -- renewal in 4294967295 seconds.
64
  2484  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1209] manager: NetworkManager state is now CONNECTED_LOCAL
65
  2485  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1202] device (enp1s0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')
66
  2486  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1191] device (enp1s0): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed')
67
  2487  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1161] device (enp1s0): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'managed')
68
  2488  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1090] dhcp4 (enp1s0): state changed unknown -> bound
69
  2489  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1089] dhcp4 (enp1s0):   domain name '**********'
70
  2490  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1089] dhcp4 (enp1s0):   nameserver '192.168.0.1'
71
  2491  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1088] dhcp4 (enp1s0):   lease time 4294967295
72
  2492  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1087] dhcp4 (enp1s0):   gateway 192.168.0.1
73
  2493  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1086] dhcp4 (enp1s0):   plen 24 (255.255.255.0)
74
  2494  Dec  7 23:21:39 ringo NetworkManager[709]: <info>  [1575728499.1076] dhcp4 (enp1s0):   address 192.168.0.20
75
  2495  Dec  7 23:21:39 ringo dhclient[816]: DHCPACK from 192.168.0.1 (xid=0x35f43909)
76
  2496  Dec  7 23:21:39 ringo dhclient[816]: DHCPOFFER from 192.168.0.1
77
```
78
79
ネットワークデバイスの有効化のほうが後なのが原因っぽい。
80
下記によるとネットワークの起動を待てばいいらしい。
81
82
> systemd-networkd で共有を自動マウント
83
>
84
> systemd-networkd を使っている場合、起動時に nfs がマウントされないことがあります。以下のようなエラーが表示されます:
85
>
86
>```
87
> mount[311]: mount.nfs4: Network is unreachable
88
>```
89
>
90
>解決方法は簡単です。systemd-networkd-wait-online.service を有効化して、ネットワークが完全に設定されるまで待機するように systemd を設定してください。サービスが平行して起動しなくなるので起動時間は多少長くなります。
91
92
参考: https://wiki.archlinux.jp/index.php/NFS#systemd-networkd_.E3.81.A7.E5.85.B1.E6.9C.89.E3.82.92.E8.87.AA.E5.8B.95.E3.83.9E.E3.82.A6.E3.83.B3.E3.83.88
93
94
95
NetworkManager環境では「NetworkManager-wait-online.service」が該当するユニットだった。
96
さて、こいつを調べるとenabledだし、実行に失敗もしている。たぶん、これかなー。
97
98
> Fedora 29 のKVM仮想マシンで Failed to start Network Manager Wait Online. が発生する
99
>
100
> NetworkManager-wait-online サービスは、設定されているタイムアウト(–timeout=30 秒)を超えても NetworkManager の準備が完了していない場合にこのエラーを出力する。
101
102
参考:https://www.tomoyan.net/linux/fedora_29_failed_to_start_network_manager_wait_online
103
104
あぁたぶんこれ。マシンの起動ちょっと時間かかるし。
105
上記サイトの手順に従って設定していく
106
107
まず、
108
109
```
110
# cp -p /usr/lib/systemd/system/NetworkManager-wait-online.service /etc/systemd/system/.
111
# vim /etc/systemd/system/NetworkManager-wait-online.service
112
```
113
114
ExecStartの--timeoutオプションを30秒から120秒に変更してあげるとうまくいった。
115
116
おわり。