RH254小结(五)win7挂载NFS

2015年8月18日 发表评论 阅读评论

RH254小结(四)NFS服务器的搭建 中介绍了linux下NFS服务器的搭建及Linux客户端的挂载。在实际应用,有可能遇到windows和linux之间互相挂载访问文件的情况,除了samba服务之外,也可以通过NFS实现。目前主流的windows OS 如 win7、win2008都默认已带有NFS客户端,只需要系统中开启即可。本篇就记录下windows客户端访问 linux NFS服务端。

一、防火墙与端口(centos6.x与centos7.x的区别)

在进入正题之前,先完善下上一篇中有关端口和防火墙配置部分。在centos中有一个配置文件/etc/sysconfig/nfs用于配置nfs中的一些参数项,其中用修改最多的是几个服务运行的端口。在centos6和centos5中lockd、rquotad、statd、mountd几个服务都运行在非固定端口,需要单独进行指定,常用的方法如下:

# vim /etc/sysconfig/nfs
增加如下几行
RQUOTAD_PORT=10001
LOCKD_TCPPORT=10002
LOCKD_UDPPORT=10002
MOUNTD_PORT=10003
STATD_PORT=10004

重启服务后,相应的在iptables 防火墙的配置如下:

iptables -A INPUT -p tcp --dport 111 -j ACCEPT    //rpcbind端口,tcp和udp都用
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 2049 -j ACCEPT   //nfs服务端口,tcp和udp都用
iptables -A INPUT -p udp --dport 2049 -j ACCEPT
iptables -A INPUT -p tcp --dport 10001:10004 -j ACCEPT  //上面设置的几个服务的端口
iptables -A INPUT -p udp --dport 10001:10004 -j ACCEPT

在新的发行版本中lockd服务端口不固定位,其他几个服务端口系统都已增加为预设为固件端口。具何查看/etc/sysconfig/nfs和/etc/services 文件,如下:

在centos7中查看/etc/sysconfig/nfs配置文件,可以找到如下部分

# Note: For new values to take effect the nfs-config service
# has to be restarted with the following command:
#    systemctl restart nfs-config
#
# Optional arguments passed to in-kernel lockd
#LOCKDARG=
# TCP port rpc.lockd should listen on.
#LOCKD_TCPPORT=32803
# UDP port rpc.lockd should listen on.
#LOCKD_UDPPORT=32769

具体可以对比下centos6 版本中该文件的变化。同时,在/etc/services 中可以找到如下部分:

# cat /etc/services
sunrpc          111/tcp         portmapper rpcbind      # RPC 4.0 portmapper TCP
sunrpc          111/udp         portmapper rpcbind      # RPC 4.0 portmapper UDP
idmaps          1884/tcp                # Internet Distance Map Svc
idmaps          1884/udp                # Internet Distance Map Svc
nfs             2049/tcp        nfsd shilp      # Network File System
nfs             2049/udp        nfsd shilp      # Network File System
nfs             2049/sctp       nfsd shilp      # Network File System
mountd          20048/tcp               # NFS mount protocol
mountd          20048/udp               # NFS mount protocol

与centos6相比,这里将mountd服务的端口配置为了固定端口。所以在centos7下防火墙相应的配置如下:

firewall-cmd  --permanent --add-service=mountd
firewall-cmd  --permanent --add-service=nfs
firewall-cmd  --permanent --add-service=rpc-bind
或
firewall-cmd --permanent --add-service=nfs --add-service=rpc-bind  --add-service=mountd
firewall-cmd  --reload
firewall-cmd --permanent --remove-service=nfs --remove-service=rpc-bind  --remove-service=mountd  //删除相应的端口

不过在centos7上也可以在/etc/sysconfig/nfs 文件中配置和/etc/services中预设值不相同的端口,例如最上面提到的连续端口10001-10004,相应的在防火墙中,可以如下配置:

firewall-cmd --add-port=10001-10004/udp
firewall-cmd --add-port=10001-10004/tcp

注:由于lockd 服务为非必须服务,我在这里并未在防火墙中例中。如有需要,也可以将其在/etc/sysconfig/nfs设置为固定端口后,在firewalld 中例外。

二、win7下挂载NFS共享

1、win7开启nfs挂载

这里以win7为例,打开控制面板---找到程序和功能---在windows功能中勾选NFS客户端和管理工具即可。勾选后需重启生效。

win7-nfs

LINXU服务端需要注意的是,在firewalld中必须将 rpcbind、nfs、mountd三个服务都配置例外,只例外前两个时win7挂载时会报错如下(在linux客户端挂载中,经测试只将前两个服务例外即可。不过规范起见,还是建议将三个服务都例外):

#未在firewalld中例外mountd服务时
C:\Users\Administrator>showmount -e 192.168.1.200
RPC: 远程系统错误RPC: 端口映射器故障 - RPC: 已超时。
#在firewalld中例外mountd服务后
C:\Users\Administrator>showmount -e 192.168.1.200
导出列表在 192.168.1.200:
/nfs                               192.168.1.0/24

2、win7下挂载方法

挂载方法有如下两种:

mount 192.168.1.200:/nfs x:
mount \\192.168.1.200\nfs x:

挂载完成后就可以像操作本地盘一样操作远程共享目录了。

3、写权限问题

如果在LINUX服务端中未对共享的目录/nfs 设置为777权限或设置属主为nfsnobody:nfsnobody 时,win7挂载后默认是没有写的权限的(虽然在服务端设置的是rw权限)。mount查看后,发现默认挂载的uid和gid是-2 ,如下:

win7-mount

解决方法:让Win7在挂载NFS的时候将UID和GID改成0,打开注册表:HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\ClientForNFS\CurrentVersion\Default,增加两项:AnonymousUid,AnonymousGid ,并将其值设置为0 。如下图:

win7 NFS挂载注册表配置

修改完注册表,重新启动计算机,重新mount(再使用mount查看会发现uid和gid变成了0),就能在win7下对nfs文件系统进行读写操作了。

三、windows提供NFS服务

在win2008 的服务里集成有NFS服务,所以NFS目前已经不再是Linux的专利。而在桌面版中没有该服务,不过在winxp时代,微软发布过一个sfu 软件包,可以让xp提供NFS服务,由于该包很古老的一个产物,未在win7在验证其适用性。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.