Qemu-kvm虚拟化技术介绍_第1页
Qemu-kvm虚拟化技术介绍_第2页
Qemu-kvm虚拟化技术介绍_第3页
Qemu-kvm虚拟化技术介绍_第4页
Qemu-kvm虚拟化技术介绍_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Qemu-kvm虚拟化技术介绍技术创新,变革未来目 录 Contents05Qemu支持的磁盘格式介绍06Qemu-kvm虚拟化环境搭建07Qemu-img生产虚拟机硬盘08Qemu-kvm命令创建虚拟机01KVM原理简介02Qemu原理介绍03KVM和Qemu的关系04Qemu工具介绍KVM原理简介01KVM工作流程 用户模式的qemu利用libkvm通过ioctl进入内核模式,kvm模块为虚拟机创建虚拟内存,虚拟CPU后执行VMLauch指令进入客户模式。加载Guest OS并执行。如果Guest OS 发生外部中断或者影子页表缺页之类的情况,会暂停Guest OS的执行,退出客户模式,执

2、行异常处理,之后重新进入客户模式,执行客户代码。如果发生I/O事件或者信号队列中有信号到达,就会进入用户模式处理。KVM架构如图所示,左侧部分是一个标准的Linux操作系统,可以是RHEL、Fedora、Ubuntu等。KVM内核模块在运行时按需加载进入内核空间运行。KVM本身不执行任何设备模拟,需要用户空间程序QEMU通过/dev/kvm接口设置一个虚拟客户机的地址空间,向它提供模拟的I/O设备,并将它的视频显示映射回宿主机的显示屏。KVM模块 KVM模块是KVM虚拟机的核心部分。其主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的

3、支持。 KVM模块加载之初,只存在/dev/kvm文件,而针对该文件的最重要的IOCTL调用就是“创建虚拟机”。在这里,“创建虚拟机”可以理解成KVM为了某个特定的虚拟客户机(用户空间程序创建并初始化)创建对应的内核数据结构。 处理器对设备的访问主要是通过IO指令和MMIO,其中IO指令会被处理器直接截获,MMIO会通过配置内存虚拟化来捕捉。但是,外设的模拟一般并不由KVM模块负责。一般来说,只有对性能要求比较高的虚拟设备才会由KVM内核模块来直接负责,比如虚拟终端控制器和虚拟时钟,这样可以大量减少处理器的模式切换的开销。Qemu原理介绍02Qemu架构 Qemu是纯软件实现的虚拟化模拟器,几

4、乎可以模拟任何硬件设备,是一个完整的可以运行的软件,非常灵活可移植,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件。Qemu模块 QEMU本身并不是KVM的一部分,其自身就是一个著名的开源虚拟机软件。与KVM不同,QEMU虚拟机是一个纯软件的实现,所以性能地下。但是,其优点是在支持QEMU本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机并不是同一个架构。作为一个存在已久的虚拟机,QEMU的代码中有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化,以及KVM使用到的虚

5、拟设备模拟(比如网卡、显卡、存储控制器和硬盘等)。 从QEMU和KVM模块之间的关系可以看出,这是典型的开源社区在代码共用和开发项目共用上面的合作。诚然,QEMU可以选择其他的虚拟机或技术来加速,比如Xen或者KQEMU;KVM也可以选择其他的用户空间程序作为虚拟机实现,只要它按照KVM提供的API来设计。但是在现实中,QEMU与KVM两者的结合是最成熟的选择,这对一个新开发和后起的项目(KVM)来说,无疑多了一份未来成功的保障。Qemu的三种运行模式1)第一种模式是通过kqemu模块实现内核态的加速。2)第二种模式是在用户态直接运行QEMU,由QEMU对目标机的 所有 指令进行翻译后执行,相

