一、介绍
1.1什么是NFS?
NFS(Network File System)网络文件系统,**是通过网络来进行服务端与客户端之间的数据传输,仅Linux/Unix系统之间共享文件的一种协议**。NFS服务一般用来存储静态数据,例如:脚本、视频、图片等这些不会有太大变化的文件。
特性:
- NFS的客户端为Linux;
- 支持多节点同时挂载,以及并发写入;
1.2客户端与服务端之间的NFS如何进行数据传输?
RPC服务:Remove Procedure call 远程过程调用服务/协议
- 首先服务端会先启动RPC服务,并开放111端口,等待客户端的RPC服务进行连接;
- 其次服务端的NFS再启动,然后向RPC服务注册与客户端NFS连接使用的端口(大于1024),RPC服务会记录这些端口信息;
- 当客户端需要读取服务端NFS的共享目录时,客户端的RPC会连接服务端RPC服务开放的111端口,并向服务端RPC服务发送请求;
- 服务端的RPC会将记录的服务端NFS端口信息反回给客户端的RPC服务;
- 客户端的RPC再将接收到的端口信息给客户端NFS;
- 客户端NFS再通过这些端口信息与服务端NFS进行数据传输;
通信原理图:
查看RPC服务管理的端口
rpcinfo -p IP地址
1.3RPC和NFS的启动顺序
首先,**一定是要先启动了RPC服务**,**后才能启动NFS服务**,否则NFS服务无法向RPC服务进行端口注册。请注意,如果RPC服务重新启动了,那么原来记录的NFS服务的端口信息都将全部丢失。因此NFS服务也需要重新启动,再向RPC服务进行端口注册。
特别注意:****修改完NFS服务配置文件后,不需要重启NFS服务,直接重新加载配置文件即可systemctl reload nfs-server。
1.4NFS服务 系统守护进程
nfs:它是基本的NFS守护进程,主要功能是管理客户端能否登录服务器;
rpcbind:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会将所管理的服务的对应端口提供给客户端,从而使客户端可以通过该端口连接服务器。
二、安装NFS服务端
2.1安装NFS服务
yum install -y nfs-utils
2.2 创建共享目录
mkdir /webdata chmod o+w /webdata # 赋予其它用户拥有写入权限
2.3创建共享目录首页文件
echo "NFS_test" 1> index.txt
2.4关闭防火墙
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 开机不自启动防火墙
setenforce 0 # 关闭selinux
2.5启动NFS服务
在启动NFS服务之前先启动RPC服务
systemctl start rpcbind # 开启RPC服务
systemctl start nfs-server # 开启nfs服务
systemctl reload nfs-server # 重新加载nfs服务配置文件
systemctl restart nfs-server # 重启nfs服务
systemctl stop nfs-server # 关闭nfs服务
systemctl status nfs-server # 查看nfs服务
2.6配置文件的编写格式
NFS服务的配置文件为:/etc/exports
/etc/exports 配置文件的内容格式:
/共享目录 客户端1(访问权限,用户映射,其它) 客户端2(访问权限,用户映射,其它)
a.共享目录:共享目录是指NFS服务器共享给客户端的目录;
b.客户端:客户端是指的网络中可以访问NFS服务器共享目录的主机;
客户端常用指定的方式:
- 指定某一个主机:192.168.1.1;
- 指定子网中所有的主机:192.168.1.0/24;
- 指定域名主机:www.baidu.com;
- 指定域名中的所有主机:*.baidu.com;
- 任何主机都能访问:*;
c.设置共享目录的访问权限:
- 共享目录访问权限为只读:ro;
- 共享目录访问权限为读写:rw;
d.用户映射:
- root_squash:NFS客户端root用户创建的文件/目录所有主、所有组,被服务端映射成匿名用户(nfsnobody);(默认选项)
- no_root_squash:NFS客户端root用户创建的文件/目录所有主、所有组,保留为root用户;
- all_squash:NFS客户端任何用户创建的文件/目录所有主、所有组,被服务端映射成指定的匿名用户;
- anonuid=xxx:映射成服务端指定的所有主;
- anongid=xxx:映射成服务端指定的所有组;
e.其它选项:
工作常用sync(同步传输);
2.7配置NFS服务
vim /etc/export
添加以下内容
/webdata 192.168.157.0/24(rw)
注释:
- /webdata 指的是共享的目录
- 192.168.157.0/24 指的是允许访问NFS服务器的客户主机网段
- rw 指的是客户端拥有读写权限
2.8服务端管理NFS相关命令
命令:exportfs
-a:全部挂载或全部卸载 /etc/exports中的内容;
-r:重新挂载/etc/exports中的内容;
-u:取消一个或多个目录的共享;
-v:输出详细信息;
卸载所有共享目录
exportfs -au
重新挂载所有共享目录
exportfs -ar
查看服务器中所有的共享目录信息
exportfs -v
三、安装NFS客户端
3.1安装NFS客户端和httpd服务
yum install -y nfs-utils httpd
3.2关闭防火墙
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 开机不自启动防火墙
setenforce 0 # 关闭selinux
3.3启动服务
启动httpd服务
systemctl start httpd
启动rpc服务
systemctl start rpcbind
启动nfs服务
systemctl start nfs-server
3.4查看NFS服务器共享的目录
showmount -e 服务器IP
-e:查看NFS服务器共享的目录
3.5 将共享目录挂载到客户端目录
mount -t nfs 服务器IP:/共享目录名 /var/www/html
3.6浏览器访问客户端
将共享目录挂载到httpd网站服务的工作目录下 /var/www/html后,在浏览器中访问客户端IP,即可看到共享内容
版权归原作者 是阿花y 所有, 如有侵权,请联系我们删除。