什么是基于内核的虚拟机 (KVM)?
KVM 的原理是什么?
KVM 将 Linux 转变为 1 类(裸机)虚拟机监控程序。所有虚拟机监控程序都需要一些操作系统层面的组件才能运行虚拟机,如内存管理器、进程调度程序、输入/输出(I/O)堆栈、设备驱动程序、安全管理器以及网络堆栈等。由于 KVM 是 Linux 内核的一部分,因此它包含了所有这些组件。每个虚拟机都像常规 Linux 进程一样实施,由标准的 Linux 调度程序进行调度,并且使用专门的虚拟硬件,如网卡、图形适配器、CPU、内存和磁盘等。
如何实施 KVM?
长话短说,您必须运行 2007 年以后发布的 Linux 版本,并且需要将它安装到支持虚拟化功能的 X86 硬件上。如果同时满足上述两个条件,那么您只需加载 2 个现有的模块(主机内核模块和处理器相关模块)、一个模拟器,以及任何能帮助您运行其他系统的驱动程序。
但是,在受支持的 Linux 发行版(如红帽企业 Linux)上实现 KVM 可以扩展 KVM 的功能,从而使您可以在客户机之间交换资源、共享通用库、优化系统性能等等。
迁移到基于 KVM 的虚拟基础架构
在受合同制约的平台上构建虚拟基础架构,可能会限制您对源代码的访问。这意味着您的 IT 开发可能会沦为"姑息疗法",而不是充满生机的创新工作,而合同的约束,也可能会妨碍您对云、容器和自动化的投资。迁移到基于 KVM 的虚拟化平台,您就可以检查、修改和完善虚拟机监控程序背后的源代码。而且,这里面不牵涉企业许可协议,因为没有要保护的源代码。它完全属于您。
KVM 的功能是什么?
KVM 是 Linux 的一部分。Linux 也是 KVM 的一部分。Linux 有的,KVM 全都有。然而,KVM 的某些特点让它成为了企业的首选虚拟机监控程序。
安全防护
KVM 利用安全增强型 Linux(SELinux)和安全虚拟化(sVirt)组合来加强虚拟机的安全性和隔离性。SELinux 在虚拟机周围建立安全边界。sVirt 则扩展 SELinux 的功能,使强制访问控制 (MAC)安全机制应用到客户虚拟机,并且预防手动标记错误。
存储空间
KVM 能够使用 Linux 支持的任何存储,包括某些本地磁盘和网络附加存储(NAS)。还可以利用多路径 I/O 来增强存储并提供冗余能力。KVM 还支持共享文件系统,因此虚拟机镜像可以由多个主机共享。磁盘镜像支持精简置备,可以按需分配存储,不必预先备妥一切。
硬件支持
KVM 可以使用多种多样的认证 Linux 兼容硬件平台。由于硬件供应商经常助力内核开发,所以 Linux 内核中通常能快速采用最新的硬件功能。
内存管理
KVM 继承了 Linux 的内存管理功能,包括非统一内存访问和内核同页合并。虚拟机的内存可以交换,也可通过大型宗卷支持来提高性能,还可由磁盘文件共享或支持。
实时迁移
KVM 支持实时迁移,也就是能够在物理主机之间移动运行中的虚拟机,而不会造成服务中断。虚拟机保持开机状态,网络连接保持活跃,各个应用也会在虚拟机重新定位期间正常运行。KVM 也会保存虚拟机的当前状态,从而存储下来供日后恢复。
性能和可扩展性
KVM 继承了 Linux 的性能,针对客户机和请求数量的增长进行扩展,满足负载的需求。KVM 可让要求最苛刻的应用工作负载实现虚拟化,而这也是许多企业虚拟化设置的基础,如数据中心和私有云等(通过 OpenStack®)。
调度和资源控制
在 KVM 模型中,虚拟机是一种 Linux 进程,由内核进行调度和管理。通过 Linux 调度程序,可对分配给 Linux 进程的资源进行精细的控制,并且保障特定进程的服务质量。在 KVM 中,这包括完全公平的调度程序、控制组、网络命名空间和实时扩展。
更低延迟,更高优先级
Linux 内核提供实时扩展,允许基于虚拟机的应用以更低的延迟、更高的优先级来运行(相对于裸机恢复)。内核也将需要长时间计算的进程划分为更小的组件,再进行相应的调度和处理。
KVM 和红帽
我们非常信赖 KVM,它是我们所有虚拟化产品的唯一虚拟机监控程序。同时,我们也不断向 KVM 社区做出贡献,致力改进内核代码。不过,因为 KVM 是 Linux 的一个组成部分,所以它已包含在红帽企业 Linux。