qemu、kvm、qemu-kvm、openstack、libvert概念讲解

本文详细解析了KVM与QEMU在虚拟化技术中的角色与合作方式,KVM作为Linux内核模块提供CPU和内存虚拟化,而QEMU则负责模拟其他硬件设备。二者结合形成了QEMU-KVM,实现全面的服务器虚拟化。同时,文章介绍了libvirt在管理虚拟机和虚拟化功能中的应用,以及其与OpenStack的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QEMU

Qemu是一个独立的虚拟化解决方案,通过inter-VT或AMD SVM实现虚拟化,安装qemu的系统,可以直接 模拟吹另一个完全不同的系统环江,虚拟机的创建通过qemu-image即可完成。Qemu本身可以不依赖KVM,但是如果有KVM的存在并且硬件(处理器)支持比如Inter VT功能,那么QEMU在对处理器虚拟化这一块可与里哦用KVM提供的功能来提升性能。

KVM

KVM 是集成到 Linux 内核的 Hypervisor 是 X86 架构且硬件支持虚拟化技术(IntelVT或AMD-V)的Linux 的全虚拟化解决方案。它是Linux 的一个很小的模块,利用 Linux 做大量的事,如任务调度、内存管理与硬件设备交互等。准确来说,KVM 是Linux kernel 的一个模块。可以用命令 modprobe 去加载KVM 模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM 模块是远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm 开发者选择了已经成型的开源虚拟化软件 QEMU。说起来QEMU 也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86 的CPU 上可虚拟一个Power 的CPU,并可利用它编译出可运行在Power 上的程序。KVM 使用了QEMU 的一部分,并稍加改造,就成了可控制 KVM 的用户空间工具了。所以你会看到,官方提供的 KVM 下载有两大部分(qemu 和 kvm)三个文件(KVM 模块、QEMU 工具以及二者的合集)。也就是说,你可以只升级 KVM 模块,也可以只升级QEMU 工具。这就是 KVM 和QEMU 的关系。 KVM 内核模块本身只能提供CPU 和内存的虚拟化,所以它必须结合QEMU 才能构成一个完成的虚拟化技术,这就是下面要说的qemu-kvm。

KVM-QEMU

Qemu 将KVM 整合进来,通过 ioctl 调用/dev/kvm 接口,将有关CPU 指令的部分交由内核模块来做。kvm 负责 cpu 虚拟化+内存虚拟化,实现了 cpu 和内存的虚拟化,但kvm不能模拟其他设备。qemu 模拟 IO 设备(网卡,磁盘等),kvm 加上 qemu 之后就能实现真正意义上服务器虚拟化。因为用到了上面两个东西,所以称之为qemu-kvm。 Qemu 模拟其他的硬件,如 Network, Disk,同样会影响这些设备的性能,于是又产生了pass through 半虚拟化设备virtio_blk, virtio_net,提高设备性能。
qemu、kvm、qemu-kvm、openstack、libvert概念讲解

LIBVIRT

Libvirt 是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。它包括一个API 库,一个守护程序(libvirtd)和一个命令行工具(virsh);libvirt 本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的 API。 libvirt 的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。

功能

  1. 虚拟机管理:包括不同的领域生命周期操作,比如:启动、停止、暂停、保存、恢复和迁移。支持多种设备类型的热插拔操作,包括:磁盘、网卡、内存和CPU。
  2. 远程机器支持:只要机器上运行了 libvirt daemon,包括远程机器,所有的libvirt 功能就都可以访问和使用。支持多种网络远程传输,使用最简单的 SSH,不需要额外配置工作。
  3. 存储管理:任何运行了libvirt daemon 的主机都可以用来管理不同类型的存储:创建不同格式的文件镜像(qcow2、vmdk、raw 等)、挂接NFS 共享、列出现有的LVM 卷组、创建新的LVM 卷组和逻辑卷、对未处理过的磁盘设备分区、挂接iSCSI 共享,等等等等。因为libvirt 可以远程工作,所有这些都可以通过远程主机使用。
  4. 网络接口管理:任何运行了libvirt daemon 的主机都可以用来管理物理和逻辑的网络接口。虚拟NAT 和基于路由的网络:任何运行了libvirt daemon 的主机都可以用来管理和创建虚拟网络。

    openstack, kvm, qemu-kvm 及 libvirt 之间的关系(照抄自网络)

    KVM 是最底层的 hypervisor,它是用来模拟 CPU 的运行,它缺少了对 network 和周边 I/O 的支持,所以我们是没法直接用它的。QEMU-KVM 就是一个完整的模拟器,它是构建基于KVM 上面的,它提供了完整的网络和 I/O 支持。Openstack 不会直接控制qemu-kvm,它会用一个叫libvirt 的库去间接控制qemu-kvm。libvirt 提供了跨 VM 平台的功能,它可以控制除了 QEMU 之外的模拟器,包括 vmware, virtualbox, xen 等等。所以为了openstack 的跨 VM 性,所以openstack 只会用 libvirt 而不直接用 qemu-kvm。libvirt还提供了一些高级的功能,例如 pool/vol 管理。

转载于:https://blog.51cto.com/11970509/2349404

