- 核心概念:什么是虚拟化?什么是 OpenStack?它们的关系是什么?
- OpenStack 的核心架构:它由哪些关键组件构成,分别做什么?
- OpenStack 与虚拟化的关系:OpenStack 如何管理不同的虚拟化技术(KVM, VMware 等)?
- OpenStack 的工作流程:一个虚拟机是如何被创建出来的?
- OpenStack 的应用与挑战:它用在哪里?有什么优缺点?
核心概念:虚拟化与 OpenStack
什么是虚拟化技术?
虚拟化是一种资源管理技术,它将计算机的各种物理资源(如 CPU、内存、硬盘、网络等)抽象、转换后呈现出来,打破物理结构之间的壁垒,用户可以比原来的配置更好的方式来应用这些资源。

虚拟化就是在一台物理机上运行多台虚拟机。
- 主机:运行虚拟机的物理服务器。
- 客户机:在物理机上运行的虚拟机。
- Hypervisor(虚拟机监视器):实现虚拟化的核心软件,它负责创建和运行虚拟机,并为虚拟机分配物理资源。
什么是 OpenStack?
OpenStack 并不是一个虚拟化软件本身,而是一个开源的云计算管理平台,你可以把它想象成一个“云操作系统的内核”或“云数据中心的管家”。
它的目标是帮助企业和服务提供商利用标准化的硬件构建和运行一个类似于 Amazon Web Services (AWS) 的私有云或公有云。
- 核心思想:通过一系列协同工作的服务(组件),来管理数据中心里的大规模计算、存储、网络等资源,并以自助服务的方式提供给用户。
- 开源:由 Apache 2.0 许可证授权,由全球社区(包括 NASA、Rackspace、Mirantis、Red Hat 等公司)共同开发和维护。
两者的关系
OpenStack 是一个管理平台,而虚拟化技术是 OpenStack 管理的核心资源(计算资源)的一种实现方式。

