读KVM虚拟化技术实战与原理解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dongfei2033/article/details/83620044

1、软件虚拟化和硬件虚拟化:实现虚拟化的重要一步在于:虚拟化层必须能够截获计算元件对物理资源的直接访问,并将其重定向到虚拟资源池中。硬件虚拟化,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持

2、准虚拟化与全虚拟化:改动客户操作系统,使他以为自己运行在虚拟环境下,能够与虚拟机监控协同工作叫做准虚拟化,准虚拟化弱化了对虚拟机特殊指令的被动截获要求,需要修改客户机操作系统的源代码实现主动通知

3、内存管理:内存页面共享通过一项名为内核同页合并ksm)的内核功能来支持。KSM扫描每个虚拟机的内存,如果虚拟机拥有相同的内存页面,将它合并到一个在虚拟机之间共享的页面,仅存一个副本。如果一个客户机尝试更改这个共享页面,他讲得到自己的专用副本

4、kvm的作用:kvm仅支持硬件虚拟化,他打开并初始化系统硬件以支持虚拟化的运行,在被内核加载的时候,kvm模块会先初始化内部的数据结构,检测当前的cpu,打开cpu控制寄存器的cr4中的虚拟化控制开关,执行VMXON指令将宿主操作系统置于虚拟化模式种的根模式,最后,kvm模块创建特殊设备/dev/kvm并等待来自用户空间的命令,接下来虚拟机的创建和运行将是一个用户空间的程序qemu与kvm配合交互过程

5、处理器中的内存管理单元(MMU)是通过页表的形式将程序运行的虚拟地址转换成为物理内存地址。在虚拟机模式下,内存管理单元的页表则必须在一次查询的时候完成俩次地址转换,客虚地址-->客物地址-->真物地址

解决方案:影子页表,客户机运行的时候,处理器使用的页表不是客户机操作系统维护的页表,而是kvm模块根据这个页表维护的另外一套影子页表,但他开销蛮大的,intel的EPT技术解决,即通过·引入第二级页表来描述客户机虚拟地址和真是物理地址的转换,硬件可以自动进行俩级转换生成正确的内存访问地址,kvm称二维分页机制 (影子:单层表;ERT:俩层表)

VPID:虚拟处理器标志,是在硬件上对TLB资源管理(tlb用于缓存页表)的优化,通过在硬件上为每个TLB项增加一个标志,用于不同虚拟处理器的地址空间,从而区分开hypervisor和不同处理器的TLB。

6、内存过载使用:内存交换swapping + 气球+页共享(ksm)

7、总的来说,内存访问密集型的应用,使用huge page 可以提高客户机性能,但注意大页内存不能被换出(swap out),也不能使用气球机制自动增长

8、buffer/cache:前者缓存超级块、inode信息,后者缓存文件信息;free命令显示的总内存是除去内核执行文件占用内存和一些系统保留的内存之后使用的内存 (buffer/cache),查内存用dmesg     

9、Cache写机制:Write-through与Write-back    http://witmax.cn/cache-writing-policies.html

             Write-through(直写模式)在数据更新时,同时写入缓存Cache和后端存储。此模式的优点是操作简单;缺点是因为数据修改需要同时写入存储,数据写入速度较慢.  Write-back(回写模式)在数据更新时只写入缓存Cache。只在数据被替换出缓存时,被修改的缓存数据才会被写到后端存储。此模式的优点是数据写入速度快,因为不需要写存储;缺点是一旦更新后的数据未被写入存储时出现系统掉电的情况,数据将无法找回。  

10、半虚拟化驱动:virtio,i/o频繁时cpu过高;  qemu是全虚拟化模拟,vm频繁进出exit;VT-d是设备直接分配   。。。SR-IOV使网卡产生多个独立的虚拟网卡

没有更多推荐了,返回首页