文章目录
CentOS7部署NFS服务器
一、NFS概述
1.1 什么是nfs
NFS是一种基于TCP/IP传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。
1.2 nfs特点
- NFS即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源
- 在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样
- nfs可以实现Linux和Unix之间的共享,不能实现与windows之间的共享
- nfs是运行在应用层的协议
1.3 nfs应用场景
在企业集群结构的工作场景中,特别是中小型网站公司,nfs网络文件系统一般被用来存储共享视频、图片等静态资源文件,例如把网站用户上传的文件放在nfs共享里,通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录内的数据。以下是一些常用的场景:
- 多个机器共享一台CDROM或其他设备。这对于在多台机器中安装软件来说更加便宜与方便
- 在大型网络中,配置一台中心NFS服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录
- 不同客户端可在NFS上观看影视文件,节省本地空间
- 在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下
1.4 nfs工作机制
nfs服务的实现依赖于RPC(Remote Process Call,远端过程调用)机制,RPC充当NFS客户端和NFS服务器的中介,以完成远程到本地的映射过程。
RPC采用C/S模式,请求程序就是一个客户机,而服务提供程序就是一个服务器。
1.5 配置文件exports文件的格式
nfs的主配置文件时/etc/exports,在此文件中,可以定义nfs系统的输出目录(即共享目录)、访问权限和允许访问的主机等参数。基于安全性考虑,该文件默认为空,没有配置任何输出共享目录,这样可以保证在启动nfs服务后不会输出共享资源,造成漏洞。
共享目录(绝对) 客户端1(选项1,选项2...) 客户端2(选项1,选项2...)
例: /test 192.168.10.10(ro,sync) 192.168.10.11(rw,sync)
访问权限选项:
访问权限选项 | 说明 |
---|---|
ro | 设置共享目录只读 |
rw | 设置共享目录可读写 |
用户映射选项:
用户映射选项 | 说明 |
---|---|
all_squash | 将远程访问的所有普通用户及所属组都映射为匿名用户或匿名用户组 |
no_all_squash | 不将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(默认设置) |
root_squash | 将root用户及所属用户组都映射为匿名用户或用户组(默认设置) |
no_root_squash | 不将root用户及所属用户组都映射为匿名用户或用户组 |
其他常用的选项:
选项 | 说明 |
---|---|
sync | 将数据同步写入缓存或磁盘中,可以保证数据一致性 |
async | 将数据先保存在内存中,必要时写入磁盘 |
secure | 限制客户端只能从小于1024端口连接nfs服务器(默认设置) |
insecure | 允许客户端从大于1024端口连接nfs服务器 |
subtree_check | 若共享目录是一个子目录,则nfs服务器就将检测其父目录的权限(默认涉资) |
no_subtree_check | 即使共享目录是一个子目录,nfs服务器亦不检查其父目录的权限,可提高效率 |
客户端常用的知道方式:
客户端 | 说明 |
---|---|
192.168.10.10 | 指定IP地址主机 |
192.168.10.0/24 | 指定网段内的所有主机 |
www.shim.com | 指定域名的主机 |
*.shim.com | 指定shim.com域的所有主机 |
*(或缺省) | 所有主机 |
二、NFS服务器部署
NFS安装:
先安装第三方拓展yum源
[root@localhost ~]# yum -y search epel-release
再安装nfs-utils和rpcbind
[root@localhost ~]# yum -y install nfs-utils rpcbind
编辑配置文件
创建共享目录并编辑配置文件
[root@localhost ~]# mkdir /test
[root@localhost ~]# vim /etc/exports
/opt/test 192.168.10.0/24(rw,sync,no_root_squash)
开启服务
[root@localhost ~]# systemctl start nfs //开启nfs服务
[root@localhost ~]# systemctl start rpcbind //开启rpc服务
通过netstat查询服务是否开启:
[root@localhost ~]# netstat -antp | grep rpcbind //查看服务是否开启
测试NFS服务
showmount查看共享目录状态:
showmount [选项] [NFS服务器名称或地址]
常用的选项有:
-a 显示指定NFS服务器的所有客户端主机及其所连接的目录
-d 显示指定的NFS服务器中已被客户端连接的所有输出目录
-e 显示指定的NFS服务器上所有输出的共享目录
[root@localhost ~]# showmount -e 192.168.10.10
挂载NFS共享文件
[root@localhost ~]# mount 192.168.10.10:/opt/test /test
[root@localhost ~]# df -Th
总结
nfs服务部署过程中,常见的故障解决思路,当nfs无法挂载使用时,首先要检查配置文件的正确性,查看是否允许该网段的访问,然后确认nfs和rpcbind服务是否开启,同时客户端也是需要rpcbind服务。
当客户端挂载共享出现长时间挂载等待的情况,此时要ping服务器的地址,检查客户端到服务器之间的网络连通性。
解决思路,当nfs无法挂载使用时,首先要检查配置文件的正确性,查看是否允许该网段的访问,然后确认nfs和rpcbind服务是否 开启,同时客户端也是需要rpcbind服务。
首先我们要理解NFS服务是依赖rpc所以我们还需要启动rpc服务即rpcbind,rpc充当客户端和服务端之间的中介,对于nfs共享资源可以使用mount进行挂载,对应的文件系统类型为nfs,可以手动永久挂载,但是权限需要添加_netdev(设备需要网络)。