一、NFS服务
网络文件系统(Network File System,NFS),由SUN公司开发,目前被广泛应用于UNIX和Linux操作系统中。NFS在异构系统和设备之间提供文件和资源共享服务,类似于Windows的磁盘映射,将NFS服务器中的共享目录挂载到本地后,就像访问本地文件一样访问和操作远程文件,从而方便了多台计算机之间的文件共享和协作。
如下图所示,NFS服务器通过网络共享目录/mnt/public,NFS客户端将服务器共享目录挂载到本地目录/mnt/nfsdata上,对客户端来说,访问网络共享目录就如同访问本地目录一样。
借助NFS服务,协同工作的NFS客户端可以将数据存储在NFS服务器上,比如多个WEB服务器集群可以利用NFS服务器共享数据,既可以实现数据的共享,还可以保证数据一致。
二、NFS工作原理
2.1 NFS和RPC的关系
NFS服务器工作时需要通过远程过程调用(Remote Procedure Call 简称RPC)服务来实现,RPC服务本身使用的是TCP和UDP的111端口。
NFS协议功能复杂,涉及到文件传输、身份验证、权限验证等多个方面,每个功能都需要占用一个端口,然而NFS大都的功能都没有固定的端口,而是由NFS服务器随机选择的。当NFS启动后,会向RPC去注册登记这些端口,RPC服务记录每个NFS功能对应的端口,并开启自身的111端口,等待客户端的请求。
当客户端请求NFS服务时,请求会转发给服务器上RPC的111端口,RPC服务会将记录的NFS的端口返回给客户端,客户端获取到NFS服务器的端口信息后,就可以与NFS服务器建立连接传输数据了。
如下图所示,说明了NFS和RPC合作为客户端提供NFS服务的过程。
(1)服务器启动NFS服务后,向RPC服务注册工作端口,RPC负责登记,并在111端口侦听请求;
(2)NFS客户端请求NFS服务时,内核调用RCP Client,并向服务器请求NFS的端口信息;
(3)服务器查询NFS端口信息,并返回给客户端;
(4)客户端内核调用NFS模块;
(5)NFS客户端根据获取到的端口信息与服务器端NFS服务建立连接;
(6)NFS处理连接请求、权限认证,建立连接。
2.2 NFS服务的主要进程
1、rpc.nfsd
nfs的主要进程,用于响应客户端的连接请求,决定客户端是否具备登录主机的权限。
2、rpc.mountd
NFS服务端会维护一张可被NFS客户端访问的文件系统表。表中的每个文件都有单独的访问控制列表(acl),rpc.mountd使用这些acl来决定NFS客户端是否允许访问对应的文件。
3、rpcbind
rpcbind进程主要是进行端口映射工作,当客户端尝试连接并使用RPC管理的服务时,rpcbind会将该服务对应的端口提供给客户端,从而使客户端可以通过该端口向服务器请求服务。
rpcbind进程应该在所有RPC管理的服务启动之前启动,如果rpcbind重启了,所有RPC管理的服务都必须重启。
4、rpc.locked
本进行处理服务器上共享文件的锁定问题,以保持数据的一致性。
5、rpc.statd
文件锁并不是持久的,当主机重启时锁的状态会丢失。该守护进程用于监听其他主机的重启消息,并管理本地主机重启时需要通知的主机列表,配合rpc.locked进程,确定文件的一致性。
三、NFS服务器配置(以CentOS 7为例)
3.1 安装NFS服务
几乎所有的Linux发行版都默认安装了NFS,运行NFS服务,至少需要两个套件,一是rpcbind,二是nfs-utils。
安装之前,可以先检查是否安装了这两个套件。
如果没有安装,可以使用yum命令安装这两个套件。
3.2 启动NFS服务
使用rpcinfo -p 命令检查nfs是否运行,如果没有看到nfs和mountd,表示nfs没有启动。
使用systemctl命令管理nfs服务,并在启动nfs服务之前,确保rpcbind服务已启动。
3.3 配置NFS服务
NFS服务的配置文件是/etc/exports,但是这个文件并没有随nfs服务安装而创建,需要管理员手工创建它。
1、exports文件的格式
/etc/exports文件的格式如下,例如 “/mnt/share 192.168.1.0/24(rw) *(ro,all_squash)”。
2、文件格式说明
(1)共享目录
NFS服务器需共享目录的实际路径,使用绝对路径。如“/mnt/share”。
(2)客户端
指可以访问NFS服务器共享目录的计算机。可以是IP地址、网段、域名等形式,还可以使用通配符。例如:
(3)权限
访问权限参数用于控制共享目录的访问权限,有rw和ro两种,rw表示共享目录可读写,ro表示共享目录只读。
(4)用户映射
客户端访问NFS服务器上的共享目录时,不需要提供用户账号和密码。默认情况下,客户端若以root用户访问NFS服务器时,NFS服务器会将其映射成一个本地的匿名用户nfsnobody,并将其所属的组也映射成匿名用户组nfsnobody,从而提高系统的安全性。客户端若以普通用户访问NFS服务器,则映射成服务器上UID相同的用户和GID相同的组,若不存在,则映射成匿名用户和组。具体映射参数如下表所示:
(5)其他
其他参数可以用于对共享目录更全面的控制。
四、NFS客户端访问NFS共享
4.1 showmount命令查看共享
NFS客户端安装nfs-utils软件包后,可以使用showmount命令查看NFS服务器上的共享目录。
showmount的使用语法如下:
4.2 mount命令挂载共享
可以使用mount命令将NFS共享挂载到本地目录,格式如下:
例如:下面命令可以将服务器192.168.200.100上的共享目录/mnt/share挂载到本地目录/mnt/nfs
4.3 修改/etc/fstab实现开机自动挂载
若需系统启动自动挂载到NFS服务器上的共享目录,可以修改/etc/fstab,在文件最后一行添加如下格式代码:
五、企业NFS服务器配置案例
5.1 案例描述
某公司因门户网站并发量增加,采用Web集群技术提供Web访问,为保证Web数据共享且保持一致,将网站数据使用NFS服务器存储,经研讨,决定按如下需求搭建NFS服务器。
1、共享/public目录,允许所有客户端访问该目录并只有读取权限。
2、共享/website/code目录,允许192.168.100.0/24和192.168.200.0/24网段的客户端访问,并且对此目录只有读取权限。
3、共享/website/images目录和/website/videos目录,所有人都具有读写权限,但是当用户使用该共享目录时,都将账号映射成用户webuser(UID=9999)和组webgroup(GID=9999)。
4、共享/website/security目录,仅允许192.168.200.138客户端访问并具有读写权限。
5.2 实验环境
5.3 配置NFS服务器
1、安装NFS服务
2、启动NFS服务,并设置开机自启动
3、查看NFS端口注册信息
4、添加用户、创建共享目录并设置权限
5、编辑配置文件
6、重新启动rpcbind和NFS服务
5.4 配置NFS客户端
1、安装NFS服务
2、查询服务器共享目录
3、挂载目录
4、测试权限
在客户端添加一个UID=9999的用户,可以对security目录读写。
到此这篇nfs文件服务器搭建(服务器nfs设置)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-wfwjg/47078.html