Openstack前传六(KVM初探)
来源:互联网 发布:foxbot编程序软件 编辑:程序博客网 时间:2024/06/07 10:05
KVM:
Kernel-based Virtual Machine:基于内核的虚拟机。只要加载了KVM模块,OS摇身一变变为了Hypervisor。
KVM只是扩展了内核的功能,用的都是内核的驱动。
Guest OS运行的模式是来宾模式。这种模式下也有内核和用户空间, 那么如何使用硬件呢?
======CPU还是分点时间片,来提供了CPU的虚拟化。那么IO呢?
======IO必须得模拟呀,也是用的两次转换。创建模拟硬件命令 QEMU。
======实际上QEMU连CPU也是可以虚拟化的,可以直接跑的,当然这个模拟性能不太好,所以用了KVM.
所以组合就是KVM+QEMU. 经典搭配。 但KVM要求的是必须运行在硬件虚拟化和64bits的情况。另外全虚拟化的性能并不太好,所以出现了KVM的半虚拟化。
这就是 Virto。这样解决了IO完全虚拟化的缺陷。
硬件虚拟化(Intel):
之前一直提到了硬件虚拟化,说这个是KVM虚拟化的基础。那么他到底是什么意思呢? 我们都知道,虚拟机发送的对硬件操作的特权指令,是必须要VMM能进行捕获的,如果不支持硬件虚拟化,则只能通过软件模拟的方式来捕获。 而硬件虚拟化支持呢,则是CPU本身就提供了对硬件的虚拟化,即多了个Ring -1层。
这里VMM将客户机置于一种限制模式下运行,一旦客户机试图去访问物理资源,硬件会暂停客户机的运行,将控制权交给VMM。VMM还能利用硬件的虚拟化增强机制,将客户机对特定资源的访问完全由硬件重定向到VMM指定的虚拟资源,整个过程都不需要暂停客户机和VMM软件的参与。
为什么半虚拟化需要改OS
软件虚拟化可以在缺乏硬件虚拟化的平台上完全通过VMM软件来实现读虚拟机监控,但是付出的代价是软件复杂度的增加和性能的缺失。而解决办法是:改动OS.让客户机以为自己运行在虚拟环境下,能够与虚拟机监控协同工作。这样本质上弱化了对虚拟机特权指令的截获要求,将其转换成客户机的主动通知。
所以半虚拟化不支持Windows这类操作系统。
全虚拟化
全虚拟化提供了完整的虚拟X86平台,理论上支持任何操作系统,不需要对客户机OS进行修改。虽然性能没有半虚拟化好,但是后来出现了硬件虚拟化,全虚拟化使得性能大为改进。 以后的思路是,基于硬件的全虚拟化将是未来的核心。
0 0
- Openstack前传六(KVM初探)
- kvm-Openstack
- openStack 初探
- OpenStack初探
- Ubuntu+KVM+OpenStack
- openstack学习笔记----KVM
- OpenStack与KVM
- 初识OpenStack+KVM
- Openstack前传八(KVM高级特性)
- Openstack Cinder入门初探
- OpenStack 网络:Neutron 初探
- 初探Openstack Neutron DVR
- OpenStack 网络:Neutron 初探
- OpenStack 网络:Neutron 初探
- 初探OpenStack Mitaka
- 初探Openstack Neutron DVR
- 【OpenStack】Openstack之Cinder服务初探
- 【OpenStack源码分析之一】初探OpenStack
- bzoj1821 [JSOI2010]Group 部落划分 Group
- input的width和size同时存在问题
- NYOJ 1021 Fibonacci Again
- android 如何同时检测移动 长按事件
- 计算机编码字符小结(ascii,unicode,utf-8)
- Openstack前传六(KVM初探)
- Unity引擎初探
- 短小精悍的宏(整理篇)
- MediaPlayer播放音视频及AudioManager相关 && Android RTC浅析和Alarm manager 闹钟开发
- 闭包
- stackoverflow 可以查看,但登录界面有问题,登录不了
- 【leetcode】LRU Cache
- 字符编码及文件读取的基础知识
- OCP 1Z0 053 167