• 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. 虚拟化支持 分布式文件存储 快照制作 快照回滚 自定义image 故障迁移 在线迁移 网络组隔离 防ARP欺骗 自定义防火墙功能 支持防DDos攻击 提供流量清洗服务 动态升级ECS系统架构图
  • 7. 议程阿里云弹性计算服务ECS介绍 ECS虚拟化架构及关键技术 ECS虚拟化架构 硬件虚拟化技术 虚拟机热迁移技术 Hypervisor 热补丁技术 ECS实战案例分享 阿里云ECS下一代虚拟化架构设计 未来展望7
  • 8. ECS软件系统架构8后羿控制系统基于Xen/KVM虚拟化的Linux集群计算虚拟化存储虚拟化网络虚拟化盘古分布式存储硬件平台
  • 9. ECS虚拟化底层架构Intel Hardware with VT-x, ETP, SR-IOV等Xen HypervisorNetfrontBlkfrontNetbackBlkbackBlktap2Tapdisk2盘古分布式系统Dom0HVMiptablesebtablesarptablesXendLibvirtPync后羿控制系统Gshell AgentUserspaceKernel
  • 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 TechnologyA hardware-assisted virtualization technology, named as Intel® Virtualization Technology, or Intel® VT For Intel® 64, VT-x For directed I/O, VT-d For connectivity, VT-c VT-x: A new form of Intel® 64 CPU operation Provides mechanisms for VMM software control of Intel® 64 CPUs Includes “hooks” necessary for software 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 collection of I/O virtualization technologies Lower CPU utilization Reduced system latency Improved throughputECS全面支持Intel VT技术提升计算性能
  • 14. Intel VT-x CPU硬件虚拟化技术Ring 0Ring 3VMX Root OperationVMX Non-Root OperationRing 0Ring 3VM 1Ring 0Ring 3VM 2Ring 0Ring 3VM nVMXONVMLAUNCHVMRESUMEVM ExitVMCS2VMCSnVMCS1VT-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 memoryEPT使VM内存访问效率<70%提高至97%以上
  • 16. IO硬件虚拟化技术(SRIOV)One PF (Physical Function) can support multiple VF Physical Function is a normal PCIe function support SR-IOV capability Virtual Function is light-weight PCIe function that can be accessed by guest directly Resource sharing among VF like ATC, configuration etc VF own non-shared resource for function-specific service, like data buffer, working queue etc VF is discovered and configured by VMM before passing to guest Configuration to VF under control of PF and VMM ECS使用SRIOV技术提供网络硬件级别Qos
  • 17. 议程阿里云弹性计算服务ECS介绍 ECS虚拟化架构及关键技术 ECS虚拟化架构 硬件虚拟化技术 虚拟机热迁移技术 Hypervisor 热补丁技术 ECS实战案例分享 阿里云ECS下一代虚拟化架构设计 未来展望17
  • 18. ECS的典型业务场景18HWVMMHW VMMOSApp 1OSApp 2OSApp 3OSApp 4CPU Usage30%CPU Usage90%CPU UsageCPU UsageHWVMMHWVMMOSApp…OSApp动态的热点均衡场景灾难恢复
  • 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. 热迁移优化后的指标23满足运维的所有条件,达到业界领先水平 热迁移导致的VM宕机率 < 3%% VM Downtime < 700ms 网络链接无中断,网络无响应时间<2S 线上机器的可迁移率 > 85% 迁移过程中性能波动 <15% 和Xenserver等比较,具有较强的优势 持续优化手段和目标 Multi-threading 传输 引入内存压缩算法及算法的场景优化模式 进一步降低迁移需要的时间 进一步提高迁移成功率 增加容错,降低迁移引起的宕机 解决异构迁移
  • 24. 议程阿里云弹性计算服务ECS介绍 ECS虚拟化架构及关键技术 ECS虚拟化架构 硬件虚拟化技术 虚拟机热迁移技术 Hypervisor 热补丁技术 ECS实战案例分享 阿里云ECS下一代虚拟化架构设计 未来展望24
  • 25. ECS Hotfix 技术系统Hotfix对业务运维的意义 软件系统存在Bug在所难免 宕机修复引起业务中断 在云环境中,物理机重启影响面更广 系统Hotfix的目标 用户无感知修复,一切尽在不言中 无需宕机,增强系统的可用性 ECS Hotfix技术分类 Xen Dom0 内核 Hotfix技术 Xen Hypervisor Hotfix技术 客户机内核的Hotfix技术 25Hotfix技术是规模化业务运维立命之本
  • 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 HotfixHypervisor 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. Xen Hypervisor 安全架构Dom0 内存Xen内存DomU 内存CPU设备Dom0iommu=offDom0无法通过CPU访问Xen hypervisor内存 Dom0可通过设备DMA方式访问 Xen hypervisor 内存Xen HypervisorDom0HVM DomainKernelKernelGuest ModeHost Mode系统内存如何解决Hypervisor 的内存访问?
  • 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目的地址 31利用硬盘DMA请求Hotfix Hypervisor 内存
  • 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 flush操作
  • 33. 正常的文件读操作流程 33用户态分配内存buffer准备读文件用户态发起read系统调用内存内核态把buffer挂入map_sg_list内核态调用驱动接口触发DMA操作
  • 34. Hotfix Hypervisor流程34用户态分配内存buffer准备读文件用户态发起read系统调用内存内核态把buffer挂入map_sg_list内核态调用驱动接口触发DMA操作Hypervisor 内存过滤DMA请求,修改DMA目的地址用户态把buffer地址以及hotfix信息传入内核
  • 35. 议程阿里云弹性计算服务ECS介绍 ECS虚拟化架构及关键技术 ECS虚拟化架构 硬件虚拟化技术 虚拟机热迁移技术 Hypervisor 热补丁技术 ECS实战案例分享 阿里云ECS下一代虚拟化架构设计 未来展望35
  • 36. 实战案例一36ECS VM 热迁移
  • 37. Arp Mac广播优化前的热迁移流程37源端目的端建立Socket连接打开内存Log dirty发送VM内存迭代发送脏页VM Suspend最后一轮发送脏页发送VM Context发送Qemu Context关闭Socket创建VM接受并恢复 VM内存接收并恢复内存及VM /Qemu ContextVM Resume建立Socket连接总迁移时间VM DowntimeTransfer Mac网络无响应时间VM 销毁VM 销毁非常耗时Transfer MacArp Mac广播
  • 38. 优化后的VM迁移流程38建立Socket连接打开内存Log dirty发送VM内存迭代发送脏页VM Suspend最后一轮发送脏页发送VM Context发送Qemu Context关闭Socket创建VM接受并恢复 VM内存接收并恢复内存及VM /Qemu ContextVM Resume建立Socket连接总迁移时间VM Downtime = 网络无响应时间VM 销毁Transfer MacArp Mac广播源端目的端VM downtime和网络无响应时间大大降低
  • 39. 39实战案例二XSA-108事件
  • 40. 友商EC2重启公告40XSA-108引起的大规模机器重启
  • 41. XSA-108严重影响基于Xen的公有云安全 客户机可以访问大量的Hypervisor内存页 拥有读写权限 泄露大量的内存页面,包含Hypervisor关键信息 并可能导致Xen Crash 一个字符引发的血案 0x3ff ->0xff 攻击成本较低 只需要用rdmsr/wrmsr指令在客户机内读写即可41
  • 42. 问题根源KVM 引入了客户机x2apic 支持 增强APIC访问的效率 Patch来自KVM maintainer MSR寄存器组的边界计算错误 KVM代码进行了出错处理,因此幸免 Xen 移植了KVM 的Patch Xen无相关的错误处理,造成安全漏洞 每个vCPU就造成4个页面泄露 黑客可以通过重复启动VM,获得几乎所有的hypervisor内存 42TPR…….…….0xfee00000xapic:0xfee00080x2apic:MSR(0x808)PA=0xfee00000+ (MSR_index -0x800) *0x10Registers in APIC page造成了虚拟机逃逸事件
  • 43. 如何修复?方法1:打补丁后重启机器 友商们的方法 方法2:Hypervisor Hotfix 阿里云研发的Hypervisor Hotfix方案43
  • 44. 议程阿里云弹性计算服务ECS介绍 ECS虚拟化架构及关键技术 ECS虚拟化架构 硬件虚拟化技术 虚拟机热迁移技术 Hypervisor 热补丁技术 ECS实战案例分享 阿里云ECS下一代虚拟化架构设计 未来展望44
  • 45. ECS下一代虚拟化架构45后羿控制系统Xen HypervisorKVM HypervisorDockerOther Hypervisors盘古分布式存储
  • 46. 基于KVM Hypervisor 架构实现HW CPU, VT-x with SSD disks Linux KernelKVMQemu Virtio backend LibvswitchVMVirtio FrontendLibvirtvhost-net盘古 客户端Pync后羿控制系统运维 工具Qos
  • 47. 基于KVM Hypervisor 架构实现设计特点 所有组件都支持热升级,升级过程用户无感知 实现非常具有挑战性 KVM Hypervisor,Qemu,vhost-net,前后端驱动,盘古客户端 网络提供基于SRIOV的技术的Qos功能 计算、存储网络流量隔离,消除系统性能抖动 高速热迁移支持 VM Downtime降至毫秒级 利用内存实时压缩算法,降低迁移时间 网络无响应时间缩短到1s以内 47研发迭代速度快,对Bug和安全漏洞彻底免疫
  • 48. 议程阿里云弹性计算服务ECS介绍 ECS虚拟化架构及关键技术 ECS虚拟化架构 硬件虚拟化技术 虚拟机热迁移技术 Hypervisor 热补丁技术 ECS实战案例分享 阿里云ECS下一代虚拟化架构设计 未来展望48
  • 49. 未来工作展望ECS虚拟化核心技术研发方向 持续优化热点迁移技术 GPU虚拟化支持 LXC/cgroup/Docker支持 CPU 热插拔技术 内存热插拔技术 VM fork 技术 全部组件的热升级技术 优化NUMA支持,获得更好的系统性能 提供更加富有弹性的计算服务 结合ESS服务,提供计算资源的动态伸缩 我们一直在奋斗。。。 49
  • 50. Q&AWe are Hiring!!! Email: xiantao.zxt@alibaba-inc.com
  • 51. ECS在阿里云中的位置Linux 集群资源管理 (伏羲)安全管理 (钟馗)远程过程调用(夸父)分布协同服务(女娲)(大禹)集群布署(神农)集群监控分布式文件系统(盘古)任务调度(伏羲)云服务引擎 ACE弹性计算服务 ECS关系型数 据库服务 RDS开放数据 处理服务 ODPS