您好,欢迎访问三七文档
内核级虚拟化技术KVM(Kernel-basedVirtualMachine)KVM介绍构建KVM环境虚拟机创建与配置KVM的高级功能半虚拟化驱动设备直接分配KSM技术KVM的管理工具libvirtvirshvirt-managervirt-viewerOpenStack目录第一部分:KVM介绍IBMLPARSHPvParsVMWareIBMPowerVMMicrosoftHyper-VCitrixXenParallelsOpenVZSunVirtualBoxParallels(SWSoft)Virtuozzo你知道那些虚似化技术?硬件虚拟化软件虚拟化硬件虚拟化.vs.软件虚拟化软件虚拟化平台虚拟化平台虚拟化.vs.软件虚拟化全虚拟化半虚拟化全虚拟化.vs.半虚拟化传统虚拟化架构KVM虚拟化架构第二部分:构建KVM环境KVM是基于硬件的辅助虚拟化,所以首先处理器要在硬件上支持VT技术,还要在BIOS中将其功能打开,KVM才能使用到。–BIOS中Advanced选项–选择SystemAgent(SA)Configuration–将Intel(R)VirtualizationTechnology和Intel(R)VTforDirectedI/O都Enabled设置好了VT和VT-d的相关选项,保存BIOS的设置并退出,系统重启后生效。在Linux中可以通过如下命令查看是否成功。cat/proc/cpuinfo|grep-E'(vmx|svm)'安装宿主机操作系统,这里不再叙述。KVM环境搭建--硬件系统配置注意:不同BIOS,可能会有点不一样安装KVM–modprobekvm–modprobekvm_intelVirtualizationTechnology和Intel(R)VTforDirectedI/O都Enabled编译和安装Qemu从该网址下载对应的版本的Qemu:编译和安装./configuremake-j10makeinstallKVM环境搭建--KVM和Qemu的安装第三部分:虚拟机的创建与配置虚拟机管理工具--virt-manager•该工具需要安装,如果在ubuntu下,直接执行•apt-getinstallvirt-manager•安装完成后,运行命令virt-manager界面如下:创建虚拟机(1)点击橙色框框出现“新建虚拟机”对话框下面有四个单选框,按顺序解释如下:–从本地的ISO文件或者CDROM来安装系统–从网络安装(HTTP,FTP,NFS)–从PXE启动–导入已经安装好的虚拟机镜像,这一步一般是已经安装好虚拟机,有了镜像然后才能使用。因为上面选择了第一步,所以下面就选择用于安装OS的ISO镜像。选择OS的类型,比如Linux然后找到对应的版本,右边是安装centos-6.3例子。点击Forward创建虚拟机(2)设置内存的大小设置CPU的核数注意:这里最好不要超过宿主机的实际内存和CPU大小创建虚拟机(3)这里设置给虚拟机磁盘的大小默认是8G,建议放大一点。也可以选择现有的镜像。创建虚拟机(4)•这里还有一些高级选项,可设置也可以不设置。然后选择“Finish”。•也可以选择复选框“CustomizeConfigurationbeforeinstall”,对刚刚的配置进行详细配置。•如果点完“Finish”后,就进入系统的安装界面,和普通装系统一模一样。这里就不再叙述了。创建虚拟机(5)•在虚拟机管理界面上,在某个虚拟机上点击“右键”--点击“Open”--点击“Details”就可编辑虚拟机的属性。•我这里要把Display改成Spice,默认情况是用VNC的。•然后点击“应用”,重启方能生效。编辑虚拟机的属性domaintype='kvm'nameubuntu-13.10/name//虚拟机名称memory8388608/memory//虚拟机内存大小vcpu4/vcpu//虚拟机CPU个数os//OS的类型,HVM代表未经修改typearch='x86_64'machine='pc-1.1'hvm/typebootdev='hd'///从硬盘启动/osdevices//设备emulator/usr/bin/kvm-spice/emulator//模拟器disktype='file'device='disk'//虚拟机镜像,包括类型,文件名,映射的磁盘名drivername='qemu'type='qcow2'/sourcefile='/var/lib/libvirt/images/ubuntu-13.10.img'/targetdev='vda'bus='virtio'//diskdisktype='file'device='cdrom'//虚拟机安装的cdrom镜像,包括类型,文件名,映射的磁盘名drivername='qemu'type='raw'/sourcefile='/var/lib/libvirt/images/ubuntu-13.10.iso'/targetdev='hdc'bus='ide'//diskinterfacetype='bridge'//网桥,虚拟机网卡桥接到该网卡上面,和外面通信sourcebridge='br0'/modeltype='virtio'//interface/devices/domain配置文件创建虚拟机Qemu-img支持非常多的文件格式,可以通过qemu-img-h查看•raw,原始的磁盘镜像格式,也是qemu-img的默认的文件格式。这种格式的文件的优势在于它非常容易移植到其它模拟器上面,不过那是一开始就让镜像实际占用了磁盘空间,第一次写入快速,占用比较大的空间。•qcow2,是QEMU目前推荐的镜像格式,它是功能最多的格式。它支持稀疏文件(即支持空洞)以节省存储空间,它支持可选的AES加密以提高镜像文件安全性,支持基于zlib的压缩,支持在一个镜像文件中有多个虚拟机快照。•vmdk,VMware的镜像格式•这些进行直接是可以转换的,举个例子:qemu-imgconvert-frawcentos.img-Oqcow2centos.qcow2qemu-imgconvert-fvmdk-Oqcow2SLES11SP1-single.vmdkSLES11SP1-single.imgQemu支持的镜像文件格式网桥是用于连接宿主机与虚拟机的网卡,作用同交换机•查看网桥brctlshow•添加/删除网桥brctladdbrbr1brctldelbrbr1•给网桥添加/网卡brctladdifbr1eth0brctldelifbr1eth0网桥的配置第四部分:KVM的高级功能KVM是必须使用硬件虚拟化辅助技术(如IntelVT-x、AMD-V)Hypervisor,在CPU运行效率方面是比较高;在有IntelEPT特性支持的平台上,内存的虚拟化效率也比较高。QEMU/KVM提供了全虚拟化环境,可以让客户机不经过任何修改就能运行在KVM环境中。不过,KVM在IO虚拟化方面,传统的方式是使用QEMU纯软件方式模拟IO设备,这样效率比较低,所以就需要提供半虚驱动来提高效率。使用半虚拟化驱动后架构KVM的高级功能--半虚拟化驱动设备直接分配,顾名思义就是把设备直接分配给客户机,这样在执行IO操作时大量地减少甚至避免了VM-Exit陷入到Hypervisor中,极大地提高了IO性能,可以达到几乎和Native系统中一样的性能。尽管virtio的性能也不错,但VT-d克服了其兼容性不够好和CPU使用率较高的问题。不过,VT-d也有以下两个缺点:一台服务器主板上的空间比较有限,允许添加的PCI和PCI-E设备是有限的。大量使用VT-d独立分配设备给客户机,让硬件设备数量增加,这回增加硬件投资成本KVM的高级功能--设备直接分配KSM(KernelSamePageMerging)全称为“内核同页合并”,KSM让内核扫描检查正在运行中的程序并比较它们的内存,如果发现他们有内存区域或内存页是完全相同的,就将多个相同的内存合并为一个单一的内存页,并将其标识为“写时复制”,这样可以起到节省内存使用量的作用。但是合并过程会带来CPU的开销。KSM具体怎么配置可能有点麻烦,这里介绍一下KSM几个参数的意思:通过ls-l/sys/kernel/mm/ksm/*,可以查看到如下信息full_scans:记录着已经对所有可合并的内存区域扫描过的次数。pages_shared:记录着正在使用中的共享内存页的数量。pages_sharing:记录着有多少数量的内存页正在使用被合并的共享页,不包括合并的内存页本身。这就是实际节省的内存页数量。pages_unshared:记录了守护进程去检查并试图合并,却发现了并没有重复内容而不能被合并的内存页数量。pages_violatile:记录了因为其内容很容易变化而不被合并的内存页。pages_to_scan:在ksmd进程休眠之前会去扫描的内存数量。sleep_millisecs:ksmd进程休眠的实际(单位是毫秒),ksmd的两次运行之间的间隔。KVM的高级功能--KSM第五部分:KVM的管理工具libvirt是为了更方便地管理平台虚拟化技术而设计的开放源代码的应用程序接口、守护进程和管理工具,它不仅提供了对虚拟化客户机的管理,也提供了对虚拟化网络和存储的管理。它最初是为Xen设计的一套API,但是目前对KVM等其他Hypervisor也支持的非常的好。KVM管理工具--libvirtlibvirt是目前使用最为广泛的对KVM的虚拟机进行管理的工具盒应用程序接口,而且一些常用的虚拟机管理工具(virsh/virt-install/virt-manager等)和云计算框架平台(OpenStack/OpenNebula等)都是在底层使用libvirt的应用程序接口。•virsh是完全在命令行文本模式下运行的用户态工具,它是用C语言编写的一个使用LibvirtAPI来实现虚拟化的管理。它的程序源代码在libvirt项目源代码的tools目录下,实现了一个virsh工具最核心的一个源代码文件时virsh.c,其路径为libvirt-1.0.0/tools.•virsh可以使用交互模式和非交互模式–交互模式virsh-cqemu+ssh://root@192.168.158.31/system–非交互模式virsh-cqemu+ssh://root@192.168.158.31/systemlist•建立好上面的配置文件(这个在第一部分讲过了),后建立镜像文件,然后创建虚拟机#qemu-imgcreate-fqcow2tst.img20G#virshcreatetst.xml•当我们想看虚拟机的配置,我们可以通过下面的命令查看:#virshdumpxmlvm-name•查看当前的虚拟器情况virshlist•给虚拟机挂磁盘#virshattach-diskdomainsourcetargetvirsh前面我们已经用该工具创建了虚拟机,virt-manager工具在图形化界面中实现了一些易用的和比较丰富的虚拟机管理功能,已经为用户提供的功能如下:对虚拟机生命周期的管理,如创建、编辑、启动、暂停、恢复和停止虚拟机,还包括虚拟机快照、动态迁移等功能。运行中客户机的实时性能、资源利用率等的监控,统计结果在图形化展示。对创建客户机的图形化的引导,对客户机的资源分配和虚拟硬件的配置和调整等功能也提供了图形化的支持。内置了一个VNC客户端,可以用于连接到客户机的图形界面进行交互。支持本地或远程管理KVM、Xen、Qemu、LXC等Hypervisor上
本文标题:KVM虚拟化简介
链接地址:https://www.777doc.com/doc-1879389 .html