原文:http://blog.csdn.net/liuben/article/details/8882141

云存储和大数据背景下,数据呈现爆炸式增长趋势。根据研究显示,2020年数字宇宙将达到35.2 ZB,比2009年的0.8 ZB猛增44倍,这其中80%以上为非结构化数据。高性能计算、医学影像、石油和天然气勘探、数字媒体和社会化WEB等大量数据密集型应用导致数据的井喷,不断对存储方法提出新的严峻挑战。集群存储是一种横向扩展(Scale-out)存储架构,具有容量和性能线性扩展的优势,已经得到市场的广泛认可。除了高性能、高扩展特点外,集群存储还应该具备高可用的特征,这对于企业核心业务系统尤为关键,保证关键业务的连续性。


集群存储高可用性

高可用性(HA,High Availablity)是指通过尽量缩短系统停机时间(因日常的维护操作或突发的系统崩溃等),以提高系统和应用的可用性。企业中的关键应用,如邮件服务、文件服务、数据库服务等,通常会要求7*24小时不间断连续提供服务并且不能表现出故障切换,这就要求承载服务的存储系统能够自动判断故障,并提供故障恢复的能力。集群(Cluster)是由多个节点构成的一种松散耦合的节点集合,协同起来对外提供服务。集群主要分为高性能集群HPC(High Performance Cluster)、高可用集群HAC(HighAvailablity Cluster)和负载均衡集群LBC(Load Balancing Cluster)。集群存储系统是指协同多个节点提供高性能、高可用或负载均衡的存储服务系统,消除单点故障和性能瓶问题,并且具有Scale-Out横向高扩展能力,实现容量和性能线性扩展。集群存储现有技术方案主要通过被冗余技术解决可用性问题,包括副本技术、纠删码技术、主备或全活HA技术。


副本技术通过增加不同数量的副本,可以有效提高数据可用性,但是存储利用率低(为副本数量分之一),并增加了数据管理的复杂度。纠删码通过冗余编码提高存储可用性,并且具备较低的空间复杂度和数据冗余度,存储利用率高,但编码方式复杂,需要大量计算并降低业务性能,且适用集群节点数量较多的情形。主备(Active/Standby)HA技术同样采用冗余技术获取高可用性,但存储资源浪费严重。全活(Active/Active)HA技术通过监控并将故障节点资源(IP、服务进程、业务数据等)切换至正常节点上,使整个系统连续不间断对外提供服务。这种HA技术不仅能够提高可用性,而且具备负载均衡功能,资源利用率高。HA技术的主要问题是资源切换期间会导致服务中断,通常只接管IP和服务进程资源,而业务数据或物理存储资源需要由外部系统进行管理。


副本技术

副本(Replication)就是对原始数据的完全拷贝。通过为系统中的文件增加各种不同形式的副本,保存冗余的文件数据,可以十分有效地提高文件的可用性,避免在地理上广泛分布的系统节点由网络断开或机器故障等动态不可测因素而引起的数据丢失或不可获取。一般而言,副本数量越多,文件的可靠性就越高,但是如果为所有文件都保存较多的副本数量,将消耗大量的系统存储资源,并增加文件管理的复杂度。副本还可以起到提高系统性能的作用。通过合理的选择存储节点放置副本,并与适当的路由协议配合,可以实现数据的就近访问,减少访问延迟,提高系统性能。另外,通过增加副本数量,将集中地文件访问合理地分布到不同的节点和网络路径,利用其他节点和网络路径平衡节点和网络的负载,可以有效地解决热点问题。对于数据量较大的文件,还可以通过对多个副本的并行读取,进一步分散和平衡节点负载,提高文件读取的效率,提高系统的I/O性能。典型的副本案例包括RAID1、GFS/HDFS副本(默认三个)和Glusterfs复制卷(如图1所示)。

 

图1:分布式文件系统Glusterfs复制卷 来源:Glusterfs文档


纠删码技术

纠删码(Erasure Code)作为一种前向错误纠正技术主要应用在网络传输中避免包的丢失,存储系统利用它来提高存储可靠性。将要存储在系统中的文件分割成k块,然后对其编码得到的n个文件分片并进行分布存储,则只需存在k’个可用的文件分片,就可以重构出原始文件,如图2所示。纠删码的空间复杂度和数据冗余度较低,若文件分为k块,编码得到后得到的n个分块,需要存放在n个系统节点上,消耗n/k倍的存储资源。纠删码能提供很高的容错性和很低的空间复杂度,但编码方式较复杂,需要大量计算。目前,纠删码技术在分布式存储系统中得到研究的主要有三类,即阵列纠删码、RS(Reed-Solomon)类纠删码和LDPC(LowDensity Parity Check Code)纠删码。一些量化比较的工作研究表明,当数据存放的节点可靠性要求比较高时,如集群存储系统中,采用纠删码可以提供比副本机制更高的可靠性,并且所需的存储空间开销更小。传统的纠删码如RS码的计算量相当大,其解码即从任意n个数据块或编码块中重构原始数据的计算量随着n和m的增加成指数上升关系,严重影响存储性能。低密度校验LDPC码也可以提供很好的保障可靠性的冗余机制。与RS编码相比,LDPC编码效率要略低,但编码和解码性能要优于RS码以及其他的纠删码,主要得益于编解码采用的相对较少并且简单的异或操作。当前实际应用中,大部分集群存储系统主要使用副本技术来保证可用性,采用纠删码技术来提高可用性的系统包括HDFS-RAID、AZURE、QFS、ISILON等。


