目录
虚拟机分类
类型一:虚拟机是在上电后首先加载运行虚拟机监控程序,而传统的操作系统则是运行在其创建的虚拟机中。类型一的虚拟机监控程序可以视为一个特别为虚拟机而优化裁剪的操作系统内核。因为,虚拟机监控程序作为运行在底层的软件层,必须实现诸如系统的初始化、物理资源的管理等操作系统的职能;它对虚拟机的创建、调度和管理,与操作系统对进程的创建、调度和管理有共通之处。这一类虚拟机监控程序一般会提供一个具有一定特权的特殊虚拟机,由这个虚拟机来运行需要提供给用户日常操作和管理使用的操作系统环境。代表有:开源虚拟化软件Xen,商业软件Vmware ESX/ESXI, 微软的Hyper-V.
类型二:虚拟机监控程序,在系统上电之后仍然运行一般意义上的操作系统(宿主操作系统),虚拟机监控程序作为特殊的应用程序,可以视为操作系统功能的扩展。对于"类型二"的虚拟机来说,优势在于可以充分利用现有的操作系统。因为虚拟机监控程序通常不必自己实现物理资源的管理和调度算法,所以实现起来比较简洁。当然也会受到宿主机的限制。比如:无法为了虚拟机优化而对操作系统进行修改。KVM就属于类型二。
如图:左侧是一个标准的Linux操作系统,KVM内核模块在运行时按需加载进入内核空间运行。KVM本身不模拟任何设备,需要用户空间程序QEMU通过/dev/kvm接口设置一个虚拟客户机的地址空间,向它提供I/O设备,并将它的视频显示映射回宿主机的显示屏。
KVM模块
KVM模块是KVM虚拟机的核心部分。主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。