全部博文(17)
分类: LINUX
2010-02-19 21:01:36
NFS服务配置及使用
实验环境:Red Halt Enetprist Linux 5(服务器)
实验要求:在IP地址为172.19.12.3的主机上发布共享目录/temp,允许所有人可以读取该目录下的文件,其中IP地址为172.19.12.6的主机可以读写该目录
1、检查是否安装nfs-utils和portmap(这个两个服务时启动nfs所必须得程序)
命令:
[root@localhost ~]#rpm –q nfs-utils
[root@localhost ~]#rpm –q portmap
2、启动NFS和portmap程序:
启动portmap的命令如下:
[root@localhost ~]# service portmap start
启动NFS服务的两条等效命令如下:
[root@localhost ~]# /etc/init.d/nfs start
[root@localhost ~]# service nfs start
同样,对于停止NFS的两条等效命令:
[root@localhost ~]# /etc/init.d/nfs stop
[root@localhost ~]# service nfs stop
重启NFS服务的等效命令:
[root@localhost ~]# /etc/init.d/nfs restart
[root@localhost ~]# service nfs restart
3、检查主机和NFS服务器的网络连通性
查看主机的IP地址:
[root@localhost ~]# ifconfig
本主机的IP地址是:172.19.12.5
查看NFS服务器的IP地址:
[root@localhost ~]# ifconfig
该NFS服务器的IP地址是:172.19.12.3
检查主机是否能与服务器连同:
在主机的终端输入下面命令:
[root@localhost ~]# ping 172.19.12.3
ping后面的IP地址是你的NFS服务器的IP地址。
按Ctrl+C结束测试
测试结果显示主机能与NFS服务器连同。
4、在NFS服务器的根目录下面创建共享的目录与文件
创建共享目录:
[root@localhost ~]# mkdir /temp
进入/temp并创建一个目录和文件:
[root@localhost ~]# cd /temp
[root@localhost ~]# mkdir testfile
[root@localhost ~]#touch zijuan0810
5、在NFS服务器上编辑/etc/exports文件
/etc目录中exports文件是一个空文件,我们必须编写它。如果/etc没有这个文件,那你就自己创建这个文件。其中,文件的内容就是我们服务器要共享的目录,格式如下:
<共享的目录> 空格[客服机定义1(参数)]空格 [客服机定义2(参数)]····
注意:这里的空格非常重要,这是格式的要求,如果没有空格,则文件将不能被读取。
本例中的exports文件内容如下:
/temp *(ro) 172.19.12.6(rw)
6、在NFS服务器上重启NFS服务和portmap,并查看我们共享的目录:
[root@localhost ~]# service portmap restart
[root@localhost ~]# service nfs restart
7、在主机上查看NFS服务器的共享目录,并挂载:
[root@localhost ~]# showmount –e 172.19.12.3
[root@localhost ~]# mkdir /nfs
[root@localhost ~]# mount –t nfs 172.19.12.3:/temp /nfs
(注意:IP地址冒号后面的是服务器共享的目录的绝对路径,空格后面的是我们要挂载的绝对路径。这里是我/nfs,是我们刚刚在根目录下面创建的一个目录。)
这里我们用df命令查看了我们挂载的目录。
这里我们的NFS服务器就算成功了,若要卸载/nfs目录:
[root@localhost ~]# umount /nfs
注意1:这里可能有点朋友开了防火墙,在主机向服务器请求显示共享的目录的时候,即使用命令:
root@localhost ~]# showmount –e 172.19.12.3
时,会被拒绝,显示:
问题在防火墙,对应的服务为iptables,对于安全的网络就不用防火墙了,service iptables stop停止就行了,
如果一定要使用iptables的话,应该怎么设置呢?
使用 iptables 限制大范围联机:
假设我们的 NFS 主要是针对内部网络开放而已,而对于外部网络只有对学术网络开放,亦即是 140.0.0.0/8 ,那么您可以使用这样的语法:
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
这样大致上就可以让 192.168.0.0/24 这个 C Class 的网域与 140.0.0.0/8 这个 A Class 的网域到您的主机里面来,而其它的联机就视您的原本的 iptables 的状态而定!
注意2
挂载时,串口可能会提示:
RPC: failed to contact portmap (errno -5).
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
lockd_up: makesock failed, error=-5
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
原因:nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能
简单的解决方法:kill 文件锁!mount -o nolock
[root@localhost ~]# mount –t nfs -o nolock 172.19.12.3:/temp /nfs
运行没有报错,但是
[root@localhost ~]# cd /nfs
/nfs/: bad directory
估计是权限的问题,修改nfs server上配置文件/etc/exports
/temp 172.19.12.3(rw,all_squash,anonuid=500,anongid=500,sync) 10.0.0.162(rw,sync) 10.0.0.6(rw,sync) //将用户权限压缩为hary
或者直接在NFSF服务器上,修改共享目录的权限,将其权限开到最大:
[root@localhost ~]# chmod -R 777 /temp
问题就解决了!
至于第二个要求就很简单了,只要用命令:
[root@localhost ~]# ifconfig eth0 172.19.12.6
将主机的IP该了,后面的步骤就和上面的一样,这里就不重复了。
搞定了!!!!