我最近将 Ubuntu 14.04 升级到 Ubuntu 16.04,其中包括从 Upstart 到systemd
.从那时起,当系统启动时,大约有一半的时间会陷入紧急 shell。
我已经追踪到系统尝试从远程数据服务器挂载目录。来自journalctl
失败的引导尝试期间:
$ journalctl -b 0 -u dataserver.mount -u network-online.target -u network.target -u network-pre.target -u remote-fs.target -u remote-fs-pre.target --no-page
systemd[1]: Reached target Network (Pre).
systemd[1]: Reached target Network.
systemd[1]: Reached target Network is Online.
systemd[1]: Mounting /dataserver...
mount[293]: mount.nfs: Network is unreachable
systemd[1]: dataserver.mount: Mount process exited, code=exited status=32
systemd[1]: Failed to mount /dataserver.
systemd[1]: dataserver.mount: Unit entered failed state.
dataserver.mount
是远程目录的挂载。systemd
尝试挂载目录时,网络似乎不可用dataserver
,导致紧急 shell 崩溃。
我已经尝试了三天来弄清楚到底发生了什么,但我却不知所措。
一些注意事项:
dataserver.mount
/etc/fstab
是从 Ubuntu 14.04 继承的条目自动生成的。
这是/etc/fstab
条目:
# Mount dataserver-store to /dataserver
99.99.99.99:/data/NFS/datastore01 /dataserver nfs nofail,rw,soft,intr,actimeo=60 0 0
这是生成的systemd
单位/run/systemd/generator/dataserver.mount
:
# Automatically generated by systemd-fstab-generator
[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
[Mount]
What=99.99.99.99:/data/NFS/datastore01
Where=/dataserver
Type=nfs
Options=nofail,rw,soft,intr,actimeo=60
我没有在的条目中使用该
_netdev
选项,因为我的理解是它是多余的,它会自动识别 NFS 安装的网络设备。dataserver
/etc/fstab
systemd
我有大量来自各种诊断工作的输出,在不知道相关内容的情况下无法发布。我很乐意根据要求添加任何内容。
如何确定在引导期间尝试挂载时网络无法访问的原因?
编辑:我昨天花了一整天的时间试图弄清楚我的网络是如何配置的。我仍然不确定,但我可以告诉你的是: NetworkManager.service
、systemd-networkd.service
和ifupdown.service
在系统上处于非活动/死亡状态。 networking.service
在系统上处于活动状态。 /etc/network/interfaces
存在于系统上,但我无法知道哪个程序或服务正在用它做什么。