6.虚拟化历史
文章目录
- 6. 虚拟化历史
- 6.1. 虚拟化概念
- 6.1.1. 什么是虚拟化
- 6.1.2. 虚拟化中的重要概念
- 6.2. 虚拟化历史
- 6.3. Xen 和 kvm 区别
- Xen虚拟化简介
- KVM虚拟化简介
- Xen vs KVM
- 6.4. Hypervisor(VMM)分类
- 6.5. 虚拟化技术分类
- 虚拟化的类型
6. 虚拟化历史
6.1. 虚拟化概念
6.1.1. 什么是虚拟化
虚拟化(Virtualization)的含义很广泛。将任何一种形式的资源抽象成另一种形式的技术都是虚拟化,是资源的一种逻辑表示。解除了物理硬件和操作系统之间的紧耦合关系。
- 虚拟化是云计算的基础。简单地说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的CPU、内存、IO硬件资源,但逻辑上虚拟机之间是相互隔离的。
- 在计算机方面,虚拟化一般指通过对计算机物理资源的抽象,提供一个或多个操作环境,实现资源的模拟、隔离或共享等。本质上,虚拟化就是对硬件资源的一种抽象与模拟。
- 通过空间上的分割、时间上的分时以及模拟,虚拟化可将一份资源抽象成多份,亦可将多份资源抽象成一份。
6.1.2. 虚拟化中的重要概念
- Guest OS 虚拟机操作系统
- Guest Machine 虚拟机
- Hypervisor 虚拟化软件层/虚拟机监控机(Virtual Machine Monitor,VMM)
- Host OS 运行在物理机之上的OS
- Host Machine 物理机
6.2. 虚拟化历史
- 1964年,IBM就在自己的大型机上去尝试虚拟化
- 1972年,IBM推出实现了大型机上的虚拟机
- 1993年,IBM推出可升级的POWER并行系统,这是第一款采用RS/6000技术,基于微处理器的超级计算机。
- 1998年,著名的x86仿真模拟器Bochs发布。
- 1998年,VMware成立,1999年推出了可以流畅运行的商业虚拟化软件VMware Workstation。从此虚拟化技术终于走下了大型机的神坛。
- 1999年,IBM在AS/400上第一次提出了LPAR(Logical Partition,逻辑分区)虚拟化技术。
- 2000年,Citrix(思杰)桌面虚拟化产品发布。
- 2002年,Xen正式开源
- 2004年,IBM发布了虚拟化解决方案APV(Advanced Power Virtualization),支持资源共享。该方案在2008年改名为PowerVM。
- 2005年,Xen 3.0.0发布,该版本可以在32位服务器上运行,是第一个支持Intel VT-x的虚拟机监控程序。
- 2006年,以色列的创业公司Qumranet在完成了虚拟化Hypervisor基本功能、动态迁移以及主要的性能优化之后,正式对外宣布了KVM(Kernel-based Virtual Machine,基于内核的虚拟机)的诞生。
- 2006-至今,云计算与大数据时代。
- 2007年,德国InnoTek公司开发了VirtualBox虚拟化软件,后被美国甲骨文Oracle。
- 2008年,Linux Container(LXC)发布0.1.0版本,可以提供轻量级的虚拟化。
- 2010年,红帽发布RHEL 6.0,这个版本将默认安装的Xen虚拟化机制彻底去除,仅提供KVM虚拟化机制。红帽在6.0加入Xen虚拟化,5.4版本xen和kvm虚拟化并行。
- 2013年,Docker推出
- 2015年,Kubernetes v1.0发布,进入云原生时代。
6.3. Xen 和 kvm 区别
Xen虚拟化简介
Xen的Hypervisor是服务器经过BIOS启动之后载入的首个程序,然后启动一个具有特定权限的虚拟机,称之为Domain 0(简称Dom0)。Dom0的操作系统可以是Linux或Unix,Domain 0实现对Hypervisor控制和管理功能。在所承载的虚拟机中,Dom0是唯一可以直接访问物理硬件(如存储和网卡)的虚拟机,它通过本身加载的物理驱动,为其它虚拟机(Domain U,简称DomU)提供访问存储和网卡的桥梁。
KVM虚拟化简介
- KVM(Kernel-based Virtual Machine)是基于内核的虚拟机。
- KVM本质是Linux内核中的虚拟化功能模块kvm.ko,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。
- KVM是开源软件,于2007年2月被集成到Linux 2.6.20内核中。
- KVM中,虚拟机其实就是一个Linux进程,由CPU进行调度运行。
- KVM运行在内核空间,提供CPU、内存的虚拟化,它本身不执行任何模拟。运行在用户空间的QEMU提供硬件I/O的虚拟化模拟。
Xen vs KVM
- Xen平台架构侧重安全性:为保证安全性,各Domain对共享区域的访问和映射必须通过Hypervisor授权。
- KVM平台架构侧重性能:VM之间以及与Host Kernel之间对共享区域的访问和映射无需Hypervisor进行授权,故整个访问路径较短。使用Linux Baremetal内核,无PVOPS性能损耗。
6.4. Hypervisor(VMM)分类
Hypervisor 虚拟化软件层/虚拟机监控机(Virtual Machine Monitor,VMM)
裸金属型/宿主型
**裸金属型:**直接运行在硬件设备上。
直接安装在物理服务器上,VMM os在物理硬件上运行
**宿主型:**运行在具有虚拟化功能的操作系统上。
物理硬件上安装运行的操作系统,通过虚拟化软件(充当VMM)
6.5. 虚拟化技术分类
虚拟化的类型
分类 | 说明 |
---|---|
全虚拟化 | 使用VMM实现CPU、内存、设备I/O的虚拟化,而Guest OS和计算机系统硬件都不需要进行修改。该方式兼容性好,但会给处理器带来额外开销。 |
半虚拟化 | 使用VMM实现CPU和内存虚拟化,设备I/O虚拟化由Guest OS实现。需要修改 Guest OS,使其能够与VMM协同工作。该方式兼容性差,但性能较好。 |
硬件辅助虚拟化 | 借助硬件(主要是处理器)的支持来实现高效的全虚拟化。该方式不需要修改Guest OS,兼容性好。该技术将逐渐消除软件虚拟化技术之间的差别,成为未来的发展趋势。 |
二进制翻译技术VMware率先实现的,本质就是通过VMM来回翻译,里面的虚拟机永远不知道自己是个虚拟机,所以Binary Translation(BT)性能可能不是很好。
BT就是一个软件实现的完全虚拟化。
意味着早期(xen)半虚拟化只支持 linux (开源),而不支持windows。
硬件辅助虚拟化:直接在cpu底层修改cpu架构,cpu会直接捕获那些出现漏洞的指令集,通过cpu硬件辅助执行,效率非常高。Vmware 安装 64位操作系统,如果未开启vt-x或amd-v cpu辅助虚拟化,那么是无法创建的。因为考虑性能问题,必须开启。
报错了。bios未开启虚拟化。解决:进入bios,找到cpu配置选项,virtualization on (开启)
注意:半虚拟化是早期xen的解决方案,但是有了cpu硬件辅助虚拟化之后,xen虚拟化也通过cpu硬件辅助虚拟化,可以实现完全虚拟化。
所以现在的XEN:靠自己支持半虚,靠cpu支持全虚。
二进制翻译和cpu硬件辅助:完全虚拟化(软件完全虚拟化/硬件辅助完全虚拟化)
Xen:早期半虚拟化代表
全虚:特权和敏感指令集都是由VMM来传递,来回传递翻译,效率低。不知道自己的身份。
半虚:guest os 明确自己的身份,修改内核,要求系统必须开源,指令无需中间虚拟化的封装解码操作,速度相对比较快。性能好一些。
硬件辅助:修改cpu底层架构,cpu直接捕获敏感指令进行执行,硬件执行效率最高(现在计算机默认使用的模式)不知道自己是虚拟机。(硬件辅助 特权指令由cpu直接捕获)
统必须开源,指令无需中间虚拟化的封装解码操作,速度相对比较快。性能好一些。
- 硬件辅助:修改cpu底层架构,cpu直接捕获敏感指令进行执行,硬件执行效率最高(现在计算机默认使用的模式)不知道自己是虚拟机。(硬件辅助 特权指令由cpu直接捕获)