第一章: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官网

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的开源版本。

http://www.ovirt.org/

WebVirtMgr

https://www.webvirtmgr.net

virt-manager的Web模式的替代品

ConVirt

http://www.convirture.com/

分开源版本和商业版本

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 主页

http://www.linux-kvm.org/

提供了KVM的详细信息 ,以及大量信息来源和相关站点的链接

libvirt Virtualization API 网站

http://www.libvirt.org/

提供了有关该API、所支持的虚拟化抽象及其使用的XML格式的详细信息

posted @ 2022-05-12 17:36  CharlieBrown  阅读(53)  评论(0编辑  收藏  举报