作者:陈之琦 何东杰 中国银联电子支付研究院
信息处理技术、互联网技术、云计算技术的诞生与成长对各行各业产生着潜移默化的影响。互联网时代,数据采集手段纷繁复杂,形态五花八门,半结构化与非结构化数据体量日趋增大,传统的储架构已经逐渐显现出自身的固有局限。
在传统数据中心中,以OLTP和OLAP为代表的数据库应用占据了昂贵但又低效率的在线存储设施,交易记录、分析性数据则消耗了大量的后端存储空间。异构的存储设备难以应对大数据浪潮带来需求浪潮,无法及时利用数据支撑业务决策,并在“大、智、云、移”的时代提供多样化服务。
下一代云存储系统融合分布式存储技术,利用标准化硬件设施构造存储池,虚拟化已有存储设施空间,互联互通,打破数据调度壁垒;在统一的系统下提供了对象、块、和文件存储服务;并且具有可靠性高、管理简便的优点。同时,下一代云存储系统具有灵活的扩展性,能够提供PB到乃至EB级的存储能力。
下一代云存储系统从行业切实需求出发,面向数据中心私有云场景,实现大规模、大容量的存储资源池,整合替代现有存储设施,支撑各类OLTP或OLAP业务应用。为了能够对各类决策支撑系统、研发测试系统提供有效支撑;突破随机访问海量数据的性能瓶颈;解决数据安全性、存储平滑扩容的问题,下一代云存储系统在规划建设过程中具有以下几点目标:
下一代云存储系统的核心是统一管理存储资源,面向云平台,提供多样化的数据服务。下一代云存储系统将应用与底层存储解耦,不依赖于传统设备和应用厂商的绑定。在未来数据中心全面转型,整体上云的过程中,实现存储与计算、网络资源的联动,顺应数据价值链向服务转移。
下一代云存储系统主要由基于分布式架构的软件定义存储系统和轻量化异构存储统一管理组件构成。
基于分布式架构的软件定义存储运行在标准的X86服务器之上,利用虚拟化技术,将集群中的存储资源虚拟化为存储池,并向上提供块设备、文件和对象存储服务。同时,软件定义存储具有高性能,能够轻松应对各类高负载管理的要求,其中包括业务关键型应用与核心业务系统;多副本及强一致性技术的应用提供高可用特性;极强的横向扩展能力则为业务扩张带来的管理维护提供了极大的灵活性和便利。
轻量化异构存储统一管理组件实现了分布式存储和集中式存储的统一自动化管理,分布式软件定义存储通过面向存储统一管理组件开放存储系统的控制接口,实现存储系统的监控与运维。通过开放的接口,异构存储统一管理组件可以实现分布式存储系统的资源划分与服务编排,并对集中式存储设备划分基于不同QoS策略的虚拟卷服务于云平台,实现与计算、网络的联动。
基于分布式架构的软件定义存储技术集中提供包括对象、块、和文件在内的多种存储服务,并且具有可靠性高、管理简便的优点,并且具有灵活的扩展性,能够提供PB到乃至EB级的存储能力。
基于分布式架构的软件定义存储技术把所有服务器的硬盘虚拟化成为若干个资源池,提供虚拟卷的创建/删除和快照等功能,提供北向虚拟卷形式的存储服务。
软件定义存储系统分为硬件设备层、引擎驱动层、特性功能层、服务接口层以及监控管理层五个层面,具体的功能架构图如下所示:
轻量化异构存储统一管理组件基于Openstack Cinder组件,实现了对后端存储资源的统一管理,来提供业务驱动、自动化的数据服务。轻量化异构存储统一管理组件将应用与底层存储解耦,解除设备厂商的绑定,打破异构存储设备之间的壁垒,将存储功能应用化,支持文件、块、对象等类型存储资源分配服务。
在云计算应用场景下,从租户的角度看来,将不同架构的存储封装起来,无论是传统的集中式存储还是分布式存储都进行统一管理并向上提供服务。
轻量化异构存储统一管理组件向下可以将各设备中可提供相同能力的存储资源聚集起来,进行统一管理。这一功能基于Openstack的Cinder组件,通过不同存储厂商提供的面向OpenStack的Cinder的驱动来获取不同存储设备的基本信息,包括磁盘类型、空间大小、服务能力等。在获取不同的存储设备信息之后,将性能、服务相近的存储设备进行编排、分组,以供后续使用。
轻量化异构存储统一管理组件可以实现业务部署自动化、运维监控智能化。其中,业务部署自动化是指支持运维人员编辑保存服务模板,目的是为了简化创建调用存储的流程。在申请存储资源的过程中,仅需要输入存储容量和卷的数量即可完成资源的申请,统一管理组件会根据事先编排好的模板自动调用不同模块来完成具体工作。同时该组件也支持运维监控的智能化,即针对不同的存储池,不同的虚拟卷,都能够实时监控性能与故障,对存储卷进行有效性、空间、数据可用性等方面进行的监控管理;支持在存储系统的各级软硬件产生故障时,由控制台向管理员告警提示;支持卷级的QoS编排,保证不同租户之间的服务质量。
轻量化异构存储统一管理组件北向通过REST接口与虚拟化平台或者容器云平台完成兼容,实现存储资源服务的统一发放。OpenStack的不同组件如Cinder、Nova等与异构存储管理组件,完成卷的划分与挂载,实现云硬盘的分配或者虚拟机实例创建在云硬盘中;Kubernets中Persist Volume 存储系统则通过Cinder提供的插件,实现应用和服务的状态保存。
下一代云存储系统基于主流的开源分布式存储技术以及开源云平台中的存储管理模块,充分满足国内企业自主可控的要求。下一代云存储系统能够胜任高并发、高效率的需求,与主流NVMe闪存相结合,突破单点性能瓶颈,适应多种场景需求。
下一代云存储系统提供了类似于条带化技术的并行I/O功能,满足支持业务开展的高性能需求。独立存储设备的吞吐量限制,极大影响了存储的性能和伸缩性,所以存储系统一般都支持把连续的信息分片存储于多个设备以增加吞吐量和性能。在下一代云存储系统中,数据会均匀分布到存储池中所有的硬盘上。当某台应用服务器进行读写时,集群中所有的节点都会对其提供服务,这样能很好地保证IO并发。
下一代云存储系统支持各类接口闪存介质,通过闪存介质的使用,来提供高性能的IO。当前闪存存储开始进入开始逐渐进入数据中心市场,如表3-1所示,闪存相比HHD具有如下差别:
固态闪存SSD作为新的存储技术,相比HDD具有超快的数据访问速度,随机数据访问速度比HDD快100多倍,响应时间从毫秒级缩短到亚毫秒级(0.1ms),将IOPS从HDD的200-300提升至数万。SSD的高性能充分满足了存储系统I/O负荷瓶颈带来的困扰。
SSD在下一代云存储系统中的应用有两种不同的方式,均能提升性能,一是作为读写缓存,二是作为数据盘直接存储数据。
在第一种情况下,下一代云存储系统采用缓存算法对热点数据进行优化,使热点数据尽可能驻留在高速闪存存储上,以提升系统性能;而对于访问不频繁的数据则从高速存储中迁移到低速机械磁盘做持久化存储。这种方式对于大量读取场景下的业务系统具有较大的提升;或者将高速存储设备作为全局缓存,数据先写入高速存储中,在适当的时机再将数据同步入后端存储中,这种方式同样可以在满足性能要求的前提下明显降低存储成本。
面对对性能有强烈需求的业务场景,第二种全闪存模式能够大幅度增强对各类高要求负载的管理,其中包括业务关键型应用、核心业务系统等等。这种情况下,可以充分发挥闪存存储的高性能读写,但是成本较高。
下一代云存储系统采取多副本备份机制替换传统的RAID模式来保证核心数据的完整性。同一个数据,在系统的不同节点的不同磁盘上会有大于等于三个副本的存储,这样,当节点或者磁盘产生故障的时候,数据可以从冗余的副本中读取并恢复。同时所有的数据均匀的分布在所有的节点上以达到负载均衡的效果,避免局部热点的出现。在下一代云存储系统具体部署时,所有的副本采取跨机架同步分布策略,确保单一机架掉电后的数据可用性。
下一代云存储系统支持强一致性和最终一致性两种模型,面向不同的业务场景需求。保证租户成功写入一份数据时,几个副本都保持一致,在读取数据时,无论从任何一个副本上进行,都能够保证取到最新的、可用的数据。强一致性情况下,保证对副本的读写操作会产生交集,从而保证可以读取到最新版本;无论更新操作实在哪一个副本执行,之后所有的读操作都要能获得最新的数据。最终一致性情况下,保证用户最终能够读取到某操作对系统特定数据的更新,针对的是读写都比较频繁的场景,是一个比较折中的策略。
无论任何行业,业务的连续性与高质量是主流需求,下一代云存储系统提供了多种场景下的服务质量保证手段:
1、提供面向卷级的服务器访问QoS,充分避免非关键应用占用过多带宽;
2、在数据较长时间处于不一致的状态时,自动触发数据重建,在此过程中支持QoS,保证重建过程中占用过多带宽,避免影响关键业务的稳定运行。
规模庞大的分布式系统,必须考虑多故障的安全隐患,以统计学的规律和概率分布来看,磁盘数量越多,磁盘发生故障的概率越大,甚至几个磁盘同时发生故障。不断的故障会造成系统大部分资源都用于数据重建,影响业务的稳定运行。因此,下一代云存储系统中,为保证系统达到预期的可靠性目标,必须在保证高并发的前提下,尽量缩小副本分布的磁盘范围,即设定安全边界,以防止数据丢失的风险陡然上升。
副本安全边界有两种模式,一是基于池级的安全边界管理,设定存储池最大跨越的磁盘数量;二是基于卷级的安全边界管理,即设定虚拟卷最大跨越的磁盘数量。
下一代云存储系统支持大规模扩展,最低三节点,直至上千节点,随着存储设备数量的增长,整个系统的吞吐量和IOPS等性能指标也同时会随之增长。并且容量和性能呈线性扩展。一旦需求有所变化,即可通过模块化的方式添加更多的存储资源和计算资源。在扩容和缩容的过程中间,分布式算法保证了数据的负载均衡,结合自动的QoS策略,在用户无感知的情况下,保证不会与现有业务产生影响,保障系统的稳定运行。
业界主流Web管理界面主要包括SOAP和REST标准,其中后者架构更为轻便,新生系统多采用后者。VMware体系至今仍以SOAP标准为主,而面向OpenStack的接口则遵循REST标准。下一代云存储系统所提供的接口能够兼容这两种标准。
下一代云存储系统支持主流操作系统,可以部署在RedHat、SUSE、CentOS以及Ubuntu上。虚拟化平台则支持VMware、Hyper-V以及KVM等。支持通过RESTful API标准接口与OpenStack 的Cinder组件和SWFIT组件进行交互,向私有云应用提供存储支持。
下一代云存储系统支持自动精简配置功能,在创建逻辑卷时,并不真实占用实际物理资源,而是在逻辑卷使用过程中,按需实时分配实际物理空间资源,节约了存储资源,简化了存储规划难度。在存储系统的使用过程中,租户在资源申请阶段往往无法准确预估在业务广泛展开后的具体需求,因而会多申请部分的存储空间作为缓冲,而这部分资源往往无法做到物尽其用,存在了大量的浪费现象。在实际使用中,可以设置容量阈值,当剩余存储容量低于阈值时,进行提示。
下一代云存储系统提供卷级的快照功能,进行增量备份,并能根据需要快速恢复到每一个备份点,对业务中断后提供快速的恢复功能保证,加强系统整体的连续性,提供了业务质量保证的手段与方法。
同时此系统还支持链接克隆的机制,基于一个快照创建出多个克隆卷,创建出来的克隆卷与原始卷中的数据内容一致,克隆卷的修改不会影响原始卷,用户既可以通过快照来还原卷以恢复丢失的数据,也可以从快照来创建模板,直接启动新的虚拟机以保证业务的连续性。
下一代云存储系统采用的分布式架构使得数据的IO操作均匀分布在不同服务器的不同硬盘上,避免了局部热点的出现,实现全局的负载均衡。
系统将数据块打散存放在不同服务器的不同硬盘上,冷热不均的数据均匀分布在不同的服务器上,不会出现集中的热点;数据的分配算法保证主副本与其余副本在不同服务器和不同硬盘上均匀分布;同时,在节点或者硬盘故障时,在数据重建的过程中,也实现全局负载均衡。
数据中心内部系统的核心要求是“稳定可靠”,一是指系统在运行过程中有能力提供连续可靠的服务,长时间无故障运行;二是指当故障发生之后,有能力快速定位,及时排查,故障范围不蔓延。
分离式部署的方式,使得系统与云平台系统相独立,避免了计算和存储争抢CPU/内存/网络等物理资源,一旦某一方资源需求骤升导致的另一方资源枯竭,从而影响性能并在整个基础架构中产生的涟漪效应;和在超融合部署方式在集群规模较大后,网络、硬盘、服务器发生故障的概率都会增大;以及数据重删、压缩、加密纠删码等功能、故障的自修复和数据功能实现都会消耗一定的系统资源,导致性能下降和抖动等问题。
分离式部署相比超融合方式的优点:
从业务稳定、系统可靠的角度出发,下一代云存储系统采用分离式部署的方式,即存储系统服务器独立于计算资源服务器。这一部署方式使得存储与计算相独立,因而两者之间的故障不会相互影响,易于后期运维故障排查;并且计算与存储的配比可以根据业务场景的需求自行调配,灵活程度高,如果需要扩展资源的话,也可以单独对存储进行扩展;同时,计算与存储分层管理,也清晰了管理权限。具体部署架构如下所示:
其中,存储管理节点需要在两个以上的节点上部署以保证高可用,同样,轻量化异构存储统一管理组件也需要在两个节点上进行部署来提供高可用。
下一代云存储系统基于标准的X86服务器,软硬件解耦,解除厂商绑定,支持设备利旧,保护历史投资。下一代云存储系统对硬件平台具有如下基本要求:
由于数据的机密性与敏感性,业务相互之间的隔离对于在数据中心内部非常重要。在数据中心内部,数据的访问需要受到严格控制,必须进行业务与管理的网络相互隔离。管理网段与租户网络三层互通,租户通过管理网段访问下一代云存储系统的Portal界面并下发增、删、检、查等管理指令;业务网段则负责业务数据的传输,当存储空间以卷的形式通过业务网段挂载给前端业务系统,并在此网段上提供服务。
按照分布式存储的范式,下一代云存储系统的管理和业务分属两个网段,互相独立,互不影响,数据传输只在业务网段上进行,管理与业务通过服务器通信,无法通过网络互访。
在业务网段上,规划每个服务器由两根网线分别连接到两台交换机。在管理网段上,规划每个服务器由两根网线分别连接两台交换机。通过节点级的双网卡主备以及集群级的交换机主备来提供网络高可靠性。两个网段使用独立的物理网卡进行隔离,在条件不满足的情况下使用不同VLAN隔离。
依据木桶效应,一个系统的整体性能上限往往是由系统中的薄弱环节决定。当集群采用混合存储的配置时,标准的10Gbps高速网络能够满足相当规模的集群在负载均衡、数据重建时的压力;然而,当集群采用全闪存架构时,硬盘性能将大幅提升,此时标准的10Gbps网络有可能会成为系统中的短板,56 Gbps InfiniBand网络乃至更高速的100 Gbps网络,近似无阻塞通信,突破存储系统内部交换的瓶颈。在InfiniBand网络中,通信时延控制于纳秒级,计算存储信息及时传递,配合SSD的高速读写,具有可观的性能。
OpenStack提供标准的API接口来管理整个底层架构资源。OpenStack 提供块设备存储服务的组件Cinder,本质上是一个资源管理组件,将后端不同的存储设备进行封装,向外提供统一的API,本质上并不是一个存储系统,而是使用插件的方式,结合不同后端存储的驱动提供存储服务,核心是对卷的各种操作与管理。包括通过虚拟卷的方式为虚拟机提供云硬盘,或者可以用于存储并启动虚拟机实例。在虚拟机的各个生命周期中,具体能够实现如下几种操作:
1、在创建虚拟机的时候,需要对卷进行创建和挂载操作;
2、在使用虚拟机的时候,需要对卷进行扩展、备份操作;
3、在删除虚拟机的时候需要对卷进行分离、删除操作。
通过Cinder组件,用户可以方便、高效地管理虚拟机数据。下图展示了Cinder组件使用后端存储的示意图。计算虚拟化组件Nova与存储管理组件Cinder之间通过RabbitMQ消息队列进行通信。
具体的调用流程如下:
1、用户通过页面或者命令行发出存储管理请求,并通过Cinder-API发出;
2、Cinder-API通过RabbitMQ消息队列将此消息加入Cinder-scheduler中,依次进行调度;
3、Cinder-scheduler通过RabbitMQ消息队列与Cinder-Volume通信,将创建、挂载等卷管理请求进行传递;
4、Cinder-volume收到存储资源请求之后,向后端的下一代云存储系统通信,进行操作,执行请求。
自此,完成了用户的一个存储资源管理操作请求。
容器虚拟化技术已经成为一种被大家广泛认可的服务器资源共享方式,容器技术可以在按需构建容器技术操作系统实例的过程当中为系统管理员提供极大的灵活性。容器技术为应用程序提供了隔离的运行空间,每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境。
下一代云存储系统通过容器引擎卷插件或者编排调度的API接受北向的创建、删除、加载、卸载和迁移数据卷等实际的存储操作请求,并传递给底层的数据平面去实现。Kubernetes作为其集群管理工具,基于其插件化的设计,将有状态的数据保存在以 Persistent Volume(PV)为基础的存储系统。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞10
添加新评论2 条评论
2017-11-15 17:26
2017-11-14 22:28