本人小白,初次步入虚拟化领域,谨将自己所学知识做下总结,如有理解不到位的地方会及时做出修改。
对虚拟化的认识:下层软件模块抽象出一个虚拟的软件或硬件接口为上层软件模块提供服务,使得上层软件模块运行在与自己所期待环境相一致的虚拟环境上。就比如将一个物理平台(下层软件模块)可虚拟为多个虚拟平台(上层软件模块)。
虚拟化的两种实现方式:
1. VMM直接运行在硬件平台,控制所有硬件并管理客户机操作系统。如Xen。
2. VMM运行在一个操作系统里,管理客户机操作系统。如KVM、VirtualBox。
注:VMM:全称(Virtual Machine Monitor),即虚拟机监视器,也可称为Hypervisor。
VMM提供的虚拟平台类型分为两类:
1. Full-virtualization(完全虚拟化) : 客户机操作系统不知道自己是运行在虚拟平台上的,它去操作的硬件资源其实是由软件模拟出来的,客户机操作系统不需要修改代码。
2. Para-virtualization(半虚拟化): 客户机操作系统知道自己是运行在虚拟平台上,会主动适应。当它去操作硬件资源时,直接进行物理机上的系统调用(System Call,实际是Hypervisor Call,也叫Hypercall),但是客户机操作系统内核的代码需要修改。
虚拟化的核心技术:CPU虚拟化、内存虚拟化、I/O虚拟化、网络虚拟化。
CPU虚拟化:
在完全虚拟化的平台下