启动时自动 NFS 挂载不起作用。这是我的 fstab 行:
nas:/backups /mnt/nas_backups nfs rw,_netdev,auto 0 0
使用mount -a
它可以,但在启动时它不起作用。经过一番调查,我认为问题在于/etc/network/run/ifstate
:我这样说是因为/etc/init.d/mountnfs.sh
调用/etc/network/if-up.d/mountnfs
,其中包含以下代码:
exit_unless_last_interface() {
grep "^[:space:]*auto" /etc/network/interfaces | \
sed -e 's/[ \t]*auto[ \t]*//;s/[ \t]*$//;s/[ \t]/\n/g' | \
while read i; do
if [ `grep -c $i /etc/network/run/ifstate` -eq "0" ]; then
msg="if-up.d/mountnfs[$IFACE]: waiting for interface $i before doing NFS mounts"
log_warning_msg "$msg"
# Can not pass this as a variable because of the while subshell
mkdir /var/run/network/mountnfs_earlyexit 2> /dev/null
fi
done
if [ -d /var/run/network/mountnfs_earlyexit ]; then
rmdir /var/run/network/mountnfs_earlyexit 2>/dev/null
exit 0
fi
}
这段代码导致脚本退出,因为其中/etc/network/run/ifstate
没有 eth0 接口(其唯一内容是lo=lo
),尽管 eth0 接口已启动并正在运行。
您对 ifstate 不正确的原因和解决方法有什么建议吗?
更新 1:这是配置eth0
(有用户说它可以解决部分问题,所以我写了它):
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
# The primary network interface
auto eth0
iface eth0 inet static
address 10.0.0.11
netmask 255.255.255.0
post-up iptables-restore < /etc/iptables.up.rules
gateway 10.0.0.1
更新2:这是输出/etc/init.d/networking restart
:
Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces ... (warning).
Reconfiguring network interfaces...SIOCADDRT: File exists
Failed to bring up eth0.
done.
重启后eth0
正常运行,/etc/network/run/ifstate
仍然不包含eth0
。
答案1
这是缺少固件的问题:网卡(NetXen NX3031)无需安装专有固件即可工作,但安装了专有固件后工作得更好(firmware-netxen
非自由存储库内的软件包)。
安装完成后,重启后网络设备已正确安装。非常感谢!
答案2
也许在 fstab 挂载行中添加“bg”选项可以解决这个问题?
如果指定了 bg 选项,超时或失败会导致 mount(8) 命令派生一个子进程,该子进程继续尝试挂载导出。父进程立即返回并返回零退出代码。这称为“后台”挂载。