假定需要被映射的源目录所在的机器为PC1:192.168.1.102
需要映射的机器为PC2:192.168.1.105
PC1需要:
1.启动NFS服务(/etc/init.d/nfs start )
2.在/etc/exports文件内添加映射权限(被映射的目录和可以允许的地址):
/home/dir 192.168.1.0/255.255.255.0(rw,insecure,sync,insecure_locks,no_root_squash)
PC2需要:
1.mkdir /home/dir_remote
2.mount 192.168.1.102:/home/dir /home/dir_remote
这样在PC2上打开/home/dir_remote实际就是访问PC1的/home/dir目录了。
注意:
1.PC1的相应端口需要释放,确保没有防火墙阻拦
2.有问题时可以用rpcinfo -p server 检查各端口情况,确保nfs服务启动
3.磁盘根目录不能做映射
在开启防火墙的情况下多半会出现如下的错误,一定是因为防火墙没开启某些端口所致。
mount clntudp_create: RPC: Port mapper failure - RPC: Unable to receive
常用端口及解决方法:
1. portmap 端口 111 udp/tcp;
2. nfsd 端口 2049 udp/tcp;
3. mountd 端口 "xxx" udp/tcp
系统 RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768--65535)来进行通讯,我们可以通过编辑/etc/services 文件为 mountd指定一个固定端口:
# vi /etc/services
在末尾添加
mountd 1011/udp
mountd 1011/tcp
保存该文件
# stopsrc -s rpc.mountd
# startsrc -s rpc.mountd
# exportfs -a
# rpcinfo -p Hostname
现在我们会发现 mountd已经和端口 1011绑定了。
另外,nfs中需要通讯的服务还有 rpc.lockd和 rpc.statd,其中对lockd我们可以用类似的方法来指定固定端口,
# vi /etc/services
添加
lockd 35000/ucp
lockd 35000/tdp
# stopsrc -s rpc.lockd
# startsrc -s rpc.lockd
# exportfs -a
nfs客户端mount文件系统
# rpcinfo -p Hostname
但 rpc.statd无法通过该方法来指定端口,它只能使用随机端口,如有必要,在防火墙上要根据下面命令的显示来开放随机端口:
# no -a |grep ephemeral
tcp_ephemeral_high = 65535
tcpp_ephemeral_low = 32768
udp_ephemeral_high = 65535
udp_ephemeral_low = 32768
当 然也可以不开放 rpc.statd需要的随机端口,带来的影响就是如果 nfs连接中断(比如server或client宕掉了),系统将无法通过statd来恢复连接中断前的状态,而必须重新 mount该nfs文件系统。