本文链接:http://codingstandards.javaeye.com/blog/816376 ? (转载请注明出处)
?
本文内容包括:
1?NFS概述
2?Linux下NFS服务端的设置
3?Linux下NFS客户端的设置
4?Windows下NFS客户端的安装及设置
?
?
?
下面以实例来讲述如何在Linux下配置NFS服务器,假定我们需要共享的目录是/vmsnfs。
?
如果这个目录还不存在,那么就先创建它;否则,跳过此步。
mkdir?/vmsnfs
?
将该目录中所有文件和子目录的属主和组更改为nfsnobody。
chown?-R?nfsnobody?/vmsnfs
chgrp?-R?nfsnobody?/vmsnfs
注:如果以后直接在服务器上的共享目录创建文件或目录,要记得将属主和组设置为nfsnobody。否则客户端在访问时会出现“Permission?denied”。
?
在/etc/exports文件中添加所需要共享的目录及参数,比如
/vmsnfs?*(rw,async)
这里的意思是说,需要共享/vmsnfs这个目录,对所有客户端(*)都是可读写的(rw),并且是异步方式来访问。 因为不设置其他参数, 客户端创建文件或目录时默认的属主和组就是nfsnobody,即使客户端使用的账号是root。这也就是上面为什么要更改文件或目录的属主和组为nfsnobody的原因。
?
让共享目录生效
(重新)启动nfs服务
service?portmap?start
service?nfs?restart
或者
exportfs?-a
?
检查防火墙设置
如果开启了防火墙,那么就要检查一下与nfs有关的端口是否允许访问。
目前我尝试了一些方法,都没法在开启防火墙的情况下正常使用nfs,所以干脆把防火墙关掉了。
chkconfig?iptables?off
service?iptables?stop
有这方面经验的大虾请帮忙补充一下解决办法。
?
如果要永久的共享此目录,最好将相关的服务设置为开机自动启动。
chkconfig portmap on
chkconfig nfs on
?
至此,在Linux下配置NFS服务端的任务就完成了。
?
?
Q:能限定共享目录客户端的网段和读写权限吗?
A:可以。比如:可以设置有些网段或机器是只读的,有些是可读写的。如下所示:
/vmsnfs ?192.168.0.0/24(rw,async)?192.168.1.0/255.255.255.0(ro,sync)
/vmsnfs ??192.168.0.0/24(rw)????*(ro)
/vmsnfs??192.168.6.179(rw)?192.168.6.17(ro)
如果想了解更多NFS配置参数,请参考NFS相关资料【1】。
?
Q:怎么确认nfs共享服务已经在运行了?
A:使用chkconfig命令查看portmap和nfs服务是否都已经启动,如下所示:
[root@new55?~]#? chkconfig?--list?portmap
portmap?????????0:关闭??1:关闭??2:启用??3:启用??4:启用??5:启用??6:关闭
[root@new55?~]#? chkconfig?--list?nfs
nfs?????????????0:关闭??1:关闭??2:启用??3:启用??4:启用??5:启用??6:关闭
[root@new55?~]#?
?
Q:怎么确认某个目录已经被分享?
A:使用exportfs可以看到共享目录列表,exportfs?-v可以看到更详细的信息。
[root@new55?~]#? exportfs
/vmsnfs?????????<world>
[root@new55?~]#? exportfs?-v
/vmsnfs?????????<world>(rw,async,wdelay,root_squash,no_subtree_check,anonuid=65534,anongid=65534)
[root@new55?~]#? showmount?-e
Export?list?for?new55:
/vmsnfs?*
[root@new55?~]#?
?
Q:修改了/etc/exports如何使之生效?
A:有多种方式,如下之一:
exportfs -a
exportfs -r
service nfs restart
?
Q:如何显示哪些端口用来提供rpc服务?
A:rpcinfo?-p 或者 rpcinfo?-p?localhost
在 NFS服务没有启动时
[root@new55?~]#?rpcinfo?-p
????100000????2???tcp????111??portmapper
????100000????2???udp????111??portmapper
????100024????1???udp????984??status
????100024????1???tcp????987??status
启动 NFS服务之后
[root@new55?~]#?rpcinfo?-p
???程序?版本?协议???端口
????100000????2???tcp????111??portmapper
????100000????2???udp????111??portmapper
????100024????1???udp????984??status
????100024????1???tcp????987??status
????100011????1???udp???1006??rquotad
????100011????2???udp???1006??rquotad
????100011????1???tcp???1009??rquotad
????100011????2???tcp???1009??rquotad
????100003????2???udp???2049??nfs
????100003????3???udp???2049??nfs
????100003????4???udp???2049??nfs
????100021????1???udp??34440??nlockmgr
????100021????3???udp??34440??nlockmgr
????100021????4???udp??34440??nlockmgr
????100003????2???tcp???2049??nfs
????100003????3???tcp???2049??nfs
????100003????4???tcp???2049??nfs
????100021????1???tcp??37635??nlockmgr
????100021????3???tcp??37635??nlockmgr
????100021????4???tcp??37635??nlockmgr
????100005????1???udp????609??mountd
????100005????1???tcp????612??mountd
????100005????2???udp????609??mountd
????100005????2???tcp????612??mountd
????100005????3???udp????609??mountd
????100005????3???tcp????612??mountd
?
Q:怎么看哪些客户端正在用共享目录?
A: 使用showmount?-a查看被客户端挂载过的详细信息,showmount?-d查看被客户端挂载过的共享目录。在showmount手册页中可以 看到showmount?-a看到的信息是不可靠的,像下面列出192.168.6.113就只是曾经访问nfs服务器的机器,而此时并未启动。
[root@new55?~]#?showmount?-a
All?mount?points?on?new55:
192.168.6.113:/vmsnfs
192.168.6.179:/vmsnfs
192.168.6.17:/vmsnfs
[root@new55?~]#?showmount?-d
Directories?on?new55:
/vmsnfs
[root@new55?~]#?
?
Q:怎么从别的机器看nfs服务端共享了哪些目录?
A:使用showmount -e <ip_or_host>就可以看到nfs服务器上共享的目录情况。
[root@sunrise17?~]#?showmount?-e?192.168.6.55
Export?list?for?192.168.6.55:
/vmsnfs?*
[root@sunrise17?~]#?
?
Q:在Linux配置了防火墙的情况怎么启用NFS服务?
A:有待研究,欢迎高手指点。我使用的RHEL5.5上默认的防火墙设置如下:
[root@new55?~]#?iptables-save
#?Generated?by?iptables-save?v1.3.5?on?Thu?Nov?18?09:44:44?2010
*filter
:INPUT?ACCEPT?[0:0]
:FORWARD?ACCEPT?[0:0]
:OUTPUT?ACCEPT?[900:105354]
:RH-Firewall-1-INPUT?-?[0:0]
-A?INPUT?-j?RH-Firewall-1-INPUT?
-A?FORWARD?-j?RH-Firewall-1-INPUT?
-A?RH-Firewall-1-INPUT?-i?lo?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-p?icmp?-m?icmp?--icmp-type?any?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-p?esp?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-p?ah?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-d?224.0.0.251?-p?udp?-m?udp?--dport?5353?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-p?udp?-m?udp?--dport?631?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-p?tcp?-m?tcp?--dport?631?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-m?state?--state?RELATED,ESTABLISHED?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-p?tcp?-m?state?--state?NEW?-m?tcp?--dport?22?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-p?tcp?-m?state?--state?NEW?-m?tcp?--dport?80?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-p?tcp?-m?state?--state?NEW?-m?tcp?--dport?443?-j?ACCEPT?
-A?RH-Firewall-1-INPUT?-j?REJECT?--reject-with?icmp-host-prohibited?
COMMIT
#?Completed?on?Thu?Nov?18?09:44:44?2010
[root@new55?~]#?
?
?
点击下面的链接查看本文其他部分内容:
1?NFS概述
2?Linux下NFS服务端的设置
3?Linux下NFS客户端的设置
4?Windows下NFS客户端的安装及设置
?
待续。