图2:纠删码技术原理 来源:IDF2012


HA技术

高可用(HA,High Availability)集群通过一组计算机系统提供透明的冗余处理能力,从而实现不间断应用的目标。高可用集群是共同为客户机提供网络资源的一组计算机系统,其中每一台提供服务的计算机称为节点(Node)。当一个节点不可用或者不能处理客户的请求时,该请求会及时转到另外的可用节点来处理,而这一过程对于客户端是透明的,客户不必关心要使用资源的具体位置,集群系统会自动完成。HA集群是为了提高系统的可用性,以便在单个节点出现故障的时候,持续满足用户的需求的集群系统。


HA集群系统构成主要包括主服务器(Master节点)、从服务器(Slave节点)、共享数据系统(SAN存储或数据同步系统)和心跳网络,HA集群的容错备援过程主要包括故障侦测、自动切换和自动恢复,其工作方式主要分为主备方式、全活方式和N+M方式。主备(Active/Standby)方式HA集群提供了最大的可用性,以及对性能的最小影响。该模型需要一个节点在正常工作时处于备用状态,主节点处理客户机的请求,而备用节点处于空闲状态。当主节点出现故障时,备用节点会接管主节点的工作,继续为客户机提供服务,并且不会有任何性能上的影响。全活(Active/Active)HA集群是最常用的集群模型,它提供了高可用性,并且在只有一个节点在线时提供可以接受的性能。该模型允许最大程度利用硬件资源,每个节点都通过网络对客户机提供资源,每个节点的容量被定义好,使得性能达到最优,并且每个节点都可以在故障转移时临时接管另一个节点的工作。所有的服务在故障转移后仍保持可用,但是性能通常都会下降。N+M模式HA集群系统由多个主节点、若干个从节点以及一些辅助设备(存储阵列、交换机)等组成,如图3所示。在实际应用中,一些用户并不满足上述两种模式,认为“冗余设备”太多,需要多个主节点(N个)可以灾备到任意多个(M个)节点上。根据应用的级别,调整从节点的数量,可以为一个,也可以为多个。主节点的数量可以为一个或者多个,根据应用需要随时调整搭配,但主节点为多个并不是同一个应用的“并行处理”,而是不同的应用。


图3:N+M HA集群工作模式 来源:浪潮BCP


SAN架构集群存储HA方法

基于SAN架构的集群存储系统,后端存储采用中高端磁盘阵列子系统,支持RAID0、1、5、6、10等不同级别RAID等级,并通过光纤FC接口连接到各个集群节点。SAN磁盘阵列通过不同RAID等级对数据进行保护,通过冗余机制提供高可用性,同时降低了一定程度的存储利用率。在这种架构下,如果再采用副本或者纠删码来提供集群服务高可性,就会进一步降低存储利用率或者大幅降低集群系统性能。当集群节点服务器发生故障时,后端SAN存储通常仍然处于正常工作状态,存储在其上面的数据也是完整一致的。因此,完全可以从正常工作的其他集群节点中选择一个节点来接管故障节点的资源和服务,继续对外提供数据服务,保证业务的连续性。面向基于SAN架构的集群存储系统,可以采用全活HA架构技术,不仅接管故障节点的IP和服务进程资源,而且接管故障节点的存储软件服务进程和物理存储资源,支持NFS/CIFS/HTTP/FTP/ISCSI等协议协议。利用TCP/IP协议的连接重连技术,还可以实现类似CTDB对故障节点的透明接管,不会产生接管期间的业务中断。这些方法保证集群存储系统的存储利用率以及系统性能不会受到影响,并且可以透明接管完整的系统资源,提供更高的系统可用性。基本设计原则如下:

(1) 当某个节点由于停机,或者系统出现异常,不能再向上层的应用提供数据存储服务时,则需要由备份节点接管连接到该节点上的SAN存储设备,并启动相应的服务,以保证前端应用仍然可以正常地进行数据存储操作。

(2) 为平衡系统中各节点的负载,避免备份节点的负载过重,当出现故障的节点修复后,需要将被接管的SAN存储重新恢复。

(3) 在上述的接管与恢复过程中,需要保证对前端的数据存储没有明显影响,CIFS、NFS等服务不中断,做到透明接管和恢复。

(4) 备份节点的选择,采用Round-Robin轮询法,在当前正常工作的节点中选择其中之一作为备份节点。


SAN架构的集群存储系统,数据可用性主要由后端的中高端磁盘阵列进行保障,集群可用性重点是集群节点上的资源,包括IP、服务进程、存储管理进程以及SAN物理存储资源。副本技术和纠删码技术当然也可以实现集群的高可用性,但会进一步降低存储利用率或者大幅降低集群系统性能。主备(Active/Passive)HA集群和N+M模式HA集群,不仅冗余较多造成资源消耗,而且提供的高可用性也受到限制。采用SAN架构全活高性能HA集群方法,提供了最大的高可用性,在集群只有一个节点在线时仍然可以对外提供服务。该模型允许最大程度利用硬件资源,每个节点都通过网络对客户机提供资源,每个节点的容量被定义好,使得性能达到最优,并且每个节点都可以在故障转移时临时接管另一个节点的工作。该方法实现的高可用性,实现资源利用的最大化,可用性最高,不会降低存储利用率,也不会大幅降低系统性能,仅仅导致故障节点引起的前端访问性能下降。采用这种HA方法的系统包括VCS、RedhatCluster、Rose HA、Oracle RAC等。


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