前言
Openstack学习中不可或缺的虚拟化知识,跟着"KVM实战"这本书,记下核心要点
虚拟化技术
○ 什么是虚拟化
§ 虚拟化是一种资源管理技术,将计算机的各种实体资源(CPU, 内存, 存储和网络等)进行抽象和转化出来,并提供分割,重新组合,大袋最大化利用物理资源的目的
§ VMM(virtual machine monitor 也就是hypervisor)层,它向下掌控实际的物理资源,向下呈现给虚拟机N份逻辑的资源
○ 软件虚拟化
§ Qemu
□ 在没有硬件虚拟化辅助的时候,通过软件的二进制翻译仿真出目标平台呈现给客户机
□ 客户机的每一条指令都会被Qemu截取,并翻译成宿主机平台的指令,然后交给实际的物理平台执行
○ 硬件虚拟化
§ 硬件本身提供能力让客户机指令独立执行,不完全需要VMM截获重定向
§ intel VT技术
§ 半虚拟化, virtio
○ 从软件框架角度区分
§ native/bare metal
□ 直接控制硬件资源以及客户机.如Xen
§ hosted
□ 运行在宿主机操作系统之上或者系统里,如KVM
□ 这类hypervisor通常就是宿主机操作系统的一个应用程序,像其他应用程序一样受宿主机操作系统的管理
□ 客户机是在宿主机操作系统上的一个抽象,通常抽象为进程
KVM(kernal-based virtual Machine)
○ 是采用硬件虚拟化技术的全虚拟化解决方案
○ 归属问题
§ 归为type1和type2是有争议的
§ 一方面,它是以kenerlamodule的形式加载于kernal, 于kernal融为一体,可以认为它将Linux kernal转变为一个type1的hupervisor
§ 另一方面,在逻辑上, 它受制于kernal,所有对硬件资源的管理都是通过kernal去做的,所以归属于type2
○ 架构
§ 一个KVM客户机对应于一个LINUX进程, 每个vcpu则是这个进程下的一个线程,还有单独的处理IO线程,也在一个线程组内.所以宿主机上各个客户机是由宿主机内阁像调度普通进程一样调度的,即可以通过LINUX的何种进程调度的手段来实现不同客户机的权限限定,优先级等功能
§ 客户机所看到的硬件设备是Qemu模拟出来的.
○ KVM的功能特性
§ 内存管理
□ 依赖LINUX内核进行内存管理.
□ 客户机的"物理内存"就是宿主机内核管理的普通进程的虚拟内存
§ 存储和客户机镜像的格式
□ KVM能够使用LINUX支持的任何存储来存储虚拟机镜像
□ 支持共享文件系统上的虚拟机镜像,以允许客户机镜像在多个宿主机之间共享或使用逻辑卷共享
□ KVM原生的磁盘格式为QCOW2,它支持快照,允许多级快照,压缩和加密
§ 实时迁移
□ 对用户是透明的,客户机保持打开,网络连接保持正常,用户应用程序也持续运行.
§ 设备驱动程序
□ 支持混合虚拟化
§ 性能和可伸缩性