转- 集群NAS技术架构
1 什么是集群NAS?
集群(Cluster)是由多个节点构成的一种松散耦合的计算节点集合,协同起来对外提供服务。集群主要分为高性能集群HPC(High Performance Cluster)、高可用集群HAC(High Availablity Cluster)和负载均衡集群LBC(Load Balancing Cluster)。集群NAS是指协同多个节点(即通常所称的NAS机头)提供高性能、高可用或高负载均衡的NAS(NFS/CIFS)服务。
非结构化数据目前呈现快速增长趋势,IDC研究报告分析指出,到2012年非结构化数据将占到数据存储总量的80%以上。集群NAS是一种横向扩展(Scale-out)存储架构,具有容量和性能线性扩展的优势,已经得到全球市场的认可。从EMC对ISILON、HP对IBRIX、DELL对Exanet等收购事件,以及IBM推出SONAS、NetApp发布Data ONTAP 8,都可以看出集群NAS已经成为主流存储技术之一。在国内,我们也看到UIT UFS、龙存LoongStore、九州初志CZSS、美地森YFS等集群NAS解决方案。集群NAS的未来潜在市场巨大,在高性能计算HPC、广电IPTV、视频监控、云存储等行业领域将逐步得到广泛应用。
2 集群NAS的三种主流技术架构
从整体架构来看,集群NAS由存储子系统、NAS集群(机头)、客户端和网络组成。存储子系统可以采用存储区域网络SAN、直接连接存储DAS或者面向对象存储设备OSD的存储架构,SAN和DAS架构方式需要通过存储集群来管理后端存储介质,并以SAN文件系统或集群文件系统的方式为NAS集群提供标准文件访问接口。在基于OSD架构中,NAS集群管理元数据,客户端直接与OSD设备直接交互进行数据访问,这就是并行NAS,即pNFS/NFSv4.1。NAS集群是NFS/CIS网关,为客户端提供标准文件级的NAS服务。对于SAN和DAS架构,NAS集群同时承担元数据和I/O数据访问功能,而OSD架构方式仅需要承担元数据访问功能。根据所采用的后端存储子系统的不同,可以把集群NAS分为三种技术架构,即SAN共享存储架构、集群文件系统架构和pNFS/NFSv4.1架构。
(1)SAN共享存储架构
这种架构(如图1所示)后端存储采用SAN,所有NAS集群节点通过光纤连接到SAN,共享所有的存储设备,通常采用SAN并行文件系统管理并输出POSIX接口到NAS集群。SAN并行文件系统通常需要元数据控制服务器,可以是专用的MDC,也可以采用完全分布的方式分布到SAN客户端上。NAS集群上安装SAN文件系统客户端即可实现对SAN共享存储的并发访问,然后运行NFS/CIFS服务为客户端提供服务。这里前端网络采用以太网,后面存储连接则采用SAN网络。
图1 SAN共享存储集群NAS架构
由于采用了高性能的SAN存储网络,这种集群NAS架构可以提供稳定的高带宽和IOPS性能,而且可以通过增加存储盘阵或NAS集群节点实现存储容量和性能单独扩展。客户端可以直接连接具体的NAS集群节点,并采用集群管理软件来实现高可用性;也可以采用DNS或LVS实现负载均衡和高可用性,客户端使用虚拟IP进行连接。SAN存储网络和并行文件系统成本都比较高,因此这种集群NAS架构的缺点就是成本较高,同时也继承了SAN存储架构的缺点,比如部署管理复杂、扩展规模有限等。采用这种架构的集群NAS典型案例是IBM SONAS(图2)和Symantec FileStore。
图2 SONAS
(2)集群文件系统架构
这种架构(如图3所示)后端存储采用DAS,每个存储服务器直连各自的存储系统,通常为一组SATA磁盘,然后由集群文件系统统一管理物理分布的存储空间而形成一个单一命名空间的文件系统。实际上,集群文件系统是将RAID、Volume、File System的功能三者合一了。目前的主流集群文件系统一般都需要专用元数据服务或者分布式的元数据服务集群,提供元数据控制和统一名字空间,当然也有例外,如无元数据服务架构的GlusterFS。NAS集群上安装集群文件系统客户端,实现对全局存储空间的访问,并运行NFS/CIFS服务对外提供NAS服务。NAS集群通常与元数据服务集群或者存储节点集群运行在相同的物理节点上,从而减少物理节点部署的规模,当然会对性能产生一定的影响。与SAN架构不同,集群文件系统可能会与NAS服务共享TCP/IP网络,相互之间产生性能影响,导致I/O性能的抖动。诸如ISILON等集群文件系统存储节点之间采用InfiniBand网络互联,可以消除这种影响,保持性能的稳定性。
图3 集群文件系统集群NAS架构
在这种架构下,集群NAS的扩展通过增加存储节点来实现,往往同时扩展存储空间和性能,很多系统可以达到接近线性地扩展。客户端访问集群NAS的方式与第一种架构方式相同,负载均衡和可用性也可以采用类似的方式。由于服务器和存储介质都可以采用通用标准的廉价设备,在成本上有很大优势,规模可以很大。然而,这类设备是非常容易发生故障的,服务器或者磁盘的损坏都会导致部分数据不可用,需要采用HA机制保证服务器的可用性,采用复制保证数据的可用性,这往往会降低系统性能和存储利用率。另外,由于服务器节点比较多,这种架构不太适合产品化,可能更加适合于存储解决方案。用这种架构的集群NAS典型案例包括EMC ISILON、龙存LoongStore、九州初志CZSS、美地森YFS和GlusterFS(图4)等。
图4 GluterFS架构
(3)pNFS/NFSv4.1架构
这种架构(如图5所示)实际是并行NAS,即pNFS/NFSv4.1,RFC 5661标准已于2010.01获得批准通过。它的后端存储采用面对对象存储设备OSD,支持FC/NFS/OSD多种数据访问协议,客户端读写数据时直接与OSD设备相互,而不像上述两种架构需要通过NAS集群来进行数据中转。这里的NAS集群仅仅作为元数据服务,I/O数据则由OSD处理,实现了元数据与数据的分离。这种架构更像原生的并行文件系统,不仅系统架构上更加简单,而且性能上得到了极大提升,扩展性非常好。
图5 pNFS/NFSv4.1集群NAS架构
显而易见,这种架构与上述两种有着本质的区别,pNFS采用元数据集群解决了传统NAS的单点故障和性能瓶颈问题,元数据与数据的分离则解决了性能和扩展性问题。这才是真正的并行NAS,pNFS才是集群NAS的真正未来。然而,毕竟pNFS标准获得批准才一年,目前还没有成熟的产品实现,OSD存储设备发展多年也没有得到市场广泛认可和普及。Panasas公司的PanFS(图6)应该是最接近于这种集群NAS架构,当然Panasas也是pNFS标准的主要制定者之一。目前很多存储公司都在研发pNFS产品,比如BlueArc,笔者预测到2012年就会有产品陆续推出。
图6 PanFS架构
3 开源解决方案
上述提到的集群NAS存储产品或者解决方案,大多都是商业实现,而且成本比较昂贵。可能有些用户想利用开源软件来实现集群NAS,有没有这样的开源解决方案呢?集群NAS的核心是底层的并行文件系统、集群文件系统或pNFS协议,下面就简单介绍开源在集群NAS方面的支持和实现。
(1)SAN共享存储架构:Redhat GFS是开源SAN共享文件系统,它也支持DAS连接方式,然后整合NFS/Samba服务即可实现集群NAS。
(2)集群文件系统架构:Lustre, Gluster, PVFS2, Ceph,这些都是优秀的集群文件系统,Gluster本身就是一个完整的集群NAS系统。类似Gluster实现,集群文件系统通过NFS/Samba网关提供NAS服务,实现集群NAS。
(3)pNFS/NFSv4.1架构:Linux内核当前已经集成了pNFS源码,但处于实验阶段。另外开源OSD实现很少,GFS2可以支持pNFS。想尝新的用户可以一试,实际应用还是要谨慎。
转- 集群NAS技术架构的更多相关文章
- 集群NAS技术架构
http://blog.csdn.net/liuaigui/article/details/6422700
- 基于开源软件构建高性能集群NAS系统,包括负载均衡(刘爱贵)
大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...
- 每天一点存储知识:集群Nas
什么是集群Nas 集群是由多个节点构成的一种松散耦合的计算节点集合,协同起来对外提供服务.集群主要分为高性能集群HPC,高可用集群HAC和负载均衡集群LBC.集群Nas是指协同多个节点(通常称为Nas ...
- 浅析Linux服务器集群系统技术
浅析Linux服务器集群系统技术 目录 前言 常用的服务器集群 集群系统的优势 LVS集群的通用体系结构 为什么使用层次的体系结构 为什么是共享存储 可伸缩Web服务 前言 总结两篇技术文章,努力学习 ...
- 什么是集群(Cluster)技术
什么是集群(Cluster)技术Cluster集群技术可如下定义:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理.此单一系统为客户工作站提供高可*性的服务.大多数模式下,集群 ...
- redis分布式集群3种架构方案
集群方案: 1. 主从高可用(该方案就是单实例形式,只是为了保证数据的安全,对于用户数据少,业务的前期可以采用,目前我司缓存架构就是采用该方案) 2. 客户端分片(典型代表:Jedis.自主写分片算法 ...
- vivo 容器集群监控系统架构与实践
vivo 互联网服务器团队-YuanPeng 一.概述 从容器技术的推广以及 Kubernetes成为容器调度管理领域的事实标准开始,云原生的理念和技术架构体系逐渐在生产环境中得到了越来越广泛的应用实 ...
- (转帖)开源容器集群管理系统Kubernetes架构及组件介绍
最近在搞Docker还有她的管理工具,选型Kuberetes后,被她的术语和概念搞得晕头转向...看了一篇文章还不错,放到这里分享出来. 地址:http://www.linuxidc.com/Linu ...
- 浅谈MySQL集群高可用架构
前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能 ...
随机推荐
- Kali视频学习16-20
Kali视频学习16-20 (16)Kali漏洞分析之数据库评估(一) 一. BBQSql BBQSql 是Python编写的盲注工具(blind SQL injection framework),当 ...
- 20145204《Java程序设计》第3周学习总结
20145204<Java程序设计>第3周学习总结 教材学习内容总结 对象和类. Java有基本类型和类类型这两个类型系统.本章主要介绍类类型.定义类时用关键词class,利用类建立对象实 ...
- HeyWeGo小组团队项目管理
HeyWeGo团队小组项目管理 项目内容 使用java程序开发一款扫雷游戏 实现计划 第一周 明确项目内容.目标.分工,以及完成前期的一些准备 建立新的小组博客以及创建新的代码托管链接 第二周 实行初 ...
- HDU6447 网络赛 YJJ's Salesman(DP + 线段树)题解
思路:若用dp[i][j]表示走到(i,j)的最大值,那么dp[i][j] = max(dp[i - 1][j],dp[i][j - 1],dp[i - 1][j - 1] + v),显然O(n^2) ...
- 【Java----字符串转义与反转义】
apache工具包common-lang中有一个很有用的处理字符串的工具类,其中之一就是StringEscapeUtils,这个工具类是在2.3版本以上加上的去的,利用它能很方便的进行html,xml ...
- pycharm同时使用python2.7版本和python3.6版本
最近在看爬虫的专题,很多爬虫的教程是python2的,电脑上装的是3.6版本,而且python不向下兼容,这就很麻烦,最简单的print要加括号啊,等等.于是分享一个在windows环境下pychar ...
- Lua中获取table长度
-- table.getn(tableName) 得到一个table的大小,等同于操作符# -- 要注意的是:该table的key必须是有序的,索引是从1开始的. --例如有序的 local xian ...
- 为什么需要消息队列MQ?
主要原因:是在高并发情况下,由于来不及同步处理,请求往往会发生堵塞,比如诸多的insert.update之类的请求同时到达mysql,直接导致无数的行锁表锁,甚至最后请求会堆积很多,从而触发大量的to ...
- 114. Flatten Binary Tree to Linked List -- 将二叉树转成链表(in-place单枝树)
Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...
- 同一sql表,在页面展示多级菜单
2.