6、当于全虚拟化。3)第三种模式则是KVM官方提供的kvm-qemu加速模式。Qemu的特点(1)QEMU的两种操作模式:完整的系统仿真和用户模式仿真。(2)QEMU具有以下特点:QEMU可以在没有主机内核驱动程序的情况下运行。它适用于多种操作系统(GNU / Linux,* BSD,Mac OS X,Windows)和体系结构。它执行FPU的精确软件仿真。(3)QEMU用户模式仿真具有以下功能:通用Linux系统调用转换器,包括大部分ioctls。使用本机CPU clone的仿真为线程使用Linux调度程序。通过将主机信号重新映射到目标信号来实现精确信号处理。Qemu的特点(4)QEMU全系统仿

7、真具有以下特点:QEMU使用完整的软件MMU来实现最大的便携性。QEMU可以选择使用内核加速器,如kvm。加速器本地执行大部分客户代码,同时继续模拟机器的其余部分。可以仿真各种硬件设备,并且在某些情况下,客户机操作系统可以透明地使用主机设备(例如串行和并行端口,USB,驱动器)。主机设备传递可用于与外部物理外围设备(例如网络摄像头,调制解调器或磁带驱动器)交谈。对称多处理(SMP)支持。目前,内核加速器需要使用多个主机CPU进行仿真。KVM和Qemu的关系03KVM和Qemu的关系Qemu是一个独立的虚拟化解决方案,通过intel-VT 或AMD SVM实现全虚拟化,安装qemu的系统,可以直

8、接模拟出另一个完全不同的系统环境。QEMU本身可以不依赖于KVM,但是如果有KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel-VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。准确来说,KVM是Linux kernel的一个模块。Qemu工具介绍04qemu-imgqemu-img是QEMU的磁盘管理工具,在qemu-kvm

9、源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具。下面我们将几条重要的选项讲解一下。check -f fmt filename 对磁盘镜像文件进行一致性检查,查找镜像文件中的错误,目前仅支持对“qcow2”、“qed”、“vdi”格式文件的检查。create -f fmt -o options filename size 创建一个格式为fmt大小为size文件名为filename的镜像文件。commit -f fmt -t cache filename 提交filename文件中的更改到后端支持镜像文件(创建时通过back

10、ing_file指定的)中去。convert -c -p -f fmt -t cache -O output_fmt -o options -s snapshot_name -S sparse_size filename filename2 . output_filename 将fmt格式的filename镜像文件根据options选项转换为格式为output_fmt的名为output_filename的镜像文件。qemu-imginfo -f fmt filename 展示filename镜像文件的信息。snapshot -l | -a snapshot | -c snapshot | -d

11、 snapshot filename “-l” 选项是查询并列出镜像文件中的所有快照,“-a snapshot”是让镜像文件使用某个快照,“-c snapshot”是创建一个快照,“-d”是删除一个快照。rebase -f fmt -t cache -p -u -b backing_file -F backing_fmt filename 改变镜像文件的后端镜像文件,只有qcow2和qed格式支持rebase命令。resize filename + | -size 改变镜像文件的大小,使其不同于创建之时的大小。qemu-kvm此命令用于创建虚拟机,其使用格式为“qemu-kvm options

12、 disk_image”,其选项非常多,大致可分为如下几类:标准选项;USB选项;显示选项;i386平台专用选项;网络选项;字符设备选项;蓝牙相关选项;Linux系统引导专用选项;调试/专家模式选项;PowerPC专用选项;Sparc32专用选项。下面我们将讲解几个重要的选项。qemu-kvmqemu-kvm的标准选项 该选项主要涉及指定主机类型、CPU模式、NUMA、软驱设备、光驱设备及硬件设备等。qemu-kvm的显示选项 该选项主要用来配置虚拟机的显示状态。网络属性相关选项: 该选项用来配置虚拟机的网络信息。具体选项参考教科书上内容。qemu-ga qga是一个运行在虚拟机内部的普通应用

