NFS 配置

    NFS:Network Filesystem,最早由Sun公司发展出来的!最大功能是透过网络,让不同的机器和不同的操作系统,可以彼此分享个别的档案,是一个文件服务器!

    NFS 服务端口在2049,NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动, 每启动一个功能就会启用一些端口口来传输数据,因此, NFS 的功能所对应的端口口才没有固定住, 而是随机取用一些未被使用的小于 1024 的埠口来作为传输之用。

    RPC: Remote Procedure Call,RPC 主要功能就是在指定每个NFS功能所对应的port number,并且回报给客户端,让客户端可以连接到正确的端口上去,当服务器在启动NFS时会随机取用数个端口,并且主动向RPC注册,因此RPC可以知道每个端口对应的NFS功能,然后RPC又固定使用Port 111来监听客户端的需求,并且回报客户端正确的端口

    NFS为RPC server的一种,所以客户端和服务器端都需要启动RPC 服务

    NFS 需要启动的Daemon!(rpc.nfsd,rpc.mountd,rpc.lockd,rpc.statd)


实际在客户端取用NFS文件档案时,需要满足一下三点

1  身份认证,UID (/etc/passwd,/etc/group),访问时客户端与服务端 UID相同

2  /etc/exports 中权限设置,(nfs配置文件)

3  文件系统确实有w 权限


NFS服务器端软件安装

RPC主程序:rpcbind

NFS主程序:nfs-utils

查看是否安装: rpm -qa | grep nfs ,rpm -qa | grep rpcbind

如果没有安装,yum install nfs-utils


NFS 的软件结构

主要配置文件:/etc/exports

NFS文件系统维护指令:/usr/sbin/exportfs

分享资源的登陆档:/var/lib/nfs/*tab

客户端查询服务器分享资源的指令:/usr/sbin/showmount


/etc/exports 中权限设置:

rw,ro,sync,async,no_root_squash,root_squash,all_squash,anonuid,anongid


先启动rpcbind ,再启动nfs 

/etc/init.d/rpcbind start

/etc/init.d/nfs start


确认是否启动 tail /var/log/message

查看NFS开启的端口  netstat -tulnp | grep -E ‘(rpc|nfs)'

查看RPC的注册情况  rpcinfo -p [IP|hostname]

showmount -a  hostname|ip  显示目前主机与客户端的NFS联机分享的状态

showmount -e  hostname|ip  显示某部主机的/etc/exports 所分享的目录数据


重新处理/etc/exports 档案,不需要重启NFS

exports [-aruv] 一般使用如下

exports -arv

exports -auv

-a 全部挂载(或者卸除)/etc/exports的档案

-u 卸载某一目录

-r 重新挂载/etc/exports 和 同步更新/etc/exports 与 /etc/lib/nfs/xtab的内容

-v 在export的时候,将分享的目录显示在屏幕上


nfs 除了固定的111 和2049端口外,还有一个固定NFS服务的端口配置文件,/etc/sysconfig/nfs


客户端手动操作;

1  /etc/init.d/rpcbind start

   /etc/init.d/nfslock  start

2  showmount -e serverIP 

3 mkdir -pv  挂载点目录

  mount -t nfs  serverIP:/分享目录  客户端挂载点

4 df 


NFS 特殊的挂载参数

bg,fg  soft,hard  intr rsize,wrize

bg,fg  后台,前台挂载


NFS开机自动挂载

vim /etc/rc.d/rc.local 

mount -t nfs -o 权限设置  serverIP:/分享目录  客户端挂载目录

不能卸载/etc/fstab 中,网络启动是在本机挂载之后!









4 Windows下 NFS 客户端的安装及设置

 

在Windows上使用NFS客户端,需要把nfs共享目录映射到一个驱动器。此处假定为映射的驱动器为N:,而nfs共享目录为192.168.6.55:/vmsnfs。

 

4.1 安装Microsoft Windows Services for UNIX

 

Windows Services for UNIX 3.5 提 供支援充分和整合完全的跨平台�W路服�眨��m��需要 Windows 和 UNIX 基�A�h境之�g交互操作性的企�I客 �簟� Windows Services for UNIX 3.5 �槠�I客�籼峁�Υ嬖诙��平台的�Y�之�o密存取,�y一了跨平台的�W路管理,�K且重�} 使用 UNIX ��用程式和 Windows 上的指令�a。其中包括支援�W路�n案系�y (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

 

安装过程比较简单,此处略过。

 

4.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:下的文件和目录。

 

 

批处理代码  收藏代码

  1. echo mount nfs at %date% %time% >>c:\nfs.log  

  2. net start pcnfsd >>c:\nfs.log  

  3. net use /pers:no >>c:\nfs.log  

  4. mount -o mtype=hard -o pcnfs=localhost -u:root -p:xxx 192.168.6.55:/vmsnfs N: >>c:\nfs.log  

  5. dir N: >>c:\nfs.log   

 

双击执行nfs.bat,然后打开“我的电脑”就可以看到N:了,然后打开c:\nfs.log看一下。

 

Text代码  收藏代码

  1. mount nfs at 2010-11-19 星期五 11:33:39.15   

  2. 命令成功完成。  

  3.   

  4. N: is now successfully connected to 192.168.6.55:/vmsnfs  

  5.   

  6. The command completed successfully.  

  7. mounted    

 

如果看到successully之类的关键字眼,就表明mount成功了。

 

4.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:有待试验。


你可能感兴趣的:(nfs)