1、什么是NFS? 什么是文件系统?
全称 network file system 网络文件系统
它的功能是通过网络让不同的机器系统之间可以彼此共享文件或目录
2、为什么要用共享存储NFS?
前段所有的应用服务器接收到用户上传的图片、文件、视频、都会统一 的放到后端的存储上。
为什么要共享?所有节点服务器都需要将内容存到存储上,取的时候统一来取。
3、共享存储得种类
单点存储系统就是NFS,中小型企业,阿里云服务的NAS服务,OSS对象存储。
NFS性能不太高。
大型企业会用分布存储:FastDFS、Ceph、GlesterFS、Mfs
大型存储厂商:EMC 、Netapp 几十万
艺龙旅行网 存储用的EMC 传统企业。
硬件存储:稳定、需要2台 双主机偷 几十块硬盘 raid10
BAT 曾经用硬件,超贵、
阿里云 取IOE Ibm orace EMc
4、NFS工作原理
NFS网络文件系统
启动NFS服务,而且还要启动很多端口
NFS功能,需要很多服务,每个服务都有端口,而且经常变化。
如何让客户端找到这些端口呢?
RPC最主要的功能就是记录每个NFS功能所对应的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递请求数据的NFS客户端,让客户端可以连接到正确的端口上去从而实现数据传输。
需要通过以一个经纪人(rpc服务)
NFS服务:
1.NFS服务(有很多进程和端口)。
2.rpc服务(对外固定端口111)
客户端请求NFS服务,先找RPC 111,查到NFS端口,告诉用户
1)带共享的目录 存放东西的目录 取东西的目录 例如:/data
2)访问的主机
172.16.1.7(web01) 单个主机
172.16.1.0/24 网段
172.16.1.* 网段
master 主机名
3)()权限
rw 可读写 read write
ro 只读 read only
sync 写到磁盘才算完成,安全 慢
async 异步写到远程缓冲区 快 不安全
5、NFS软件
要部署NFS服务,必须要安装下面两个软件包
1.nfs-utils :这个是NFS 服务主程序 包括(rpc.nfsd / rpc.mountd)
2.rpcbind :RPC主程序
NFS可以被视为一个RPC程序,在启动任何一个RPC程序之前,需要做好端口映射工作,这个映射工作就是有rpcbind服务来完成的,因此,提供NFS服务之前必须先启动rpcbind
CentOS 7 NFS服务环境部署:
###(1)rpm -qa nfs-utils rpcbind >====查寻nfs-utils rpcbind所有软件包
如果没有安装 执行以下安装命令:
yum install nfs-utils rpcbind -y
###(2)NFS启动:
systemctl status rpcbind >===查看rpc 状态
systemctl start rpcbind >====开启rpc服务
systemctl enable rpcbind >===让rpc开机自启动
rpcinfo -p 172.16.1.31 或者主机 >====查看已经注册的PRC端口列表
systemctl status nfs >===查看nfs服务是否启动
systemctl start nfs >====开启nfs服务
systemctl enable nfs >===开机自启动
再次查看:
rpcinfo -p 172.16.1.31 或者主机 >====查看nfs是否向RPC端口注册
在工作场景中最好把服务自启动存放到 /etc/rc.local 里
ps -ef|egrep “rpc|nfs” >===查看rpc nfs 进程 有哪些服务```
```###(3)NFS文件路径配置:默认路径为:/etc/exports
/etc/exports 文件配置格式```
NFS共享的目录 客户端地址1===可以是主机名,单个IP地址,IP地址段(参数1,参数2)可以多加
注意:
1.NFS共享的目录:为NFS服务端要共享的实际目录,绝对路径 服务端事实存在的目录
2.客户端地址:为NFS服务端授权的可以访问工项目录的NFS客户端地址,可以为单独的IP地址或主机名等。。
3.参数集:对授权的客户端访问的权限设置
```生产环境常见的配置实例:
配置1:/data 172.16.1.0/24(rw,sync)
配置2:/data 172.16.1.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000) >==无论客户端的用户是谁 指定的就是这个UID用户
配置3:/data 172.16.1.0/24(ro) >==只读共享
[root@nfs01 ~]# mkdir /data/bbs -p >===创建共享目录
[root@nfs01 ~]# vim /etc/exports >==编辑NFS配置文件
也可以用echo 输入追加
[root@nfs01 ~]# tail -1 /etc/exports >==查看配置文件
/data/bbs 10.0.0.0/24(rw,sync)
因:服务端权限没有指定用户所以默认用户为:nfsnobody
[root@nfs01 /]# cat /etc/idmapd.conf ===NFS用户管理所在目录
[root@nfs01]# cat /etc/passwd|grep nfsnobody
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@nfs01 /]# cat /var/lib/nfs/etab >==查看nfs完整参数
[root@nfs01 /]# chown -R nfsnobody.nfsnobody /data/bbs/ >===给共享目录属性权限(以便可以让客户端读写)
[root@nfs01 ~]# systemctl reload nfs >==一定要平滑重启生效配置文件
或者[root@nfs01 ~]# exportfs -r 和以上同等
###(4)客户端开启rpc服务(客户端无需启动NFS服务):
[root@web01 ~]# systemctl start rpcbind >==客户端开启RPC服务
[root@web01 ~]# systemctl enable rpcbind >==客户端开机自启动
[root@web01 ~]# showmount -e 10.0.0.31 >==查看客户端是否有权限
/data/bbs 10.0.0.0/24 表示网络通
注意如果不通(查看防火墙服务端是否关闭)
[root@nfs01 /]# telnet 10.0.0.31 111 (通查看端口是否tong)
###(5)[root@web01 ~]# mount -t nfs 10.0.0.31:/data/bbs /mnt
客户端进行共享目录挂在
[root@web01 ~]# df -h >===查看是否挂在成功
10.0.0.31:/data/bbs 19G 1.8G 18G 10% /mnt
###(6)测试服务端共享目录:
[root@nfs01 /data/bbs]# touch oldboy.txt
[root@nfs01 /data/bbs]# ls
oldboy.txt
查看客户端共享目录是否测试成功
[root@web01 ~]# ls /mnt/
oldboy.txt