阿里云虚拟化技术团队张献涛——阿里云虚拟化技术自研之路 阿里云

2020-02-27 930浏览

  • 1.ArchSummit   全球架构师峰会(北京)2014   阿里云虚拟化技术自研之路 阿里云 张献涛(旭卿)
  • 2.自我介绍   •  张献涛,花名旭卿,毕业于武汉大学,获信息安全博士学位。   •  供职于阿里巴巴集团,负责阿里云虚拟化技术团队,主导阿里云下一 代虚拟化架构的设计与研发工作。   •  加入阿里巴巴之前,供职于英特尔亚太研发中心虚拟化部门,有9年 的虚拟化项目经验,先后担任高级工程师、主任工程师、虚拟化架构 师等职位。   •  多个开源虚拟化项目Xen、Linux/KVM的主要贡献者,曾担任Xen项 目子系统的Maintainer,并为KVM虚拟化项目增加了跨平台支持,实 现了KVM在IA64平台的支持,并担任Linux内核KVM/IA64项目的 Maintainer。   •  2011年,研发的HAXM虚拟机加速器为Android系统模拟器插上了飞 翔的翅膀,性能提升数倍,开发效率倍增,惠及数以百万的Android 应用开发人员,并因此获得英特尔最高成就奖(IAA)。     •  在国内外发表虚拟化相关论文多篇以及拥有多项美国专利。 
  • 3.议程   •  阿里云弹性计算服务ECS介绍   •  ECS虚拟化架构及关键技术   –  ECS虚拟化架构   –  硬件虚拟化技术   –  虚拟机热迁移技术   –  Hypervisor  热补丁技术   •  ECS实战案例分享   •  阿里云ECS下一代虚拟化架构设计   •  未来展望   3
  • 4.议程   •  阿里云弹性计算服务ECS介绍   •  ECS虚拟化架构及关键技术   –  ECS虚拟化架构   –  硬件虚拟化技术   –  虚拟机热迁移技术   –  Hypervisor  热补丁技术   •  ECS实战案例分享   •  阿里云ECS下一代虚拟化架构设计   •  未来展望   4
  • 5.ECS产品简介   •  应用程序的基础运行环境   –  ECS(云服务器)是阿里云产品体系中,最基础的计算服务,通常用作应用 程序的运行环境,其最重要的特点是弹性。   –  每个ECS实例上都运行着用户选择的操作系统,一般是某个Linux或 Windows的发行版。用户的应用程序运行在实例的操作系统之上。   •  弹性的伸缩能力   –  ECS的最重要的特点是弹性,支持垂直和水平扩展两种能力。垂直扩展, 可以在几分钟内升级CPU和内存,实时升级带宽;水平扩展,可以在几 分钟内,创建数百个新的实例,完成任务后,可以立刻销毁这些实例   5
  • 6.ECS系统架构图   • 虚拟化支持   • 分布式文件存储   •快  照制作   • 快照回滚   • 自定义image   • 故障迁移   • 在线迁移   • 网络组隔离   • 防ARP欺骗   • 自定义防火墙功能   •支  持防DDos攻击   •提  供流量清洗服务   •动  态升级 
  • 7.议程   •  阿里云弹性计算服务ECS介绍   •  ECS虚拟化架构及关键技术   –  ECS虚拟化架构   –  硬件虚拟化技术   –  虚拟机热迁移技术   –  Hypervisor  热补丁技术   •  ECS实战案例分享   •  阿里云ECS下一代虚拟化架构设计   •  未来展望   7
  • 8.ECS软件系统架构   后羿控制系统 盘古分布式 存储 计算虚拟化 ⽹网络虚拟化 存储虚拟 化 8
  • 9.Userspace  ECS虚拟化底层架构   后羿控制 系统   Dom0 Pync 盘古分布 式系统 Tapdisk2 Libvirt Xend iptables ebtables arptables Blktap2 Blkback Netback HVM Gshell  Agent Ne?ront Blkfront   Kernel Xen  Hypervisor Intel  Hardware    with  VT-­‐x,  ETP,  SR-­‐IOV等
  • 10.ECS虚拟化软件模块   •  Hypervisor  虚拟层(Including  Xen  ,  Xen  Tools,  Xend等)   –  基于成熟的开源软件Xen   –  为优化性能和稳定性,Xen核心代码改动超过100+项   –  为增加系统多样性,基于KVM的其它Hypervisor方案在研   •  Dom0  内核   –  基于Ali  内核分支,独立研发   –  涉及700+多个内核改动   •  高性能前后端通讯技术(PV  Driver)   –  基于开源的PV  Driver进行研发优化   –  优化后的高性能Driver提供更稳定高性能服务,优化项达近20项   –  虚拟化网络驱动最高支持300W+  PPS 
  • 11.ECS虚拟化关键技术   •  硬件虚拟化技术   –  CPU采用硬件虚拟化技术VT-x,  内存采用EPT方式   –  基于硬件虚拟化技术,VM性能可达同规格物理机95%以上   •  热迁移技术   –  底层基于Xen热迁移研发,改动超过20+项   –  独立研发热迁移控制系统   –  优化后的热迁移达到业界领先水平   •  内核Hotfix技术   –  独立研发AliHotfix技术   –  独立研发Hypervisor  Hotfix技术,独具创新型 
  • 12.议程   •  阿里云弹性计算服务ECS介绍   •  ECS虚拟化架构及关键技术   –  ECS虚拟化架构   –  硬件虚拟化技术   –  虚拟机热迁移技术   –  Hypervisor  热补丁技术   •  ECS实战案例分享   •  阿里云ECS下一代虚拟化架构设计   •  未来展望   12
  • 13.Intel®  Virtualization  Technology   •  A  hardware-­‐assisted  virtualizaRon  technology,  named  as  Intel®   VirtualizaRon  Technology,  or  Intel®  VT     –  For  Intel®  64,  VT-­‐x   –  For  directed  I/O,  VT-­‐d   –  For  connecRvity,  VT-­‐c   •  VT-­‐x:A  new  form  of  Intel®  64  CPU  operaRon   –  Provides  mechanisms  for  VMM  soZware  control  of  Intel®  64  CPUs   –  Includes  “hooks”  necessary  for  soZware  control  of  memory  and  I/O  resources   •  VT-­‐d:An  extension  of  chipset  technology  for  directed  I/O   –  DMA  remapping   –  Interrupt  remapping  etc.   •  VT-­‐c:A  collecRon  of  I/O  virtualizaRon  technologies   –  Lower  CPU  uRlizaRon   –  Reduced  system  latency   –  Improved  throughput   ECS全面支持Intel VT技术提升计算性能
  • 14.Intel  VT-x  CPU硬件虚拟化技术   VMX     Non-­‐Root   OperaRon   VM 1 Ring 3 Ring 0 VM 2 Ring 3 Ring 0 … VM n Ring 3 Ring 0 VM Exit VMCS1 VMCS2 VMCSn VMX  Root   OperaRon   VMLAUNCH VMRESUME Ring 3 Ring 0 VMXON VT-x技术让ECS CPU虚拟化效率提升⾄至物理机95%以上
  • 15.Intel  Extended  Page  Tables(EPT)   •  EPT是为内存虚拟化而生   –  降低软件复杂度   –  提高内存虚拟化效率   •  EPT让CPU感知两层页表   –  完全消除内存虚拟化的软件参与   –  客户机页表由硬件直接使用   •  VM自由控制自己页表   –  减少大量的VM  Exit事件   –  减少由于影子页表等机制造成的内 存浪费   –  内存虚拟化逻辑复杂度大大降低   •  CPU  TLB  ‘walks’  Virtual  memory  to  Physical   memory   •  EPT  ‘walks’  Physical  memory  to  Machine   memory   EPT使VM内存访问效率<70%提⾼高⾄至97%以上
  • 16.IO硬件虚拟化技术(SRIOV)   •  One  PF  (Physical  FuncRon)  can  support   mulRple  VF   –  Physical  FuncRon  is  a  normal  PCIe   funcRon  support  SR-­‐IOV  capability   –  Virtual  FuncRon  is  light-­‐weight  PCIe   funcRon  that  can  be  accessed  by  guest   directly   •  Resource  sharing  among  VF  like  ATC,   configuraRon  etc   •  VF  own  non-­‐shared  resource  for   funcRon-­‐specific  service,  like  data   buffer,  working  queue  etc   •  VF  is  discovered  and  configured  by   VMM  before  passing  to  guest   •  ConfiguraRon  to  VF  under  control  of  PF   and  VMM   ECS使用SRIOV技术提供⽹网络硬件级别Qos
  • 17.议程   •  阿里云弹性计算服务ECS介绍   •  ECS虚拟化架构及关键技术   –  ECS虚拟化架构   –  硬件虚拟化技术   –  虚拟机热迁移技术   –  Hypervisor  热补丁技术   •  ECS实战案例分享   •  阿里云ECS下一代虚拟化架构设计   •  未来展望   17
  • 18.ECS的典型业务场景   App   1   OS   VMM HW App   2   OS   CPU  Usage   90%   App   App   3   4   OS   OS   VMM HW CPU  Usage   30%   动态的热点均衡场景 …App   OS   VMM HW App   OS   VMM HW 灾难恢复 18
  • 19.虚拟机热迁移技术   •  热迁移定义   –  在不同物理机之间在线迁移虚拟机实例   –  做到VM内的业务基本无感知   •  热迁移技术应用场景   –  集群内的负载均衡   –  机器硬件故障修复   –  线上系统软件修复   –  过保机器替换   –  绿色计算   –  主动运维   19
  • 20.热迁移面临的技术挑战   •  线上运维标准极高   –  要求VM  Downtime控制在毫秒级   –  网络链接无中断   –  存储无感知   •  线上系统的复杂性   –  镜像多样,机器型号复杂   –  无法在线升级hypervisor,  dom0   –  历史遗留问题较多   •  虚拟化层热迁移不成熟   –  虚拟化层Bug较多   –  Tool  stack层热迁移算法和流程设计不合理   –  Qemu问题也较多   20
  • 21.热迁移面临的技术挑战(续)   •  Guest内核及PV  driver支持不足   –  Debian,  ubuntu等内核问题较多     •  存储层面   –  Pangu分布式存储系统   –  锁争抢   –  Cache刷新   •  网络层面   –  线上网络环境比较复杂   –  各种型号交换机   –  MAC,  ARP   –  SLB,VPC等   21
  • 22.热迁移增强   •  修复虚拟化层面的一系列问题   –  Centos中断风暴问题   –  Windows双鼠标光点问题   –  ubuntu1204  2059年时间漂移问题   –  ubuntu1204  3500次迁移失败一次问题   –  VNC端口绑死问题   –  RDTSC模拟引起的性能问题   –  解除Downtime和VM  内存大小的绑定   •  修复网络层面的多个问题   –  解决了i350网卡问题   –  解决了mac漂移导致的交换机封端口问题   –  解决了某型交换机在迁移场景下的bug   –  解决了vm迁移后fake  arp网络不通问题   –  解除网络Breaktime和VM内存大小的绑定   –  ……   •  存储层面   –  解决了锁争抢问题:  chunksweep,  snapshot   –  解决热迁移vm  downtime过长的问题   22
  • 23.热迁移优化后的指标   •    满足运维的所有条件,达到业界领先水平   –  热迁移导致的VM宕机率  <  3%%   –  VM  Downtime  <  700ms   –  网络链接无中断,网络无响应时间<2S   –  线上机器的可迁移率  >  85%   –  迁移过程中性能波动  <15%   –  和Xenserver等比较,具有较强的优势   •  持续优化手段和目标   –  Multi-threading  传输   –  引入内存压缩算法及算法的场景优化模式   –  进一步降低迁移需要的时间   –  进一步提高迁移成功率   –  增加容错,降低迁移引起的宕机   –  解决异构迁移    23
  • 24.议程   •  阿里云弹性计算服务ECS介绍   •  ECS虚拟化架构及关键技术   –  ECS虚拟化架构   –  硬件虚拟化技术   –  虚拟机热迁移技术   –  Hypervisor  热补丁技术   •  ECS实战案例分享   •  阿里云ECS下一代虚拟化架构设计   •  未来展望   24
  • 25.ECS  Hotfix  技术   •  系统Hotfix对业务运维的意义   –  软件系统存在Bug在所难免   –  宕机修复引起业务中断   –  在云环境中,物理机重启影响面更广   •  系统Hotfix的目标   –  用户无感知修复,一切尽在不言中   –  无需宕机,增强系统的可用性   •  ECS  Hotfix技术分类   –  Xen  Dom0  内核  Hotfix技术   –  Xen  Hypervisor  Hotfix技术   –  客户机内核的Hotfix技术     Ho?ix技术是规模化业务运维立命之本 25
  • 26.Xen  Dom0  内核Hotfix技术   •  业界较成熟的内核Hotfix方案   –  Ksplice  by  Oracle     –  Kgraft  by  Novell   –  Kpatch  by  Redhat   •  采用自主研发的AliHotfix技术   –  修复Dom0内核Bug   –  修复PV  驱动Bug   –  修复系统安全漏洞   26
  • 27.Xen  Dom0  内核Hotfix技术   •  AliHotfix技术原理   –  基于函数动态替换技术   –  新函数会以模块内函数的形式链接入内核   –  旧函数的第一个指令改成强制跳转指令指向新函数   –  在替换过程中需要暂停所有CPU,切到一个内核线程并关闭本地中断。   –  刷新指令缓存,重新让CPU恢复执行   •  Hotfix过程中需要注意的点   –  修复NMI处理函数是不安全的   –  修复的函数正在内核栈上,修复过程是不安全的   –  新函数绝对不能调用旧函数,否则无穷递归   –  Inline函数不能被直接修复,需要修复调用者   •  Dom0  Hotifx  案例   –  FPU  Hotfix,  netback  hotfix,eflags  hotfix   –  ..........   27
  • 28.Xen  Hypervisor  Hotfix   •  Hypervisor  Hotfix需求   –  Xen  安全漏洞: http://xenbits.xen.org/xsa/  –  Xen功能性Bug   •  Hypervisor  Hotfix挑战极大   –  Xen  Hypervisor  逻辑复杂   –  Xen  是type-1  Hypervisor,  不允许Dom0访问Hypervisor内存   –  线上系统无法新增Hotfix接口   •  Hypervisor  Hotfix  是史无前例的工作   –  仅仅是理论上可行的一种方法,无成功先例   –  如何解决从Dom0  访问  Hypervisor内存   –  如何精确定位Hypervisor  function  物理地址   –  如何精确替换有问题的代码段和数据段   28
  • 29.Host  Mode Guest  Mode 如何解决Hypervisor  的内存访问?   Dom0 HVM  Domain DomU   内存 Kernel Kernel Xen  Hypervisor 系 统 Dom0   内 内存 存 Xen内存 Xen  Hypervisor  安全架构   •  Dom0无法通过CPU访问Xen  hypervisor内存   •  Dom0可通过设备DMA方式访问  Xen  hypervisor  内存   Dom0 CPU 设备
  • 30.如何计算  Hotfix代码/数据的地址?   •  Hypervisor  load过程   –  Hypervisor首先会被Load到低端地址   –  Hypervisor会把自己Relocate到高端地址   –  Hypervisor  高端地址的计算由系统的E820表决定   •  Hypervisor  Hotfix  物理地址计算公式   –  假设需要fix的Hypervisor  函数  地址为0xffff82c480104818  (VA)   –  Hotfix点在Hypervisor内核实际偏移则为  PA’=VA  &  0xffffff   –  如果E820最后一个内存项为   •  BIOS-e820: pa_start  –  pa_end  (usable)   –  则要Hotfix函数的物理地址为:   •  PA=  pa_start  (2M  align)  +    PA’   30
  • 31.如何通过DMA访问Hypervisor内存?   •  如何构造DMA请求   –  不能随意构造不存在的DMA请求   –  需要截获一个正常DMA请求,修改DMA的目的地址,以及要写入的数据   –  选取哪个硬件设备,  网卡  ?硬盘?其它?   •  截获DMA请求的方法   –  DMA请求的内存管理来自于两个函数   •  dma_map_sg_attrs/dma_unmap_sg_attrs   –  利用Alihotfix  替换内核的这两个函数   –  在新的map_sg/unmap_sg中加入过滤逻辑   –  筛选出特定的DMA请求,修改DMA目的地址   利用硬盘DMA请求Hotfi゙x Hypervisor 内存 31
  • 32.Hypervisor  Hotfix  方案实现   •   内核态层面   –  Hotfix  xen_pci_swiotlb_mag_sg/xen_pci_swiotlb_unmap_sg   –  截获所有的DMA  请求的内存分配操作   •  用户态层面   –  准备新的二进制代码段或数据段,把需要hotfix的代码和数据存入文件   –  准备一应用程序,用于读写数据文件触发DMA操作,读数据文件,并提供一 buffer   •  用户态和内核态交互   –  生成一misc  device  节点  /dev/hotfix   –  把需要hotfix的物理地址PA,数据长度,以及用户态  buffer的地址传入内核   –  内核接受用户态参数后,动态监控是否用户态  buffer加入到sg  list中   –  一旦在sg  list中发现用户态传过来的buffer。动态修改dma物理地址和dma  数据 长度(来自用户态)   –  然后继续  DMA操作,通过这种方式把用户态数据文件中准备的数据动态填充到 Xen  hypervisor内存中   关键路径需要暂停所有VM并做cache fl゚ush操作
  • 33.正常的文件读操作流程     用户态分配内存buffer准备读⽂文件 用户态发起read系统调用 内核态把buffer挂⼊入map_sg_list 内核态调用驱动接⼝口触发DMA操作 内存 33
  • 34.Hotfix  Hypervisor流程   用户态分配内存buffer准备读⽂文件 用户态把buffer地址以及hotfi゙x信息传⼊入内核 用户态发起read系统调用 内核态把buffer挂⼊入map_sg_list 过滤DMA请求,修改DMA目的地址 内核态调用驱动接⼝口触发DMA操作 Hypervisor 内存 内存 34
  • 35.议程   •  阿里云弹性计算服务ECS介绍   •  ECS虚拟化架构及关键技术   –  ECS虚拟化架构   –  硬件虚拟化技术   –  虚拟机热迁移技术   –  Hypervisor  热补丁技术   •  ECS实战案例分享   •  阿里云ECS下一代虚拟化架构设计   •  未来展望   35
  • 36.实战案例一   ECS  VM  热迁移   36
  • 37.优化前的热迁移流程   源端 目的端 建立Socket连接 建立Socket连接 打开内存Log dirty 发送VM内存 迭代发送脏页 创建VM 接受并恢复 VM内存 VM Suspend 最后⼀一轮发送脏页 发送VM Context 发送Qemu Context VM 销毁 接收并恢复内 存及VM /Qemu Context 非常耗时 关闭Socket VM Resume Transfer Mac Arp Mac⼴广播 总迁移时间 VM  DownRme 网络无响应时间 37
  • 38.优化后的VM迁移流程   源端 目的端 建立Socket连接 建立Socket连接 打开内存Log dirty 发送VM内存 迭代发送脏页 创建VM 接受并恢复 VM内存 VM Suspend Transfer Mac 最后⼀一轮发送脏页 发送VM Context 发送Qemu Context 关闭Socket Arp Mac⼴广播 接收并恢复内 存及VM /Qemu Context VM Resume 总迁移时间 VM Downtime = ⽹网络⽆无响应时间 VM 销毁 VM downtime和⽹网络⽆无响应时间⼤大⼤大降低 38
  • 39.实战案例二   XSA-108事件   39
  • 40.问题根源   •  KVM  引入了客户机x2apic  支持   –  增强APIC访问的效率   –  Patch来自KVM  maintainer   –  MSR寄存器组的边界计算错误   –  KVM代码进行了出错处理,因此 幸免   •  Xen  移植了KVM  的Patch   –  Xen无相关的错误处理,造成安 全漏洞   –  每个vCPU就造成4个页面泄露   –  黑客可以通过重复启动VM,获 得几乎所有的hypervisor内存   ……. …….x2apic:MSR(0x808)TPR 0xfee00000 Registers  in  APIC  page PA=0xfee00000+  (MSR_index  -­‐0x800)  *0x10 造成了虚拟机逃逸事件 40
  • 41.如何修复?   •  方法1:打补丁后重启机器   –  友商们的方法   •  方法2:Hypervisor  Hotfix   –  阿里云研发的Hypervisor  Hotfix方案   41
  • 42.议程   •  阿里云弹性计算服务ECS介绍   •  ECS虚拟化架构及关键技术   –  ECS虚拟化架构   –  硬件虚拟化技术   –  虚拟机热迁移技术   –  Hypervisor  热补丁技术   •  ECS实战案例分享   •  阿里云ECS下一代虚拟化架构设计   •  未来展望   42
  • 43.ECS下一代虚拟化架构   后羿控制系统 盘古分布式 存储 Xen     Hypervisor KVM   Hypervisor Docker Other     Hypervisors 43
  • 44.基于KVM  Hypervisor  架构实现   后羿控制系统 Pync Libvirt 盘古   客户端   Qemu     VirRo   backend   VM VirRo   Frontend Qos Linux  Kernel vhost-­‐net KVM Libvswitch HW        CPU,    VT-­‐x      with  SSD  disks   运维   工具
  • 45.基于KVM  Hypervisor  架构实现   •  设计特点   –  所有组件都支持热升级,升级过程用户无感知   •  实现非常具有挑战性   •  KVM  Hypervisor,Qemu,vhost-net,前后端驱动,盘古 客户端   –  网络提供基于SRIOV的技术的Qos功能   •  计算、存储网络流量隔离,消除系统性能抖动   –  高速热迁移支持   •  VM  Downtime降至毫秒级   •  利用内存实时压缩算法,降低迁移时间   •  网络无响应时间缩短到1s以内   研发迭代速度快,对Bug和安全漏洞彻底免疫 45
  • 46.议程   •  阿里云弹性计算服务ECS介绍   •  ECS虚拟化架构及关键技术   –  ECS虚拟化架构   –  硬件虚拟化技术   –  虚拟机热迁移技术   –  Hypervisor  热补丁技术   •  ECS实战案例分享   •  阿里云ECS下一代虚拟化架构设计   •  未来展望   46
  • 47.未来工作展望   •  ECS虚拟化核心技术研发方向   –  持续优化热点迁移技术   –  GPU虚拟化支持   –  LXC/cgroup/Docker支持   –  CPU  热插拔技术   –  内存热插拔技术   –  VM  fork  技术   –  全部组件的热升级技术   –  优化NUMA支持,获得更好的系统性能   •  提供更加富有弹性的计算服务   –  结合ESS服务,提供计算资源的动态伸缩   •  我们一直在奋斗。。。   47
  • 48.Q&A   We are Hiring!!!Email:xiantao.zxt@alibaba-­‐inc.com