OpenStack所支持的虚拟化技术主要包括以下几种:
-
KVM (Kernel-based Virtual Machine):
- 基于Linux内核的虚拟化技术。
- 在Linux内核中添加一个虚拟化模块来实现虚拟机的运行。
- 是OpenStack用户使用较多的虚拟化技术,支持OpenStack的所有特性。
- 通过QEMU模拟器模拟硬件设备,使虚拟机能在不同平台上运行。
- 提供高效性、可扩展性、灵活性、高可用性和可管理性。
-
Xen:
- 部署快速、安全、开源的虚拟化软件技术。
- 支持多个同意的操作系统或不同操作系统的虚拟机运行在同一主机上。
- OpenStack通过XenAPI支持XenServer和XCP两种虚拟化技术。
- 在RHEL等平台上,OpenStack使用的是基于Libvirt的Xen。
-
Hyper-V:
- 微软推出的企业级虚拟化解决方案。
- 设计借鉴了Xen,管理程序采用微内核的架构,兼顾了安全性。
- 注意:尽管Hyper-V是OpenStack支持的虚拟化技术之一,但在OpenStack的文档和社区中,对Hyper-V的支持可能不如KVM和Xen广泛。
-
容器技术(如Docker和LXC):
- 容器是在单一Linux主机上提供多个隔离的Linux环境的操作系统级虚拟化技术。
- 不需要运行专用的客户操作系统。
- Docker是一个开源的应用容器引擎,LXC提供了在单一可控主机节点上支持多个相互隔离的服务器容器同时执行的机制。
- 目前OpenStack社区对容器的驱动支持还不如虚拟化管理程序。
-
其他虚拟化技术:
- OpenStack还支持其他虚拟化技术,如VMware等,但具体的支持程度和功能可能因版本和配置而异。
- 在OpenStack中,这些虚拟化技术通常通过Nova(计算服务)进行管理和调度。Nova负责资源分配、计算任务调度和虚拟机生命周期的管理,通过与其他组件如Keystone(身份验证)、Glance(镜像)和Neutron(网络)的交互,实现虚拟机的创建和管理。同时,OpenStack还提供了其他服务,如Cinder(块存储服务)和Swift(对象存储服务),以支持更广泛的云计算需求。
KVM虚拟化解决方案
KVM(Kernel-based Virtual Machine)是一个开源的系统虚拟化模块,它允许Linux作为主机操作系统运行多个隔离的虚拟机(VMs)。KVM是Linux内核的一部分,结合QEMU(一个通用的开源机器模拟器和虚拟化器)提供硬件模拟,使得KVM能够创建和运行虚拟机。
KVM模块
- KVM是Linux内核的一个模块,它提供了CPU和内存的虚拟化功能。
- Linux内核本身也提供了设备模型、I/O虚拟化等功能。
KVM模块是一个可加载的内核模块。由于KVM对x86硬件架构的依赖,因此KVM还需要一个处理器规范模块。如果使用Intel架构,则加载模块;使用AMD架构,则加载模块。
KVM模块负责对虚拟机的虚拟CPU和内存进行管理及调度,主要任务是初始化CPU硬件,打开虚拟化模式,然后将虚拟机运行在虚拟模式下,并对虚拟机的运行提供一定的支持。
至于虚拟机的外部设备交互,如果是真实的物理硬件设备,则利用Linux系统内核来管理;如果是虚拟的外部设备,则借助于QEMU(Quick Emulator,快速仿真)来处理。
由此可见,KVM本身只关注虚拟机的调度和内存管理,是一个轻量级的Hypervisor,很多Linux发行版集成KVM作为虚拟化解决方案,CentOS也不例外。
QEMU
- QEMU是一个模拟器,它可以模拟不同的CPU和硬件设备。
- 在KVM虚拟化中,QEMU作为前端,提供硬件模拟和用户界面,通过KVM内核模块进行实际的虚拟化操作。
KVM模块本身无法作为一个Hypervisor模拟出一个完整的虚拟机,而且用户也不能直接对Linux内核进行操作,因此需要借助其他软件来进行,QEMU就是KVM所需的这样一个软件。
QEMU并非KVM的一部分,而是一个开源的虚拟机软件。与KVM不同,作为一个宿主型的Hypervisor,没有 KVM,QEMU 也可以通过模拟来创建和管理虚拟机,只因为是纯软件实现,所以性能较低。
QEMU的优点是,在支持QEMU编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与主机不是同一个架构。KVM在QEMU的基础上进行了修改。虚拟机运行期间,QEMU会通过KVM模块提供的系统调用进入内核,由KVM模块负责将虚拟机置于处理器的特殊模式运行。遇到虚拟机进行输入/输出(I/O)操作(外设交互),KVM 模块转交给 QEMU 解析和模拟这些设备。
QEMU 使用 KVM 模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速,从而极大地提高了虚拟机的性能。除此之外,虚拟机的配置和创建,虚拟机运行依赖的虚拟设备,虚拟机运行时的用户操作环境和交互,以及一些针对虚拟机的特殊技术(如动态迁移),都是由 QEMU 自己实现的。
KVM虚拟机的创建和运行是一个用户空间的QEMU程序和内核空间的KVM模块相互配合的过程。KVM模块作为整个虚拟化环境的核心工作在系统空间,负责CPU和内存的调度。QEMU作为模拟器工作在用户空间,负责虚拟机I/O模拟。
Libvirt
- libvirt是一个用于管理虚拟化功能的API、守护进程和管理工具集合。
- 它提供了统一的接口来管理KVM、Xen、QEMU等虚拟化技术。
- 通过libvirt,可以使用virsh命令行工具或virt-manager图形化工具来管理虚拟机。
Libvirt是一个软件集合,是一套为方便管理平台虚拟化技术而设计的开源代码的应用程序接口、守护进程和管理工具。它不仅提供了对虚拟机的管理,而且提供了对虚拟网络和存储的管理。
Libvirt最初是为Xen虚拟化平台设计的一套API,目前还支持其他多种虚拟化平台,如KVM、ESX和QEMU等。在KVM解决方案中,Qemu用来进行平台模拟,面向上层管理和操作;而Libvirt用来管理KVM,面向下层管理和操作。
Libvirt是目前使用广泛的虚拟机管理应用程序接口,一些常用的虚拟机管理工具(如virsh)和云计算框架平台(如OpenStack)都是在底层使用Libvirt的应用程序接口。
Libvirt包括两部分,一部分是服务(守护进程名为libvirtd),另一部分是API。作为一个运行在主机上的服务端守护进程,libvirtd为虚拟化平台及其虚拟机提供本地和远程的管理功能,基于Libvirt开发出来的管理工具可通过libvirtd服务来管理整个虚拟化环境。也就是说,libvirtd在管理工具和虚拟化平台之间起到一个桥梁的作用。
Libvirt API是一系列标准的库文件,给多种虚拟化平台提供一个统一的编程接口,相当于管理工具需要基于Libvirt的标准接口来进行开发,开发完成后的工具可支持多种虚拟化平台。
作为免费的开源软件项目,OpenStack由一个名为OpenStack Community的社区开发和维护,来自世界各地的云计算开发人员和技术人员共同开发、维护OpenStack项目。与其他开源的云计算软件相比,OpenStack具有以下优势。
(1)模块松耦合。OpenStack模块分明,容易添加独立功能的组件。往往无须通读OpenStack整个源代码,只需了解其接口规范及API使用,就能添加一个新的模块。
(2)组件配置灵活。OpenStack的组件安装非常灵活,可以全部集中装在一台主机上,也可以分散安装到多台主机中,甚至可以把所有的节点都部署在虚拟机中。
(3)二次开发容易。OpenStack发布的OpenStack API是RESTful API,所有组件采用这种统一的规范,加上模块松耦合设计,二次开发较为简单。
KVM镜像文件
在KVM中使用的Image主要有以下3种文件格式:
**raw:**原始的格式,它直接将文件系统的存储单元分配给虚拟机使用,采取直读直写的策略。该格式实现简单,不支持诸如压缩、快照、加密和CoW等特性。
qcow2: QEMU引入的镜像文件格式,也是目前KVM默认的格式。qcow2文件存储数据的基本单元是簇(cluster),每一簇由若干个数据扇区组成,每个数据扇区的大小是512字节。在qcow2中,要定位镜像文件的簇,需要经过两次地址查询操作,qcow2根据实际需要来决定占用空间的大小,而且支持更多的主机文件系统格式。
qed: qcow2的一种改进,qed的存储、定位、查询方式,以及数据块大小与qcow2一样,它的目的是为了克服qcow2格式的一些缺点,提高性能,不过目前还不够成熟。
提示:
如果需要使用虚拟机快照,需要选择qcow2格式。对于大规模数据的存储,可以选择raw格式。
qcow2格式只能增加容量,不能减少容量,而raw格式可以实现增加或者减少容量。
OpenStack Nova
如果是在OpenStack环境中使用KVM,Nova服务会利用libvirt来管理KVM虚拟机。
Nova负责虚拟机的生命周期管理,包括创建、启动、停止、迁移和删除等。
实施步骤参考
实施KVM虚拟化解决方案时,需要考虑以下几个步骤:
- 安装和配置Linux主机操作系统。
- 安装和配置KVM和QEMU。
- (可选)安装和配置libvirt。
- (可选)安装和配置OpenStack Nova(如果在OpenStack环境中使用)。
- 配置虚拟化存储和网络。
- 创建和管理虚拟机。
- 配置和维护虚拟化安全性。
请注意,这只是一个基本的概述,并且具体的实施步骤可能因您的环境和需求而有所不同。在实施KVM虚拟化之前,建议仔细规划并测试您的解决方案。
QEMU
QEMU(Quick Emulator)是一个开源的虚拟化和仿真软件,能够模拟多种硬件平台,并在这些平台上运行各种操作系统。
QEMU 是一款强大的开源模拟器(emulator)和虚拟化软件,能够模拟多种硬件平台并在其上运行操作系统。QEMU 本身并不包含虚拟化技术,但它可以通过与 KVM(Kernel-based Virtual Machine)等内核模块集成,提供高性能的虚拟化解决方案。下面将详细解释 QEMU 的主要特点、功能以及应用场景。
主要特点
- 跨平台:QEMU 可以在多种操作系统上运行,包括 GNU/Linux、Windows、macOS 等。
- 多架构支持:QEMU 支持模拟多种 CPU 架构,如 x86、x86_64、ARM、MIPS 等,允许用户在不同的硬件平台上运行不同的操作系统。
- 设备模拟:QEMU 能够模拟各种硬件设备,如硬盘、网络接口卡、图形卡等,以提供完整的虚拟化环境。
- 高性能:当与 KVM 一起使用时,QEMU 可以提供接近物理机性能的虚拟化体验。
- 丰富的配置选项:QEMU 提供了大量的命令行选项和配置文件,允许用户根据需要进行详细的配置和定制。
主要功能
- 虚拟机管理:QEMU 可以创建、启动、停止、暂停和恢复虚拟机,以及进行虚拟机的迁移和备份。
- 设备模拟:QEMU 可以模拟各种硬件设备,如磁盘驱动器、网络接口卡、显卡等,以便在虚拟机中运行各种操作系统和应用程序。
- 网络配置:QEMU 支持多种网络配置选项,包括桥接、NAT、用户空间网络等,以便虚拟机与主机或其他虚拟机进行网络通信。
- 图形显示:QEMU 支持多种图形显示方式,包括 SDL、GTK+、Qt 等,以便在虚拟机中运行图形界面应用程序。
- 快照和迁移:QEMU 支持虚拟机的快照和迁移功能,方便用户进行虚拟机的备份和迁移。
应用场景
- 开发测试:QEMU 可以用于在开发过程中模拟不同的硬件环境和操作系统,以便进行跨平台测试和兼容性测试。
- 教育培训:QEMU 可以用于教学环境中,让学生体验和学习不同的操作系统和硬件平台。
- 云计算:QEMU 可以与 OpenStack、CloudStack 等云管理平台集成,用于构建和管理云计算基础设施。
- 安全研究:QEMU 可以用于创建隔离的虚拟化环境,用于安全研究、恶意软件分析和渗透测试等场景。
安装与使用
QEMU 的安装相对简单,可以通过包管理器(如 apt、yum 等)在 Linux 系统中进行安装。安装完成后,用户可以通过命令行或配置文件创建和管理虚拟机。QEMU 的命令行选项非常丰富,用户可以通过查看官方文档或使用 --help
选项来获取更多信息。
总之,QEMU 是一款功能强大、灵活的虚拟化软件,适用于各种场景下的虚拟机创建和管理。无论是开发测试、教育培训还是云计算和安全研究等领域,QEMU 都能够为用户提供稳定可靠的虚拟化解决方案。
Xen
Xen是一个开源的虚拟化技术,允许你在单台物理机上运行多个虚拟机(VMs)。Xen最初由剑桥大学计算机实验室开发,后来由(现在是Xen Project)维护。Xen的架构主要基于半虚拟化(paravirtualization)技术,但也支持硬件辅助虚拟化(如Intel VT-x和AMD-V)。
以下是Xen的一些关键特性和组件:
1. Xen Hypervisor
- Xen Hypervisor是Xen的核心组件,它直接运行在硬件之上,负责虚拟机的创建、管理和资源分配。
- Xen Hypervisor提供了一套API(XenAPI),允许管理工具与Hypervisor通信。
2. XenAPI
- XenAPI是一个开放的网络API,允许客户端(如XenCenter或开源的Xen管理工具)与Xen Hypervisor通信。
- 通过XenAPI,你可以执行各种虚拟机管理任务,如创建、启动、停止、迁移和删除虚拟机。
3. XenCenter
- XenCenter是Citrix(Xen的原始开发者之一)提供的一个图形用户界面(GUI)管理工具,用于管理Xen Hypervisor和虚拟机。
- XenCenter通过XenAPI与Xen Hypervisor通信,提供了一个直观易用的界面来管理虚拟机。
4. 半虚拟化(Paravirtualization)
- Xen最初采用半虚拟化技术,这意味着它要求客户操作系统(即虚拟机中运行的操作系统)知道它正在一个虚拟化环境中运行。
- 半虚拟化通常通过修改客户操作系统的内核或使用特定的驱动程序来实现,以便与Xen Hypervisor更有效地通信。
5. 硬件辅助虚拟化(Hardware-Assisted Virtualization)
- 随着处理器技术的发展,Intel和AMD引入了硬件辅助虚拟化技术(如Intel VT-x和AMD-V),这些技术允许虚拟机更高效地运行。
- Xen支持这些硬件辅助虚拟化技术,可以在不修改客户操作系统的情况下提供接近原生性能的虚拟机。
6. 虚拟机迁移
- Xen支持虚拟机迁移,这意味着你可以将一个正在运行的虚拟机从一个物理服务器迁移到另一个物理服务器,而无需中断服务。
- 这对于负载均衡、维护和高可用性非常有用。
7. 存储和网络支持
- Xen支持多种存储和网络后端,包括本地存储、网络文件系统(如NFS、SMB/CIFS)、SAN/NAS存储等。
- Xen还支持多种网络配置,包括桥接、NAT、VLAN等。
8. 社区和生态系统
- Xen有一个活跃的社区和生态系统,提供了大量的文档、教程、插件和工具,帮助用户更好地使用Xen。
- Xen也与许多其他开源项目(如OpenStack、CloudStack等)集成,用于构建云计算基础设施。
总之,Xen是一个功能强大且灵活的虚拟化技术,适用于各种场景,包括私有云、公共云、数据中心和企业IT等。
Hyer-V
Hyper-V是微软推出的一款虚拟化产品,它为创建和运行虚拟机(VMs)提供了强大的功能。以下是关于Hyper-V的详细概述:
1. 技术背景与定位
- Hyper-V是微软首个基于hypervisor的虚拟化技术,类似Vmware ESXi和Citrix Xen。
- 旨在为用户提供更熟悉、成本效益更高的虚拟化基础设施软件,以降低运作成本、提高硬件利用率、优化基础设施并提高服务器的可用性。
2. 系统要求
- 处理器:支持Intel或AMD的64位处理器(从Windows 10预览版更新19559开始,ARM64位处理器也受支持)。
- 操作系统:Windows Server 2008 R2及以上(服务器操作系统);Windows 7及以上(桌面操作系统)。
- 虚拟化支持:硬件辅助虚拟化,如Intel VT或AMD-V,以及CPU的硬件数据执行保护(DEP)功能。
- 内存:最低限度为2GB。
3. 主要特点
- 多平台支持:Hyper-V不仅支持Windows虚拟机,还可以运行Linux和其他操作系统的虚拟机。
- 管理工具:提供Hyper-V管理器和System Center Virtual Machine Manager等丰富的管理工具,方便管理员进行虚拟机的管理和监控。
- 安全性:提供强大的安全功能,包括隔离和访问控制,确保虚拟机之间的安全性。
- 高效性:采用微内核架构和基于VMbus的高速内存总线架构,提供高性能和快速的响应速度。
- 内存管理:支持内存过量使用、内存缓冲区和内存权重等特性,优化虚拟机内存的使用。
4. 架构特点
- Hyper-V底层的Hypervisor运行在最高的特权级别(ring -1),而虚拟机的OS内核和驱动运行在ring 0,应用程序运行在ring 3下。
- 这种架构不需要采用复杂的BT(二进制特权指令翻译)技术,进一步提高了安全性。
5. 虚拟硬盘空间
- 在Hyper-V虚拟机创建过程中,最大虚拟硬盘可以达到2040GB。
6. 管理和优化
- 提供Hyper-V管理解决方案,包括数据保护、性能监控和容量规划等功能,帮助管理员提高IT基础架构效率。
7. 虚拟机迁移
- Hyper-V支持虚拟机的迁移,可以在不中断服务的情况下将虚拟机从一个物理服务器迁移到另一个物理服务器。
综上所述,Hyper-V作为一款功能强大的虚拟化产品,为企业提供了灵活、高效、安全的虚拟化解决方案。
Libvirt
Libvirt是一个开源的API、后台程序和管理工具,主要用于管理虚拟化平台。以下是关于Libvirt的详细概述:
1. 基本介绍
- 定义:Libvirt是用于管理虚拟化平台的开源的API、后台程序和管理工具。
- 支持技术:Libvirt可以管理多种虚拟化技术,包括KVM、Xen、VMware ESX、QEMU等。
- 应用场景:Libvirt在云计算的解决方案中广泛使用,提供了一个方便的方式来管理虚拟机和其他虚拟化功能,如存储和网络接口管理。
2. 主要组件
- API库:提供与多种虚拟化技术交互的接口。
- 守护进程(Libvirtd):作为后台程序运行,管理虚拟机的生命周期和配置。
- 命令行实用程序(virsh):提供了与Libvirt交互的命令行界面,方便用户进行虚拟机管理。
3. 主要功能
-
虚拟机管理:
- 支持虚拟机的启动、停止、暂停、保存、恢复和迁移等生命周期操作。
- 支持多种设备类型的热插拔操作,包括磁盘、网卡、内存和CPU。
- 远程机器支持:只要机器上运行了libvirt daemon,包括远程机器,所有的libvirt功能就都可以访问和使用。
- 存储管理:管理不同类型的存储,如创建不同格式的文件映像(qcow2、vmdk、raw等)、挂接NFS共享、列出现有的LVM卷组等。
- 网络接口管理:管理物理和逻辑的网络接口,包括列出现有的接口卡、配置和创建接口、桥接、VLAN和关联设备等。
- 虚拟NAT和基于路由的网络:管理和创建虚拟网络,使用防火墙规则作为路由器,让虚拟机可以透明访问主机的网络。
4. 架构和工作原理
- Libvirt提供了一个通用稳定的抽象层,可以安全地操作物理机上的虚拟机。
- 提供了创建、修改、监控、迁移、停止domain等一系列API,用于远程交互。
- 视图隔离虚拟化框架中频繁变更的应用,以保持API的稳定性。
5. 使用语言和平台支持
- 支持的语言包括C、C++、Python、Go、Perl、Ruby、OCaml、Java、JavaScript、PHP等。
- 支持的虚拟化平台广泛,包括KVM、Xen、QEMU、LXC、OpenVZ、VMware ESX等。
6. 应用场景
- Libvirt已被业界广泛应用,包括命令行工具、GUI工具、持续集成、IaaS服务(如OpenStack)和web应用程序等。
综上所述,Libvirt是一个功能强大、灵活的虚拟化管理工具,通过提供统一的API和管理界面,支持多种虚拟化技术和平台,为虚拟化环境的创建、管理和优化提供了便利。