公告:86分类目录网(86mulu.qiyuailv.com)为广大站长提供免费收录网站及小程序服务(增加外链),永久收录!点击查看免费提交教程

点击这里在线咨询客服
新站提交
  • 网站:100689
  • 待审:9619
  • 小程序:483010
  • 文章:83160
  • 会员:252120


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

 

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

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

虚拟化到底是什么?

简单来说,虚拟化主要是指服务器资源的虚拟化,即在一台物理机上为一个虚拟机构造一个完整的操作系统的运行环境,再通俗点说,就是 " 把一台电脑虚拟成 N 台电脑 "。其中,虚拟化的资源包括 CPU、内存、网络和存储几个部分。一般来说,在一个物理机上,通过虚拟化技术可以将多个完整的虚拟机以不同的形式售卖给不同的客户,满足客户定制化的需求。

谈到虚拟化技术,这其实并不是一个新鲜的词汇,早在 60 年代中期,IBM 就已经有了虚拟化技术。近十多年来,尤其是 2005 年 Intel 推出硬件辅助虚拟化,也就是在 CPU 指令上支持虚拟化,才让这个技术有了一次重大的发展。

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

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

虚拟化则负责为每台 CVM(云服务器 ( Cloud Virtual Machine ) )构造出完整的 PC 运行环境,包括 CPU、内存、网络、存储各个部分资源。主要包含 libvirt、qemu、kvm 三部分:

qemu 与 kvm 构成 hypervisor,负责 CVM 资源的虚拟化,在物理机上,虚拟出一个个完整的 PC 环境;

libvirt 负责提供统一对外的接口,用于管理 hypervisor。

 

 

图 1. 整体架构

腾讯云虚拟化技术演进路程

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

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

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

陈立东提到,在腾讯云规模达到一定规模时遇到了一个问题,当时某个游戏客户投诉腾讯云云服务器故障率高,云服务器突然宕机,导致游戏玩家掉线,客户甚至因此考虑迁移到其他云。这给了陈立东团队非常大的压力。

通过统计服务器常见的故障原因后,发现在服务器故障中最主要的故障原因是内存故障。当内存发生多 bit UCE 错误时,就会导致整个物理机宕机,一台物理机上所有的虚拟机都会随之宕机。

然而,问题是内存硬件上本身存在失效率,低概率的发生多 bit UCE 错误是无法完全避免的。为了提升云服务器的可用性,腾讯云采用了多种优化方案,这里介绍其中两个利器:内存高级 RAS 特性 MCA recovery 和热迁移。

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

之前,如果发生了内存 UCE 错误,原有的服务器就会直接宕机,但在支持了 MCA Recovery 后再发生内存错误时,服务器不会宕机,只会发出警告内存有问题,再由上层决定解决如何处理。

腾讯云是首家在数据中心中大规模使用 MCA Recovery 技术的云厂商,刚开始进展并不顺利。启用了 MCA Recovery 后,大量的 UCE 错误并没有成功规避。当时服务器 ODM 厂商,Linux 内核对 MCA Recovery 支持并不完善。

针对硬件厂商缺陷导致的规避失败案例,腾讯云开发故障注入工具,作为服务器 BIOS BMC 厂商引入标准。针对故障注入进行长时间压力测试,确保硬件厂商都按照腾讯云的标准完成硬件引入。

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

对于 Linux 内核对 MCA Recovery 的支持,腾讯云也针对性对内核的内存管理模块和 KVM 进行优化。

相关的优化,在腾讯云基于 Intel Skylake 及其以后代次的云服务器上都以全面落地。

除了 Intel,腾讯云还联合 AMD 落地多项内存 RAS 特性,结合其他多项硬件可用性优化措施,提升腾讯云 AMD 云服务器 SA2 实例的可用性。

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

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

支持了 MCA Recovery 等高级 RAS 特性 后,腾讯云当物理服务器出现硬件隐患时,虽然不会宕机,但是已经存在隐患了,需要尽快下线维修。这个时候正在运行的云服务器怎么办?

