当前位置:首页 > 虚拟化 > 正文

简述kvm虚拟化的过程


一、如何开启电脑的虚拟化功能?

在计算机上启用虚拟化的方式因操作系统和硬件而异,但一般步骤如下。

对于Windows系统(例如Windows10或Windows11):

重新启动计算机并进入BIOS设置。这通常是通过在启动期间按特定键(F2、F10、DEL等)来完成的。

在BIOS设置中,找到与虚拟化相关的选项。这通常位于“配置”、“高级”或“CPU设置”等菜单下。确切的选项名称可能因主板制造商而异,但常见名称包括“IntelVirtualTechnology”、“VirtualizationTechnology”和“VT-x/AMD-V”。

将虚拟化选项设置为“启用”或启用状态。这可能需要您按Enter或使用其他键(例如加号或箭头键)来选择选项,然后按Enter确认。

保存BIOS设置并退出。这通常通过按F10并选择“是”或“确定”来完成。

对于Linux系统:

确保您的系统支持虚拟化技术。您可以通过检查CPU型号和制造商文档来验证这一点。

安装虚拟化软件,例如KVM(基于内核的虚拟机)或VirtualBox。以KVM为例,需要打开/etc/modules文件,添加相应的模块(kvm、kvm_intel、kvm_amd等)。

将用户添加到libvirt和kvm组。这可以通过运行“sudoadduserUSERlibvirt”或“sudoadduserUSERkvm”等命令来完成。

重新启动系统以使设置生效。

检查虚拟化是否开启成功。您可以通过运行“sudovirshlist--all”等命令来检查这一点。如果输出显示虚拟机信息,则虚拟化已成功启用。

对于Mac系统:

安装VMwareFusion或ParallelsDesktop等虚拟化软件。

在安装过程中,请按照软件中的说明配置虚拟机并启用虚拟化功能。

启动虚拟机并在其中运行所需的操作系统和应用程序。

请注意,上述步骤仅提供一般指导,可能会因您的硬件、操作系统和虚拟化软件而异。在进行任何更改之前,请务必备份重要数据并仔细阅读相关文档和说明。


二、虚拟化技术—QEMU-KVM基于内核的虚拟机

探索虚拟化巅峰:QEMU-KVM的基础和高效运行


QEMU-KVM,是与Linux集成的高效虚拟化解决方案,其核心是TYPE1Hypervisor,该解决方案采用硬件辅助虚拟化技术,与Linux内核紧密配合,以其优异的性能和资源管理能力脱颖而出。要了解KVM,首先要知道它是如何利用内核模块等硬件支持来提供虚拟环境的控制和优化,以保证兼容性和效率。


2007年,KVM正式加入Linux家族,支持多核(SMP)和NUMA架构。其功能扩展到LiveMigration和KernelSame-pageMerging(KSM),显着提高了动态性。迁移和内存管理的效率。启动时,KVM内核模块在RootMode下初始化,并通过UserApplicationQEMU像魔术一样模拟虚拟硬件并向虚拟机提供服务。


QEMU,由天才开发者FabriceBellard于2001年推出,名为TYPE2Hypervisor,基于动态二进制翻译技术,兼容多种架构。CPU也模拟设备,尽管其性能较差略低于KVM。虽然较差,但QEMU的多功能性使其可以与KVM结合,创建强大的QEMU-KVM分支。两者共同推动虚拟化技术的创新。


KVM软件组件包括:内核模块、QEMU开源虚拟机管理器、AWS、阿里云等厂商云服务中使用的QEMU-KVM以及virtioTogether驱动程序。为虚拟化技术奠定坚实的基础。


虽然QEMU-KVM分支是QEMU的一部分,但在KVM环境中我们更喜欢将QEMU称为KVM执行引擎。KVM的工作方式非常巧妙。驻留在内核空间,通过/dev/kvm与用户空间实时交互,并提供libkvm库。QEMU通过open、close、ioctl等系统调用访问KVM接口,实现CPU、内存和I/O虚拟化,而VM管理和I/O仿真则由QEMUcreate独立处理。


虚拟机创建过程就像一门艺术一样精确:首先打开/dev/kvm,通过ioctl命令创建VM,并配置硬件抽象层(HVA)和物理寻址(HPA),以及PCI设备的仿真。然后映射QEMU映像、构建vCPU并启动GuestOS。在此过程中,主线程不断监听VM的退出事件,以响应中断并访问虚拟环境中的设备。


当设备中断失败或设备访问触发退出事件时,KVM接管CPU,Linux内核通过ioctl与QEMU交互,管理虚拟机及其vCPU。KVM支持三种操作模式:User、Kernel(root模式)和Guest(非root模式)。QEMU通过/dev/kvm实现内存虚拟化,并创建全局页表(GPA)映射以确保GuestOS隔离。对于I/O虚拟化,QEMU负责模拟设备和捕获I/O请求,构建QEMU-KVM架构,由vCPU、虚拟内存、I/O虚拟和GuestOS构建,形成单个用户进程结构。


QEMU-KVM的架构经过智能化设计。vCPU根据HostOS调度由GuestOS和HostOS共同管理,形成两层调度:GuestOS负责高层管理。HostOS(LinuxScheduler)负责底层调度,包括vCPU线程、QEMU线程和物理CPU。KVM支持SMP和NUMA,允许用户自定义虚拟机的vCPU布局,保证迁移过程中CPU型号的安全。


通过-qemu-kvm命令,开发人员可以自定义VM的CPU配置并选择自定义型号和功能。但是,应该注意的是,软件模拟会影响性能。默认使用-host模式,磁盘设备选项丰富多样,包括文件路径、接口类型、索引、格式等。-boot等引导选项用于指定引导设备,并根据体系结构支持不同的字符标识符。QEMU的网卡仿真功能非常强大,支持多种类型的网卡、MAC地址和VLAN。它甚至可以通过Tap接口连接到物理网络,并支持用户模式网络堆栈设计。


QEMU-KVM以其卓越的性能和灵活性引领我们探索更高层次的计算世界,这是虚拟化技术的一次精彩之旅。无论是基本配置还是高级功能,QEMU-KVM以优秀的技术设计为云计算和虚拟化环境提供了强有力的支持。