« 上一篇下一篇 »

Centos下如何搭建网络文件系统NFS服务器

    NFS是Network File System的简写,即网络文件系统. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。NFS服务是C/S架构的服务。

     NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
RPC(NFS服务需要依赖RPC服务,这个比较重要) 要想了解NFS,必然要提到RPC这个服务。 因为NFS支持的功能还是比较多的,并且不同的功能都会使用不同的程序来启动。每启动一个功能就会启用一些端口来传输数据,因此NFS的功能所对应的端口才没有固定,而是采用随机取用一些未被使用的小于1024的端口来作为传输之用。但如此一来又造成客户端要连接服务器时的困扰,因为客户端要知道服务器端的相关端口才能够联机,此时我们需要远程过程调用(RPC)的服务。 RPC最主要的功能就是指定每个NFS功能所对应的端口号,并且回报给客户端,让客户端可以连接到正确的端口上。当服务器在启动NFS时会随机选用数个端口,并主动地向RPC注册。因此RPC可以知道每个端口对应的NFS功能。然后RPC固定使用端口111来监听客户端的请求并回报客户端正确的端口,所以可以让NFS的启动更为容易。 注意,启动NFS之前,要先启动RPC服务;否则NFS无法向RPC注册。另外,重新启动RPC时原本注册的数据会不见,因此RPC重新启动后它管理的所有程序都需要重新启动以重新向RPC注册,比如NFS服务。

一、安装NFS服务

一台NFS服务器就如同一台文件服务器,只要将其文件系统共享出来,NFS客户端就可以将它挂载到本地系统中,从而可以像使用本地文件系统中的文件一样使用那些远程文件系统中的文件。

虽然NFS可以在网络中进行文件共享,但是NFS协议本身并没有提供数据传输的功能,它必须借助于远程过程调用(RPC)协议来实现数据的传输。RPC定义了一种进程间通过网络进行交互通信的机制,它允许客户端进程通过网络向远程服务器上的服务进程请求服务,而不需要了解底层通信协议的细节。

使用NFS服务,至少需要启动以下3个系统守护进程:

(1)rpc.nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登入服务器。

(2)rpc.mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利地通过rpc.nfsd登录NFS服务器后,在使用NFS服务器所提供的文件前,还必须通过文件使用权限的验证,rpc.mountd会读取NFS的配置文件/etc/exports来对比客户端的权限。

(3)portmap:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口号提供给客户端,从而使客户端可以通过该端口向服务器请求服务

1、安装 portmap(系统默认已安装,如果没有可以通过yum install postmap* -y安装,新版本为rpcbind)

2、安装 nfs-utils(系统默认已安装,如果没有可以通过yum install nfs-utils -y 安装)

二、启动服务

1、service portmap restart  (6.0以后,service rpcbind restart)

2、service nfslock restart

3、service nfs restart

三、分配固定端口

1、修改nfs文件

由于portmap(rpcbind)是随机来分配端口号的,这对于开启防火墙的服务器来说很难管理,所以我们需要给nfs的各个服务设置一些固定的端口号,这里我们需要修改/etc/sysconfig/nfs这个文件,这里修改几个主要的端口即可

     LOCKD_TCPPORT=4000
     LOCKD_UDPPORT=4000
     MOUNTD_PORT=4001
     STATD_PORT=4002

2、添加iptables条目

    iptables -I INPUT 1 -p tcp --dport 4000 -j ACCEPT
    iptables -I INPUT 1 -p tcp --dport 4001 -j ACCEPT
    iptables -I INPUT 1 -p tcp --dport 4002 -j ACCEPT
    iptables -I INPUT 1 -p udp --dport 4000 -j ACCEPT
    iptables -I INPUT 1 -p udp --dport 4001 -j ACCEPT
    iptables -I INPUT 1 -p udp --dport 4002 -j ACCEPT
    iptables -I INPUT 1 -p tcp --dport 111 -j ACCEPT     #rpc服务的端口
    iptables -I INPUT 1 -p udp --dport 111 -j ACCEPT     #rpc服务的端口
    iptables -I INPUT 1 -p tcp --dport 2049 -j ACCEPT    #NFS服务自身的端口

    service iptables save

四、配置NFS

 nfs的主要配置文件是/etc/exports

  /share    x.x.x.0/24(rw,sync)  

注:/24,nfs认为它是一个网段

共享目录    可以访问的主机范围(读写,同步)

注:具体exports文件其他配置通过百度。

五、客户端连接

建议先把上述服务重启一下

1、首先查看主机共享的目录

     showmount -e x.x.x.x

2、将共享目录挂载到本地

     mount   x.x.x.x:/share   /mnt

这样就可以访问共享目录了

注:如果挂载目录出错

 

则需要安装nfs-common包