NFS服务

NFS服务经常会用到,用于在网络上共享。eg:假如有三台机器A,B,C他们需要访问同一个目录,目录都是图片,传统的做法是把这些图片分别放在A,B,C上。若是使用NFS,只需要把图片放在A上共享给B和c上即可,只要A中图片改变,b,c中的内容会同时改变!

NFS原理:nfs本身的服务并没有提供文件传递协议,但NFS却能让我们进行文件的共享,因为nfs使用rpc协议。所以只要用得到nfs的地方就要启动rpc协议,不论是客户端还是服务端!可以这样理解,NFS是一个文件系统,而rpc负责信息传输。nfs的客户端和服务端才能由rpc协议进行端口的对应。nfs主要主管分享出来的目录,rpc协议主管文件传递!

linux中的NFS服务配置_nfs服务及nfs服务原理!

NFs服务的工作端口并没有完全的确定,这是因为nfs是一个很复杂的组件,它涉及文件传输,身份验证等方面的需求,每个功能都会占用一个端口。为了防止nfs服务占用过多的端口,它采用动态端口方式来工作,每个功能提供服务都会随机取一个小于1024的端口来服务!但是客户端到底选择那一个端口,此时就需要rpc协议,rpc最主要的功能就是记录每一个nfs功能对应的端口号,它工作在固定端口111,当客户端需求nfs服务时,就会访问服务器的111端口,rpc会将nfs工作端口返回给客户端。nfs启动时会自动向rpc服务器注册,告诉它自己各个功能使用的端口!

常规:nfs服务启动的流程:

1:nfs启动时,自定选择端口号小于1024的端口,并向rpc(工作在111端口)汇报,rpc记录在案!

2:客户端需要nfs提供服务时,首先向111端口rpc查询,nfs工作在那个端口

3:rpc回答客户端,它工作的端口号

4:于是,客户端直接访问rpc提供的nfs服务器工作得端口号,请求服务!

5:nfs服务经过授权认证,允许客户端访问自己的数据!

注意:因为nfs需要向rpc注册,所以rpc服务必须先于nfs服务启用。并且rpc服务重新启动以后,要重新nfs服务,让它重新向rpc注册,这样nfs才能正常工作!

nfs守护进程:

必须的3个进程:

1,rpc.nfsd:nfs基本守护进程,管理客户端是否成功能够连接到nfs服务器上!

2,rpc.mountd:它是rpc安装守护进程,主要功能是管理nfs文件系统。当客户端连接到nfs服务器后,它会读取/etc/exports文件,检验客户端权限!

3,portmap:主要功能进行端口映射工作。记录nfs服务对应的端口信息,并提供给客户端,使客户端正确请求服务!

nfs服务器可能启动的进程:

4,rpc.lockd:当多个用户对共享目录的同一个文件进行写入时,使用该进程锁定,来保证文件数据的一致性!

5,rpc.statd:用来维护nfs服务器上的共享目录中文件的一致性,和rpc.lockd进程有关!

在centos上使用NFs服务,需要安装两个包(nfs-utils和rpcbind),使用yum安装nfs-utils时会把rpcbind一起装上!

修改nfs配置使其共享:

#vim /etc/exports                           //修改nfs的配置文件 
/wang/ 192.168.1.114(ro,sync)              //使其共享/wang目录到192.168.1.114的子机上

linux中的NFS服务配置_nfs服务及nfs服务原理!_02

在主机上启动nfs服务
[root@lianxi ~]# /etc/init.d/rpcbind start  //启动 主机上的rpcbind,rpcbind是用来通信的 
正在启动 rpcbind:                                         [确定]
[root@lianxi ~]# /etc/init.d/nfs start                  //启动主机上的nfs服务 
启动 NFS 服务:                                            [确定]
启动 NFS mountd:                                          [确定]
启动 NFS 守护进程:                                        [确定]
正在启动 RPC idmapd:                                      [确定]
[root@lianxi ~]#
在自己上显示主机所共享的目录
[root@slave ~]# showmount -e 192.168.1.108             //在子机上显示共享的内容 
Export list for 192.168.1.108:
/wang 192.168.1.114
注意关闭防火墙,主机和客户端都要关闭
[root@slave ~]# showmount -e 192.168.1.108             //自己上上出现这样的错误,可能是防火墙未关闭,关闭防火墙! 
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route t o host)
 查看共享的目录:
 [root@slave ~]# mount -t nfs 192.168.1.108:/wang/ /opt/    //挂载共享的目录 
[root@slave ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              14G  2.8G   11G  21% /
tmpfs                 504M     0  504M   0% /dev/shm
/dev/sda1              97M   25M   68M  27% /boot
192.168.1.108:/wang/   18G  2.6G   15G  16% /opt
[root@slave ~]# cd /opt     、//进入共享的目录 
[root@slave opt]# ls      //查看共享的内容 
111
在使用mount命令来挂载nfs服务时,用-t nfs来指定要挂在的类型为nfs,另外一个常用的选项就是-o nolock,即在挂载nfs服务时,不加锁!

介绍nfs共享的一个命令:

exportfs命令可以很好的帮助管理员维护nfs共享目录列表!/exportfs命令是在服务端执行!
exportfs的命令格式为 exportfs 【option】
  -a:导出所有在/etc/exports中的目录
  -o:指定导出参数,格式与/etc/exports文件相同
  -i:忽略exportfs文件,使用默认或者命令行设定选项
  -r:重新输出所有目录。删除/var/lib/nfs/xtab的内容,并使用/etc/exports文件,同步/var/lib/nfs/xtab文件
  -u:不导出指定目录。与-a共用则不导出所有目录
  -f:指定新的导出文件,而不是用/etc/exports
  -v:显示输出列表的同时,显示导出设定的参数

查看nfs服务器上所有的共享目录以及那些客户端可以使用这些共享目录

:showmount -e IP地址

查看nfs服务器上有哪些共享目录被客户端挂载了

showmount -d IP地址

实例2:在nfs服务器上发布一系列共享目录。这些目录分别给不同的客户群使用,具体要求如下:

1):/media目录

共享/media目录,允许所有的客户端访问该目录,但只具有读权限!

2):/NFS/public目录

共享/NFS/public目录,允许192.168.1.0/24和192.168.2.0/24网段的客户端访问,并且对该目录具有读权限。

3):/nfs/team目录

共享此目录,并且此目录只有来自.team.apple域的成员可以访问并且具有读写权限!

4):/nfs/works目录

共享/nfs/works目录。192.168.1.0/24网段的客户端具有只读权限,并且将root权限用户映射成为匿名用户。

5):/nfs/test 目录

共享此目录,所有人都具有读写权限,但当用户使用该共享目录时候将账号映射成匿名用户。并且制定匿名用户的uid和gid均为65534

6):/nfs/security目录

共享此目录,仅允许192.168.1.112的客户端访问。并且具有读权限!

打开exports配置文件加入以下内容:

/media *(ro)
/NFS/public 192.168.1.0/24(ro) 192.168.2.0/24(ro)
/nfs/team *.team.apple(rw)
/nfs/works  192.168.1.0/24(ro,root_squash)
/nfs/test *(rw, all_aquash,anonuid=65534,anongid=65534)
/nfs/security 192.168.1.112 (rw)