KVM+QEMU虚拟化概念

本文介绍了KVM(Kernel-based Virtual Machine)虚拟化技术的概念、架构及其实现方式。KVM是一种开源、免费的虚拟化解决方案,其核心优势在于与Linux内核集成,能够提供快速的虚拟化体验。此外,文章还探讨了KVM与QEMU的合作机制及其管理工具。

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

概念:

KVM,即Kernel-basedvirtual machine,由redhat开发,是一种开源、免费的虚拟化技术。对企业来说,是一种可选的虚拟化解决方案。

 

定义:基于Linux内核的虚拟机

解释:

KVM 、XEN、Hyper-V 这类 Hypervisor 是为商用而生的,他们本身就是一种 OS,直接运行
在硬件之上,例如KVM,架构是:硬件 ---> {Linux Kernel + KVM} ---> VM,即加载了
KVM module 的 Linux Kernel 本身就是一种完备的 Hypervisor,运行在内核态。这样做的
好处在于可以使用 Kernel 本身的 CPU 调度 和 内存管理,不用像XEN一样自己实现,所以
说,KVM 是基于 Linux Kernel 的。

 

优点:

KVM最大的好处就在于它是与Linux内核集成的,所以速度很快。KVM的宿主操作系统必须是Linux,支持的客户机操作系统包括Linux、Windows、Solaris和BSD,运行在支持虚拟化扩展的x86和x86_64硬件架构上,cpu支持VT技术。

 

QEMU:

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

 

硬件基础:

KVM功能,是以扩展虚拟化CPU为硬件基础(如Intel-VT,AMD-V),利用CPU虚拟化技术。

 

实现方式:(模块化)

KVM作为内核的一个模块,来提供虚拟化功能。如果系统需要虚拟化功能,则KVM模块可以被linux内核按需动态加载到内存运行。如果不需要的KVM功能,可以动态卸载该模块。

 

KVM+QEMU工作原理:

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才能构成一个完整的虚拟化技术,这样,KVM和QEMU联合就提供了一个模拟的(虚拟的)硬件层(CPU、内存、IO设备等),虚拟机就运行在这个模拟的硬件层之上。

 

 

                                                            

上图,是KVM虚拟机的整体架构。KVM内核模块在运行时按需加载进入内核空间运行。KVM本身不执行任何硬件设备模拟,需要用户空间程序QEMU通过/dev/kvm接口设置一个虚拟客户机的地址空间,向它提供模拟的I/O等硬件设备。

总结:KVM内核模块在运行时只关注CPU调度和内存管理;而包括网卡在内的其他I/O硬件设备是QEMU虚拟提供的。

 

KVM是以扩展虚拟化的CPU为硬件基础,但是KVM也可运行在不支持虚拟化技术的CPU之上。只不过,后者是使用QEMU提供的纯粹的模拟方式,性能较低。

 

KVM管理工具:

Virtual Machine Manager(VMM),由redhat开发的,是一个图形化管理工具。

KVM也有自己的语法规则,你可以使用KVM的语法规则编写命令,使用命令行方式来管理虚拟机。 For more information, reference to :

The Kernel VirtualMachine - Community Ubuntu Documentation

KVM tutorials onhowtoforge.com

KVM/Virsh -Community Ubuntu Documentation

 

KVM的优势和劣势:

优势:KVM是一个免费开源软件,提供了虚拟化解决方案;提供了强大的命令行接口。

劣势:KVM可以运行在不支持虚拟化的CPU硬件上,但是在这样的话,效率会很低;KVM也可能会和虚拟机virtualbox冲突; KVM只是提供命令行接口,用户可以写脚本来管理KVM,并没有一个友好的GUI。

 

 

转载自:https://blog.youkuaiyun.com/j123kaishichufa/article/details/40653213

 

转载于:https://www.cnblogs.com/dannylinux/p/9229032.html

### KVMQEMU虚拟化技术中的关系和工作原理 #### ### KVMQEMU 的关系 KVM(Kernel-based Virtual Machine)是 Linux 内核的一部分,提供内核级别的 CPU 和内存虚拟化支持[^2]。QEMU 是一个功能强大的模拟器,能够在纯软件环境中模拟各种硬件设备。通过将 KVM 整合到 QEMU 中,QEMU 能够利用 KVM 提供的硬件加速功能来实现高性能的虚拟化[^3]。因此,KVM 负责 CPU 和内存的虚拟化,而 QEMU 则负责模拟其他硬件设备(如网卡、磁盘等)。这种组合被称为 qemu-kvm[^2]。 #### ### Type1 和 Type2 虚拟化的工作原理及区别 - **Type1 虚拟化**:也称为裸金属虚拟化,其 Hypervisor 直接运行在硬件之上,不依赖任何宿主操作系统。在这种架构中,虚拟机直接访问底层硬件资源,从而减少了性能开销并提高了效率[^1]。KVM 是一个典型的 Type1 虚拟化解决方案,因为它作为 Linux 内核模块运行,直接管理硬件资源。 - **Type2 虚拟化**:也称为托管虚拟化,其 Hypervisor 运行在现有的主机操作系统之上。在这种架构中,虚拟机通过 Host OS 访问硬件资源,因此会引入额外的性能开销。尽管如此,Type2 虚拟化因其易于安装和使用的特点,在桌面虚拟化场景中更为常见[^1]。例如,VMware Workstation 和 Oracle VirtualBox 属于 Type2 虚拟化工具。 #### ### KVMQEMU 的使用方法 ##### ### 配置和启动 KVM 虚拟机 以下是一个简单的 Python 脚本,用于启动基于 KVM 的虚拟机: ```python import os def start_kvm_vm(vm_name, disk_image): command = f"qemu-system-x86_64 -enable-kvm -m 2048 -smp 2 -hda {disk_image} -name {vm_name}" os.system(command) # 示例调用 start_kvm_vm("test_vm", "/path/to/disk.img") ``` ##### ### 使用 libguestfs 操作虚拟机磁盘镜像 libguestfs 是一个用于访问和修改虚拟机磁盘镜像的工具集。它可以通过 libvirt 与 KVM 和 Xen 等虚拟化平台连接[^1]。以下是一些常用的 libguestfs 命令: - 查看磁盘镜像分区信息: ```bash virt-df -h -d vm1 ``` 或者: ```bash virt-filesystems -d vm1 /dev/sda1 ``` - 挂载磁盘镜像分区: ```bash guestmount -d vm1 -m /dev/vda1 --rw /mnt ``` - 取消挂载: ```bash guestunmount /mnt ``` #### ### 性能和兼容性比较 - **性能**:由于 Type1 虚拟化直接控制硬件资源,通常具有更高的性能和更低的延迟。这种特性使其成为数据中心和云计算环境中的首选解决方案。 - **兼容性**:Type2 虚拟化提供了更好的兼容性,因为它可以利用 Host OS 的驱动程序来支持广泛的硬件设备。然而,由于 Host OS 的存在,Type2 虚拟化的性能通常不如 Type1 虚拟化[^1]。 #### ### 应用场景分析 - **数据中心和云计算**:Type1 虚拟化技术能够提供高效、灵活且可扩展的计算资源,适用于大规模部署和动态资源分配的场景[^2]。 - **桌面虚拟化**:Type2 虚拟化因其简单易用的特点,适合开发者、测试人员和普通用户在个人计算机上运行多个操作系统。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值