hypervisor

Xen Project hypervisor
Hyper-V虚拟机的物理设备直通(Discrete Device Assignment, DDA)与显卡直通实践
Kernel Virtual Machine https://www.linux-kvm.org/page/Main_Page
https://planet.virt-tools.org/ Blogging about open source virtualization

模拟

平台虚拟化

操作系统虚拟化

hypervisor

image-20200727105448883
早期的虚拟化模型被称为Type 1,或者叫本地虚拟化(native virtualization),这种模型下hypervisor直接运行在硬件之上,在hypervisor上面是虚拟机
主机虚拟化(hosted virtualization)模式,被称为Type 2,hypervisor运行在操作系统之上,在同一平台上允许两个或更多的操作系统共存

闭源的 VMware ESXi 还是开源的 KVM

Nutanix 的 AHV(基于 KVM),同样支持 VMware 虚拟化计算平台

VMware 的 vSphere(基于 ESXi)

SmartX 的 Elf(基于 KVM),同样支持 VMware 虚拟化计算平台

KVM 作为开源的 Hypervisor 被很多厂商选用,但各家需要实现自己的虚拟化计算管理平台,除了基本的 VM 生命周期管理,还至少需要实现企业级常用的功能,如:VM HA、、虚拟分布式交换机、共享盘等

硬件虚拟化 或者叫做平台虚拟化

硬件虚拟化:完全虚拟化( full-virtualization)和半虚拟化(para-virtualization)

image-20200727142740272

Citrix的Xen

可以同时执行Type1和Type2型hypervisor,Amazon的EC2就采用Xen来进行服务器的虚拟化。

KVM

hypervisor是Linux Kernel Virtual Machine(KVM),支持本地虚拟化和主机虚拟化模型。

KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko.

KVM是通过夹在内核模块可以对Linux内核进行小的修改,从而变成一个全特性的hypervisor。KVM通过应用virtio可以支持半虚拟化,在Guest系统中包括用于半虚拟化的标准Linux驱动。

KVM is open source software. The kernel component of KVM is included in mainline Linux, as of 2.6.20. The userspace component of KVM is included in mainline QEMU, as of 1.3.

KVM也是第一个完全集成在主线内核(mainline kernel)的hypervisor,由Rad Hat开发。

无论是完全虚拟化还是半虚拟化,都应用了硬件协助虚拟化(hardware-assisted virtualization)。新的AMD和英特尔CPU都集成了优化hypervisor的指令集,来增强Guest虚拟机的I/O性能。

操作系统虚拟化

操作系统虚拟化是另外一个重要的虚拟化技术,正如其名,是对操作系统本身进行虚拟化,而不是平台。在这种方式下,操作系统提供一组用户空间(User-Space userland)彼此隔离,而应用被限制在每个用户空间里面,就好像一个独立的主机。这种形式的虚拟化在虚拟主机环境中非常流行,让多个独立的用户可以共享一个操作系统。

image-20200727143126481

操作系统虚拟化依赖于可以创建和隔离用户空间(或者叫做容器或者私有虚拟服务器)的Linux内核,OS虚拟化最大的好处在于几乎没有任何开销,因为用户只是简单的共享OS和主机,而不需要通过虚拟机。而缺点在于目前我们采用的OS虚拟化解决方案缺乏灵活性,不能在任意的操作系统上实施,用户共享主机和操作系统还需要注意版本。

Linux包含很多的操作系统解决方案,具有很高的可配置性。比如OpenVZ、Linux-VServer和FreeVPS是其中三个最流行的,均支持CPU、内存网络、I/O和存储配额配置,OpenVZ还支持主机之间的在线VPSes迁移。

Linux 模拟器

Linux中最流行的两个模拟器(emulator)包括QEMU和Bochs(处理器和平台模拟器)

QEMU通过动态编码转换的模拟方式,让内核和内部用户代码可以被加速。另外,QEMU是一个很好的嵌入式平台开发工具,可以为与主机相异的CPU开发和测试代码。QEMU还可以被用来其他虚拟化解决方案来进行设备模拟

Refer: