在云计算,虚拟化技术中,分布式资源管理技术、数据存储技术和网络技术是最关键的基础技术系统。其中,虚拟化是底层核心技术之一,其在高可用性、高性能、快速创建等方面的技术指标甚至直接关系到云计算商业模式的建立。


虚拟化技术也分为技校,其中KVM、Xen和VMWare  (Virtual  Machine  ware)是主流。早在2013年,基于对虚拟化技术未来发展方向的判断,腾讯云放弃了当时主流的XEN虚拟化技术,率先在行业内拥抱开源KVM技术,并不断对其进行演进。


近日,腾讯,云虚拟化技术负责人陈立东,首次向外界详细披露了他在虚拟化技术方面的技术演进路线。


虚拟化到底是什么?


简单来说,虚拟化主要是指服务器资源的虚拟化,即在一台物理机上为一台虚拟机构建一个完整的操作系统运行环境,更通俗地说就是“将一台计算机虚拟成N台计算机”。其中,虚拟化资源包括CPU、内存、网络和存储。一般来说,在一台物理机上,通过虚拟化技术,可以将多个完整的虚拟机以不同的形式销售给不同的客户,从而满足客户的定制化需求。


说到虚拟化技术,这并不是一个新词。早在20世纪60年代中期,IBM就已经有了虚拟化技术。近十年来,特别是2005年,英特尔推出了硬件辅助虚拟化,即在CPU指令上支持虚拟化,使得这项技术有了显著的发展。


起初,虚拟化技术的主流是剑桥大学开发的Xen。陈立东透露,2010年腾讯开放平台时,也采用了Xen。后来腾讯云推出公有云产品时,腾讯云选择了KVM。陈立东说,之所以选择这个,是因为KVM技术是一个完全开源的轻量级技术,内核很好的支持,这是后续技术的发展方向。


为了理解虚拟化技术的作用和意义,我们从腾讯云分布式调度系统VStation的整体架构图来看。作为腾讯云计算,的操作系统,虚拟站承担着资源调度和请求排队的工作。


虚拟化负责为每个CVM(云虚拟机)构建一个完整的PC运行环境,包括CPU、内存、网络和存储资源。主要包括libvirt、qemu和kvmQemu和kvm组成一个虚拟机管理程序,负责CVM资源的虚拟化,在物理机上虚拟一个完整的PC环境;


Libvirt负责为管理程序提供统一的外部接口。


整体架构


腾讯云,虚拟化技术的发展


据陈立东,介绍,在云, 腾讯,的大规模云计算实践期间,他们在虚拟化方面遇到了一些技术挑战,在不断解决问题的过程中,他们走出了自己的虚拟化技术路线图。


挑战1:如何提高云服务器的可用性?


第一个挑战是可用性。随着硬件的发展趋势,服务器的集成度越来越高,单个物理机的故障对云服务器的影响更大。如何避免物理服务器宕机对云虚拟化的影响是云,腾讯面临的第一个挑战


陈立东提到,当腾讯的云规模达到一定规模时,就出现了问题。当时有游戏客户投诉云, 云, 腾讯服务器故障率高,云服务器突然宕机,导致游戏玩家断网,客户甚至考虑迁移到其他云,这给陈立东团队带来很大压力。


在统计了服务器的常见故障原因后,发现服务器故障中的主要故障原因是内存故障。当内存中出现多位uce错误时,整个物理机都将关闭,一个物理机上的所有虚拟机都将关闭。


但问题是内存硬件有其自身的故障率,无法完全避免多位uce出错的低概率。为了提高云服务器的可用性,腾讯云采用了多种优化方案。这里介绍两个利器:内存高级RAS功能MCA恢复和热迁移。


首先是MCA恢复。为了解决内存故障率的问题,腾讯云联合包括英特尔在内的CPU厂商,为云,腾讯单独定制CPU在定制过程中,腾讯云要求服务器厂商为腾讯云,提供一些更高端的CPU功能,其中一个叫做MCA  Recovery。


以前,如果出现内存UCE错误,原服务器会直接关闭,但当支持MCA  Recovery后出现内存错误时,服务器不会关闭,只会给出内存问题的警告,然后上层会决定如何处理。


云, 腾讯,是第一家在数据中心大规模使用MCA  Recovery技术的云厂商,一开始进展并不顺利。启用MCA恢复后,大量UCE错误未能成功避免。当时服务器ODM厂商和Linux内核都没有完美支持MCA  Recovery。针对硬件厂商缺陷导致的闪避故障案例,腾讯云开发了故障注入工具,作为服务器BIOS  BMC厂商的标准引入。对故障注入进行长期压力测试,确保硬件厂商按照腾讯云的标准完成硬件引入。


同时,腾讯云还发现了几个CPU架构优化的案例。通过修改Linux内核软件,尽可能避免触发,大大降低了不可恢复异常的触发概率。同时,腾讯云对CPU厂商的下一代CPU进行了改进和优化。


对于支持MCA恢复的Linux内核,腾讯云还优化了内核内存管理模块和KVM。


