服务器虚拟化技术演进
欢迎关注我的公众号睿Talk
,获取我最新的文章:
一、前言
服务器虚拟化技术是云计算的基石,在最大化利用硬件资源的同时,又降低了使用成本,让系统具备弹性伸缩能力,促使现代系统的架构出现了革命性的变化。无论是微服务架构还是服务网格架构,都是在服务器虚拟化技术日渐成熟后才得以大规模使用。本文主要介绍 CPU 虚拟化技术的演进过程,以英特尔的 x86 平台为主,为掌握云计算相关知识打好基础。
二、CPU 保护环
为了提升系统的安全性,避免恶意操作,CPU 厂商设计了一种分级保护的机制。以 x86 芯片为例,就分为 Ring 0 到 Ring 3 几个级别。
Ring 0 拥有最高特权,可以和硬件直接交互,操作系统就是跑在 Ring 0。而应用软件一般跑在 Ring 3 上,当需要调用特权指令(如写内存)的时候,就会触发一个软中断,操作系统捕获到后再去做相应的操作,操作完再将控制权交还给应用。
保护环暂且聊到这里,下面还会讲这种设计存在的一些问题,请继续往下看。
三、CPU 虚拟化技术的演进
服务器虚拟化最早在 19 世纪 60 年代就提出了,当时的机器都是单线程的,一台机只能跑一个程序,很浪费硬件资源。于是就有人研究在一台物理机上跑多个操作系统,这样就能跑多个程序了。但后来由于操作系统的改进,出现了多进程和多线程技术,于是虚拟化技术就被暂时搁置了。
到了 1998 年,随着二进制翻译技术的成熟,在一台机器上跑不同的操作系统已经不成问题。二进制翻译技术简称BT,是一种直接翻译可执行二进制程序的技术,能够把一种处理器上的二进制程序翻译到另外一种处理器上执行。二进制翻译技术将机器代码从源机器平台映射(翻译)至目标机器平台,包括指令语义与硬件资源的映射,使源机器平台上的代码“适应”目标平台。最早作出尝试的是VMware
,实现原理见下图:
操作系统和 VMM (Virtual Machine Monitor)跑在 Ring 0 上,虚拟化的 OS 跑在 Ring 1 上。当虚拟化 OS 需要跑内核指令的时候,就会触发软中断,VMM 捕获后就会进行必要的翻译和执行操作。但x86架构有一类特殊的指令,称为敏感指令,它既能执行特权操作,又无法被 Ring 0 捕获,导致虚拟机无法正确的执行这些指令。
为了解决这个问题,前后发展出 3 种方案:
- 二进制翻译(Binary Translation)
- 超虚拟化(Para Virtualization)
- 硬件辅助虚拟化(Hardware Assistance)
二进制翻译原理就是 VMM 动态的扫描虚拟操作系统的内核,一旦发现不能被捕获的敏感指令,就将其替换为一条或多条的特权指令,这样就能保证指令的正确执行。典型的代表是VMware
的第一代虚拟桌面。这种技术有一个致命的弱点,就是能明显的感觉到虚拟机会卡顿,因为动态扫描和替换指令是一种很耗资源的操作。
超虚拟化技术就能很好的解决二进制翻译的问题。它的原理是提前修改安装在虚拟机上的操作系统,将敏感指令替换掉,这样所有的特权指令都能被 VMM 捕捉到了,典型的代表是第一代的Xen
。但这又带来另一个问题,就是安装的操作系统必须是内核被修改过的系统,不能随意安装任意的系统。
英特尔慢慢意识到自己芯片存在的问题,于是改良了芯片设计,在 CPU 保护环中新增了 Ring -1 层。VMM 跑在 Ring -1 层后,所有的指令都能被捕捉了,而且还新增了一些专门用于虚拟化的指令,这就是 VT-X 技术。最早使用这一技术的KVM
公司,在成功商业化后就被英特尔收购了。随后英特尔宣告将KVM
技术开源,造福整个产业。
CPU 的虚拟化是服务器虚拟化的关键技术,但如内存和网卡等其它硬件的虚拟化技术也不容忽视,在这方面QEME
公司就做得很好。于是KVM
和QEMU
的组合就奠定了服务器虚拟化的基石。
四、Hypervisor 类型
虚拟化层,也就是上文提到的 VMM,现在一般会命名为 Hypervisor。Hypervisor 有 2 种类型:
- Type 1,裸金属(Bare Mental)
- Type 2,基于操作系统
Type 1 的 Hypervisor 不依赖操作系统,直接安装在硬件之上,典型的代表是Xen
和KVM
。
Type 2 的 Hypervisor 安装在特定的操作系统之上,像跑应用一样的启动和操作虚拟机,典型的代表是Oracle VirtualBox
和VMware Workstation
。
总结
本文介绍了 CPU 虚拟化技术的演进过程,从二进制翻译、超虚拟化再到终极的解决方案硬件辅助虚拟化。虚拟化技术的不断演进,为云计算的工业化铺平了道路。在后面的文章中,我还会继续介绍云计算的相关知识,敬请期待。
睿Talk
Web前端主题切换的几种方案
Dickens赞 8阅读 7.5k
浙江省体育局上线“体育大脑” 蚂蚁数科提供技术支持
蚂蚁技术赞 1阅读 419
Light 技术公益创造营 评选规则
思否编辑部阅读 1.2k
中国开源云联盟 2022 年度评选名单公布!
思否编辑部阅读 1.1k
VMware Fusion 12.2.5 OEM BIOS Version
sysin阅读 1.1k
KubeSphere 开源社区 2022 年度回顾与致谢
KubeSphere阅读 725
从云计算到天空计算(一)
Datenlord阅读 717
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。