13、程序(可执行文件名称默认为qemu-ga,服务名称默认为qemu-guest-agent),其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于virtio-serial(默认首选方式)或者isa-serial,而QEMU则提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(虚拟机内部)和一个unix socket文件(宿主机上)。 qga通过读写串口设备与宿主机上的socket通道进行交互,宿主机上可以使用普通的unix socket读写方式对socket文件进行读写,最终实现与qga的交互,交互的协议与qmp(QEMU Monitor Protoc

14、ol)相同(简单来说就是使用JSON格式进行数据交换),串口设备的速率通常都较低,所以比较适合小数据量的交换。qemu-io这是一个执行 Qemu I/O 操作的命令行工具,可以对qemu-img创建的镜像进行I/O测试,其帮助文档为,使用格式为qemu-io -h -V -rsnm -c cmd . file,下面是常用的选项:(1)-c, -cmd:执行指令;(2)-r, -read-only:设置出口为只读模式;(3)-s, -snapshot:使用快照文件进行测试;(4)-n, -nocache:禁用主机缓存;(5)-k, -native-aio:使用内核AIO实现(仅在Linux上)

15、;(6)-t, -cache=MODE:对image使用指定的缓存模式。qemu-nbd qemu-nbd在有的系统上叫kvm-nbd,qemu-nbd-xen等。基本上都一样。用qemu-nbd实现mount虚拟硬盘到Host上的功能。 网络块设备: Network Block Device。可以将一个远程主机的磁盘空间,当作一个块设备来使用,就像一块硬盘一样。使用它,可以很方便的将另一台服务器的硬盘空间增加到本地服务器上。 NBD与NFS有所不同,NFS只是提供一个挂载点供客户端使用,客户端无法改变这个挂载点的分区格式。而NBD提供的是一个块设备,客户端可以把这个块设备格式化成各种类型的分

16、区,更便于用户的使用。 Qemu支持的磁盘格式介绍05qemu-nbd qemu-img支持非常多种的文件格式,我们可以通过“qemu-img -help”查看帮助文档得到,它支持二十多种格式:vvfat、vpc、vmdk、vhdx、vdi、ssh、sheepdog、rbd、raw、host_cdrom、host_floppy、host_device、file qed、qcow2、qcow、parallels、nbd、iscsi、gluster、 dmg、tftp、ftps、ftp、https、http、cloop、bochs、blkverify、blkdebug。 下面对其中几种常用的文件格

17、式做简单的介绍。raw raw格式是简单的二进制镜像文件,一次性会把分配的磁盘空间占用。host_device 在需要将镜像转化到不支持空洞的磁盘设备时需要用这种格式来代替raw格式。qcow2 qcow2是QEMU目前推荐的镜像格式,它是功能最多的格式。qemu-nbdqcow 较旧的QEMU镜像格式,现在已经很少使用了,一般用于兼容比较老版本的QEMU。它支持backing_file(后端镜像)和encryption(加密)两个选项。cow copy-on-write format,写时复制格式。曾经qemu的写时拷贝的镜像格式,目前由于历史遗留原因不支持窗口模式,后来被qcow格式所取代

18、。vdi 兼容Oracle(Sun)VirtualBox1.1的镜像文件格式(Virtual Disk Image)。vmdk VMDK(VMWare Virtual Machine Disk Format)是虚拟机VMware创建的虚拟硬盘格式,文件存在于VMware文件系统中,被称为VMFS(虚拟机文件系统)。qemu-nbdvpc 兼容Microsoft的Virtual PC的镜像文件格式(Virtual Hard Disk format)。sheepdog Sheepdog项目是由日本的NTT实验室发起的,为QEMU/KVM做的一个开源的分布式存储系统,为KVM虚拟化提供块存储。cloop 压缩的loop格式,主要用于可直接引导优盘或者光盘的一种镜像格式。实验一:Qemu-kvm虚拟化环境搭建06Qemu-kvm虚拟化环境搭建一、实验目的掌握使用VMware Workstation创建虚拟机;掌握安装过程中如何配置虚拟化;了解如何在没有虚拟化环境下安装软件包实现qemu-kvm环境;学会配置vncserver环境。二、实验内容 通过VMware Workstation创建一台虚拟机,并将其虚拟化引擎设置为Intel VT-x或AMD-V/RVI(V)。本实验也包含了在没有安装

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论