linux NFS服务器的安装与配置详解

一、NFS服务简介

NFS是Network File System(网络文件系统)。主要功能是通过网络让不同的服务器之间可以共享文件或者目录。NFS客户端一般是应用服务器(比如web,负载均衡等),可以通过挂载的方式将NFS服务器端共享的目录挂载到NFS客户端本地的目录下。
NFS在文件传送过程中依赖与RPC(远程过程调用)协议。NFS本身是没有提供信息传送的协议和功能的,但是能够用过网络进行图片,视频,附件等分享功能。只要用到NFS的地方都需要启动RPC服务,不论是NFS的服务端还是客户端。
NFS和RPC的关系:可以理解为NFS是一个网络文件系统(比喻为租房的房主),而RPC是负责信息的传输(中介),客户端(相当于租房的租客)

二、系统环境:

[root@linuxidc ~]# cat /etc/RedHat-release ##查看系统版本信息
CentOS release 6.7 (Final)
[root@linuxidc ~]# uname -r ##查看内核信息
2.6.32-573.el6.x86_64
[root@linuxidc ~]# uname -m ##查看系统是32位还是64位的
x86_64

三、服务端配置

在启动NFS服务之前,首先要启动RPC服务,否则NFS服务器无法向RPC服务注册。另外,RPC服务如果重启,原来以及有的NFS端口就会丢失,因此,只要RPC服务重启,NFS服务就要重启向RPC重新注册新的随机端口号。

1、要部署NFS服务,需要安装下面的软件包:

1)nfs-utils:NFS服务的主程序
2)rpcbing:NFS可以视为一个RPC的主程序,在启动任何一个RPC程序之前,需要做好端口和功能的对应映射工作
3)查看NFS和rpc的软件包,默认是没有安装的,需要yum安装
[root@linuxidc ~]# rpm -qa nfs-utils rpcbind

2、启动NFS服务,必须要先启动rpc服务,然后再启动NFS服务,如果先启动NFS服务,启动服务时会失败。

第一步:先启动rpc服务
[root@linuxidc ~]# /etc/init.d/rpcbind start #启动rpc服务
[root@linuxidc ~]# /etc/init.d/rpcbind status #查看rpc服务状态
rpcbind (pid 4269) 正在运行…
第二步:启动NFS服务
[root@linuxidc ~]# /etc/init.d/nfs start #启动nfs服务
[root@linuxidc ~]# /etc/init.d/nfs status #查看nfs服务状态
rpc.svcgssd 已停
rpc.mountd (pid 3282) 正在运行…
nfsd (pid 3298 3297 3296 3295 3294 3293 3292 3291) 正在运行…
rpc.rquotad (pid 3277) 正在运行…
第三步:查看NFS服务向rpc注册的端口信息,主端口号是:111
[root@linuxidc ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
第四步:检查开机是否自启动
[root@linuxidc ~]# chkconfig nfs on
[root@linuxidc ~]# chkconfig rpcbind on
[root@linuxidc ~]# chkconfig –list nfs
nfs 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@linuxidc ~]# chkconfig –list rpcbind
rpcbind 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

3、NFS服务端配置文件的配置

NFS默认配置文件路径是:/etc/exports,文件默认是空的。
/etc/exports配置文件的格式是:
NFS共享的目录 NFS客户端地址(参数1,参数2)
[root@linuxidc ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,no_root_squash) ##一条配置搞定NFS配置文件
其中:/data是服务器端共享的目录,172.16.1.0/24共享目录的客户端ip地址,(rw,sync,no_root_squash)rw代表拥有读写的权限,sync代表数据同步写入NFS服务器端的硬盘中。也可以用async,async是大数据时使用,是先写到缓存区,再写到磁盘里。

4、创建/data目录,并且属主和属组都为:nfsnobody,其中nfsnobody是安装nfs服务时默认的用户

[root@linuxidc ~]# mkdir /data -p
[root@linuxidc ~]# chown -R nfsnobody:nfsnobody /data
[root@linuxidc ~]# ls -ld /data
drwxr-xr-x 6 nfsnobody nfsnobody 4096 12月 8 20:17 /data
[root@linuxidc ~]# /etc/init.d/nfs reload
[root@linuxidc ~]# showmount -e 172.16.1.31 ##本地测试,说明服务端测试成功
Export list for 172.16.1.31:
/data 172.16.1.0/24

四、客户端配置

1.客户端和服务端一样,也要安装nfs和rpm的安装包。(配置见服务器端)
2.客户端需要启动rpc服务,加入开机自启动,不需要启动nfs服务。(配置见服务器端)
3.测试:
第一步:ping,能不能ping通服务器端ip地址
第二步:telnet服务端的111端口
第三步:showmount服务端,showmount -e 172.16.1.31
第四步:挂载,文件共享
[root@linuxidc ~]# mount -t nfs 172.16.1.31:/data/ /mnt
第五步:查看是否挂载成功了 df -h
第六步:要想每次启动机器的时候自动挂载,可使用命令 vi /etc/fstab 编辑,在最后面加上 192.168.109.130:/var/ftp /nfs/ftp nfs defaults 0 0

五、防火墙设置

1、NFS用到的服务有 portmapper nfs rquotad nlockmgr mountd,可通过命令 rpcinfo -p 可查看nfs使用的端口,其中 portmapper nfs 服务端口是固定的分别是 111 2049
另外 rquotad nlockmgr mountd 服务端口是随机的。由于端口是随机的,这导致防火墙无法设置。
[root@linuxidc ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 53713 status
100024 1 tcp 47753 status
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 40399 nlockmgr
100021 3 udp 40399 nlockmgr
100021 4 udp 40399 nlockmgr
100021 1 tcp 46247 nlockmgr
100021 3 tcp 46247 nlockmgr
100021 4 tcp 46247 nlockmgr
100005 1 udp 60639 mountd
100005 1 tcp 39962 mountd
100005 2 udp 51575 mountd
100005 2 tcp 42414 mountd
100005 3 udp 38358 mountd
100005 3 tcp 48741 mountd
2、修改nfs配置文件/etc/sysconfig/nfs 使 rquotad nlockmgr mountd 的端口固定。
找到以下几项,将前面的#号去掉。
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
3、重启nfs服务
[root@linuxidc ~]# service nfs restart
4、查看修改后的配置文件是否生效
[root@linuxidc ~]# rpcinfo -p
5、设置防火墙,vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 23 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 111 -j ACCEPT
-A INPUT -p udp -m state –state NEW -m udp –dport 111 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 875 -j ACCEPT
-A INPUT -p udp -m state –state NEW -m udp –dport 875 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 2049 -j ACCEPT
-A INPUT -p udp -m state –state NEW -m udp –dport 2049 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 892 -j ACCEPT
-A INPUT -p udp -m state –state NEW -m udp –dport 892 -j ACCEPT
-A INPUT -p udp -m state –state NEW -m udp –dport 32769 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 32803 -j ACCEPT
7、查看IPTABLES
[root@centos6 ~]# iptables -L

猜你喜欢

转载自blog.csdn.net/borntodieee/article/details/80539731