1. 什么是NFS
NFS是Network File System的缩写,中文意思是网络文件系统。它的主要功能是通过网络(一般是局域网)让不同主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器,如Web)可以通过挂载(mount)方式将NFS服务器端共享的数据目录挂载到NFS本地客户端(就是某一个挂载点下)。从本地客户端来看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。
NFS很像Windows系统的网络共享、安全功能、网络驱动器映射,这也和Linux系统里的samba服务类似。只不过一般情况下,Windows网络共享服务或samba服务用于办公局域网共享,而互联网中小型网站集群架构后端常用NFS数据共享,如果是大型网站,那么可能还会用到更复杂的分布式文件系统,如Moosefs(MFS)、GlusterFS、FastDFS。
2. NFS在企业中的应用场景
在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享里,如BBS产品的图片、附件、头像(注意网站BBS程序不要放NFS共享里),然后前端所有的节点访问这些静态资源时都会读取NFS存储上的资源。NFS是当前互联网系统架构中最常用的数据存储服务之一,中小型网站公司应用频率更高,大公司或门户除了使用NFS外,还可能会使用更为复杂的分布式文件系统,比如Moosefs(MFS)、GlusterFS、FastDFS等,阿里云等公有云平台的NAS就是云化后的NFS服务应用。
在企业生产集群架构中,下图右边实现框里带圆点的就是NFS系统工作位置,NFS作为所有前端Web服务的共享存储,存储内容一般包括网站用户上传的图片、附件、头像等。注意,网站的程序代码不要放NFS共享里,因为网站程序是开发运维人员统一发布的,不存在发布延迟的问题,直接批量发布到Web节点提供访问比共享到NFS里访问效率更高。
3. 企业生产集群为什么需要共享存储角色
例如:A用户传图片到Web1服务器,然后让B用户访问这张图片,结果B用户访问的请求分发到了Web2,因为Web2上没有这张图片,这就导致它无法看到A用户上传的图片,如果此时有一个共享存储,A用户上传图片的请求无论是分发到Web1还是Web2上,最终都会去共享存储上,这样就可以访问到需要的资源了。这个共享存储的位置可以通过开源软件和商业硬件实现,互联网中小型集群架构会用普通PC服务器配置NFS网络文件系统实现。
当集群中没有NFS共享存储时,用户访问图片的情况如下图所示:
当集群中有NFS共享存储时,用户访问图片的情况如下图所示:
企业生产集群有NFS共享存储访问示意图中小型互联网企业一般不会买硬件存储,因为太贵,大公司如果业务发展很快的话,可能会临时实现硬件存储分散一下网站的压力。当网站冰法继续加大时,硬件存储的扩展相对就会很费劲,切价格成几何级数增加。例如:淘宝网就曾替换掉了很多硬件设备,比如用Lvs+Haproxy替换了NetScaler负载均衡设备,用FastDFS、TFS配合PC服务器替换了Netapp、EMC等商业设备,去IOE正在成为互联网公司的主流。
网友评论