一.简介

什么是NFS?    NFS是网络文件系统network file system的缩写,他的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。

比较适用于IDC机房,集群。工作中NFS一般被用来存储视频,图片,附件等静态文件,或者理解为用户上传的文件都适合放到NFS共享里。

还有一个类似的服务叫samba,它更像是windows的文件共享,多用于办公场景。


二.不得不说

要成功运行nfs服务,还需要rpcbind的支持(在Centos6之前叫portmap)。本人比较俗,所以俗语解释就是rpcbind就是个租房的中介,要想挂载共享目录(好比租到房子)没它不行。

下面有盗图一张,清楚的说明了rpcbind的作用。

搭建NFS环境_第1张图片


三.实验环境准备

首先准备两台虚拟机,系统为CentOS6.3 x64,一台服务器,一台客户端。都需要安装 nfs-utils 和rpcbind ,关闭selinux和防火墙。


四.开始搭建nfs-server 服务器

安装 nfs-utils和rpcbind服务,安装完后检查一下

启动rpcbind服务,并检查

rpcbind服务运行在tcp/udp的111端口

搭建NFS环境_第2张图片

# rpcinfo p localhost   查看当前的资源池

搭建NFS环境_第3张图片

启动nfs服务,并检查

搭建NFS环境_第4张图片

查看nfs的主端口号2049

搭建NFS环境_第5张图片

# vim /etc/rc.local  编辑/etc/rc.local文件,将rpcbind,nfs-utils加入开机自启动

注意顺序:rpcbind在前,nfs-utils在后

接下来就该编辑nfs的配置文件。路径为 /etc/exports,默认该文件为空

将/data目录做为将要共享的目录,* 表示任意主机都可以访问,并且有读写权限,sync为客户端可以同步写入服务器磁盘,保证文件不会丢失

创建 /data目录,并在创建几个子目录,方便后面实验

reload可以实现平滑加载服务,不影响在线客户

查看本机有哪些共享目录(showmount e 127.0.0.1  也可)

本机挂载本机的共享目录测试,挂载点为 /mnt


五.客户端配置

同样需要安装 nfs-utils 和 rpcbind

确定rpcbind服务正常运行

# vim /etc/rc.local    将rpcbind服务加入开机启动

测试能否与nfs-server通信,并查看有哪些共享目录

将 /data 目录挂载到nfs-test1的本地 /mnt目录下

搭建NFS环境_第6张图片

访问成功

但是通过nfs-test1无法在共享目录的 /mnt 目录中创建任何文件,是因为在nfs-server服务器端的配置权限中,默认都是以65534用户登录的,该文件的路径为 /var/lib/nfs/etab

介个65534就是nfs服务的伪用户了,可以在 /etc/passwd 中查看他叫啥。如下图:为用户名称为 nfsnobody

更改共享目录的属主,将其该为nfsnobody

做了改变,来个平滑加载吧

在回到nfs-test1中测试一下,可以实现之前给/data目录设置的rw权限了,但是创建的目录文件用户的属主属组都为nfsnobody

最后将挂载目录加到开机启动中就好了 /etc/rc.local

ok。测试成功。


六.nfs服务重点总结

/etc/exports       服务主配置文件,nfs具体共享服务的地点,默认为空。

showmount e 192.168.87.135      挂载前检查有权限需要挂载的信息,是否能够挂载

关于开机自启动:

1)/etc/rc.local    缺点:偶尔开机挂不上,工作中除了开机自启动配置,还要对是否挂载上进行监控

2)/etc/fstab    fstab优先于网络被linux系统加载。网络没启动,fstab肯定会导致nfs服务器端无法实现开机挂载