- OpenStack:负责“做什么”和“如何管理”,接受用户“创建一台虚拟机”的请求,然后调度资源、调用虚拟化软件去创建,最后监控它的状态。
- 虚拟化技术 (如 KVM):负责“具体执行”,它接收来自 OpenStack 的指令,在物理机上真正地创建和运行虚拟机。
一个简单的比喻:
- 虚拟化技术 = 汽车的发动机,它提供最核心的动力。
- OpenStack = 整辆汽车,它不仅包含发动机,还有方向盘、刹车、仪表盘、车身等,让你能够方便、安全地驾驶。
OpenStack 的核心架构
OpenStack 是一个模块化的系统,由多个独立的服务(项目)组成,每个服务负责一个特定的功能,这些服务通过 REST API 进行通信。
以下是几个最核心的组件:
| 组件名称 | 服务名称 | 主要功能 |
|---|---|---|
| 计算 | Nova | 大脑,负责管理虚拟机的整个生命周期,包括创建、启动、暂停、删除、迁移虚拟机,它是 OpenStack 中最核心、最复杂的组件。 |
| 镜像 | Glance | 仓库,负责虚拟机镜像的发现、注册、检索,就像一个操作系统和应用软件的商店,你从这里选择“系统盘”来创建虚拟机。 |
| 身份认证 | Keystone | 门卫,负责所有服务的身份认证、授权和服务目录,所有用户和组件的请求都需要经过 Keystone 验证身份和权限。 |
| 网络 | Neutron | 邮局/交警,负责为虚拟机提供网络连接,包括虚拟网络、IP 地址分配、路由、防火墙、负载均衡等。 |
| 块存储 | Cinder | 移动硬盘,为虚拟机提供持久化的块存储设备(类似硬盘),当虚拟机被删除时,Cinder 的卷可以保留下来,挂载到其他虚拟机上继续使用。 |
| 对象存储 | Swift | 云盘/网盘,用于存储海量、非结构化的数据(如图片、视频、备份文件),它和 Cinder 的区别在于,Swift 是为高可用性、高扩展性设计的,而不是给单个虚拟机当硬盘用的。 |
| 仪表盘 | Horizon | 图形界面,提供了一个 Web 界面,让用户可以通过点击按钮来管理云资源,如创建虚拟机、查看网络等。 |
OpenStack 与虚拟化的关系
Nova 作为计算服务,本身不直接创建虚拟机,它是一个“资源调度器”,它需要与底层的 Hypervisor 交互来完成实际的工作。
OpenStack 支持多种 Hypervisor,这使得它非常灵活:
| Hypervisor 类型 | 代表技术 | 描述 |
|---|---|---|
| 原生虚拟化 | KVM (Kernel-based Virtual Machine) | OpenStack 社区最主流、支持最好的虚拟化技术,它是 Linux 内核的一部分,性能高,与 Linux 生态结合紧密。 |
| 托管虚拟化 | VMware vSphere / ESXi | 商业领域的霸主,OpenStack 可以通过 Nova-VMware 驱动来管理 VMware 环境,实现异构云的统一管理。 |
| 半虚拟化 | Xen / XenServer | 曾经非常流行,现在市场份额有所下降,OpenStack 早期对 Xen 的支持很好。 |
| 硬件辅助虚拟化 | Intel VT-x / AMD-V | 这不是 Hypervisor,而是 CPU 的一种硬件特性,现代 CPU 都支持,它能极大地提升虚拟化性能,KVM、Xen 等都依赖它。 |
| 容器虚拟化 | Docker / Containerd | OpenStack 也支持容器,通过 Magnum 项目,可以在 OpenStack 上管理容器服务(如 Kubernetes 集群),实现“虚拟机+容器”的混合云。 |
关键点:OpenStack 通过驱动的方式与不同的 Hypervisor 集成,当你在配置 Nova 时,需要指定你希望使用的虚拟化驱动(如 libvirt,它通常用来驱动 KVM)。
OpenStack 的工作流程:创建一台虚拟机
假设一个用户通过 Horizon 界面点击“创建虚拟机”,背后发生了什么?
- 用户认证:用户的请求首先发送到 Keystone,Keystone 验证用户身份和权限(是否有权限创建虚拟机)。
- 获取镜像:Nova 调用 Glance API,从镜像仓库中获取用户选择的虚拟机镜像文件(如
ubuntu-20.04.qcow2)。 - 选择计算节点:Nova 的 Scheduler 服务开始工作,它会查询整个 OpenStack 环境:
- 哪个计算节点(物理机)有足够的 CPU、内存资源?
- 哪个节点上运行的 Hypervisor(如 KVM)是健康的?
- 哪个节点所在的网络能满足用户的要求?
- Scheduler 选定一个最合适的计算节点。
- 创建虚拟机:Nova 的 Compute (nova-compute) 服务在选定的计算节点上执行实际操作:
- 通过 Libvirt 接口(与 KVM 交互的标准工具)调用 Hypervisor。
- Hypervisor 使用从 Glance 获取的镜像文件,在物理机上创建一个虚拟磁盘文件。
- 分配虚拟的 CPU、内存、网卡等资源。
- 启动这个虚拟机。
- 网络配置:Neutron 服务会为这个新创建的虚拟机分配一个 IP 地址,并将其连接到用户指定的虚拟网络中。
- 状态更新:虚拟机的创建状态会实时反馈给 Nova,并最终显示在 Horizon 仪表盘上。
整个过程就像一个高度自动化的工厂流水线,每个组件各司其职,协同工作。
OpenStack 的应用与挑战
应用场景
- 私有云:这是 OpenStack 最主要的应用场景,企业或政府机构可以利用 OpenStack 搭建自己的私有云,将 IT 资源池化,提高资源利用率,同时保证数据安全和可控性。
- 混合云:企业可以将自己的 OpenStack 私有云与公有云(如 AWS, Azure)进行连接,实现数据和应用的灵活迁移和备份。
- 电信云 (NFV):OpenStack 的灵活性和可编程性非常适合用于构建电信云,将传统的网络功能(如防火墙、路由器)以虚拟机的形式运行在通用服务器上。
- 高性能计算:OpenStack 可以管理大规模的计算集群,为科学研究、气象模拟等提供强大的算力支持。
挑战与缺点
- 复杂性:OpenStack 是一个庞大的系统,包含数十个服务,组件间的配置和集成非常复杂,对运维人员的技术要求极高。
- 学习曲线陡峭:要完全理解和掌握 OpenStack,需要投入大量的时间和精力学习。
- “隐形”的运维成本:虽然软件本身是免费的,但企业需要投入大量的人力、物力进行部署、维护和优化,其总拥有成本可能并不低。
- 生态系统:虽然社区活跃,但其商业支持和生态系统的成熟度相比 AWS、Azure 等公有云巨头仍有差距。
- 虚拟化是云计算的基石,它通过 Hypervisor 在物理机上创建出多个相互隔离的虚拟机。
- OpenStack是一个强大的云计算管理平台,它通过一系列协同工作的服务(Nova, Glance, Keystone 等)来自动化地管理数据中心的计算、存储、网络等资源。
- OpenStack 依赖虚拟化技术,但本身不是虚拟化软件,它通过驱动程序(如 KVM)来指挥底层的虚拟化引擎工作,从而实现对资源的统一调度和管理。
对于希望构建自有可控云环境的组织来说,OpenStack 是一个功能强大、灵活且开源的终极选择,但它也意味着要面对相应的复杂性和运维挑战。
