_netdev 是 systemd 依赖声明而非延时开关,需与 nofail 和 x-systemd.automount 配合使用,并严格按格式写入 fstab 第四字段,生效后 mount unit 应绑定 network-online.target。

_netdev 不是“等网卡启动后再挂载”的模糊延时开关,而是明确告诉 systemd:这个挂载动作依赖网络服务就绪,必须等到 network-online.target 完全激活后才能执行。它解决的是系统启动时的依赖顺序问题,不是加个 sleep 延迟。
关键点在于:systemd 会自动把这个挂载单元(mount unit)绑定到网络就绪目标,而不是靠猜时间或轮询。
_netdev 必须和其他选项用英文逗号分隔
写在 fstab 第四字段(挂载选项)里,不能有空格,也不能拼错(必须是 _netdev,下划线开头,全小写)。例如:
192.168.1.100:/volume1/data /mnt/nas nfs defaults,_netdev,vers=4,proto=tcp 0 0
如果写成 defaults _netdev(空格)或 _NETDEV(大小写错误),systemd 就不识别,挂载仍会在网络未通时强行尝试。
搭配 nofail 避免启动失败
单靠 _netdev 只能保证“等网络”,但若 NAS 当前关机、IP 变了、防火墙拦了端口(如 NFS 的 2049 或 iSCSI 的 3260),挂载仍会超时,可能拖慢启动甚至卡住。加上 nofail 后,即使挂载失败,systemd 也会继续启动流程,不会进 emergency mode:
192.168.1.100:/volume1/data /mnt/nas nfs defaults,_netdev,nofail,vers=4 0 0
推荐加 x-systemd.automount 实现真正按需挂载
如果你并不需要开机就立刻挂上 NAS,只是希望首次访问 /mnt/nas 时才连接,可以再加这个选项。它让 systemd 创建一个 automount 单元,挂载动作延迟到目录被 cd、ls 或程序读写时触发,进一步降低启动负担和失败风险:
192.168.1.100:/volume1/data /mnt/nas nfs defaults,_netdev,nofail,x-systemd.automount 0 0
验证配置是否生效
改完 fstab 别急着重启,先做两件事:
- 运行
sudo mount -a:检查语法是否正确、当前网络下能否连通并挂载。报错就立刻修正。 - 查看生成的 mount unit 是否真绑定了网络:
systemctl cat mnt-nas.mount | grep -E "Wants=|After="
输出中应包含
network-online.target—— 这才是_netdev起效的直接证据。
不复杂但容易忽略











