【Linux】KVM简单介绍
KVM
1 是什么
KVM(Kernel-based Virtual Machine)是一种开源的全虚拟化解决方案,它允许你在运行 Linux 操作系统的物理主机上创建和运行多个隔离的虚拟环境,这些虚拟环境被称为虚拟机。
简单来说,KVM 可以把一台物理服务器变成多台虚拟服务器,每台虚拟机都可以运行自己的操作系统(如 Linux、Windows 等)和应用程序,就像独立的物理机器一样。
2 特点
-
集成于 Linux 内核:
- KVM 本身是一个 Linux 内核模块。这意味着它直接构建在 Linux 内核中,利用了内核本身的内存管理、调度、设备模型等基础设施,从而提供了高性能和稳定性。
-
硬件辅助虚拟化:
- KVM 需要 CPU 支持硬件虚拟化技术(如 Intel VT-x 或 AMD-V)。它利用这些 CPU 特性直接在硬件层面上执行虚拟机的大部分指令,大大提高了虚拟化的效率和性能。这是 KVM 高性能的关键。
-
类型 1 管理程序(Hypervisor):
- 由于 KVM 是内核的一部分,它使得 Linux 内核本身充当了管理程序的角色。从架构上看,KVM 通常被归类为类型 1 管理程序(裸机管理程序),因为它直接运行在硬件之上。然而,启动时你首先启动的是 Linux 操作系统,然后 KVM 模块加载后,该 Linux 内核就成为了 Hypervisor。
3 与其他工具的联合使用
- QEMU 作为设备模拟器:
- KVM 本身负责处理 CPU 和内存的虚拟化(硬件加速部分)。
- QEMU 是一个通用的开源机器模拟器和虚拟化器。在 KVM 的上下文中,QEMU 负责模拟虚拟机的硬件设备(如磁盘、网卡、显卡、USB 控制器等),并处理 I/O 请求。通常我们说“使用 KVM 虚拟化”时,实际指的是 KVM + QEMU 的组合。
- QEMU 可以将 CPU 指令的执行任务卸载给 KVM 模块(利用硬件加速),而自己专注于设备模拟和管理。
设备模拟器:
设备模拟器是一种软件工具,用于在虚拟环境中模拟真实硬件设备的行为和特性。它允许开发者在没有实际物理设备的情况下进行测试和开发,主要功能包括:
硬件行为模拟:如处理器指令集、内存管理、I/O操作等
外围设备模拟:包括显示屏、键盘、传感器等虚拟组件
网络通信模拟:支持各种网络协议和连接方式的仿真
- 管理工具:
- Libvirt: 一个管理虚拟化平台的工具包和 API 守护进程(
libvirtd
),为各种虚拟化技术(包括 KVM)提供统一的接口。它是管理 KVM 最常用、最强大的方式。 - Virsh: 基于 Libvirt 的命令行工具,用于管理虚拟机(创建、启动、停止、监控等)。
- Virt-Manager: 基于 Libvirt 的图形化管理工具。
- Cloud Platforms: OpenStack, oVirt/RHEV 等云管理平台通常使用 KVM 作为底层的虚拟化引擎。
- Libvirt: 一个管理虚拟化平台的工具包和 API 守护进程(
4 主要优势
- 高性能和低开销: 得益于硬件辅助虚拟化和内核集成,KVM 虚拟机的性能非常接近物理机。
- 开源免费: 作为 Linux 内核的一部分和开源软件,KVM 本身是免费的,避免了高昂的许可费用。
- 安全性: 受益于 Linux 内核的安全特性和隔离机制。
- 可扩展性: 能够支持大量虚拟机和用户。
- 成熟稳定: 被广泛采用,是 Linux 生态中主流的虚拟化技术。
- 与 Linux 生态集成: 完美融入 Linux 工具链和管理方式(如 Libvirt, Virsh, Virt-Manager)。
- 支持多种客户机操作系统: Linux, Windows, BSD 等。
5 应用场景
- 服务器虚拟化/整合: 在单台物理服务器上运行多个应用服务器、数据库服务器等,提高硬件利用率。
- 云计算基础架构: 是 OpenStack, Amazon Web Services, Google Cloud Platform 等主流公有云和私有云平台广泛使用的底层虚拟化技术。
- 开发和测试: 快速创建隔离的测试环境,测试不同操作系统或软件配置。
- 桌面虚拟化: 在 Linux 桌面环境下运行其他操作系统(如 Windows 应用程序)。
- 灾难恢复和高可用性: 虚拟机可以更容易地在物理主机之间迁移。
6 总结
KVM 是 Linux 内核内置的一个高性能、开源的硬件辅助虚拟化模块。它利用 CPU 的虚拟化扩展,结合 QEMU 的设备模拟能力,使 Linux 操作系统能够作为 Hypervisor 运行多个隔离的虚拟机。凭借其性能、成本效益和与 Linux 生态的深度集成,KVM 已成为企业级虚拟化和云计算基础设施的基石技术之一。