一.简介
什么是NFS? NFS是网络文件系统network file system的缩写,他的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。
比较适用于IDC机房,集群。工作中NFS一般被用来存储视频,图片,附件等静态文件,或者理解为用户上传的文件都适合放到NFS共享里。
还有一个类似的服务叫samba,它更像是windows的文件共享,多用于办公场景。
二.不得不说
要成功运行nfs服务,还需要rpcbind的支持(在Centos6之前叫portmap)。本人比较俗,所以俗语解释就是rpcbind就是个租房的中介,要想挂载共享目录(好比租到房子)没它不行。
下面有盗图一张,清楚的说明了rpcbind的作用。
三.实验环境准备
首先准备两台虚拟机,系统为CentOS6.3 x64,一台服务器,一台客户端。都需要安装 nfs-utils 和rpcbind ,关闭selinux和防火墙。
四.开始搭建nfs-server 服务器
安装 nfs-utils和rpcbind服务,安装完后检查一下
启动rpcbind服务,并检查
rpcbind服务运行在tcp/udp的111端口
# rpcinfo p localhost 查看当前的资源池
启动nfs服务,并检查
查看nfs的主端口号2049
# 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-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服务器端无法实现开机挂载
本文转自 mlwzby 51CTO博客,原文链接:http://blog.51cto.com/aby028/1871156