湖南网站设计外包费用,网页原型图,给厂家做代理上什么网站,在1688做公司网站KVM简介#xff1a;
1、虚拟化简史 2、为什么需要CPU虚拟化
X86 操作系统是设计在直接运行在裸硬件设备上的#xff0c;因此它们自己认为它们完全占有计算机硬件。x86 架构提供四个特权级别给操作系统和应用程序来访问硬件。 Ring 是指CPU 的运行级别#xff0c;Ring 0是最…KVM简介
1、虚拟化简史 2、为什么需要CPU虚拟化
X86 操作系统是设计在直接运行在裸硬件设备上的因此它们自己认为它们完全占有计算机硬件。x86 架构提供四个特权级别给操作系统和应用程序来访问硬件。 Ring 是指CPU 的运行级别Ring 0是最高级别Ring1次之Ring2更次之…… 就 Linuxx86 来说 操作系统内核需要直接访问硬件和内存因此它的代码需要运行在最高运行级别Ring0上这样它可以使用特权指令控制中断、修改页表、访问设备等等。
应用程序的代码运行在最低运行级别上Ring3上不能做受控操作。如果要做比如要访问磁盘写文件那就要通过执行系统调用函数执行系统调用的时候CPU的运行级别会发生从ring3到ring0的切换并跳转到系统调用对应的内核代码位置执行这样内核就为你完成了设备访问完成之后再从ring0返回ring3。这个过程也称作用户态和内核态的切换。 那么虚拟化在这里就遇到了一个难题因为宿主操作系统是工作在 ring0 的客户操作系统就不能也在 ring0了但是它不知道这一点以前执行什么指令现在还是执行什么指令但是没有执行权限是会出错的。所以这时候虚拟机管理程序VMM需要避免这件事情发生。 虚拟机如何通过VMM实现 Guest CPU 对硬件的访问根据其原理不同有三种实现技术 1、全虚拟化 2、半虚拟化 3、硬件辅助的虚拟化
基于二进制翻译的全虚拟化Full Virtualization with Binary Translation 客户操作系统运行在 Ring 1它在执行特权指令时会触发异常CPU的机制没权限的指令会触发异常然后 VMM 捕获这个异常在异常里面做翻译模拟最后返回到客户操作系统内客户操作系统认为自己的特权指令工作正常继续运行。但是这个性能损耗就非常的大简单的一条指令执行完了事现在却要通过复杂的异常处理过程。 异常 “捕获trap——翻译handle——模拟emulate” 过程
超虚拟化或者半虚拟化/操作系统辅助虚拟化 Paravirtualization
半虚拟化的思想就是修改操作系统内核替换掉不能虚拟化的指令通过超级调用hypercall直接和底层的虚拟化层hypervisor来通讯hypervisor 同时也提供了超级调用接口来满足其他关键内核操作比如内存管理、中断和时间保持。
这种做法省去了全虚拟化中的捕获和模拟大大提高了效率。所以像XEN这种半虚拟化技术客户机操作系统都是有一个专门的定制内核版本和x86、mips、arm这些内核版本等价。这样以来就不会有捕获异常、翻译、模拟的过程了性能损耗非常低。这就是XEN这种半虚拟化架构的优势。这也是为什么XEN只支持虚拟化Linux无法虚拟化windows原因因为微软不改代码。 硬件辅助的全虚拟化
2005年后CPU厂商Intel 和 AMD 开始支持虚拟化了。Intel 引入了 Intel-VTVirtualization Technology技术。 这种 CPU有 VMX root operation 和 VMX nonroot operation两种模式两种模式都支持Ring 0 ~ Ring 3 共 4个运行级别。这样VMM 可以运行在 VMX root operation模式下客户OS运行在VMX non-root operation模式下。 而且两种操作模式可以互相转换。运行在 VMX root operation 模式下的 VMM 通过显式调用 VMLAUNCH 或 VMRESUME 指令切换到VMX non-root operation模式硬件自动加载 Guest OS 的上下文于是Guest OS获得运行这种转换称为VM entry。Guest OS 运行过程中遇到需要 VMM 处理的事件例如外部中断或缺页异常或者主动调用 VMCALL 指令调用 VMM 的服务的时候与系统调用类似硬件自动挂起 Guest OS切换到 VMX root operation 模式恢复 VMM 的运行这种转换称为VM exit。VMX root operation 模式下软件的行为与在没有 VT-x 技术的处理器上的行为基本一致而 VMX non-root operation 模式则有很大不同最主要的区别是此时运行某些指令或遇到某些事件时发生VM exit。也就说硬件这层就做了些区分这样全虚拟化下那些靠“捕获异常-翻译-模拟”的实现就不需要了。而且CPU厂商支持虚拟化的力度越来越大靠硬件辅助的全虚拟化技术的性能逐渐逼近半虚拟化再加上全虚拟化不需要修改客户操作系统这一优势全虚拟化技术应该是未来的发展趋势。
3、KVM KVM 全称是基于内核的虚拟机Kernel-based Virtual Machine它是一个 Linux的一个内核模块该内核模块使得 Linux变成了一个Hypervisor它由 Quramnet开发该公司于 2008年被 Red Hat 收购。它支持 x86 (32 and 64 位), s390, Powerpc 等CPU。它从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中。它需要支持虚拟化扩展的CPU。它是完全开源的。官方网站http://www.linux-kvm.org/page/Main_Page KVM 架构 KVM 是基于虚拟化扩展Intel VT 或者 AMD-V的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中虚拟机被实现为常规的 Linux 进程由标准 Linux 调度程序进行调度虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KVM 能够使用Linux 内核的已有功能。但是KVM 本身不执行任何硬件模拟需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间向它提供模拟的 I/O并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。 Linux 上的用户空间、内核空间和虚机 Guest 客户机系统包括CPUvCPU、内存、驱动Console、网卡、I/O 设备驱动等被KVM 置于一种受限制的 CPU 模式下运行。 KVM 运行在内核空间提供CPU 和内存的虚级化以及客户机的 I/O 拦截。Guest 的 I/O 被 KVM 拦截后交给 QEMU 处理。 QEMU 修改过的为KVM虚机使用的QEMU代码运行在用户空间提供硬件I/O虚拟化通过IOCTL /dev/kvm 设备和 KVM 交互。 KVM 实现拦截虚机的 I/O 请求的原理 现代CPU本身实现了对特殊指令的截获和重定向的硬件支持甚至新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化从而提高性能。以 X86 平台为例支持虚拟化技术的 CPU 带有特别优化过的指令集来控制虚拟化过程。通过这些指令集VMM 很容易将客户机置于一种受限制的模式下运行一旦客户机视图访问物理资源硬件会暂停客户机的运行将控制权交回给 VMM 处理。VMM 还可以利用硬件的虚级化增强机制将客户机在受限模式下对一些特定资源的访问完全由硬件重定向到 VMM 指定的虚拟资源整个过程不需要暂停客户机的运行和 VMM 的参与。由于虚拟化硬件提供全新的架构支持操作系统直接在上面运行无需进行二进制转换减少了相关的性能开销极大简化了VMM的设计使得VMM性能更加强大。从 2005 年开始Intel 在其处理器产品线中推广 Intel Virtualization Technology 即 IntelVT 技术。 QEMU-KVM 其实QEMU原本不是KVM的一部分它自己就是一个纯软件实现的虚拟化系统所以其性能低下。但是QEMU代码中包含整套的虚拟机实现包括处理器虚拟化内存虚拟化以及 KVM需要使用到的虚拟设备模拟网卡、显卡、存储控制器和硬盘等。为了简化代码KVM 在 QEMU 的基础上做了修改。VM 运行期间QEMU 会通过 KVM 模块提供的系统调用进入内核由 KVM 负责将虚拟机置于处理的特殊模式运行。遇到虚机进行 I/O 操作KVM 会从上次的系统调用出口处返回 QEMU由QEMU来负责解析和模拟这些设备。从QEMU的角度看也可以说是QEMU使用了KVM模块的虚拟化功能为自己的虚机提供了硬件虚拟化加速。除此以外虚机的配置和创建、虚机运行所依赖的虚拟设备、虚机运行时的用户环境和交互以及一些虚机的特定技术比如动态迁移都是QEMU自己实现的。 KVM KVM内核模块在运行时按需加载进入内核空间运行。KVM本身不执行任何设备模拟需要QEMU通过 /dev/kvm 接口设置一个GUEST OS的地址空间向它提供模拟的 I/O设备并将它的视频显示映射回宿主机的显示屏。它是KVM虚机的核心部分其主要功能是初始化CPU硬件打开虚拟化模式然后将虚拟客户机运行在虚拟机模式下并对虚机的运行提供一定的支持。以在Intel上运行为例KVM模块被加载的时候它做的事情如下 首先初始化内部的数据结构做好准备后KVM 模块检测当前的 CPU然后打开CPU控制及存取CR4的虚拟化模式开关并通过执行VMXON指令将宿主操作系统置于虚拟化模式的根模式最后KVM模块创建特殊设备文件/dev/kvm并等待来自用户空间的指令。 接下来的虚机的创建和运行将是QEMU和KVM相互配合的过程。两者的通信接口主要是一系列针对特殊设备文件/dev/kvm的IOCTL调用。其中最重要的是创建虚机。它可以理解成KVM 为了某个特定的虚机创建对应的内核数据结构同时KVM 返回一个文件句柄来代表所创建的虚机。 针对该句柄的调用可以对虚机做相应地管理比如创建用户空间虚拟地址和客户机物理地址、真实物理地址之间的映射关系再比如创建多个vCPU。KVM为每一个vCPU生成对应的文件句柄对其相应地IOCTL 调用就可以对vCPU进行管理。其中最重要的就是“执行虚拟处理器”。通过它虚机在KVM的支持下被置于虚拟化模式的非根模式下开始执行二进制指令。在非根模式下所有敏感的二进制指令都被CPU捕捉到CPU在保存现场之后自动切换到根模式由KVM决定如何处理。 除了CPU的虚拟化内存虚拟化也由KVM实现。实际上内存虚拟化往往是一个虚机实现中最复杂的部分。CPU 中的内存管理单元MMU是通过页表的形式将程序运行的虚拟地址转换成实际物理地址。在虚拟机模式下MMU的页表则必须在一次查询的时候完成两次地址转换。因为除了将客户机程序的虚拟地址转换了客户机的物理地址外还要将客户机物理地址转化成真实物理地址。 KVM 虚机的创建过程 可见 qemu-kvm 通过对/dev/kvm的一系列 ICOTL 命令控制虚机。一个 KVM 虚机即一个Linux qemu-kvm进程与其他Linux进程一样被Linux 进程调度器调度。KVM虚机包括虚拟内存、虚拟CPU和虚机 I/O设备其中内存和 CPU 的虚拟化由 KVM 内核模块负责实现I/O 设备的虚拟化由QEMU负责实现。KVM客户机系统的内存是qumu-kvm 进程的地址空间的一部分。KVM虚机的vCPU 作为线程运行在 qemu-kvm进程的上下文中。 vCPU、QEMU 进程、LInux 进程调度和物理CPU之间的逻辑关系 因为CPU中虚拟化功能的支持并不存在虚拟的CPUKVM Guest代码是运行在物理CPU之上。 KVM实现客户机内存的方式是利用mmap系统调用在QEMU主线程的虚拟地址空间中申明一段连续的大小的空间用于客户机物理内存映射。在有两个虚机的情况下情形是这样的 可见KVM为了在一台机器上运行多个虚拟机需要增加一个新的内存虚拟化层也就是说必须虚拟MMU来支持客户操作系统来实现 VA - PA - MA 的翻译。客户操作系统继续控制虚拟地址到客户内存物理地址的映射 VA - PA但是客户操作系统不能直接访问实际机器内存因此VMM 需要负责映射客户物理内存到实际机器内存 PA - MA。 VMM 内存虚拟化的实现方式 软件方式 通过软件实现内存地址的翻译比如 Shadow page table 影子页表技术 硬件实现 基于CPU的辅助虚拟化功能比如AMD的NPT和Intel的EPT技术KVM 中虚拟机的物理内存即为qemu-kvm进程所占用的内存空间。KVM使用CPU辅助的内存虚拟化方式。在Intel和AMD平台其内存虚拟化的实现方式分别为 AMD 平台上的 NPT Nested Page Tables 技术 Intel 平台上的 EPT Extended Page Tables技术 KVM的整体结构 从GUI到Linux内核包括以下五个组件 virt-manager 一个用来管理VM的GUI/CUI用户接口;它使用libvirt调用VM的各种功能。libvirt 一个工具及接口作为较通用的服务器虚拟化软件它支持XenVMware ESX/GSX当然还有QEMU/KVM。QEMU 一个和KVM内核模块交互的模拟器处理多种客户机系统请求如I/O;一个QEMU进程对应一个客户机系统。KVM内核模块 从狭义上来说KVM是一个Linux内核模块处理客户机系统的VM Exits和执行VM Entry指令。Linux内核 既然QEMU作为一个普通的用户进程运行相应客户机系统的调度就由Linux内核自己来处理。 所有的组件都是开放源码软件(OSS)。 KVM 的功能列表 KVM 所支持的功能包括 Ø 支持CPU 和 memory 超分Overcommit Ø 支持半虚拟化I/O virtio Ø 支持热插拔cpu块设备、网络设备等 Ø 支持对称多处理Symmetric Multi-Processing缩写为 SMP Ø 支持实时迁移Live Migration Ø 支持 PCI 设备直接分配和单根I/O虚拟化SR-IOV Ø 支持内核同页合并KSM Ø 支持NUMA Non-Uniform Memory Access非一致存储访问结构 KVM 工具集合 libvirt 操作和管理KVM虚机的虚拟化API使用C语言编写可以由PythonRubyPerlPHPJava 等语言调用。可以操作包括 KVMvmwareXENHyper-vLXC 等 Hypervisor。 Virsh 基于libvirt 的命令行工具CLI Virt-Manager 基于libvirt的GUI工具 virt-v2v 虚机格式迁移工具 virt-* 工具 包括Virt-install 创建KVM虚机的命令行工具Virt-viewer 连接到虚机屏幕的工具Virt-clone虚机克隆工具virt-top 等 sVirt 安全工具和selinux相关 KVM虚拟机的安装 什么是云计算 云计算配置各种资源的方式 云计算的分类基础即服务Iaas平台即服务Paas软件即服务Saas 如果按照不同的部署方式公有云、私有云、混合云 KVM介绍
虚拟化的不同的方式
基于二进制的全虚拟化半虚拟化Xen全虚拟化KVM、VMware
KVM的概念
基于内核的虚拟机Kernel-Based virtual mathine
环境要求
1、如果是物理服务器需要在BIOS中打开虚拟化功能Virtualization Technology一般的服务器默认是打开这个功能的。 2、如果是用VMware Workstation做实验建立的虚拟机的CPU要勾选虚拟化功能这样虚拟机才会支持KVM虚拟化 安装方式
1、最简单的安装方法就是在安装系统的时候安装上虚拟化功能这里以CentOS7.3为例选择安装包的时候如下图选择即可选择“带GUI的服务器”并勾选“虚拟化客户端”、“虚拟化Hypervisor”、“虚拟化工具”。 2、如果你的系统是最小化安装的那你应该安装以下所需软件
yum groupinstall GNOME 桌面 -y #安装GNOME桌面环境
yum install qemu-kvm -y #KVM核心模块
yum install qemu-kvm-tools -y #KVM调试工具可以选择性安装
yum install qemu-img -y #允许你创建、转换和修改镜像能处理被qemu支持的所有镜像格式
yum install libvirt -y #管理虚拟机的工具包
yum install virt-install -y #virt-install是一个使用libvirt库构建新虚拟机的命令行工具
yum install virt-manager -y #图形界面管理虚拟机
yum install bridge-utils -y #配置linux以太网桥3、验证
安装系统后可以检查CPU是否支持虚拟化功能。如果值为0说明不支持如果非0说明支持
[rootlocalhost ~]# egrep -c (vmx|svm) /proc/cpuinfo
2检查KVM模块是否安装
[rootlocalhost ~]# lsmod | grep kvm
kvm_intel 188688 0
kvm 636969 1 kvm_intel
irqbypass 13503 1 kvm[rootlocalhost ~]# systemctl status libvirtd如果libvirtd服务停止运行那么你将不能管理虚拟机也就是不能使用virt-manager等工具来管理虚拟机。
创建虚拟机
基本环境firewalld 和 SElinux 全部关闭
[rootlocalhost ~]# systemctl stop firewalld
[rootlocalhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multiuser.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbusorg.fedoraproject.FirewallD1.service.
[rootlocalhost ~]# setenforce 0
[rootlocalhost ~]# vim /etc/sysconfig/selinux
#disabled1、创建虚拟机之前的准备工作
准备2个目录一个目录放置iso系统镜像文件还有一个目录作为磁盘的存储池
[rootlocalhost ~]# mkdir /kvm-vm
[rootlocalhost ~]# mkdir /iso1操作系统安装介质ISO文件并上传到系统的/iso目录下 [rootlocalhost ~]# ls /iso/ CentOS-7-x86_64-DVD-1611.iso 2磁盘空间准备创建虚拟机时直接给大一点的磁盘空间即可 2.1添加新磁盘 2.2创建LVM 2.3创建文件系统及挂载点并设置开机自动挂载 pvcreate /dev/sdb vgcreate vmvg /dev/sdb lvcreate -n kvm-lv -l 20479 vmvg mkdir /kvm-vm mount /dev/vmvg/kvm-lv /kvm-vm/ 2、使用virt-manager图形界面创建 virt-manager是基于libvirt的图形化虚拟机管理软件。在命令行中以root身份输入virt-manager命令出现virt-manager管理界面 或 创建存储池 双击“QEMU/KVM”然后选择“存储”选项卡然后单击“”按钮新建存储池命名为“kvm-vm”单击“前进”然后输入上面创建的lvm挂载目录单击完成。 以同样的方法创建一个镜像存储池命名为 iso目录为 /iso 即可用于放置以后KVM虚拟机使用的iso光盘镜像文件。 创建存储卷其实就是KVM虚拟机的硬盘文件选择刚建的“vm”存储卷点击新建卷设置名字和大小。 在虚拟系统管理器中选择“新建虚拟机”选择“本地安装介质”“前进” 选择“浏览”选择镜像文件 选择内存和CPU设置 网络使用默认的NAT网络即可 单击完成后虚拟机就开始创建然后按照操作系统即可 3、使用vrit-install命令创建虚拟机
[rootlocalhost ~]# virt-install --os-typelinux --os-variant centos7.0 --name test01 --ram 1024 --vcpus 1 --disk/kvm-vm/test01.raw,formatraw,size10 --location /iso/CentOS-7-x86_64-DVD-1611.iso --network networkdefault --graphics vnc,listen0.0.0.0 --noautoconsole //自动补全
[rootkvm ~]# yum -y install bash-completion libvirt-bash-completion然后到桌面系统打开virt-manager完成后续的安装操作系统的工作即可。
如果不希望手动安装操作系统也可以指定应答文件来自动完成安装过程增加–extraargs参数 --extra-args’kshttp://192.168.1.100/mini.txt’ mini.txt为应答文件如果希望通过PXE安装虚拟机可以使用以下命令参数–pxe 指定使用PXE协议从网络引导
virt-install命令参数 通用选项 -n NAME, --nameNAME 虚拟机名称 -r MEMORY, --ramMEMORY 以MB为单位为客户端事件分配的内存 –vcpusVCPUS 配置虚拟机的虚拟CPU(vcpu)数量如 –vcpus 5 –vcpus 5, maxcpus10 –vcpus socket2,cores4,threads2 –cpusetCPUSET Set which physical CPUs domain can use. –cpuCPU CPU型号及功能如–cpu coreduo,x2apic –descriptionDESCRIPTION 在生成的XML中保存的可读VM描述。 –securitySECURITY 设定域安全驱动器配置。 –numatuneNUMATUNE 为域进程调整NUMA策略。 安装方法选项 -c CDROM, --cdromCDROM 光驱安装介质 -l LOCATION, --locationLOCATION 安装源(例如nfs:host:/path、http://host/path、ftp://host/path) –pxe 使用 PXE 协议从网络引导 –import 在磁盘映像中构建客户机 –livecd 将光驱介质视为 Live CD -x EXTRA, --extra-argsEXTRA 附加到使用–location引导的内核的参数 –os-typeDISTRO_TYPE 要安装的操作系统类型例如‘linux’、‘unix’、‘windows’ –os-variantDISTRO_VARIANT The OS variant being installed guests, e.g. ‘fedora6’,‘rhel5’, ‘solaris10’, ‘win2k’ 可以通过osinfo-query os命令查询 –bootBOOTOPTS 自选配置后安装引导顺序、菜单、永久kernel引导等等。 存储配置 –diskDISKOPTS 用各种选项指定存储。 Ex. –disk path/my/existing/disk –disk path/my/new/disk,size5 (in gigabytes) –disk volpoolname:volname,devicecdrom,busscsi,… –nodisks 不要为该客户端设置任何磁盘。 –filesystemFILESYSTEMS 将主机目录传递给虚拟机。例如 –filesystem /my/source/dir,/dir/in/guest –filesystem template_name,/,typetemplate 联网配置 -w NETWORK, --networkNETWORK 配置客户网络接口。 Ex: –network bridgemybr0 –network networkmy_libvirt_virtual_net –network networkmynet,modelvirtio,mac00:11… –nonetworks 不要为该客体创建网络接口。 图形配置 –graphicsGRAPHICS配置虚拟机显示设置。例如 –graphics vnc –graphics spice,port5901,tlsport5902 –graphics none –graphics vnc,passwordfoobar,port5910,keymapja –noautoconsole 不要自动尝试连接到客户端控制台 设备选项 –serialSERIALS 配置虚拟机串口设备 –parallelPARALLELS 配置虚拟机并口设备 –channelCHANNELS 配置虚拟机沟通频道 –consoleCONSOLES 配置虚拟机与主机之间的文本控制台连接 –host-deviceHOSTDEVS 配置与客户相连的物理主机设备 –soundhwSOUNDHW 配置客户声音设备仿真 –watchdogWATCHDOG 配置虚拟机 watchdog 设备 –videoVIDEO 配置虚拟机视频硬件。 –smartcardSMARTCARD 配置虚拟机智能卡设备。例如 –smartcard modepassthrough –redirdevREDIRDEV Configure a guest redirection device. Ex: –redirdev usb,typetcp,server192.168.1.1:4000 –panicPANIC Configure a guest panic device. Ex: –panic default 虚拟化平台选项 -v, --hvm 客户端应该是一个全虚拟客户端 -p, --paravirt 这个客户端是一个半虚拟客户端 –container This guest should be a container guest –virt-typeHV_TYPE 要使用的管理程序名称(kvm、qemu、xen 等等) –archARCH 模拟的 CPU 构架 –machineMACHINE The machine type to emulate –noapic 为全虚拟客户端禁用 APIC(在 os-type/osvariant db 中覆盖数值) –noacpi 为全虚拟客户端禁用 ACPI(在 os-type/osvariant db 中覆盖数值) -u UUID, --uuidUUID 客户端 UUID。 其它选项 –autostart 引导主机时自动启动域。 –print-xml 输出所生成域的XML而不是定义虚拟机。 –print-stepXMLSTEP 输出具体安装步骤123all的 XML。 –noreboot 完成安装后不要引导虚拟机。 –waitWAIT 要等待的时间(以分钟为单位) –dry-run 完成安装步骤但不要创建设备或者定义虚拟机。 –force 对任意应用程序提示强制回答‘yes’终止其它提示 -q, --quiet 禁止无错误输出 –prompt 要求用户为模糊情况或者需要的选项输入 -d, --debug 输入故障排除信息 安装半虚拟化驱动virtio
目的为了提高内存、硬盘、网络的性能需要支持半虚拟化。 virtIO是一种半虚拟化驱动广泛用于在XEN平台和KVM虚拟化平台用于提高客户机IO的效率事实证明virtIO极大的提高了VM IO 效率配备virtIO前后端驱动的情况下客户机IO效率基本达到和宿主机一样的水平 没有使用virtio驱动的执行过程 使用virtio驱动后的执行过程 性能比较 如何获得virtio驱动程序 1、红帽RHEL4.8之后自动加载和安装virtio驱动 2、windows操作系统需要额外安装virtio驱动 下载网址http://www.linuxkvm.org/page/WindowsGuestDrivers/Download_Drivers 在已经安装好的Windows虚拟机上安装virtio驱动 通过向导创建的VM默认磁盘为IDE接口网卡为rtl8139即全虚拟化驱动一定要按照以下步骤进行操作否则会出现蓝屏错误 1、关闭虚拟机。编辑虚拟机的配置添加一个很小的virtio硬盘、一块virtio网卡 2、虚拟光驱加载上传的ISO文件 3、启动虚拟机。登陆后Windows会发现新的硬件但是没有驱动 4、通过设备管理器安装驱动
QEMU Guest Agent安装与配置 如果VM中安装了QEMU Guest Agent,Host主机就可以使用libvirt向VM发送命令例如“冻结”、“释放”文件系统虚拟CPU的热添加及移除等。 RHEL/CentOS7中有相应的安装包。 qemu-guest-agent-2.8.0-2.el7.x86_64.rpm 直接安装并启动服务即可 systemctl status qemu-guest-agent.service Windows需要手动安装。virtio-win-0.1.141.iso光盘镜像中就有这个程序