虚拟化

什么是Hypervisor?

定义

A hypervisor is the software layer that creates and runs virtual machines, allocating physical CPU, memory and IO between them. A type-1 hypervisor runs directly on the hardware; KVM is unusual in being a type-1 hypervisor implemented as a Linux kernel module, which lets it use the whole Linux driver ecosystem.

为什么Hypervisor很重要

1 型虚拟机监控程序直接运行在硬件上;KVM 的特殊之处在于它是以 Linux 内核模块形式实现的 1 型虚拟机监控程序,这使其可以使用整个 Linux 驱动程序生态系统。

Hypervisor的实际应用

当你在 KVM 虚拟机管理程序上运行服务器时,你需要关注实际硬件分配:vCPU、内存、磁盘 I/O。你可以从面板调整这些参数,通常添加内存无需重启即可热插拔。如果过度分配宿主机资源,邻居的高负载工作负载会抢占你实例的 CPU 或 I/O,使配置完善的客户机变得迟缓。嵌套虚拟化意味着你可以在虚拟机管理程序内部再运行一个虚拟机管理程序,方便测试,但会牺牲性能,也可能干扰你自己的资源统计。

人们对Hypervisor常见的误解

常见的错误是把虚拟机监控程序当作容器边界。它不是。虚拟机监控程序提供的是完整的虚拟机、独立的内核、独立的 /proc,没有共享命名空间。人们以为邻居的进程不可见,或者自定义内核不可能实现,然后就会遇到限制。更正:使用 KVM,你获得真正的隔离和控制,因此可以启动手工打造的镜像或运行嵌套虚拟化,这些是容器无法做到的。

Hypervisor —— 常见问题

类型 1 虚拟机监控程序是什么意思?

类型 1 虚拟机监控程序直接运行在宿主机硬件上,而不是在操作系统之上。KVM 的特殊之处在于,它是作为 Linux 内核模块实现的类型 1 虚拟机监控程序,因此可以利用整个 Linux 驱动生态系统来管理硬件。这样既拥有裸机虚拟化的性能,又具备 Linux 的灵活性。

KVM 与 OpenVZ 等容器有何不同?

KVM 提供真正的虚拟化:每个客户机都有自己的内核、自己的 /proc,且没有共享命名空间,因此你拥有完整 root 权限,可以运行自定义内核。容器共享宿主内核和命名空间,限制了你能做的事情。使用 KVM,你获得隔离和控制,包括运行嵌套虚拟化或启动自定义 ISO 的能力。

Hypervisor在哪些地方出现

更多来自虚拟化

KVM
KVM 是内置于 Linux 内核的完全硬件虚拟化技术,每个客户机都有自己的内核,并通过硬件强制与其他租户隔离。
OpenVZ
OpenVZ 是基于容器的虚拟化技术,每个实例共享主机内核,因此客户机无法加载内核模块或运行不同的操作系统。
LXC
LXC 是 Linux 原生的容器化技术,通过命名空间和 cgroups 隔离进程,同时共享主机内核。
嵌套虚拟化
嵌套虚拟化允许虚拟机自身运行虚拟机,通过将处理器虚拟化扩展暴露给客户机来实现。
vCPU
vCPU是呈现给客户机的虚拟处理器,由物理核心或线程上的调度时间提供支持。
cloud-init
cloud-init是使用平台提供的元数据在首次启动时配置虚拟机的标准机制。