[[415486]]
本文转载自微信公众号「匠心独运维妙维效」,作者张智峰。转载本文请联系匠心独运维妙维效公众号。
一、概述
为进一步整合基础设施资源以达到统一规范管理,G行于2016年选用了适用于分行的超融合基础架构方案,并以分布式部署的方式建立了私有云分行资源池。其上运行的系统多达数千套,支撑了分行本地业务系统在内的大量生产系统的快速落地和稳定运行,已经成为各分行主要的IT基础设施环境,实现了资源集中管理、灵活调配和高效部署的建设目标。
二、G行超融合基础架构
1.为什么采用超融合基础架构
超融合基础架构(HCI)是软件定义的统一系统,兼具传统数据中心的所有要素:存储、计算、网络连接和管理。在虚拟化资源池的表现形式为每一个资源节点不仅仅具备计算、网络、存储和虚拟化等资源,还可以将多个节点通过网络聚合起来,有统一的资源调度平台来进行管理,并且可以实现模块化的无缝横向扩展。
相比较传统的X86服务器与集中式存储构成的虚拟化平台,以超融合架构部署的资源池具有部署速度快,成本小,计算资源浪费少,节省机房空间等优势。
虚拟化超融合架构恰好可以解决当时G行分行数据中心计算资源调配不灵活、系统高可用度低的痛点。而其良好的横向扩展能力也能够很好地应对日新月异的银行业务高速增长,并且在建设初期无需投入大量的资金。
2、组网
基于可靠性考虑管理、业务、存储平面由2个网口绑定,双上行到2个接入交换机,不同网络平面采用独立的虚拟交换机在虚拟化平台内部完成配置,并采用vlan隔离。
3.分布式存储场景下的数据保护
在超融合架构中,每一个超融合节点既是一个计算节点也是存储节点,这种分布式的特性再结合数据保护机制,使得分布式存储可以很好地基于超融合架构构建一个易扩展、高可靠的存储资源池。
而对于存储用户而言,存储系统的可靠性是一个老生常谈的话题了。在传统的存储中,大多是采用RAID的方式,来保证数据的高可靠性;而在分布式存储系统中,多副本和EC(ErasureCode)是比较常见的数据保护方法。
那么什么是多副本?又如何理解EC?他们之间的区别和优势又是什么呢?
简单说,多副本就是一份数据以副本的方式写到多个分布式系统中的存储节点中。这种多副本的数据保护方式,一来实现简单,二来可靠性高。除非所有副本所在的存储节点都故障,才会影响业务。但缺点是多副本的空间利用率偏低。
我们以三副本举例(参见下图)
对于服务器A的物理磁盘A上的数据块P1,系统将它的数据备份为服务器B的物理磁盘B上的P1''和服务器C的物理磁盘C上的P1',P1、P1'和P1''共同构成了同一个数据块的三个副本。若P1所在的物理磁盘发生故障,则P1'和P1''可以继续提供存储服务,确保业务不受影响。
另外其数据重建机制也保证了,在存储容量情况良好的条件下,当发生单个或多个存储节点发生故障时,可以快速进行重建以保证同一元数据存在三个副本。示意图如下:
然而三副本机制虽然在数据高可靠强一致方面表现出色,其存储空间利用率仅为33%,这也增加了企业级用户的存储成本。
4.EC
EC是一种数据保护技术,是指将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。如果把n+m份数据分布在存储系统的不同节点上,那么任意小于等于m个节点故障(m份数据失效),都可以通过其他剩余的数据还原出原始数据,从而达到不影响业务的目的。EC算法可以灵活配置,比如系统要满足支持2个节点同时故障,则m=2即可。从空间利用率上,EC是优于多副本的,以4+2为例,空间利用率为4/(4+2)=67%。这个利用率相当于三副本的2倍。而可靠性上,与三副本一样可以满足支持2个节点同时故障。不过以EC4+2为例,此种数据保护机制限制了超融合节点的扩容方式,每次最少扩容数量4+2=6台。丧失了一部分超融合架构引以为傲的灵活扩展能力。
最终G行从金融行业数据可靠性要求出发,选择了数据可靠性和强一致性更高的三副本机制,并保留了超融合架构的灵活横向扩容能力。
5.Xen Or KVM
G行超融合架构资源池在建立初期选择了技术上较为成熟的Xen架构虚拟化技术,而随着kvm技术的日趋成熟,最终在2020年选择了从Xen架构升级到了KVM架构,两者又有什么优劣势呢?
首先我们需要了解什么是虚拟化技术。Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM(virtualmachine monitor ),即虚拟机监视器。
Hypervisors是一种在虚拟环境中的操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisors不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。而根据Hypervisors扮演的角色和功能不同,衍生出了多种虚拟化技术。可以说Xen和KVM分别代表了半虚拟化和全虚拟化两种虚拟化技术中。
全虚拟化(左)与半虚拟化(右)
全虚拟化:虚拟机完整的模拟了底层硬件,Linux系统直接从内核级别为虚拟化提供支持,进行Hypervisor适配时不需要对操作系统进行修改。在全虚拟化的虚拟平台中,GuestOS(客户机操作系统即虚拟机操作系统)并不知道自己是一台虚拟机,它会认为自己就是运行在计算机物理硬件设备上的HostOS(宿主机操作系统)。因为全虚拟化的Hypervisor会将一个OS所能够操作的CPU、内存、外设等物理设备逻辑抽象成为虚拟CPU、虚拟内存、虚拟外设等虚拟设备后,再交由GuestOS来操作使用。这样的GuestOS会将底层硬件平台视为自己所有的,但是实际上,这些都是Hypervisor为GuestOS制造了这种假象。
KVM作为硬件辅助全虚拟化技术,主要由两个部分组成:KVM驱动和Qemu。KVM驱动直接被集成到linux系统(Intel-VT或AMD-V)中了,主要负责虚拟机创建、CPU和内存的分配等等。
作为硬件辅助全虚拟化技术,处理器直接提供了虚拟化支持(可以为多个操作系统虚拟化处理器)。内存可以通过kvm进行虚拟化(借助linux的能力)。最后,I/O通过一个稍加修改的QEMU进程(执行每个客户操作系统进程的一个拷贝)进行虚拟化。
KVM向Linux中引入了一种除现有的内核模式之外的新进程模式---客户模式,它用来执行部分客户操作系统代码。内核模式表示代码执行的特权模式,而用户模式则表示非特权模式(用于运行在内核之外的程序)。根据运行内容和目的,执行模式可以针对不同的目的进行定义。客户模式的存在就是为了执行客户操作系统代码即虚拟机操作系统的代码,但是只针对那些非I/O的代码。 在客户模式中有两种标准模式,因此客户操作系统在客户模式中运行可以支持标准的内核,而在用户模式下运行则支持自己的内核和用户空间应用程序。客户操作系统的用户模式可以用来执行I/O操作,这是单独进行管理的。
在客户操作系统上执行I/O的功能是由QEMU提供的。QEMU是一个平台虚拟化解决方案,允许对一个完整的PC环境进行虚拟化(包括磁盘、图形适配器和网络设备)。客户操作系统所生成的任何I/O请求都会被中途截获,并重新发送到QEMU进程模拟的用户模式中。
在内存虚拟化方面上,由于KVM仅是一个简单的虚拟化模块,所以它的内存管理没有自我实现,需借助于Linux内核实现内存管理。KVM能够使用Linux所支持的任何存储,在驱动程序的实现上,直接借助于Linux内核来驱动硬件。
半虚拟化:需要对GuestOS的内核代码做一定的修改,才能够将GuestOS运行在半虚拟化的VMM中。修改内核后的GuestOS也知道自己就是一台虚拟机。所以能够很好的对核心态指令和敏感指令进行识别和处理,但缺点在于GuestOS的镜像文件并不通用。
XEN包含三个基本组件:Hypervisor、Domain0、DomainU。其中Hypervisor运行在硬件之上,承载所有的操作系统,提供CPU和内存调度的作用。Domain0是管理员,,主要负责IO设备虚拟化。DomainU则是真正的XEN中的虚拟客户机,而DomainU又分为两类:一类全虚拟客户机,一类半虚拟客户机,后者是运行在经过修改的操作系统之上。
总体来看,Xen是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,以此来实现在HostOS上并发运行多个GuestOS。而KVM是已经被内嵌到HostOS(Linux)内核中。鉴于现在主流CPU都对虚拟化进行了适配,具备硬件虚拟化的条件,因此KVM可以适配市场上绝大部分的CPU。而从轻量化角度看,KVM更加精简,不需要对客户机操作系统进行修改,更加灵活易于部署,当遇到版本升级的需求时,Xen架构往往要对宿主机底层OS打补丁,重新编译整个内核,风险可想而知。另外KVM作为虚拟化开源架构,其生态更加完善。因此最终G行选择从Xen架构升级为KVM虚拟化架构。
三、超融合架构未来发展
G行分行超融合基础架构资源池致力于为分行生产系统提供快速部署、灵活调配、高可用的基础设施服务能力,为全行业务尤其是分行业务的快速发展提供有力支撑。继续深耕基础设施服务能力,配置调优,超融合组件升级迭代,总行管控平台全面替换升级,监控细粒度化建设,都将是未来G行超融合架构资源池发展的方向。在专注于加强基础设施服务能力的基础上,紧跟时代,以超融合为底座培育容器虚拟化部署适配能力也将是未来努力的方向。