您的位置:首页 > 其它

虚拟化技术--KVM知识总结

2017-06-22 23:30 218 查看
KVM:

内核中载入KVM模块后,整个内核成了hypervisor。

KVM模块载入后的系统的运行模式:
内核模式:GuestOS执行I/O类操作,或其它的特殊指令的操作;称作“来宾-内核”模式;
用户模式:代表GuestOS请求I/O类操作;
来宾模式:GuestOS的非I/O类操作;事实上,它被称作“来宾-用户”模式;
kvm hypervisor:

        

         KVM的组件:
两类组件:
/dev/kvm:工作于hypervisor,在用户空间可通过ioctl()系统调用来完成VM创建、启动等管理功能;它是一个字符设备,功能:
创建VM、为VM分配内存、读写VCPU的寄存器、向VCPU注入中断、运行VCPU等等;
qemu进程:工作于用户空间,主要用于实现模拟PC机的IO设备

       

         KVM特性:
内存管理:
将分配给VM的内存交换至SWAP;
支持使用Huge Page; 
支持使用Intel EPT或AMD RVI技术完成内存地址映射;GVA-->GPA-->HPA
支持KSM (Kernel Same-page Merging)
硬件支持:
取决于Linux内核;
存储:
本地存储:
网络附加存储:
存储区域网络:
分布式存储:例如GlustFS
实时迁移:
支持的GuestOS:
Linux, Windows, OpenBSD, FreeBSD, OpenSolaris; 
设备驱动:
IO设备的完全虚拟化:模拟硬件
IO设备的半虚拟化:在GuestOS中安装驱动;virtio
virtio-blk, virtio-net, virtio-pci, virtio-console, virtio-ballon

          KVM局限性:
一般局限性:
CPU overcommit
时间记录难以精确,依赖于时间同步机制
MAC地址:
VM量特别大时,存在冲突的可能性;
实时迁移:
性能局限性:

KVM的工具栈:
qemu:
qemu-kvm
qemu-img
libvirt
GUI: virt-manager, virt-viewer
CLI: virt-install, virsh

QEMU主要提供了以下几个部分:
处理器模拟器
仿真IO设备
关联模拟的设备至真实设备;
调试器
与模拟器交互的用户接口

例子实现虚拟机:

cirros project: 为cloud环境测试vm提供的微缩版Linux;
启动第一个虚拟:
qemu-kvm -m 128 -smp 2 -name test -hda /images/kvm/cirros-0.3.4-i386.disk.img

用-drive指定磁盘映像文件:
# qemu-kvm -m 128 -name test -smp 2 -drive file=/images/kvm/cirros-0.3.4-i386-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2

通过cdrom启动winxp的安装:
# qemu-kvm -name winxp -smp 4,sockets=1,cores=2,threads=2 -m 512 -drive file=/images/kvm/winxp.img,if=ide,media=disk,cache=writeback,format=qcow2 -drive file=/root/winxp_ghost.iso,media=cdrom

指定使用桥接网络接口:
qemu-kvm -m 128 -name test -smp 2 -drive file=/images/kvm/cirros-0.3.4-i386-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2 -net nic -net tap,script=/etc/if-up,downscript=no -nographic

补充资料:

KVM内存管理

KVM继承了Linux系统管理内存的诸多特性,比如,分配给虚拟使用的内存可以被交换至交换空间、能够使用大内存页以实现更好的性能,以及对NUMA的支持能够让虚拟机高效访问更大的内存空间等。

KVM基于Intel的EPT(Extended Page Table)或AMD的RVI(Rapid Virtualization Indexing)技术可以支持更新的内存虚拟功能,这可以降低CPU的占用率,并提供较好的吞吐量。

此外,KVM还借助于KSM(Kernel Same-page Merging)这个内核特性实现了内存页面共享。KSM通过扫描每个虚拟机的内存查找各虚拟机间相同的内存页,并将这些内存页合并为一个被各相关虚拟机共享的单独页面。在某虚拟机试图修改此页面中的数据时,KSM会重新为其提供一个新的页面副本。实践中,运行于同一台物理主机上的具有相同GuestOS的虚拟机之间出现相同内存页面的概率是很的,比如共享库、内核或其它内存对象等都有可能表现为相同的内存页,因此,KSM技术可以降低内存占用进而提高整体性能。

使用qemu-kvm管理KVM虚拟机/Qemu的定义

Qemu是一个广泛使用的开源计算机仿真器和虚拟机。当作为仿真器时,可以在一种架构(如PC机)下运行另一种架构(如ARM)下的操作系统和程序。而通过动态转化,其可以获得很高的运行效率。当作为一个虚拟机时,qemu可以通过直接使用真机的系统资源,让虚拟系统能够获得接近于物理机的性能表现。qemu支持xen或者kvm模式下的虚拟化。当用kvm时,qemu可以虚拟x86、服务器和嵌入式powerpc,以及s390的系统。

QEMU 当运行与主机架构相同的目标架构时可以使用 KVM。例如,当在一个x86兼容处理器上运行 qemu-system-x86 时,可以利用 KVM 加速——为宿主机和客户机提供更好的性能。

Qemu有如下几个部分组成:
◇ 处理器模拟器(x86、PowerPC和Sparc);
◇ 仿真设备(显卡、网卡、硬盘、鼠标等);
◇ 用于将仿真设备连接至主机设备(真实设备)的通用设备;
◇ 模拟机的描述信息;
◇ 调试器;
◇ 与模拟器交互的用户接口;

网络属性相关选项

网络属性相关选项用于定义网络设备接口类型及其相关的各属性等信息。这里只介绍nic、tap和user三种类型网络接口的属性,其它类型请参照qemu-kvm手册。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  KVM