相关优化已在基于英特尔Skylake及其后续版本的腾讯云的云服务器中全面实施。


除英特尔外,腾讯云还与AMD联合实施了多项RAM  RAS功能和其他硬件可用性优化措施,以提高腾讯云AMD云服务器SA2实例的可用性。


目前,腾讯云已经成为第一家在数据中心大规模使用MCA  Recovery技术的公司。通过一系列软硬件优化,腾讯云的CVM云服务器通过MCA  Recovery避免了大量内存UCE错误,大大降低了内存故障率,在行业内领先腾讯云韵服务器的可用性。


第二个技术点是热迁移技术。


在MCA  Recovery等高级RAS功能的支持下,云当, 腾讯的物理服务器不会宕机,但已经存在隐患,需要尽快修复。此时运行的云服务器呢?


为了解决这个问题,腾讯云采用了热迁移技术,可以在没有感知的情况下将云服务器从一台物理机迁移到另一台。当一台物理机存在硬件隐患时,可以将云服务器迁移到另一台正常的物理机。因此,通过热迁移技术,腾讯云将云服务器的可用性提高到高于物理机本身的可用性。


大规模落地时,热迁移的难度体现在两个方面。一个是热迁移的成功率。如果热迁移导致的服务器负载过高,热迁移可能会失败。为了提高热迁移成功率,腾讯云采用了包括RDMA在内的多项热迁移优化,将热迁移成功率从70%提高到99%;第二个困难在于最小化热迁移的停机时间。目前腾讯云可以实现50毫秒内的热迁移停机,基本可以达到无感知的水平。挑战2:如何减少虚拟化带来的损失?


第二个挑战是,虚拟化带来了在同一台物理机上虚拟多个虚拟机的灵活性,但同时,虚拟化本身也会有一些性能损失。企业希望虚拟化技术能够保证性能与物理机相匹配,将虚拟化的损失降到最低,这也是虚拟化技术面临的巨大挑战。


在减少虚拟化性能损失方面,陈立东以腾讯自主开发云的过程为例。项目启动后不久,微信同事报告其中一个模块的性能在测试过程中下降了30%以上。为此,腾讯云投联合多位资深开发工程师进行分析,做了7轮优化,最终将KVM的虚拟化损耗降低到5%。


针对Linux子机场景,腾讯云也结合KVM虚拟化本身做了一些性能优化,推出了腾讯Linux,也就是现在开源的腾讯Linux的发行版。


此外,腾讯云还对Windows子机进行了大量的优化,逆向分析Windows内核的逻辑,特别优化了KVM对Windows内核的支持,大大提升了Windows云服务器在腾讯云上的性能。


挑战3:如何提高虚拟化的稳定性?


第三个挑战是,在虚拟化之后,还有一个额外的虚拟化层,包括CPU和内存。企业希望虚拟化需要与物理机相同的稳定性,满足对响应延迟的终极追求。


除了一些性能测试工具的峰值性能,腾讯云更注重性能的稳定性和业务的实际体现。


陈立东提到,Linux本身的内核算法是CFS,但经过分析,Linux本身的CFS调度算法并不适合完全满足虚拟化场景的需求,所以腾讯云开发了一套针对虚拟化场景的Linux内核调度算法,内部称之为VMF。该算法的核心思想是保证虚拟机的任务应该先执行。通过这项技术,腾讯云使虚拟化场景中的调度延迟等于物理机的稳定性。


挑战4:如何快速交付?


第四点是交付效率。使用云后,客户希望尽快获得大量计算资源。如何为客户提供二级交付体验也是一个挑战。


早期腾讯云的客户反映购买后GPU型号启动慢,启动需要几分钟,影响了使用体验。当一个虚拟机启动时,所有的虚拟机内存都是提前分配和锁定的,虚拟机内存越大,启动越慢。这给用户带来了非常不好的体验,这也是当时所有云厂商都面临的问题。


在优化之前,700G规格的虚拟化在大约270秒内启动。优化后,启动时间缩短了22秒,大大提升了用户体验。腾讯云为社区贡献了相关的优化补丁。腾讯云首次披露虚拟化技术发展路线图,看好轻量级虚拟化的潜力


轻量级虚拟化是未来的发展方向


从腾讯,虚拟化技术的演进路线可以看出虚拟化技术存在的一些技术难点和热点,希望能给云计算开发者带来一些借鉴意义。


最后,陈立东还谈到了虚拟化技术未来的发展趋势和方向。他认为,虚拟化未来一个很大的发展方向就是轻量级虚拟化,而要实现这一点,就要把虚拟化层做得尽可能简单,这样才能减少损失。


“一般来说,要在物理资源拆分时最大限度地减少虚拟化的损失,这对整个底层来说仍然是一个巨大的挑战。”陈立东指出。


上一篇:如果美国关闭根服务器,我们的互联网络真的会瘫痪吗? 下一篇:Windows 10又有对手?全新的国产操作系统来了
框架系统   粤ICP备13024006号
框架系统   粤ICP备13024006号