一、何为nfs
全称为:nework file system 网络文件系统
通过网络存储和组织文件的一种方法或者机制
二、共享存储
前端所有的应用服务器接收到用户上传的图片、文件、视频(静态文件),都会统一的放到后端的存储上,所有节点的服务器都要将内容存到存储上,去的统一来取。
1、共享存储的种类:
单点存储系统:nfs,中小型企业,阿里云服务的NAS服务,OSS对象存储(nfs的性能不太高)。
2、大型存储厂商:EMC、Netapp等
三、nfs工作流程
工作原理:
四、企业生产场景NFS共享存储优化
1、硬件:用SAS、ssd硬盘,买多块,硬件RAID,制作RAID5或者RAID10,网卡的吞吐量要大,至少千兆以上(可多块网卡)
2、优化NFS服务器端的配置
3、优化NFS客户端挂载配置,添加一些安全的参数
4、对NFS服务所有的内核服务器进行优化,把一些不必要的参数删除
对NFS的性能进行优化:
1、使用CDN加速以及自己搭建文件缓存服务(squid,nginx,varnish等)
2、把多个目录分配到不同的NFS服务器上
3、弃用NFS(读写分离)
4、使用分布式文件系统
五、NFS的优缺点
优点
1、简单,容易上手,容易掌握;
2、NFS文件系统内数据是在文件系统之上,即数据是看得见的;
3、部署快,维护方便,且可控制,满足需求的前提之下是最好的;
4、从软件层面上看,数据可靠性高,经久耐用;
5、服务非常稳定;
缺点
1、存在单点故障,如果NFS server宕机了,所有的客户都不能访问共享目录;
2、大数据高并发时,NFS的效率,性能有限;
3、客户认证是基于IP和主机名的,权限要根据ID识别,安全性一般(用于内网就问题不大);
4、NFS数据是明文测,NFS本身不对数据的完整性进行验证;
5、多台客户机挂载一个NFS服务器时,连接管理维护麻烦(耦合度高),尤其是服务器出问题之后,所有的NFS客户端都处于挂掉的状态;
5、涉及了同步(实时等待)和异步(解耦)的概念,NFS服务端和客户端相对来说耦合度有些高,网站程序也是一样,尽量不要耦合太高,系统及程序架构师的重要职责就是为程序及架构解耦,让网站的扩展性变得更好;
五、nfs配置说明
配置文件:/etc/exports
例如:
配置参数 | 解释说明 | 系统默认值 |
---|---|---|
suid(nosuid) | 当挂载的文件上有任何SUID的程序时,只要使用nosuid就能够取消设置SUID 的功能 | suid |
rw、ro | 指定文件为可读写、只读模式 | rw |
dev、nodev | 是都保留配置文件的特殊功能,一般来说只有/dev才会有特殊的装置,因此可以选择nodev | dev |
exec、noexec | 是都具有执行文件的权限,如果想要挂载的仅仅是普通的资源(图片、视频),就可以选择noexec | exec |
user、nouser | 是否允许用户文件的挂载与卸载功能,如果要保护文件系统最好不提供给用户此权限 | nouser |
auto、noauto | auto是指“mount -a”时会不会被挂载的项目,如果不需要这个分区随时被挂载,可以设置为noauto | auto |
六、挂载
**命令:**mount -t nfs [参数(不填就是默认参数)] [IP地址]:[要挂载的存储服务的文件路径] [要挂载到的本机路径]
例如:
无参数
有参数配置(更快,更好,更安全)