OpenStack 本身不是一个虚拟化技术,而是一个云操作系统,它的核心作用是管理和编排计算、存储、网络等资源,为用户提供一个按需分配、可扩展的私有云或公有云平台。

在这些被管理的资源中,计算资源(虚拟机)的创建和管理是 OpenStack 最核心的功能之一,而这个功能正是通过其虚拟化组件来实现的。
核心概念:OpenStack 与虚拟化的关系
可以这样理解:
- 虚拟化技术:是底层技术,负责在一台物理服务器(宿主机 Host)上创建和运行多个相互隔离的虚拟机(Guest VM),常见的虚拟化技术有 KVM, VMware vSphere, Xen, Hyper-V 等,它们是“引擎”。
- OpenStack (Nova 组件):是上层的管理器,它接收用户的请求(创建一台 2核4G 的 Ubuntu 虚拟机”),然后选择一个合适的物理主机,并调用该主机上安装的虚拟化技术(如 KVM)来创建虚拟机,它是“指挥官”。
OpenStack 的虚拟化能力主要体现在其 Nova(计算服务)组件上,Nova 通过与不同的虚拟化驱动程序进行交互,来统一管理各种不同的虚拟化技术。
OpenStack 支持的主要虚拟化技术
OpenStack 具有很强的灵活性,支持多种业界主流的虚拟化技术。KVM (Kernel-based Virtual Machine) 是最主流、最受推荐的技术。

