QEMU,KVM及QEMU-KVM介绍

本文深入探讨了QEMU-KVM的原理与应用,QEMU-KVM结合了QEMU的硬件模拟能力和KVM的CPU虚拟化功能,实现了高性能的服务器虚拟化。KVM作为Linux内核的一部分,提供CPU和内存虚拟化;QEMU则模拟IO设备,两者协同工作,形成完整的虚拟化解决方案。

转载原文博客:https://www.cnblogs.com/echo1937/p/7138294.html

What's QEMU

QEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真正硬件进行操作。通过这种模式,guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB设备进行交互。但由于所有指令都需要经过QEMU来翻译,因而性能会比较差:

What's KVM?

KVM实际是linux内核提供的虚拟化架构,可将内核直接充当hypervisor来使用。KVM需要处理器硬件本身支持虚拟化扩展,如intel VT 和AMD AMD-V技术。KVM自2.6.20版本后已合入主干并发行,除此之外,还以模块形式被移植到FreeBSD和illumos中。除了支持x86的处理器,同时也支持S/390,PowerPC,IA-61以及ARM等平台。

工作原理

KVM包含一个内核模块kvm.ko用来实现核心虚拟化功能,以及一个和处理器强相关的模块如kvm-intel.ko或kvm-amd.ko。KVM本身不实现任何模拟,仅仅是暴露了一个/dev/kvm接口,这个接口可被宿主机用来主要负责vCPU的创建,虚拟内存的地址空间分配,vCPU寄存器的读写以及vCPU的运行。有了KVM以后,guest os的CPU指令不用再经过QEMU来转译便可直接运行,大大提高了运行速度。但KVM的kvm.ko本身只提供了CPU和内存的虚拟化,所以它必须结合QEMU才能构成一个完整的虚拟化技术,也就是下面要介绍的技术。

What's QEMU-KVM

从前面的介绍可知,KVM负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm并不能模拟其他设备,还必须有个运行在用户空间的工具才行。KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,QEMU模拟IO设备(网卡,磁盘等),对其进行了修改,最后形成了QEMU-KVM。

在QEMU-KVM中,KVM运行在内核空间,QEMU运行在用户空间,实际模拟创建、管理各种虚拟硬件,QEMU将KVM整合了进来,通过/ioctl 调用 /dev/kvm,从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存的虚拟化,但KVM不能虚拟其他硬件设备,因此qemu还有模拟IO设备(磁盘,网卡,显卡等)的作用,KVM加上QEMU后就是完整意义上的服务器虚拟化。

综上所述,QEMU-KVM具有两大作用:

  1. 提供对cpu,内存(KVM负责),IO设备(QEMU负责)的虚拟
  2. 对各种虚拟设备的创建,调用进行管理(QEMU负责)

这个方案中,QEMU模拟其他的硬件,如Network, Disk,同样会影响这些设备的性能。于是又产生了pass through半虚拟化设备virtio_blk, virtio_net,提高设备性能。

 

QEMU-KVM,是QEMU的一个特定于KVM加速模块的分支,里面包含了很多关于KVM的特定代码,与KVM模块一起配合使用。

目前QEMU-KVM已经与QEMU合二为一,所有特定于KVM的代码也都合入了QEMU,当需要与KVM模块配合使用的时候,只需要在QEMU命令行加上 --enable-kvm就可以。

### 正确安装 `libvirt`、`libvirt-python`、`qemu-kvm` 及其相关工具 为了正确安装 `libvirt`、`libvirt-python`、`qemu-kvm` 和其他相关工具,可以通过以下方法完成: #### 1. 安装基础组件 在 CentOS 或 RHEL 类似系统上,可以直接使用 `yum` 命令安装所需的软件包。以下是具体的命令集合: ```bash yum install -y qemu-kvm qemu-img libvirt libvirt-python virt-manager virt-install virt-viewer ``` 此命令将一次性安装多个必要的组件[^1]。 #### 2. 验证 KVM 支持 确保硬件支持虚拟化技术,并已启用 BIOS 中的虚拟化选项。运行以下命令验证是否启用了 KVM 模块: ```bash lsmod | grep kvm ``` 如果返回结果为空,则可能未加载模块或硬件不支持虚拟化功能[^4]。 #### 3. 启动并配置服务 安装完成后,需启动 `libvirtd` 服务并将它设置为随系统启动自动运行: ```bash systemctl start libvirtd systemctl enable libvirtd ``` #### 4. 测试虚拟机创建能力 可以尝试通过 `virt-manager` 图形界面或者命令行工具 `virt-install` 来创建一台简单的虚拟机以确认环境正常工作[^2]。 对于 Rocky Linux 9 用户而言,除了上述提到的基础依赖外还需要额外增加一些特定于版本的支持库,例如 `bridge-utils`, `libguestfs-tools` 等[^3]: ```bash yum install -y qemu-kvm virt-manager libvirt virt-install virt-viewer \ bridge-utils libguestfs-tools ``` 以上步骤涵盖了从基本需求到高级扩展的所有必要操作说明. ```python print("Libvirt and related tools have been successfully installed.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值