Windows 下 NFS 客户端的安装及设置
在 Windows 上使用 NFS 客户端,需要把 nfs 共享目录映射到一个驱动器。此处假定为映射的
驱动器为 N:,而 nfs 共享目录为 192.168.6.55:/vmsnfs。
1 安装 Microsoft Windows Services for UNIX
Windows Services for UNIX 3.5 提 供支 援充 分和 整合 完全 的跨 平台 網路 服務 ,適 應需 要
Windows 和 UNIX 基礎環境之間交互操作性的企業客戶。 Windows Services for UNIX 3.5 為
企業客戶提供儲存在多個平台的資訊之緊密存取,統一了跨平台的網路管理,並且重複使用
UNIX 應用程式和 Windows 上的指令碼。其中包括支援網路檔案系統 (NFS)。
下载 Microsoft Windows Services for UNIX
地址:http://www.microsoft.com/taiwan/windows/sfu/
安装程序:SFU35SEL_EN.exe 217 MB (228,178,504 字节)
安装 Microsoft Windows Services for UNIX
注意与 NFS 有关的两个组件是一定要安装的
NFS->Client for NFS
Authentication tools for NFS->Server for PCNFS
安装过程比较简单,此处略过。
2 在 Windows 下配置 NFS 客户端
打开 Services for UNIX Administration 配置用户名
点 “开始菜单”->“所有程序”->“Windows Services for UNIX”->“Services for UNIX Administration”,
会弹出一个名为“Services for UNIX Administration”的窗口。
左边栏切到 Server for PCNFS。
右边栏切到 Groups,添加 Group Name 为 root,Group ID(GID)为 0 的组。
右边栏切到 Users,添加 User name 为 root,User logon name 为 root,Primary group name
为 root,User ID(UID)为 0 的用户,密码不必与 Linux 系统的密码相同。
点击右上角的 Apply 保存。
映射网络驱动器到 NFS 共享目录(界面操作方式,不推荐)
在“网上邻居”上按右键,选择“映射网络驱动器”,会弹出映射网络驱动器对话框。
选择盘符,比如 N:
输入网络资源路径:192.168.6.55:/vmsnfs
点 “确定”。会弹出一个 NFS login successful 的信息框,注意检查显示的 UID 和 GID 的值(一
般为-2),点“否”,会弹出 Client for NFS Drive N:对话框。选中 Login using PCNFS authentication
对话框,在 Server name 中填入 localhost,在 User name 中填入 root,在 Password 中填入前
面设定的密码,点“确定”,会再次弹出 NFS login successful 的信息框,此次会显示 UID 和 GID
均为 0,点“确定”。
这时打开“我的电脑”,会看到增加了一个盘符 N:。在其上按右键打开属性对话框,切换到
NFS Attributes 页,会看到权限,切换到 NFS Mount Options,会看到 UID 和 GID 等信息。注
意确认一下 UID 和 GID 一定要为 0。
映射网络驱动器到 NFS 共享目录(批处理脚本方式,推荐)
上面这段挺费劲的,但我不推荐使用这种方式来设置,因为一旦重新启动机器,你再打开“我
的电脑”,在 NFS 对应的盘符 N:属性就会看到 UID 和 GID 由还原成了-2。还得先把它断开,
然后重新设置,挺麻烦的。所幸微软提供了类似 Unix 下的命令行工具 mount.exe,可以编写
如下内容的批处理脚本并保存为 nfs.bat。其中第一行是用来记录操作日志的,第二行启动
Server for PCNFS,第三行是避免 mount 命令出错,第四行是把 nfs 共享目录挂载到 N:(注意
-p:xxx 要设置成前面设定的密码),第五行列出 N:下的文件和目录。
批处理代码
echo mount nfs at %date% %time% >>c:\nfs.log
net start pcnfsd >>c:\nfs.log
net use /pers:no >>c:\nfs.log
mount -o mtype=hard -o pcnfs=localhost -u:root -p:xxx 192.168.6.55:/vmsnfs N: >>c:\nfs.log
dir N: >>c:\nfs.log
echo mount nfs at %date% %time% >>c:\nfs.log
net start pcnfsd >>c:\nfs.log
net use /pers:no >>c:\nfs.log
mount -o mtype=hard -o pcnfs=localhost -u:root -p:xxx 192.168.6.55:/vmsnfs N: >>c:\nfs.log
dir N: >>c:\nfs.log
双击执行 nfs.bat,然后打开“我的电脑”就可以看到 N:了,然后打开 c:\nfs.log 看一下。
Text 代码
mount nfs at 2010-11-19 星期五 11:33:39.15
命令成功完成。
N: is now successfully connected to 192.168.6.55:/vmsnfs
The command completed successfully.
mounted
mount nfs at 2010-11-19 星期五 11:33:39.15
命令成功完成。
N: is now successfully connected to 192.168.6.55:/vmsnfs
The command completed successfully.
mounted
如果看到 successully 之类的关键字眼,就表明 mount 成功了。
3 在 Windows 下使用 NFS 客户端会碰到的问题
Q:在挂载 nfs 共享目录时,mount.exe 报 1326 错误,是什么原因?
Network Error - 1326
Type 'NET HELPMSG 1326' for more information.
A:根据提示,使用 net helpmsg 看一下,如下所示:
C:\>net helpmsg 1326
登录失败: 未知的用户名或错误密码。
这时,需要检查一下 mount 命令后面的-u:user 和-p:password 这两部分是否正确了。
Q:在挂载 nfs 共享目录时,mount.exe 报 85 错误,是什么原因?
Network Error - 85
Type 'NET HELPMSG 85' for more information.
A:根据提示,使用 net helpmsg 看一下,如下所示:
C:\>net helpmsg 85
本地设备名已在使用中。
这是由于对同一个驱动器重复执行 mount 命令造成的,确认驱动器选择是否正确。
Q:创建目录或文件时报“拒绝访问”,怎么办?
A:首先打开“我的电脑”,在 NFS 映射的驱动器上按右键,打开属性对话框。切换到 NFS Mount
Options 页,看显示的 UID 和 GID 是否为 0,可能你看到的是-2。关闭属性对话框之后,在驱
动器上按右键,选择“断开”,然后参照上一节重新设置。
如果看到 NFS Mount Options 页显示的 UID 和 GID 都为 0,那么就要到 NFS 服务端去查找原
因了。比如,检查一下共享目录的属主和组是否为 nfsnobody,参见前面的章节。
Q:怎样做到登录 Windows 之后自动启动 NFS?
A:按照 4.2 创建 nfs.bat 脚本,然后复制到“启动”目录(我的 XP 系统是“C:\Documents and
Settings\Administrator\「开始」菜单\程序\启动”目录)。在登录之后就会自动挂载 nfs 共享目
录。如果需要确认是否成功,打开 c:\nfs.log 看一下。
Q:怎样做到启动 Windows 之后自动挂载 NFS,而不管是否登录?
A:这个就有点难了。本人试验了如下两种方式,都无法成功的挂在 nfs 共享目录。(奇怪,
手工直接执行 nfs.bat 就能成功)
(1)安装 Windows Resource Kits,里面有 instsrv.exe 和 srvany.exe 两个程序,制作了系统服
务 MountNFS,用来执行 nfs.bat 脚本。
(2)设置“任务计划”,执行文件为 nfs.bat,触发条件为“计算机启动时”。
最后,只能将 XP 系统设置为自动登录才得以解决,不算很完美。具体如下:
先按照上一个问题中所述,将 nfs.bat 复制到“启动”目录。
然后执行“rundll32 netplwiz.dll,UsersRunDll”,在弹出的用户账户对话框中,把“要使用本机,用
户必须输入用户名和密码(E)”前面的钩去掉,然后点“确定”。这时,会提示输入账号和密码,
输入好之后保存就行了。下次启动机器就会直接登录,而无需手工输入账号和密码了。
因为自动登录 Windows 之后会自动去执行“启动”目录的 nfs.bat 脚本,也就会挂载 nfs 共享
目录了。
Q:怎样才能在 Windows 下用程序访问文件服务器上的文件?
A:在 Linux 下文件/vmsnfs/subdir/file.wav,可以直接访问,在 Windows 下在路径前面加上 N:
无法访问 N:/vmsnfs/subdir/file.wav,必须要把路径里面的 vmsnfs 去掉,变成 N:/subdir/file.wav
才能访问。这样程序处理起来稍微有点麻烦。
如 果 在 Linux 文 件 服 务 器 的 共 享 目 录 上 创 建 一 个 名 为 vmsnfs 符 号 链 接 , 就 可 以 用
N:/vmsnfs/subdir/file.wav 来访问了,具体做法如下:
cd /vmsnfs
ln -s . vmsnfs
Q:文件服务器重启之后,Windows 上 mount 的 nfs 共享目录还能继续正常访问吗?
A:有待试验。