1NFSNetwork File System

Linux下实现文件共享有多种方式,NFS就是其中之一。网络文件系统(NFS)协议是由Sun MicroSystem20世纪80年代为了提供对共享文件的远程访问而设计和实现的。该协议采用Client/Server模型通过使用Sun开发的远程过程调用协议(RPC Protocol)来实现运行在一台计算机上的程序来调用在另一台远程机器上运行的子程序.

NFS包含3个版本:NFSv2NFSv3NFSv4

RHEL6是以NFSv4作为默认版本,NFSv4使用TCP协议(端口号是2049)和NFS服务器建立连接,而老版本的NFS可以在TCP协议或者是UDP协议上运行。NFS服务的端口默认是不固定的,但可以强制NFS使用固定端口。

RHEL6NFS的软件包:nfs-utils

NFS的相关文档中,有两个值得重点关注

/etc/exportsNFS服务的主配置文件,该文件的最主要目的是发布共享目录并为共享目录限制权限。和其他服务的主配置文件一样,绝大部分的配置都是通过编辑该文件完成

/var/lib/nfs/xtab:这个文件主要用来记录客户端与NFS服务器的连接记录,如果想查看哪些客户端曾经连接过NFS服务器,查看该文件即可

NFS服务的主配置文件exports发布共享目录的格式如下:

共享目录  [客户端1参数1][客户端参数]

共享目录是指在NFS服务器上需要给客户端共享出来的目录,在设置共享目录的时候要使用绝对路径

注意:在发布共享目录的格式中除了共享目录是必跟参数外,其他参数都是可选的。而且共享目录和客户端1与客户端2之间都需要使用空格符号,但客户端和参数之间不能有空格。

如:在/etc/exports文件添加如配置:

/media    *(ro) 192.168.0.10(rw,no_root_squash)

/NFS/test   192.168.0.0/24(ro)

NFS服务的启动与停止:NFS服务脚本是NFS

chkconfig --list

rpcbindnfs都设为自动启动

chkconfig rpcbind on

chkconfig nfs on

 

启动rpcbind

service rpcbind start

之后才能成功启动nfs

service nfs start

一定要先启动rpcbind,然后再启动nfs,不然NFS quotasNFS daemon都将启动失败。

servicenfs start|stop|restart|reload

exportfs命令:用于维护当前主机中NFS服务器的输出目录列表

exportfs –rv使NFS服务器重新读取exports文件的设置,而不需重启NFS服务器

exportfs –auv 用于停止当前主机中NFS服务器的所有目录输出

exportfs –av 用于输出NFS服务器的所有共享目录

exportfs  –v 显示输出列表同时,显示导出的设定参数

客户端的使用:

客户端可以先使用showmount –e查看NFS服务器发布的共享目录

挂载NFS文件系统

Mount  -t nfs NFS服务器IP地址(或主机名):共享目录  本地挂载点

如:mount –t nfs 192.168.0.1:/media  /mnt

启动挂载NFS

想要系统每次启动时自动挂载NFS服务器上的共享目录,则可以编辑/etc/fstab文件

NFS服务器的IP:共享目录    挂载点    nfs  defaults   0 0

配置NFS固定端口:

默认情况下,NFS配置完毕后,每次重新启动该服务后其相应的端口都会随机变化,如果启用了防火墙,如何开放变化的端口就成问题了,其实解决办法也很简单,只需对NFS进行配置使用固定端口即可

NFS服务启动时,会检查/etc/sysconfig/nfs文件,因此改该文件,修改相应字段便可以强制NFS服务使用固定端口了:

NFS服务器上启用了iptables防火墙且filter表的3个链默认规则为DROP需创建如下规则:

iptables I INPUT i lo j ACCEPT

iptables I INPUT p tcp --dport111 j ACCEPT

iptables I INPUT p udp --dport111 j ACCEPT

iptables I INPUT p tcp --dport2049 j ACCEPT

iptables I INPUT p udp --dport2049 j ACCEPT

iptables I INPUT p tcp mmultiport --dport 875,32803,32769,892,662 j ACCEPT

iptables I INPUT p udp mmultiport --dport 875,32803,32769,892,662 j ACCEPT

service iptables save