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。想尝新的用户可以一试,实际应用还是要谨慎。