新闻中心

    新闻中心  >  云集技术学社 | 深信服aSV服务器虚拟化功能及原理
    云集技术学社 | 深信服aSV服务器虚拟化功能及原理
    背景图 2021-11-26 00:00:00

    10月14日,深信服云计算专家Leijian在信服云《云集技术学社》系列直播课上进行了《深信服aSV服务器虚拟化功能及原理》的分享,介绍了服务器虚拟化的基本原理和深信服aSV服务器虚拟化特色技术。以下是他的分享内容摘要。

    看点一 服务器虚拟化的发展

    从上世纪60年代开始,服务器虚拟化经历了60多年的发展,也有着十分明显的代际变化。

    第一代是基于二进制翻译的全虚拟化,它的典型应用是早期的VMware Workstation。核心是通过二进制发育的方式实现虚拟机的复用。

    第二代是半虚拟化,它的典型应用是Xen,通过修改操作系统内核,替换掉不能虚拟化的指令,通过超级调用(Hypercall)直接和底层的虚拟化层Hypervisor来通讯,Hypervisor同时也提供了超级调用接口来满足其他关键内核操作,比如内存管理、中断和时间保持。这种做法省去了全虚拟化中的捕获和模拟,大大提高了效率。

    第三代是硬件辅助虚拟化,核心是在裸金属上安装VMware,在上面跑GuestOS指令。有别于上两代的是,它不用修改任何的GuestOS指令,可以直接运行。

    看点二 服务器虚拟化基本原理

    Qemu-KVM基本原理介绍

    深信服目前应用的硬件辅助虚拟化是基于Qemu-KVM实现的。

    KVM是内核的一个驱动(kvm.ko),工作在内核态(CPU Ring0),实际上是Linux内核一个标准组件。KVM内核模块收到该请求后,它先做一些准备工作,比如将vCPU上下文加载到VMCS(Virtual Machine Control Structure)等,然后驱动CPU进入VMX Non-Root模式,开始执行客户机代码。

    Qemu是一个应用程序,工作在用户态(User mode、CPU Ring3),提供外设的模拟、vCPU模拟、主控逻辑、IO收发等,当GuestOS需要发送IO请求、需要发送网络包的时候,都需要调用VM_Exit让Qemu协助实现。它能够支持CPU和memory超分、半虚拟化I/O、热插拔、对称多处理、实时迁移、PCI设备直接分配和单根I/O虚拟化、内核同页合并、NUMA等多项功能。使用Qemu的云厂商在这些功能配置上都是类似的。

    使用Qemu-KVM有三种运行模式:

    第一种是客户模式(Guest Ring0~3),可以简单理解成客户机操作系统运行在的模式,它本身又分为自己的内核模式和用户模式(CPU工作在VMX Non-Root Operation)。

    第二种是用户模式(User Ring3),为用户提供虚拟机管理的用户空间工具以及代表用户执行I/O,Qemu运行在这个模式之下(CPU工作在VMX Root Operation)。

    第三种内核模式(System Ring0),模拟CPU以及内存,实现客户模式的切换,处理从客户模式的退出,KVM内核模块运行在这个模式下(CPU工作在VMX Root Operation)。

    Virtio(aTool)和全虚介绍

    Virtio半虚:实际上是在Qemu和虚拟机之间设置一个共享内存Vring,当有数据需要发送的时候,把数据拷贝到共享内存Vring中,然后调用一次VM_Exit退出到Qemu中,Qemu再把这个Vring的数一次性全部发出(注意:如果虚拟机此时在快速发包,有可能Vring中已经缓存了多个包,从而更进一步减少了VM_Exit)。这样可以减少VM_Exit的次数,从而大大提高性能(可以理解成在GuestOS和Qemu之间开了个后门)。

    Virtio半虚拟可以获得很好的I/O性能,比纯软件模拟高于4倍多,其性能几乎可以达到和Native(即非虚拟化环境中的原生系统)差不多的I/O性能。所以,在使用KVM之时,如果宿主机内核和客户机都支持Virtio的情况下,一般推荐使用Virtio达到更好的性能。

     

    IO全虚拟:以磁盘或者网络为例,当虚拟机有数据需要发送的时候,需要通过Qemu模拟所有的硬件寄存器,虚拟机OS把这些数据填充到模拟的硬件中,然后访问设置这些寄存器,触发VM_Exit退出,Qemu接收到这些数据,再把这些数据真实的写入到磁盘、发送到网卡。这个过程发送一个数据包,可能要多次设置寄存器,导致多次退出,从而性能较差。

    超配原理以及限制介绍

    虚拟机在Hypervisor看来,就是一个配置文件+vDisk文件(配置文件会注明磁盘大小、CPU、内存数量、型号等等基础信息,这些信息会在虚拟机启动的时候,传递到虚拟机启动参数),而每个vDISK实际上在Hypervisor看来就是一个文件。

    KVM的vDISK有两种格式:RAW和QCOW2格式。RAW格式性能更高些,但相比QCOW2,RAW不支持快照、精简分配等特性,故而深信服采用的是QCOW2格式。

    对于QCOW2文件,有三种模式:精简分配、动态分配(需要底层存储支持空洞文件)、预分配模式。其中“预分配”性能最好,接近于RAW格式的性能,“精简分配”性能最差,“动态分配”居中(注意:目前超融合中动态分配已接近于预分配性能、aSAN有优化)。

    对于精简分配和动态分配,假设实际上是配置文件写分配2TB,但实际QCOW2文件占用可能很小(实际大小取决于真实数据),因而可以超配,即配置的虚拟机总磁盘大小,大于实际物理主机的磁盘大小。

    物理主机虚拟内存包含物理内存(内存条,高速)+SWAP(硬盘分区、龟速);物理内存不够时,系统会根据配置使用SWAP分区(深信服超融合在平台上默认设置“尽量不用SWAP”的策略)。vMEM超配本质是假设给虚拟机分配32G内存,虚拟机实际占用只了24G,理论上8G(32G-24G=8G)是可以回收的,这回收的部分理论上可以给其他虚拟机用。此时,就需要用到KSM(没有安装aTool的生效)或者气泡内存技术(安装了aTool的生效)。但内存超配可能会造成系统物理内存耗尽,导致系统卡顿的情况。因此,在核心系统上,要控制超分内存的比率,或者不要超配。

    每个运行中的虚拟机在Hypervisor看来,就是一个系统进程,而vCPU是该进程的一个线程。同一时刻,每个vCPU线程最多占用一个物理CPU的逻辑核,且多个vCPU之间的同步、调度会消耗额外的资源(因此,当单个虚拟机的vcpu数量超过物理主机的逻辑核时,实际上会让虚拟机的性能反而变低)。

    无论vCPU数量配置多大,总的物理主机CPU资源是恒定的,因而:

    (1)单个虚拟机最大的配置不要超过物理CPU的核心数量;

    (2)主机上运行所有虚拟机的总vCPU数量不能太多,否则调度消耗会增大。生产环境最佳实践为不超过CPU的逻辑核心的2倍,主要参考真实生产中物理CPU占用一般不超过20%;超配2倍以后,物理CPU占用40%左右,超配要考虑峰值预留,且物理CPU占用超过50%以上,已经比较繁忙了。

    热迁移基本原理介绍

    热迁移分为两种形式,一种是共享存储热迁移,此种热迁移形式,需要虚拟机镜像在共享存储上,此种迁移类型,只需要通过网络发送客户机的vCPU执行状态、内存中的内容、虚机设备的状态到目的主机上。另一种是跨主机跨存储热迁移,与跨主机不跨存储热迁移类似。不同的是其需要在目的存储创建相同配置的虚拟机镜像(空白的,没有数据),之后仍然是在目的宿主机上启动目的端Qemu进程,目的端Qemu镜像打开新创建的镜像文件。另外还需要传送源端虚拟机的磁盘数据到目的端。

    看点三 深信服aSV服务器虚拟化特色技术 

    虚拟机快速备份

    通过快速的无代理磁盘备份保护您的数据,使用增量备份减少备份所需空间,降低备份成本。它能够实现无需备份软件和备份服务器,实现增量的备份,快速备份比普通基于快照备份性能提升60%,且备份完成后,性能无损失。另外还能提供手工备份和定时备份功能,保证虚拟机文件的数据安全。与快照备份性能相比,深信服虚拟机快速备份在备份过程中性能影响小,备份后不影响性能。

    CDP技术

    CDP技术实现依赖于HCI自带的“备份技术”+“IO分流技术”。虚拟机同时开启业务(Qemu)和CDP功能(cdp_worker),并为该虚拟机开辟一块共享内存作为主业务和CDP模块的共享缓存区。CDP模块(cdp_worker)可直接向Qemu下发备份指令,指示QCOW2镜像进行备份动作,形成全备和增备BP。首次开启CDP功能,需要进行一次全备生成BP基准点,后续根据设置的定期备份频率(小时级)定期生成BP点。BP点以备份文件的形式存在CDP数据存储区。CDP采用旁路架构+IO分流技术,经过共享缓存区,实现从主业务异步复制IO到CDP日志存储区(io仓库),以IO日志的形式存在;根据设置的IO日志间隔时间(RPO=1s/5s),定期生成RP点,单独利用RP并不能够恢复数据,所有的RP均依赖于对应的BP。相较于传统CDP,搭载HCI的CDP技术有着更高的容错能力和虚拟机兼容性。 

    容灾技术

    深信服采用“本地备份-异地容灾”的方案,本地提供秒级的持续数据保护方案,当虚拟机出现故障时,可以快速从本地的保护数据中恢复整台虚拟机;异地提供不同RPO(1秒、10秒、10分钟、30分钟、1小时、2小时、4小时、8小时、12小时、1天、2天、一周)的虚拟机级容灾功能,主、备站点皆为深信服的企业云平台。

    基于AI的调度优化技术

    当一台物理主机上运行多台虚拟机的时候,虚拟机之间必然会有资源的竞争,包括CPU、内存、Cache、TLB、QPI等资源竞争。传统的虚拟化优化技术无法知道资源的供需关系。传统虚拟化优化技术无资源感知能力,如CPU级资源竞争,内存带宽竞争;无协同优化能力,如计算,存储与网络的协同优化;无业务感知能力,重要核心虚拟机依然会受到其他虚拟机的资源竞争。而深信服基于AI的性能优化引擎,拥有业务感知能力通过AI引擎识别当前业务场景的核心资源需求和业务场景的资源瓶颈。AI引擎基于业务的历史资源标签建立性能优化模型。自适应的性能优化架构能够根据业务的资源标签推荐最优的资源配置并根据业务的资源标签推荐最优的调度策略。

    还想了解更多云计算知识?请锁定云集技术学社,大咖云集为你分享更多云计算领域干货与实践经验。