虚拟化方案:

  • 软件虚拟化:
    顾名思义:软件虚拟化就是利用软件来模拟系统上,指令,取值,和解码,因此性能比较差;
  • 硬件虚拟化:
    简而言之:就是硬件提供了对特殊指令的截获,获取重定向的硬件的支持

半虚拟化和全虚拟化

  • 半虚拟化:
    因为操作系统没有提供硬件虚拟化的支持,所以只能通过vmm软件来实现对各个虚拟机的监控,为保证他们之间的隔离,付出的代价是改动操作系统,让他们以为自己在虚拟环境下运行;而实用对象只能是开源的操作系统,因为闭源的操作系统像wind7无法修改源代码,所以无法实现
  • 全虚拟化:
    全虚拟化是硬件提供了对系统的完整虚拟化平台,包括处理器,内存,外设,为虚拟机提供了最大的灵活性,死哦一不需要改动就可以直接虚拟化,网上有人说“全虚拟化的性能不如半虚拟化,因为全虚拟化虚拟了很多系统基础设施,因此性能会下降”

KVM的架构:
kvm的虚拟化的基本架构分为两个类型
类型一:

  • 虚拟机在系统家电之后先运行虚拟机的监控程序,因为虚拟机监控程序作为运行在底层的软件层必须实现对软件的初始化,物力资源的调度,管理,著名的vmware ESX/ESXi,xen,微软的vyper-V属于类型一;

类型二:

  • 这类虚拟机在系统加电之后先运行操作系统,而系统监控程序只是系统的一个扩展,系统监控程序依赖于宿主操作系统;通常无法为了虚拟机的性能对系统做出修改,主要的应用是kvm,virbox,vmware workstation,

KVM模块:

  • kvm模块的主要功能是初始化cpu硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟模式下,并对虚拟机的运行提供一定的支持,在虚拟机打开之后!任何与虚拟机有关的交互都存在/dev/kvm文件中,内存虚拟化是一个比较复杂的部分,传统的内存管理方法是,通过页表把虚拟地址转化成物理地址,然后再把物理地址转化成硬件地址;这种方式大大的浪费了资源;二kvm采用影子页表解决这个问题;

qemu:模块

  • qemu模块不是kvm模块的一部分,其自身是一个免费的开源虚拟机软件,qemu是一个纯软件实现虚拟方式,所以应能比较底下,qemu的特点是在不同架构上虚拟操作系统,

cpu模型:
* qemu/kvm默认情况下会向虚拟机提供一个qemu64或者qemu32基本的cpu模型,这样的好处是可以实现cpu的高级过滤,

EPT和NPT

  • EPT(Extend Page Tool)扩展页表,降低虚拟内存的难度,(自动转换)(GVA(Gest Virtl Adress)— GPA(Gest Physical Adress)—HPA(Host Physical Adress)< intel 提供啦EPT,AMD提供啦NPT >

大页(huge page)

  • 在x86计算机中,默认采用的是4k的内存页面,但是他们也支持大的内存,x86_64支持2M的内存页,如果系统中使用huge page,则内存页的数量会减少,从而需要更少的页表,有利益提高计算机的性能。查看系统中的大页
cat /proc/meminfo
或者
systlc      PAGESIZE

内存过载:
内存是允许过载的,下面有三种方法实现内存过载的使用:

  • 一,内存交换,用交换的内存来你不内存的不足
  • 二,气球(ballooning),通过virio_ballon驱动来实现宿主机的Hypervisor和客户机之间的协作。
  • 三,页共享,通过ksm(kerner sampage Merging)合并多个客户机使用相同的内存页
    第一种内存的过载方式是最成熟的也是目前最防范的使用方式,相比ballooing和kms性能会低一点;虽然说过载内存可以达到物理内存的 几倍,甚至几十倍,但是其读写速度没有物理内存读写快,过多的过载内存会导致系统的性能不好,