智汇华云 | ArcherOS Stack共享存储虚拟化技术剖析
随着硬件性能的飞速提升,信息业务的不断增长,企业用户对部署IT 基础设施的灵活性和可管理性也提出了更高的要求,传统的以硬件服务器主机为单位的架构已经无法满足新的需求,越来越多的企业选择应用共享存储虚拟化技术整合存储资源并进行集中化管理。本期智汇华云,特别带来《ArcherOS Stack共享存储虚拟化技术剖析》,加快推动政企用户业务和应用的上云。
1.ArcherOS Stack介绍
ArcherOS Stack作为介于硬件和业务负载之间的云操作系统层,采用X86和ARM双栈支持的虚拟化技术,实现对通用服务器物理资源的抽象,将CPU、内存、I/O等服务器物理资源转化为一组可统一管理、调度和分配的逻辑资源,并基于这些逻辑资源在单个物理服务器上构建多个同时运行、相互隔离的虚拟机执行环境,实现更高的资源利用率,同时满足应用更加灵活的资源动态分配需求,譬如提供热迁移、热升级等高可用特性,实现更低的运营成本、更高的灵活性和更快速的业务响应速度。
ArcherOS Stack重点聚焦关键业务的虚拟化需求,满足ERP、CRM、核心数据库、Web、电子商务、多应用整合等典型的关键业务应用对于性能、高可靠、高安全以及自动运维方面的业务诉求,提供相应的虚拟化技术特性,加快推动业务和应用的云化。
2.ArcherOS Stack系统架构
ArcherOS Stack是一种横向扩展的软件集成基础架构云操作系统,包括云管理平台(ArManager)、软件定义计算(ArCom)、软件定义网络(ArNet)、共享存储虚拟化(ArSSV)、软件定义安全等功能。是软件定义数据中心(SDDC)架构的最小集。
ArManager:ArcherOS Stack管理平台,提供对资源的创建、管理以及监控能力。
部署工具(ArLCM):向导式的图形化部署工具,对ArcherOS集群进行生命周期的管理。
ArCom:虚拟机管理程序,用于创建与管理虚拟机。
ArNet:虚拟交换机管理;利用安全组可针对虚拟机设置安全策略,规则支持TCP/UDP/ICMP/EGP等多种协议;支持IPV4/IPV6双栈;流量隔离。
ArSSV:共享存储虚拟化组件,通过软件层将SAN设备划分映射到物理服务器的LUN进行统一池化管理,从中划分出一个个小的逻辑卷,虚拟机将这些逻辑卷识别为块设备使用。
3.ArSSV简介
云计算带来的一大挑战就是解决大规模虚拟机部署所面临的存储方面的问题,首先是存储I/O性能瓶颈问题,因为存储性能增长速度相比于计算能力的增长要慢,因此对于虚拟化而言,I/O瓶颈和缓慢的存储性能成为主要瓶颈,ArcherOS Stack通过共享虚拟化组件(ArSSV)提供不同I/O性能优化手段,有效缓解存储瓶颈。其次是存储利用率低的问题, ArSSV提供存储精简置备技术,提高存储利用率降低存储硬件的采购成本。再次是大规模部署虚拟机的效率问题,ArSSV提供虚拟机克隆技术,可以缩短大规模部署、分发虚拟机的时间。
此外,尽管近几年超融合以及软件定义存储市场增速迅猛,传统的企业级客户IT架构中往往仍存在一些SAN设备,这些SAN设备往往成本高昂,因而客户不愿浪费已有投资。根据IDC市场报告,截至2020 Q3,传统企业级存储仍占据国内存储市场59.2%的份额,但HCI和SDS正在逐步蚕食传统存储市场,未来几年也将稳步增长。出于利旧等因素,IT架构上云转型存在从传统SAN设备到软件定义存储(SDS)的一个过渡期。
ArcherOS Stack支持对接SAN设备,保护客户现有投资。用户无需对LUN、RAID等存储概念对象进行单独管理和设置,只需要对虚拟机/虚拟磁盘进行设置就可以使用存储的各项功能,降低了用户使用门槛。ArcherOS Stack通过共享存储虚拟化组件,实现了以下特点:
●与硬件无关,只要是Linux支持的SAN存储都可适配
●与自研的计算虚拟化组件(ArCOM)完全集成
●统一所有设备到同一软件栈
●支持精简置备,按写入有效数据容量分配实际空间
3.1 ArSSV整体架构
实现思路是:在FC-SAN设备上划分配置好LUN,通过多路径软件映射给物理服务器,在服务器端将映射过来的LUN经由软件层虚拟化出一个大的存储资源池,资源池内分出一个个小的逻辑卷(LV),虚拟机可以识别这些逻辑卷成一个个块设备(虚拟磁盘)。
3.2 ArSSV关键技术解析
●ArSSV对接各类存储后端
ArSSV最大的优势在于:在对接不同厂家的SAN存储设备时,不需要花费大量的时间开发对应的存储驱动程序。而且由于各家存储系统有不同的功能集,针对A、B不同存储系统开发的功能集也不一致,从而导致平台层面功能的差异性。针对存储系统开发对应的驱动仅适用于定制化项目中,而且每次开发、测试周期都很长。ArSSV另辟蹊径:屏蔽后端存储系统细节,将存储池的部分存储空间,通过LUN直接作为主机节点的存储空间,主机节点再对其进行细粒度的划分后,分配给虚拟机使用。
●ArSSV实现精简置备
由于LVM自身的精简置备是通过thin-provision target实现的,这种实现方式下在LV创建快照之后性能会严重下降,所以ArSSV采用的是通过qemu将qcow2文件的数据分布直接写入LV的方式来实现精简置备。
qcow2在创建时实际占用空间很小(目前为1G,此数值可以调整),只有在有真正数据写入后开始增长,增长速度会根据IO速度变化。虽然qcow2可以自动增长,但LV的大小是固定的,所以需要在合适的时间动态扩展LV。LV的动态扩展会通过以下两种方式触发:
其一:ArSSV主动检查:ArSSV主动监测LV的空间增长情况,当实际写入空间占到所创建LV的50%时,LV会主动增加1GB大小的存储空间,以此类推,直至实际数据与LV大小一致。
其二:通过事件达到对LV真实空间的扩容,即:当虚拟机内部读写速度大于磁盘的自动扩容速度,虚拟机会出现磁盘读写错误,系统服务会发送一个读写错误的事件,当ArSSV监听到此类事件后会立即发起一次LV扩容操作,扩容成功后虚拟机读写即可自动恢复正常。
●ArSSV元数据管理
ArSSV通过分布式锁服务实现元数据的统一,当涉及到元数据的修改操作时,通过分布式锁保证同一时刻只在一个节点上操作。集群中的每个节点都各自运行分布式锁服务,锁的状态都被写到了共享存储上,使用 Disk Paxos 算法读写共享存储以实现对分布式锁的获取、释放和超时。由于分布式锁服务的所有数据都被保存在SAN存储上,即使集群主机进程崩溃也不会影响可靠性。
●ArSSV快照和克隆
ArSSV通过标签来唯一标识快照的LV,在线快照通过调用libvirt实现。ArSSV通过cinder driver实现虚拟机的完整克隆,克隆后新虚拟机与源虚拟机没有数据引用关系,源虚拟机的部分数据损坏不会影响新虚拟机的数据,数据上保持独立,可靠性相较于链接克隆要高。
3.3 ArSSV总结
ArSSV以极高的通用性和兼容性帮助用户管理使用不同品牌型号的FC-SAN存储,免去了和不同FC-SAN存储厂商设备驱动对接的复杂过程,也避免了FC-SAN厂商不提供硬件驱动的情况下需要自己开发驱动的窘境,统一了X86和ARM对不同厂商FC-SAN设备的使用体验,甚至通过提供精简置备、快照、克隆功能,让用户直接用上了高端SAN存储才有的功能,让用户不用关心硬件驱动的对接,也不需要具备专业的SAN存储管理知识,更专注虚拟化平台上业务的建设,对IT建设能力较弱、IT人才梯队不够完善的中小厂商非常友好。