针对这个问题,腾讯云用热迁移技术来解决,可以把云服务器从一台物理机无感知迁移另一台,当一台物理机存在硬件隐患时,把云服务器迁移到另一台正常的物理机上。因此,通过热迁移技术,腾讯云将云服务器的可用性提升到高于物理机本身的可用性。

 


热迁移示意图

 

在大规模落地时,热迁移的难度体现在两个方面,一个是热迁移的成功率,如果热迁移所以来的服务器负载过高,则热迁移可能失败,为了提高热迁移的成功率,腾讯云使用了包括 RDMA 在内的多个热迁移优化,将热迁移成功率从原来的 70% 提升至 99%;第二个难点在于尽量减少热迁移的停机时间,目前腾讯云可实现在 50 毫秒以内的热迁移停机时间,基本上可以达到无感知的水平。

挑战二:如何降低虚拟化带来的损耗?

第二个挑战是,虚拟化在同一个物理机虚拟多个虚拟机带来灵活性,但同时虚拟化本身会有一些性能损耗,业务希望虚拟化技术要保证性能与物理机相匹配,尽量减少虚拟化的损耗,这也是虚拟化技术面临的很大的挑战。

在降低虚拟化性能损耗上,陈立东以腾讯内部自研上云的过程举例。项目启动不久,微信同事在测试时反馈其中一个模块性能下降超过 30%。为此,腾讯云投入了多个资深开发工程师进行分析,共做了 7 轮优化,最终将 KVM 的虚拟化损耗降低到 5%。

针对 Linux 子机场景,腾讯云也做了一些与 KVM 虚拟化本身结合性的性能优化,对外推出了腾讯的 Linux 的发行版 Tencent Linux,目前已经开源。

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

挑战三:如何提升虚拟化的稳定性?

第三点挑战是在虚拟化后,包括 CPU 和内存都多出一个虚拟化层。业务希望虚拟化需要和物理机一样的稳定性,满足业务对响应延时的极致追求。

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

陈立东提到,Linux 本身的内核度算法是 CFS,但是分析了以后,Linux 本身的 CFS 调度算法并不适合完全满足虚拟化场景的需求,因此腾讯云针对虚拟化场景,自研了一套 Linux 内核的调度的算法,在内部称之为 VMF。这套算法的核心思想要保证虚拟机的任务要优先执行。通过该技术,腾讯云将虚拟化场景下的调度延时做到和物理机持平的稳定性。

挑战四:如何快速交付?

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

早期腾讯云的客户反馈 GPU 机型,购买后启动比较慢,需要等几分钟后才能启动,影响使用体验。虚拟机启动的时候,提前分配并锁住全部的虚拟机内存,而虚拟机内存越大,启动就越慢。这给用户带来非常糟糕的体验,当时也是所有云厂商都存在的一个问题。

在优化前,一台 700G 规格的一个虚拟化启动,在之前启动需要大概 270 秒,优化以后,将其启动时间缩短了 22 秒,大大提升了用户的体验,腾讯云将相关的优化补丁已经贡献到了社区。

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

从腾讯虚拟化技术的演进路线中,可以看到虚拟化技术当前存在的一些技术难点与热点,希望对云计算开发者带来一定的借鉴意义。

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

" 总的来说,要实现把物理资源进行拆分的情况下,尽量减少虚拟化的损耗,这对整个底层的挑战还是非常大的。" 陈立东指出。

分享到:

  86mulu

注册时间:

网站:0 个   小程序:4 个  文章:0 篇

  • 689

    网站

  • 10

    小程序

  • 160

    文章

  • 120

    会员

赶快注册账号,推广您的网站吧!
最新入驻小程序

全民一起来找茬啊小程序2022-10-10

最近羊了个羊火了,开发者团队靠着

运动步数有氧达人2021-07-15

记录运动步数,积累氧气值。还可偷

每日养生app2021-07-15

每日养生,天天健康

体育训练成绩评定2021-07-15

通用课目体育训练成绩评定

好片院线2021-07-15

信毒sir,有好戏,只推荐好看的电

京东购物2021-07-15

京东购物官方小程序,京东买买买更