3.1 什么是NFS?

NFS是Network File System的缩写,中文意思是网络文件系统。它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)。从客户端本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端NFS服务器的目录。

3.2 NFS工作流程

企业级NFS网络文件共享服务 - 图1

3.3 NFS系统引用的优缺点说明

NFS服务可以让不同的客户端挂载使用同一个共享目录,也就是将其作为共享存储使用,这样
保证不同节点客户端数据的一致性,在集群架构环境中经常会用到。如果是windows和Linux混合环境的集群系统,可以用samba来实现。
优点:

  • 简单,容易上手,容易掌握。
  • NFS文件系统内数据是在文件系统之上的,即数据是能看得见的。
  • 部署快速,维护简单方便,且可控,满足需求的就是最好的。
  • 可靠,从软件层面上看,数据可靠性高,经久耐用。数据是在文件系统之上的。
  • 服务非常稳定。

局限:

  • 存在单点故障,如果NFS Server宕机了,所有客户端都不能访问共享目录。这个在后期的课程会通过负载均衡及高可用方案弥补。
  • 在大数据高并发的场合,NFS效率、性能有限(2千万/日以下PV的网站不是瓶颈,除非网站架构设计太差)。
  • 客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般(用于内网侧问题不大)
  • NFS数据是明文的,NFS本身不对数据完整性做验证。
  • 多台客户机挂载一个NFS服务器时,连接管理维护麻烦(耦合度高)。尤其NFS服务端出问题后,所有NFS客户端都处于挂掉状态(测试环境可使用autofs自动挂载解决,正式环境可以修复NFS服务或强制卸载)。
  • 涉及了同步(实时等待)和异步(解耦)的概念,NFS服务端和客户端相对来说就是耦合度有些高。网站程序也是一样,尽量不要耦合度太高,系统及程序架构师的重要职责就是为了程序及架构解耦,让网站的扩展性变得更好。

应用建议:
大中小型网站(参考点2000万/日PV以下)线上应用,都有用武之地。门户站也会有应用,生产场景应该多把数据的访问往前推,即尽量把静态存储里的资源通过CDN或缓存服务器提供服务,如果没有缓存服务或架构不好,存储服务器数量再多也是扛不住的,而且用户体验会很差。