<think>我们被要求回答关于QEMU-KVM、Libvirt和virt-install是什么软件及其用途的问题。根据提供的引用,我们可以整理如下: 1. **QEMU-KVM**: - QEMU是一个独立的虚拟化解决方案,可以模拟完整的计算机系统(包括处理器和周边设备)。它支持多种架构,并能在没有硬件虚拟化支持的情况下通过二进制转换实现虚拟化,但性能较低。 - KVM(Kernel-based Virtual Machine)是Linux内核的一个模块,它利用处理器的硬件虚拟化扩展(如Intel VT或AMD-V)来提供处理器虚拟化功能。KVM本身只提供处理器和内存虚拟化,不处理设备虚拟化。 - QEMU-KVMQEMU的一个修改版本,它集成了KVM模块,从而利用硬件虚拟化扩展来提高虚拟机的性能。当QEMU使用KVM时,它通过`/dev/kvm`接口与KVM模块交互,将处理器和内存的虚拟化任务交给KVM,而QEMU则负责设备模拟和其他管理任务。这样,QEMU-KVM就成为了一个完整的、高性能的虚拟化解决方案。 2. **Libvirt**: - Libvirt是一个开源的API、守护进程(libvirtd)和管理工具,旨在提供一个统一的方式来管理多种不同的虚拟化技术(如KVM、Xen、VMware等)。 - 它提供了一套抽象的API,使得上层管理工具(如virsh、virt-manager等)可以通过Libvirt来管理虚拟机,而无需关心底层虚拟化技术的具体细节。 - Libvirt还提供了虚拟机生命周期管理(启动、停止、暂停等)、网络管理、存储管理等功能,并支持远程管理。 3. **virt-install**: - virt-install是一个命令行工具,用于创建新的虚拟机。它是libvirt项目的一部分,通常与libvirt一起安装。 - 它简化了虚拟机的创建过程,用户可以通过命令行参数指定虚拟机的各种属性(如CPU、内存、磁盘、网络、安装介质等),而无需手动编写复杂的XML配置文件(libvirt使用XML定义虚拟机)。 - virt-install会生成相应的虚拟机XML定义,并通过libvirt API与底层的虚拟化技术(如KVM)交互来启动虚拟机。 **用途总结**: - **QEMU-KVM**:提供高性能的虚拟化环境,利用硬件辅助虚拟化技术运行虚拟机。 - **Libvirt**:提供统一的虚拟机管理接口,简化不同虚拟化技术的管理。 - **virt-install**:用于快速创建虚拟机,是使用libvirt管理虚拟机的便捷工具。 它们之间的关系可以这样理解:QEMU-KVM提供底层的虚拟化能力,Libvirt提供管理这些虚拟机的统一接口,而virt-install则是利用Libvirt接口创建虚拟机的工具。 根据引用[1]:QEMU是一个独立的虚拟化解决方案,而KVM是内核中处理虚拟化扩展的模块,两者结合(即QEMU-KVM)构成了一个完整的虚拟化解决方案。引用[3]进一步说明KVM负责CPU和内存虚拟化,QEMU负责设备虚拟化。引用[2][4][5]则提到了Libvirt和virt-install在管理虚拟机中的应用。 因此,我们可以这样组织回答: 1. 分别介绍三个组件是什么。 2. 说明它们各自的主要用途。 3. 简要说明它们之间的关系。 最后,按照要求生成相关问题。</think>### QEMU-KVM、Libvirt、virt-install 软件解析 #### 1. **QEMU-KVM** QEMU-KVM 是 **硬件虚拟化解决方案** 的核心组件: - **QEMU**:开源的设备模拟器,负责虚拟化硬件设备(磁盘、网卡等),支持跨平台虚拟化。 - **KVM**:Linux 内核模块,利用 CPU 硬件虚拟化扩展(Intel VT/AMD-V)实现处理器和内存的高效虚拟化[^3]。 - **整合作用**:QEMU-KVM 将两者结合,QEMU 处理设备模拟,KVM 处理 CPU/内存虚拟化,形成完整的虚拟化方案(例如执行 `qemu-kvm -enable-kvm` 启用加速)[^1][^3]。 **用途**:直接运行虚拟机,提供接近物理机的性能。 #### 2. **Libvirt** Libvirt 是 **虚拟化管理抽象层**: - 提供统一的 API 和工具(如 `virsh`、`virt-manager`),支持多种虚拟化技术(KVM、Xen 等)[^2][^4]。 - 核心组件包括守护进程 `libvirtd` 和 XML 配置文件(定义虚拟机资源)[^2]。 **用途**: - 管理虚拟机生命周期(启动/停止/迁移)。 - 配置虚拟网络/存储(如通过 XML 定义网桥或磁盘)。 - 支持远程管理(通过 TLS/SSH)[^4]。 #### 3. **virt-install** virt-install 是 **虚拟机创建工具**: - 基于 Libvirt 开发的命令行工具,用于快速创建虚拟机。 - 通过简单命令生成虚拟机配置(自动生成 XML),无需手动编写复杂配置[^5]。 **用途**: - 一键创建虚拟机(指定 CPU/内存/磁盘/安装源): ```bash virt-install --name vm1 --memory 2048 --disk size=20 --cdrom /iso/ubuntu.iso ``` - 简化批量部署流程,常用于自动化脚本。 ### 三者协作关系 1. **QEMU-KVM** 提供底层虚拟化能力(运行虚拟机)。 2. **Libvirt** 通过 API 管理 QEMU-KVM 虚拟机(如启动命令 `virsh start vm1`)[^4][^5]。 3. **virt-install** 调用 Libvirt 创建虚拟机配置并启动(依赖 Libvirt 的 XML 架构)[^5]。 > 简言之:virt-install → 生成配置 → Libvirt 管理 → QEMU-KVM 执行。 ### 典型应用场景 - **云计算平台**(如 OpenStack):Libvirt 管理 QEMU-KVM 虚拟机集群[^5]。 - **开发/测试环境**:用 virt-install 快速创建隔离的虚拟机。 - **服务器虚拟化**:QEMU-KVM 提供高性能的虚拟化基础设施。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值