前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cloud Pilot 2. Google Cloud Platform 服务器虚拟化架构(上)

Cloud Pilot 2. Google Cloud Platform 服务器虚拟化架构(上)

作者头像
s09g
发布2022-07-06 15:49:57
1.7K0
发布2022-07-06 15:49:57
举报
文章被收录于专栏:s09g的技术博客

虚拟化其实是一个过于宽泛的概念,但是一般大家默认这个术语指的是虚拟机相关技术。

VMware vSphere虚拟化架构

首先还是拿个友商出来做对照。当初是在大四毕业的暑假到研究生的第一年期间考的VCP和VCAP,vSphere的版本还在6.5/6.7,放在今天多少有点过气。但我还是打算把VMware拎出来,看看VMware vSphere虚拟化架构。

VMware vSphere的主要产品有两个:ESXi和vCenter Server。

ESXi 是VMware自家的hypervisor,是在虚拟机和物理资源之间的一个抽象层。Type-1 hypervisor直接运行在物理硬件上,比如VMware的ESXi,微软的Hyper-V,开源的Xen和KVM。Type-2 hypervisor需要运行在虚拟机上,比如Oracle的VirtualBox, VMware的workstation。

所有的VM都是运行在hypervisor上的。VM有两个关键部分:VM Files(虚拟机文件)和Live State(虚拟机的实时状态)。Live State包含了vm在内存中的当前状态以及虚拟硬件的状态。比如vm写入文件时,将发送SCSI命令,这些命令被ESXi主机拦截并传递给storage adapter。VM Files包含了vm的配置文件,比如vm运行在哪台主机上,拥有多少vCPU。

而vCenter Server作为管理平台。运维一般会用Windows Server做AD和DNS,别的物理机通过远程管理卡安装ESXi,然后用vCenter Server做集中管理。存储可以利用iSCSI搭建IP SAN,或者FC SAN,或者VMware家的vSAN。网络层面VMware在vSphere 4.0开始推出了vDS(virtual distributed switch),也允许使用第三方交换机比如Cisco Nexus 1000V。

AWS & Google Cloud虚拟化架构

Hypervisor层面Google Cloud用的是修改后的KVM。AWS早期使用的是Xen,17年之后也转向KVM。Azure使用的是Windows Hyper-V。

同为KVM,Google Cloud和AWS也有不同。2017年,AWS发布了Nitro system,其中Nitro hypervisor走了offload路线。offload是指将一部分依赖内核的操作交给专门的物理设备来做,绕过CPU。这样一来减少了额外开销,提高了效率。一般比较常见的是网卡offload,hypervisor层面的offload确实是很有创新性。Nitro hypervisor跑在专门的Nitro Cards上,仅启动速度一项,AWS就比Google Cloud快出40%。AWS re:Invent 2017的演讲《C5 实例和 Amazon EC2 虚拟化的演变 (CMP332)》包含了更详细的内容 https://youtu.be/LabltEXk0VQ

然而没过多久,Google Cloud就反超了AWS,将虚拟机的启动时间压缩到0.5s。根据Google的论文,Google Cloud使用Borg管理VM,同时修改了KVM,重新实现了VMM,代号叫做vanadium。根据Evan Anderson在StackOverflow的帖子,这种技术选择有两个原因:1.是KVM与Google已有的隔离/扩展程序相兼容。2.是Google在Linux内核上有着长期的投资,KVM相关人才储备充足。原帖位置:https://stackoverflow.com/a/23699164

云厂商的虚拟化架构有多个技术方向,Google Cloud并非没有尝试实现hypervisor层面的offload,然而相比于已有的KVM人才储备,选择新的技术方向需要大量前期投入,所以最终被放弃。对比Azure选择的Hyper-v,AWS的Nitro System,Google Cloud的定制化KVM,目前看来区别不大,最后影响技术选择的取决于公司已有的技术储备,说白了技术也有路径依赖。

Serverless

为了追求比0.6s更快的启动速度,并且在云计算市场上对抗容器和Kubernetes等新概念(AWS希望把大家的注意力从容器转回到虚拟机的方向,以保持自己的优势地位),2018年AWS推出了microVM产品Firecracker。MicroVM的最初目的是为了解决容器安全性的问题,意图提供完整而独立的虚拟机环境来运行程序,实现完全隔离。NEC lab在SOSP 2017 Kernels Session上发表了《My VM is Lighter (and Safer) than your Container》(http://cnp.neclab.eu/projects/lightvm/lightvm.pdf),该论文的研究其实落后于当时的业内实践,唯一的创新性可能在于该论文是基于Xen架构的。这篇论文真正有用的地方是系统性的阐述了容器在隔离性上的取舍,和为什么lightVM可以作为一个轻量且安全的方向。而论文本身的价值其实不高,因为早在2014年谷歌就发布过一个叫做no vm的Go项目,15年Intel发布了Clear Container, HyperHQ发布了runV(17年这二者合并成了Kata Container)。

Firecracker是来自于crosvm(Google为ChromeOS实现的Virtual Machine Monitor,使用Rust编写 https://chromium.googlesource.com/chromiumos/platform/crosvm/ )的一个分支,并且进行了裁剪,没有BIOS和PCI,不支持任何graphics / accelerators / hardware passthrough / legacy devices,只保留网络设备(virtio net),IO设备(virtio block),KVM时钟(timer),串口控制台和重置按钮,从而大幅度降低冷启动时间。根据AWS的博客,Firecracker启动时间小于125ms,内存消耗小于5MB,一分钟内可以启动4000个实例。

2020年,AWS发表了Firecracker的相关论文《Firecracker: Lightweight Virtualization for Serverless Applications》(https://assets.amazon.science/96/c6/302e527240a3b1f86c86c3e8fc3d/firecracker-lightweight-virtualization-for-serverless-applications.pdf )。实际上这篇论文并没有揭露更多有效信息,作为从业人员和竞争对手(比如GCP和Azure),在AWS发布Firecracker之后的几天之内就已经摸清楚了相关技术信息。尤其是这东西并没有啥技术上的创新(相比于Google的vanadium)。个人觉得比较有意思的点在于这篇论文透露了一些AWS Lambda的使用情况。Firecracker的动机在于之前的Lambda基于单虚拟机,作为一款Serverless产品居然亏损严重。使用了Firecracker之后AWS可以10倍超售(测试环境下20倍都没有问题)。

作为AWS Lambda的同类产品,Google Cloud Functions 并没有走MicroVM路线,而是在 Cloud Next '18上发布了gVisor隔离方案。gVisor的理念来自AppArmor, Seccomp BPF和SELinux。MicroVM的解决方案无论如何都要启动一个kernel,对于Google来说,嵌套一层VM意味着性能下降。gVisor用Go编写,实现了一个独立的user space kernel,隔离了Linux kernel。

gVisor能够达到150ms的启动时间和~15MB的内存消耗。考虑到这东西使用了Go来实现,依然能获得这种性能,确实有点东西。gVisor同样提供两层isolation,演讲现场还演示了一下gVisor对抗Dirty Cow和Meltdown漏洞。

最重要的是gVisor额外提供了runsc作为runC的替代,兼容OCI,在kubernetes生态下比Firecracker更有优势。具体细节可以看Cloud Next演讲Sandboxing your containers with gVisor 视频地址:https://youtu.be/kxUZ4lVFuVo

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 s09g的技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • VMware vSphere虚拟化架构
  • AWS & Google Cloud虚拟化架构
  • Serverless
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档