_netdev 是 /etc/fstab 中专用于网络存储设备的挂载选项,确保系统在网络就绪后才挂载 iscsi、nfs 或 cifs 等依赖网络的文件系统,避免开机卡死或进入 emergency mode;必须严格写为 _netdev,置于第四字段并用逗号与其他选项分隔。

_netdev 是 /etc/fstab 中一个关键的挂载选项,专为依赖网络连接的存储设备设计,比如 iSCSI 块设备、NFS 共享、CIFS/SMB 挂载点等。它不是“让挂载变快”的开关,而是告诉系统:别急着挂,等网络服务起来了再说——否则开机时网络还没通,挂载失败会拖慢启动,甚至导致系统卡在 emergency mode。
为什么必须加 _netdev?
- Linux 系统默认按
/etc/fstab顺序挂载,不区分设备类型; - iSCSI 设备(如
/dev/sdb1)需 TCP/IP 连接才能访问,NFS/CIFS 更是直接走网络协议; - 若没
_netdev,系统会在network.target之前尝试挂载,此时网卡可能未配置 IP、路由未生效、防火墙阻断端口(如 3260 或 2049),结果就是:mount: /mnt/iscsi: mount(2) system call failed: Network is unreachable- 或者 systemd 等待超时,进入救援模式。
正确写法:fstab 行中加入 _netdev
每行格式为(共6字段):
<device><mount_point><fs_type><options><dump><pass></pass></dump></options></fs_type></mount_point></device>
对网络存储,<options></options> 字段必须包含 _netdev,通常还搭配其他安全/容错参数:
-
iSCSI 块设备(已格式化为 ext4/xfs)
UUID=eb9cbf2f-fce8-413a-b770-8b0f243e8ad6 /mnt/iscsi xfs defaults,_netdev 0 0
-
NFS 共享(推荐用 NFSv4)
192.168.1.100:/volume1/data /mnt/nfs nfs defaults,_netdev,vers=4,proto=tcp,soft,timeo=300 0 0
-
CIFS/SMB 共享(需凭据文件)
//192.168.1.100/share /mnt/smb cifs defaults,_netdev,credentials=/etc/smb_creds,uid=1000,gid=1000,vers=3.0 0 0
⚠️ 注意:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
_netdev必须和其他选项用英文逗号,连接,不能有空格; - 不要用
/dev/sdX这类易变设备名,优先用UUID=或WWID=(iSCSI 可用scsi_id -g -u -s /block/sdb获取); -
defaults已包含rw,suid,dev,exec,auto,nouser,async,但不含_netdev,必须显式添加。
配合 _netdev 的必要配套设置
仅加 _netdev 不够,还需确保系统能“识别网络就绪”并触发挂载:
-
iSCSI 客户端要设为开机自动登录
编辑/etc/iscsi/iscsid.conf,确认:node.startup = automatic
并为每个 target 执行:
iscsiadm -m node -o update -n node.startup -v automatic
-
启用 iscsid 服务自启
systemctl enable --now iscsid
-
NFS/CIFS 依赖网络目标
systemd 会自动处理_netdev:它会让remote-fs.target依赖network-online.target,而后者需systemd-networkd-wait-online.service或NetworkManager-wait-online.service成功返回才结束。✅ 验证是否生效:
systemctl list-dependencies remote-fs.target | grep online
常见错误排查
-
挂载仍失败,但网络已通?检查:
-
journalctl -u remote-fs.target查看挂载单元日志; -
mount -a手动测试(确保网络已 up); -
systemctl cat proc-sys-fs-binfmt_misc.automount(若用了 automount); - NFS 服务端是否导出路径、权限是否允许客户端 IP;
- CIFS 凭据文件权限是否为
600,内容是否少写username=或拼错vers=。
-
-
_netdev加了却没效果?可能是:- fstab 行末尾多写了空格或制表符导致解析失败;
- 文件系统类型写错(如把
nfs4写成nfs但服务端只开 v4); - 使用了
noauto却忘了配x-systemd.automount(适合低频访问场景,非必需)。
不复杂但容易忽略。










