和许多人一样,当 NFSv3 服务器不可用(关闭)时,我也遇到过机器挂起的问题。我看到了各种建议,比如软/硬、intr、bg 等正在设置......似乎没有很多工作,所以我回到了开始。 /etc/auto.net 是一个脚本,运行以确定可以自动安装的内容。查看该脚本,运行它似乎非常安全,它只输出一个字符串。我有一个 CNAME 为“nas”的 NAS(我知道原来的):
graeme@real:/etc$ MOUNT_NFS_DEFAULT_PROTOCOL=4 ./auto.net nas
-fstype=nfs4,hard,intr,nodev,nosuid,async nas:/
graeme@real:/etc$ MOUNT_NFS_DEFAULT_PROTOCOL=3 ./auto.net nas
\
/Download nas:/Download \
/InternalAdmin nas:/InternalAdmin \
/Multimedia nas:/Multimedia \
/Public nas:/Public \
/Recordings nas:/Recordings \
/USBUploads nas:/USBUploads \
/Web nas:/Web \
/git nas:/git \
/homes nas:/homes \
/svn nas:/svn
如您所见,对于 NFSv4,它输出挂载选项,然后输出 NFSv4 导出。对于 NFSv3,如果您查看脚本,您会看到,它仅列出导出(无选项):
SHOWMOUNT="$SMNT --no-headers -e $key"
$SHOWMOUNT | LC_ALL=C cut -d' ' -f1 | LC_ALL=C sort -u | \
awk -v key="$key" -v opts="$opts" -- '
BEGIN { ORS=""; first=1 }
{ if (first) { print opts; first=0 }; print " \\\n\t" $1, key ":" $1 }
END { if (!first) print "\n"; else exit 1 }
' | sed 's/#/\\#/g'
opts="-fstype=nfs,hard,intr,nodev,nosuid"
else
# NFSv4
opts="-fstype=nfs4,hard,intr,nodev,nosuid,async"
echo "$opts $key:/"
fi
else 之前的位是 NFSv3,else 之前的位是 NFSv4...如您所见,NFSv4 设置 opts 然后回显 $opts 然后 $key,而 NFSv3 以相同的方式设置 opts但后来不使用它。
我想知道现在是否打算更早地分配 opt ,最好采用以下形式:
: ${opts:="-fstype=nfs,hard,intr,nodev,nosuid"}
如果我这样做我会得到:
graeme@real:/etc$ MOUNT_NFS_DEFAULT_PROTOCOL=3 /tmp/auto.net nas
-fstype=nfs,hard,intr,nodev,nosuid \
/Download nas:/Download \
/InternalAdmin nas:/InternalAdmin \
/Multimedia nas:/Multimedia \
/Public nas:/Public \
/Recordings nas:/Recordings \
/USBUploads nas:/USBUploads \
/Web nas:/Web \
/git nas:/git \
/homes nas:/homes \
/svn nas:/svn