第一章: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格式的详细信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律