You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kvm/MD/虚拟化技术概述.md

83 lines
7.7 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<h1><center>虚拟化技术概述</center></h1>
**作者:行癫(盗版必究)**
------
## 一:虚拟化概述
#### 1.什么是虚拟化
虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的
物理机我们一般称为宿主机Host宿主机上面的虚拟机称为客户机Guest
那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢
主要是通过一个叫做 Hypervisor 的程序实现的
虚拟化技术最早出现在 20 世纪 60 年代的 IBM 大型机系统在70年代的 System 370 系列中逐渐流行起来这些机器通过一种叫虚拟机监控器Virtual Machine MonitorVMM的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机Virtual Machine实例。随着近年多核系统、集群、网格甚至云计算的广泛部署虚拟化技术在商业应用上的优势日益体现不仅降低了 IT 成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中
虚拟化是一个广义的术语对于不同的人来说可能意味着不同的东西这要取决他们所处的环境。在计算机科学领域中虚拟化代表着对计算资源的抽象而不仅仅局限于虚拟机的概念。例如对物理内存的抽象产生了虚拟内存技术使得应用程序认为其自身拥有连续可用的地址空间Address Space而实际上应用程序的代码和数据可能是被分隔成多个碎片页或段甚至被交换到磁盘、闪存等外部存储器上即使物理内存不足应用程序也能顺利执行
#### 2.虚拟化分类
平台虚拟化Platform Virtualization针对计算机和操作系统的虚拟化
资源虚拟化Resource Virtualization针对特定的系统资源的虚拟化比如内存、存储、网络资源等
应用程序虚拟化Application Virtualization包括仿真、模拟、解释技术等
我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(也被称为 Virtual Machine Monitor 或Hypervisor隐藏特定计算平台的实际物理特性为用户提供抽象的、统一的、模拟的计算环境称为虚拟机。虚拟机中运行的操作系统被称为客户机操作系统Guest OS运行虚拟机监控器的操作系统被称为主机操作系统Host OS当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上如 VMWARE 的 ESX 产品)。运行虚拟机的真实系统我们称之为主机系统。
![file://C:\Users\huawei\AppData\Local\Temp\ct_tmp/1.png](D:\行癫kubernetes\虚拟化技术\虚拟化技术概述.assets\1.png)
部分虚拟化Partial Virtualization
VMM 只模拟部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运行的,其它程序可能也需要进行修改。在历史上,部分虚拟化是通往全虚拟化道路上的重要里程碑,最早出现在第一代的分时系统 CTSS 和 IBM M44/44X 实验性的分页系统中
全虚拟化Full Virtualization
全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行;比较著名的全虚拟化 VMM 有 Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac 和 QEMU
超虚拟化Paravirtualization
这是一种修改 Guest OS 部分访问特权状态的代码以便直接与 VMM 交互的技术。在超虚拟化虚拟机中,部分硬件接口以软件的形式提供给客户机操作系统,这可以通过 HypercallVMM 提供给 Guest OS 的直接调用,与系统调用类似)的方式来提供,由于不需要产生额外的异常和模拟部分硬件执行流程,超虚拟化可以大幅度提高性能,比较著名的 VMM 有 Denali、Xen
硬件辅助虚拟化Hardware-Assisted Virtualization
硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。例如有了 Intel-VT 技术的支持Guest OS 和 VMM 的执行环境自动地完全隔离开来Guest OS 有自己的“"套寄存器"可以直接运行在最高级别Intel-VT 和 AMD-V 是目前 x86 体系结构上可用的两种硬件辅助虚拟化技术
#### 3.KVM简介
从rhel6开始使用 直接把kvm的模块做成了内核的一部分KVM 针对运行在 x86 硬件上的、驻留在内核中的虚拟化基础结构。KVM 是第一个成为原生 Linux 内核2.6.20)的一部分的 hypervisor它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有
KVM 是作为内核模块实现的,因此 Linux 只要加载该模块就会成为一个hypervisor。KVM 为支持 hypervisor 指令的硬件平台提供完整的虚拟化(比如 Intel® Virtualization Technology [Intel VT] 或 AMD Virtualization [AMD-V] 产品。KVM 还支持准虚拟化来宾操作系统,包括 Linux 和 Windows
#### 4.KVM hypervisor 视图
![file://C:\Users\huawei\AppData\Local\Temp\ct_tmp/1.png](D:\行癫kubernetes\虚拟化技术\虚拟化技术概述.assets\1-16574414328342.png)
#### 5.kvm、xen、qemu三者区别
KVM(Kernel-based Virtual Machine)基于内核的虚拟机:
KVM是集成到Linux内核的Hypervisor是X86架构且硬件支持虚拟化技术Intel VT或AMD-V的Linux的全虚拟化解决方案。它是Linux的一个很小的模块利用Linux做大量的事如任务调度、内存管理与硬件设备交互等
Xen
Xen是第一类运行在裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,Xen支持hypervisor和虚拟机互相通讯而且提供在所有Linux版本上的免费产品包括Red Hat Enterprise Linux和SUSE Linux Enterprise Server。Xen最重要的优势在于半虚拟化此外未经修改的操作系统也可以直接在xen上运行(如Windows)能让虚拟机有效运行而不需要仿真因此虚拟机能感知到hypervisor而不需要模拟虚拟硬件从而能实现高性能
QEMU
QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与BochsPearPC近似但其具有某些后两者所不具备的特性如高速度及跨平台的特性。经由kqemu这个开源的加速器QEMU能模拟至接近真实电脑的速度
#### 6.KVM和QEMU的关系
准确来说KVM是Linux kernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后才能进一步通过其他工具创建虚拟机。但仅有KVM模块是 远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具kvm开发者选择了已经成型的开源虚拟化软件 QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分并稍加改造就成了可控制KVM的用户空间工具了。所以你会看到官方提供的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说你可以只升级KVM模块也可以只升级QEMU工具。这就是KVM和QEMU 的关系