前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第三章 NFS网络文件系统

第三章 NFS网络文件系统

作者头像
晓天
发布2019-07-04 14:26:06
1K0
发布2019-07-04 14:26:06
举报
文章被收录于专栏:Linux、云计算技术交流

第三章 NFS网络文件系统

3.1 NFS服务简介

NFS,全称为Network File System,即网络文件系统。功能是让不同的机器、不同的操作系统,可以彼此共享资源,一般主要部署于Linux或Unix系统之间。

NFS所共享出的目录,可以允许多台客户机同时使用,并且客户机以挂载的方式连接到NFS服务器所共享出的目录,使用时与本机资源完全一样,方便、便捷。

NFS采用C/S架构,借助于RPC服务(Remote Procedure Call 远程过程调用)完成通信的识别。RPC服务可以视为一种远程访问的中转者,客户端访问NFS时,其实是先向服务器端的RPC服务发出请求,由RPC通知客户端NFS的实际通信端口,客户端再向NFS服务发起请求连接。因此NFS 必须要有 RPC 存在时才能成功的提供服务,我们也可以称 NFS 为 RPC server 的一种。事实上RPC服务可代理的中转的业务也可以很多,不只有NFS,如:windows的共享也是借助于RPC工作的。

具体NFS的工作原理如下:

1、服务器端首先启动RPC(portmap)服务,再启动NFS服务。NFS服务会向RPC服务注册自己使用的通信端口。

2、客户端如果需要连接NFS服务,首先客户端的RPC服务会连接服务器端的RPC服务(TCP/UDP111),从而获取到NFS的工作端口(TCP/UDP 2049)。

3、然后使用客户端的动态端口向NFS服务器的端口(TCP/UDP 2049)进行连接,建立连接后,实现数据传输。

3.2 NFS服务案例

NFS服务的配置原理其实比较简单,安装完毕软件后,通过配置文件即可完成部署。具体实验案例如下:

1、实验环境

两台Linux主机,ip分别为:192.168.10.10 、192.168.10.11,其中192.168.10.10作为服务器使用,另一台为客户端

2、服务器配置

1)软件安装

yum -y install nfs-utils rpcbind

注:nfs的相关软件包,存放于系统安装光盘,可自行配置yum源

2)创建共享目录

cd /mnt ---假设要共享出去的目录都存放在/mnt/下

mkdir share1 share2 share3 ---创建共享目录

chmod 777 share* ---设置该三个目录的权限为满权限

注意,网络数据的访问,必须遵守权限规则,网络权限(即共享权限)与文件或目录的安全权限,二者以最严格的的为准。也就是说二者谁会拒绝该访问就以谁为准。那么我们为了证明NFS实验的成功,先将目录的安全权限放开为满权限,则可证明下面NFS设置的共享权限的有效。

3)编辑配置文件,设置共享

vi/etc/exports ---编辑配置文件,指定要发布的共享目录

/mnt/share1 192.168.10.0/24(rw)

---指定共享目录及客户端, *(ro)表示所有人

/mnt/share2 192.168.10.3(rw) 192.168.10.5(ro)

---仅允许10.3和10.5访问该共享,且权限不同

/mnt/share3 aaa.test.com(ro) bbb.test.com(rw)

---以主机域名的形式指定客户

4)配置域名解析

如果服务器端已配好DNS,并可以正常解析出上一步中的aaa、bbb的两个域名,则本步可以省略,但是如果服务器未配置DNS或无法解析出aaa、bbb,则可以使用静态解析文件完成解析:

vi /etc/hosts ---编辑静态解析文件,写入

192.168.10.11 aaa.test.com

192.168.10.12 bbb.test.com

注:若exports文件中有主机域名的指定,则必须可以解析得到ip,使用DNS或hosts静态解析文件都可以

5)启动服务

systemctl restart nfs ---启动服务

systemctl list-unit-files | grep nfs ---查看nfs服务的开机状态

systmectl enable nfs --- 设置开机自动启动服务

注:nfs的开机启动服务为nfs-server。也可以使用服务nfs,但在很多CentOS7.4之前版本中,开机服务只能指定nfs-server。其实nfs服务类似于一个服务组,内部包含了nfs-server。

netstat -atn |grep 2049

---查看已开启并正在监听的端口,可抓取查看见111或2049

netstat -tn |grep 2049

---查看正在通信的tcp连接端口,可见客户端连接信息

另外,若更改了exports文件的配置后,不想重启便启用新的共享,则可以使用如下命令:

exportfs -r ---更新共享,启用exports文件中的设置

showmount -e ---查看本机已经共享出的目录

6)关闭防火墙

iptables -F

注:其实iptables是firewall防火墙的基础,所以只要关闭了iptables即可,firewall防火墙无需再手动关闭。PS:关于iptables、firewall防火墙会在之后章节中讲解。

setenforce 0

3、客户端配置

1)安装软件包

yum -y install nfs-utils rpcbind

2)创建挂载点

cd /mnt ---假设客户端的挂载点都创建在/mnt下

注:其实Linux中的/mnt/目录主要就是为各种挂载提供的统一的挂载点存放目录

mkdir s1 s2 s3 ---创建挂载点

3)挂载使用

mount 192.168.10.10:/mnt/share1 /mnt/s1 ---挂载访问nfs

mount 192.168.10.10:/mnt/share2 /mnt/s2 ---会报挂载被拒绝

mount 192.168.10.10:/mnt/share3 /mnt/s3 ---可以挂载成功

umount /mnt/s1 ---卸载

mount ---查看挂载表,可见已挂载的nfs共享

注:显示结果中type显示的文件系统类型是 nfs4

另外,本步骤中,可以挂载服务器共享出的所有目录,如:10.11的客户端可以挂载share1,并可读写;10.11挂载share2会报被拒绝,客户端更换正确的ip(10.3或10.5)后才可以挂载成功;10.11可以挂载share3,但只读。由此可证明服务器端exports文件中设置的共享权限的生效

4)客户端配置开机自动挂载

与Linux一贯的文件挂载原理相同,命令挂载的文件系统,只是临时生效,必须写入到文件系统配置文件中才可以开机自动挂载。如下:

vi /etc/fstab

192.168.10.10:/mnt/share1 /mnt/s1 nfs4 defaults 0 0

注意:配置fstab文件后,客户端虽然可以实现重启自动挂载,但是如果服务器端重启了,虽然已经设置nfs服务开机启动,但是由于重启后防火墙启动了,所以很可能客户端挂载将失败,所以服务器端需要把关闭防火墙的命令(iptables -F 及 setenforce 0)写入到/etc/rc.d/rc.local中,并给该文件增加x权限后,服务器重启才会自动关闭防火墙。当然,客户端也可以如此设置,开机关闭防火墙。PS:关于/etc/rc.d/rc.local文件的操作,在Linux系统教材中已经讲解过,读者可自行查阅。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档