KVM (Kernel-based Virtual Machine) - 首选
- 技术原理:KVM 是一个 Linux 内核的模块,它将 Linux 内核本身转换成一个 Hypervisor(虚拟机监视器),当你在 Linux 上运行 KVM 时,物理服务器就变成了一个 Type-1(裸金属)Hypervisor,每个虚拟机都是一个标准的 Linux 进程,可以被调度器公平地调度。
- 优势:
- 性能优越:由于虚拟机就是内核进程,硬件指令可以直接通过 Intel VT-x 或 AMD-V 进行硬件辅助虚拟化,性能损耗极小,接近物理机。
- 开源免费:作为 Linux 内核的一部分,完全开源,无授权费用。
- 与 Linux 生态完美集成:可以方便地使用 Linux 的各种特性,如
libvirt、qemu、iptables等。 - 成熟稳定:经过多年发展,是 OpenStack 社区中支持最完善、使用最广泛的虚拟化方案。
- 工作流程:
- Nova-Scheduler 决定在哪台物理主机上创建虚拟机。
- Nova-Compute 服务在该主机上启动。
- Nova-Compute 调用
libvirtAPI。 libvirt与 KVM 模块交互,使用qemu-system-x86_64命令创建虚拟机。- 虚拟机的磁盘镜像(如 QCOW2 格式)被挂载,网络通过虚拟网桥(如
br100)连接到 Neutron 的虚拟网络。
VMware vSphere
- 技术原理:VMware 是商业 Hypervisor 的领导者,其核心产品是 ESXi,这是一个独立的、轻量级的 Type-1 Hypervisor,OpenStack 可以通过
nova-compute的 VMware 驱动来管理 ESXi 主机上的虚拟机。 - 优势:
- 企业级功能:提供非常成熟、稳定的企业级功能,如 vMotion(在线迁移)、DRS(分布式资源调度)、HA(高可用性)等。
- 强大的生态系统:拥有成熟的工具链和管理平台(vCenter)。
- 劣势:
- 商业授权:需要购买昂贵的 ESXi 和 vCenter 许可证。
- 集成复杂:与 OpenStack 的集成不如 KVM 原生和紧密。
- 性能开销:需要额外的代理层,性能略逊于原生的 KVM。
Xen / XAPI
- 技术原理:Xen 是一个经典的 Type-1 Hypervisor,它分为两种模式:半虚拟化和硬件辅助虚拟化,在 OpenStack 中,通常使用其管理工具栈
XAPI(Xen API)来管理 Xen 主机。 - 优势:
- 历史悠久:是虚拟化领域的先驱之一。
- 高性能:在半虚拟化模式下性能极佳。
- 劣势:
- 社区活跃度下降:相比 KVM,其社区和生态系统活跃度已大幅降低。
- 硬件兼容性:对特定硬件的依赖性较强。
Hyper-V
- 技术原理:微软的 Hypervisor,是 Windows Server 的一部分,OpenStack 也提供了 Hyper-V 的驱动,允许在 Windows Server 环境中创建和管理虚拟机。
- 优势:
- Windows 生态:对于已经深度使用 Windows Server 和 Active Directory 的企业,集成非常方便。
- 劣势:
- 平台限制:仅限于 Windows Server 平台。
- 非主流:在 OpenStack 社区中不是主流选择。
LXD (Linux Container Daemon)
- 技术原理:这需要特别区分,LXD 是容器虚拟化,而非传统的虚拟机虚拟化,它基于强大的 LXC(Linux Containers)技术,提供了一个更友好的 REST API 和命令行工具,LXD 在 OpenStack 中被称为 “Bare Metal” 或 “Container” 虚拟化类型。
- 优势:
- 极致性能和启动速度:容器共享宿主机的内核,没有额外的指令翻译开销,启动速度是秒级甚至毫秒级。
- 高资源密度:资源开销远小于虚拟机,可以在一台物理机上运行成百上千个容器。
- 劣势:
- 安全性隔离较弱:与虚拟机提供硬件级别的隔离不同,容器共享内核,安全性相对较低。
- 操作系统限制:所有容器必须与宿主机使用相同或兼容的 Linux 内核。
OpenStack 虚拟化的核心组件
虽然 Nova 是总指挥,但虚拟机的创建和运行离不开一系列组件的协同工作:
| 组件 | 名称 | 作用 |
|---|---|---|
| Nova | Compute Service | 总指挥,接收 API 请求,调度虚拟机,与计算节点上的虚拟化驱动交互。 |
| Neutron | Networking Service | 网络管理员,为虚拟机创建虚拟网络、IP 地址、安全组等,实现网络隔离和互通。 |
| Glance | Image Service | 镜像仓库,提供虚拟机所需的操作系统和应用镜像(如 Ubuntu, CentOS 的 QCOW2 镜像)。 |
| Cinder | Block Storage Service | 磁盘管理员,为虚拟机提供持久化的块存储(云硬盘),即使虚拟机被删除,数据依然保留。 |
| Keystone | Identity Service | 认证中心,负责用户、项目和角色的身份认证与授权,确保只有合法用户才能操作资源。 |
| Swift | Object Storage Service | 对象存储,用于存储非结构化数据,如虚拟机快照、备份文件等。 |
| **** | Hypervisor (KVM, etc.) | 引擎,在计算节点上实际运行虚拟机。 |
| **** | libvirt | 中间件,一个标准的虚拟化 API,Nova 通过它来与不同 Hypervisor(如 KVM, VMware, Xen)进行交互,实现了统一管理。 |
| **** | qemu | 模拟器,KVM 的核心用户空间组件,负责模拟虚拟机的硬件(CPU, 内存, 磁盘, 网卡等)。 |
工作流程示例:创建一台 KVM 虚拟机
- 用户请求:用户通过 Horizon (Dashboard) 或
openstack命令行工具发起一个创建虚拟机的请求,并指定镜像、规格(CPU/内存)、网络等信息。 - 认证:请求首先发送到 Keystone 进行身份验证。
- 调度:请求被转发到 Nova-API,然后到 Nova-Scheduler,Scheduler 会根据当前各计算节点的负载、资源(CPU、内存、磁盘)以及用户指定的“可用区”(Availability Zone)等策略,选择一个最合适的计算节点(
compute-node-01)。 - 创建指令:Scheduler 将创建任务发送给目标计算节点上的 Nova-Compute 服务。
- 调用虚拟化:Nova-Compute 调用
libvirt的 Python 绑定,向libvirt发送创建虚拟机的指令。 - 创建虚拟机:
libvirt与本地的 KVM 模块和qemu进程交互,执行以下操作:- 从 Glance 下载用户指定的镜像文件(如
ubuntu.qcow2)。 - 创建一个新的磁盘镜像文件,作为虚拟机的硬盘。
- 分配虚拟 CPU 和内存。
- 创建一个虚拟网卡,并将其连接到 Neutron 管理的虚拟网桥上。
- 启动
qemu-system-x86_64进程,这个进程就是正在运行的虚拟机。
- 从 Glance 下载用户指定的镜像文件(如
- 网络配置:Neutron 会在虚拟网络中为这个新虚拟机分配一个 IP 地址。
- 返回结果:创建成功后,Nova 将虚拟机的 ID、IP 地址等信息返回给用户。
| 特性 | 描述 |
|---|---|
| 本质 | OpenStack 是一个云操作系统,通过其 Nova 组件来管理和编排虚拟化技术。 |
| 主流选择 | KVM 是 OpenStack 社区最推荐、使用最广泛的虚拟化技术,因为它开源、高性能、与 Linux 生态深度融合。 |
| 灵活性 | OpenStack 支持多种虚拟化技术(VMware, Xen, Hyper-V),以满足不同企业的现有投资和需求。 |
| 生态 | 完整的 OpenStack 云平台还包括 Neutron(网络)、Glance(镜像)、Cinder(存储)等组件,共同构建了一个功能强大的 IaaS 云。 |
| 未来趋势 | 除了传统的虚拟机,OpenStack 也对容器化技术(如 LXD, Kubernetes)提供了支持,体现了其向混合云和多云发展的趋势。 |
OpenStack 的虚拟化技术是一个以 Nova 为核心、以 KVM 为首选、以 libvirt 为桥梁、并辅以一系列其他服务的完整解决方案,旨在实现数据中心资源的自动化、池化和按需服务。

