第一章:KVM概述
一、课程概述
云计算的基础是虚拟化。作为已经纳入Linux内核的虚拟化解决方案,KVM近年来发展迅猛,但学习曲线比较陡。
课程目录
-
第一章:KVM概述
-
第二章:KVM安装
-
第三章:创建虚拟机
-
第四章:管理虚拟机
-
第五章:管理虚拟存储
-
第六章:管理虚拟网络
二、虚拟化概述
什么是虚拟化
虚拟化的定义
在计算机中,虚拟化意味着创建设备或资源的虚拟版本,如服务器、存储设备、网络或者操作系统等
虚拟化技术
1.系统虚拟化
2.存储虚拟化
3.网络虚拟化
4.GPU虚拟化
5.软件虚拟化
6.硬件支持虚拟化
系统虚拟化
这种虚拟化通常表现为在单一系统上运行多个操作系统
这些操作系统同时运行,每个操作系统又是相互独立
虚拟化有三种实现方式:
1.纯软件仿真
2.虚拟化翻译
3.容器技术
纯软件仿真
通过模拟完整的硬件环境来虚拟化来宾平台
模拟X86、ARM、PowerPC等多种CPU
效率比较低
产品或方案
QEMU、Bochs、PearPC
虚拟化层翻译
多数的虚拟化采用虚拟机管理程序Hypervisor
Hypervisor是一个软件层或子系统
也称为VMM(Virtual Machine Monitor,虚拟机监控器)
允许多种操作系统在相同的物理系统中运行
控制硬件并向来宾操作系统提供访问底层硬件的途径
向来宾操作系统提供虚拟化的硬件
X86 CPU的保护环
全虚拟化
不需要对GuestOS操作系统软件的源代码做任何的修改,就可以运行在这样的VMM中
在全虚拟化的虚拟平台中,GuestOS并不知道自己是一台虚拟机,它会认为自己就是运行在计算机物理硬件设备上的HostOS。因为全虚拟化的VMM会将一个OS所能够操作的CPU、内存、外设等物理设备逻辑抽象成为虚拟CPU、虚拟内存、虚拟外设等虚拟设备后,再交由GuestOS来操作使用。这样的GuestOS会将底层硬件平台视为自己所有的,但是实际上,这些都是VMM为GuestOS制造了这种假象。
全虚拟化又分为:软件辅助的全虚拟化 & 硬件辅助的全虚拟化。
软件辅助的全虚拟化
软件辅助虚拟化能够成功的将所有在GuestOS中执行的系统内核特权指令进行捕获、翻译,使之成为只能对GuestOS生效的虚拟特权指令。但是退一步来说,之所以需要这么做的前提是因为CPU并不能准确的去判断一个特权指令到底是由GuestOS发出的还是由HostOS发出的,这样也就无法针对一个正确的OS去将这一个特权指令执行。
直到后来CPU厂商们发布了能够判断特权指令归属的标准x86 CPU之后,迎来了硬件辅助全虚拟化。
硬件辅助的全虚拟化
硬件辅助全虚拟化主要使用了支持虚拟化功能的CPU进行支撑,CPU可以明确的分辨出来自GuestOS的特权指令,并针对GuestOS进行特权操作,而不会影响到HostOS。
半虚拟化
需要对GuestOS的内核代码做一定的修改,才能够将GuestOS运行在半虚拟化的VMM中。
半虚拟化通过在GuestOS的源代码级别上修改特权指令来回避上述的虚拟化漏洞。
修改内核后的GuestOS也知道自己就是一台虚拟机。所以能够很好的对核心态指令和敏感指令进行识别和处理,但缺点在于GuestOS的镜像文件并不通用。
容器技术
LXC和Docker
一种轻量级/操作系统虚拟化方式,由Linux内核支持
起源:chroot系统虚拟化方式,由Linux内核支持
优势:
更快的交付和部署
更高效率的虚拟化
更轻松的迁移和拓展
更简单的管理
Hypervisor的分类
裸机型与宿主型
三、KVM概述及参考资料
KVM是什么?
Kernel Virtual Machine
硬件辅助的全虚拟化解决方案
KVM的历史
以色列的创业公司Qumranet创建了KVM
早期的主要开发者Avi Kivity
2006年10月,在完成基本功能、动态迁移、主要的性能优化后,正式宣布了KVM的诞生
2007年2月发布的内核2.6.20中,开始正式包括了KVM
2008年9月,Redhat 1.7亿美收购
RHEL 5.4,在集成Xen的基础上,又将KVM添加进来
2011年11月,RHEL6使用KVM彻底替换了Xen
QEMU
QEMU是一个通用的开源的硬件模拟器,可以模拟多种硬件
QEMU-KVM从分支到与主干合并,QEMU成立KVM在用户空间的管理工具
KVM体系结构
KVM
初始化CPU硬件,打开虚拟化模式,以支持虚拟机的运行。
负责CPU、内存、中断、控制器、时钟
QEMU
模拟网卡、显卡、存储控制器和硬盘
libvirt
它提供统一API、守护进程libvirtd和一个默认命令行管理工具virsh
Qemu与KVM
Qemu通过ioctl调用/dev/kvm接口,将有关CPU指令的部分交由KVM来做
Qemu还是模拟网卡、显卡、存储控制器和硬盘等,会影响这些设备的性能
通过pass through半虚拟化设备virtio_blk, virtio_net,提高设备性能
libvirt与KVM
KVM集中管理与控制
http://www.linux-kvm.org/page/Management_Tools
示例∶
Ovirt
功能强大,是Redhat 虚拟化管理平台RHEV的开源版本。
WebVirtMgr
virt-manager的Web模式的替代品
ConVirt
分开源版本和商业版本
Hypervisor /VMM的选择
电信/ISP公共云
单一hypervisor
KVM
互联网公司
单一hypervisor
KVM
Web托管和SAS细分市场
单一或多个hypervisor
容器(LXC, Parallels, Docker)
KVM
企业
多种Hypervisor
KVM和 vCenter/ESXi
国产虚拟化解决方案概述
Stop Trying to Reinvent the Wheel,不要重复造轮子
国产虚拟化解决方案重点在虚拟化的管理与桌面协议
Hypervisor/VMM选择(按汉语拼音排序):
H3: KVM
红山∶Xen
华为∶Xen → KVM→Xen
浪潮∶Xen
普华∶KVM
锐捷∶KVM
深信服∶ KVM
….其他KVM居多
资源与参考资料
Redhat官方文档
https://access.redhat.com/documentation
Virtualization Getting Started Guide
Virtualization Deployment and Administration Guide
Virtualization Tuning and Optimization Guide
Virtualization Security Guide
KVM 主页
提供了KVM的详细信息 ,以及大量信息来源和相关站点的链接
libvirt Virtualization API 网站
提供了有关该API、所支持的虚拟化抽象及其使用的XML格式的详细信息