文章目录
- 1、NFS服务
- 2、RPC服务与NFS
- 3、NFS的优缺点
- 4、NFS服务端的搭建与配置
- 5、小结
1、NFS服务
NFS,全称Network File System,即网络文件系统。最大的功能是通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
😉
更直白的说就是:
让PC将网络中的NFS服务器共享的目录挂载到本地的文件系统中,这样在本地端访问挂载点就等于访问共享目录,NFS服务器共享的目录就像是自己的一个磁盘分区一样。
如图,在NFS服务器设置了一个共享目录/home/public,有权访问的客户端A就可以将这个共享目录挂载到自己文件系统的某个点,如/home/data/mypublic,如此,就可以在本地访问远程共享目录。
# 挂载后,可以看客户端磁盘的具体信息:
df -h /home/data/mypublic
# 这里指定了挂载点是/home/data/mypublic
NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有相对应的网络端口。NFS服务器的端口开在2049,此外,由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口。既然是随机选择,那客户端如何知道NFS服务器使用的是哪个端口呢?
答案是通过远程过程调用协议,即RPC服务(Remote Procedure Call)
2、RPC服务与NFS
RPC( Remote Procedure Call )协议的主要目的是做到:不同服务间调用方法像同一服务间调用本地方法一样。
当NFS启动后,会随机使用一些端口,然后NFS会向RPC去注册登记这些端口。RPC记录下这些端口,并开启自身111端口,等待客户端请求。当客户端请求时,RPC就将NFS记录的端口信息告诉客户端,客户端获取到了NFS服务器的端口信息,从而建立连接进行数据传输。
具体流程:
1)首先服务器端启动RPC服务,并开启111端口
2)服务器端启动NFS服务,并向RPC注册登记端口信息
3)客户端启动RPC,向服务端的RPC服务请求服务端的NFS端口
4)服务端的RPC服务反馈NFS端口信息给客户端
5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输
3、NFS的优缺点
优点:
- 节省本地存储空间,将一些常用的数据存放在一台服务器通过网络访问
- 对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的方法
缺点:
- 局限性:
容易发生单点故障,即server服务器宕机所有的客户端都不能访问 - 性能瓶颈:
网站高并发的情况下,NFS性能有限 - 安全性:
客户端的数据都是通过明文传送,客户端没有用户认证机制,安全性一般,建议在局域网内使用 - 数据完整性:
NFS服务器传输数据都是采用明文的方式进行传输,对数据没有什么验证机制,对数据完整性较高的业务不建议使用 - 维护繁琐:
NFS服务器都是多台客户端挂载在一台server端,对于共享服务器的连接管理维护都是一项比较繁琐的事情
4、NFS服务端的搭建与配置
第一步:NFS服务端包安装(服务端)
//查询是否安装nfs-utils和rpcbind,未装则安装
rpm -q nfs-utils|| yum -y install nfs-utils
rpm -q rpcbind || yum -y install rpcbind
注意:
有的文章中提到了portmap,centos 6.4中portmap已经被rpcbind取代,而它又已经在安装nfs-utils包的时候安装了,不放心可以装完nfs后service rpcbind status验证
第二步:NFS配置文件修改(服务端)
# 创建服务端用于测试的共享目录
mkdir -p /root/test
# 编辑配置文件,我直接>>追加了
# 以下:*即客户机随意,ro表示客户端是只读权限
echo "/root/test *(ro)" >> /etc/exports
关于NFS配置权限设置,即/etc/exports文件配置格式中小括号()里的参数集:
第三步:关闭防火墙(服务端)并启动服务
# 关闭防火墙
systemctl stop firewalld
# 查看是否关闭成功
systemctl status firewalld
# 先启动rpcbind!!!并设置开机自启动
systemctl start rpcbind
systemctl enable rpcbind
# 再启动nfs并设置开机自启动
systemctl start nfs
systemctl enable nfs
# 发布共享目录
exportfs -rv
# 查看共享目录
showmount -e
第四步:客户端安装NFS并挂载
//查询是否安装nfs-utils和rpcbind,未装则安装
rpm -q nfs-utils|| yum -y install nfs-utils
rpm -q rpcbind || yum -y install rpcbind
//启动rpcbind和nfs
systemctl start rpcbind
systemctl start nfs
//查看NFS服务端共享的目录情况,假设服务端IP为1.1.1.1
showmount -e 1.1.1.1
//挂载
//其中,1.1.1.1是NFS服务器IP,/root/test是第二步中共享出来的目录
//目录/home/mnt是客户端的挂载点
mount 1.1.1.1:/root/test /home/mnt
//查看挂载是否成功
df -h /home/mnt
mount的时候报错no route to host,八成是防火墙忘关了,systemctl stop firewalld
5、小结
NFS是一种基于TCP/IP传输的网络文件系统协议,可以实现客户机访问远程服务器中的共享资源,NFS服务配置文件是/etc/exports,其缺点是安全性差。
配置NFS共享存储的步骤:
服务器端
第一步:安装nfs-utils和rpcbind软件,并关闭防火墙和增强安全功能
第二步:设置共享目录并把共享目录的权限设为777
第三步:修改NFS的配置文件(格式为:共享的目录名称 客户机地址(权限))
第四步:启动NFS服务(先启动rpcbind,再启动nfs),并设置开机自启动
第五步:发布NFS共享目录,并查看
客户端
第一步:安装nfs-utils和rpcbind软件,并关闭防火墙和增强安全功能
第二步:查看服务器端的共享目录,并将其挂载到新建目录上(可手动或自动挂载)
参考文章:
篇一:NFS详解
篇二:NFS实验