cpu 虚拟化
内存虚拟化
VMM 内存虚拟化的实现
- 软件方式:通过软件实现内存地址的翻译,比如 Shadow page table (影子页表)技术
- 硬件实现:基于 CPU 的辅助虚拟化功能,比如 AMD 的 NPT 和 Intel 的 EPT 技术
IO 虚拟化
-
全虚拟化
:宿主机截获客户机对I/O设备的访问请求,然后通过软件模拟真实的硬件。这种方式对客户机而言非常透明,无需考虑底层硬件的情况,不需要修改操作系统。 -
半虚拟化
:通过前端驱动/后端驱动模拟实现I/O虚拟化。客户机中的驱动程序为前端,宿主机提供的与客户机通信的驱动程序为后端。前端驱动将客户机的请求通过与宿主机间的特殊通信机制发送给后端驱动,后端驱动在处理完请求后再发送给物理驱动。 -
IO透传
:直接把物理设备分配给虚拟机使用,这种方式需要硬件平台具备I/O透传技术,例如Intel VT-d技术。它能获得近乎本地的性能,并且CPU开销不高。 -
存储虚拟化
开源项目
项目 | 秒睡 |
---|---|
kvm | KVM (全称是 Kernel-based Virtual Machine) 是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块 kvm.ko 提供和虚拟化核心架构和处理器规范模块。使用 KVM 可允许多个包括 Linux 和 Windows 每个虚拟机有私有的硬件,包括网卡、磁盘以及图形适配卡等。 |
xen | Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发。它打算在单个计算机上运行多达 100 个满特征的操作系统。操作系统必须进行显式地修改(“移植”)以在 Xen 上运行(但是提供对用户应用的兼容性)。这使得 Xen 无需特殊硬件支持,就能达到高性能的虚拟化。 |
openvz | OpenVZ 是基于 Linux 内核和作业系统的操作系统级虚拟化技术。OpenVZ 允许物理服务器运行多个操作系统,被称虚拟专用服务器(VPS,Virtual Private Server)或虚拟环境(VE, Virtual Environment)。与 VMware 这种虚拟机和 Xen 这种半虚拟化技 术相比,OpenVZ 的 host OS 和 guest OS 都必需是 Linux(虽然在不同的虚拟环境里可以用不同的 Linux 发行版)。但是,OpenVZ 声称这样做有性能上的优势。根据 OpenVZ 网站的 说法,使用 OpenVZ 与使用独立的服务器相比,性能只会有 1-3%的损失。OpenVZ 是 SWsoft, Inc.公司开发的专有软件 Virtuozzo 的基础。OpenVZ 的授权为 GPLv2。OpenVZ 由两部分组成,一个经修改过的操作系统核心与及用户工具。 |
virtualbox | VirtualBox 是一款功能强大的 x86 虚拟机软件,它不仅具有丰富的特色,而且性能也很优异。更可喜的是,VirtualBox 于数日前走向开源,成为了一个发布在 GPL 许可之下的自由软件。 |
Lguest | Lguest 是由IBM工程师 Rusty Russell(澳大利亚开发者)发起的虚拟化项目,是一个只有 5000 行代码的精简 hypervisor(虚拟机管理程序),它已经包括在最近版本的内核里了。和 KVM 相似,它支持 Intel 和AMD芯片的最新虚拟化技术。但又与 VMware 公司的 ESX Server 不同,在 Lguest 创建的虚拟机里的操作系统知道自己是被虚拟出来的。所以在调用 CPU 周期时它可以直接向真正的硬件发出请求,而不是作为中间媒介而降低了效率,因此这种架构大大提高了效率。Lguest 采用 GPL 授权。 |
refers:
https://xie.infoq.cn/article/2f7e467799c34a46ec929cfe3