虚拟化技术学习笔记
Posted more more ideas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟化技术学习笔记相关的知识,希望对你有一定的参考价值。
由于近期正在学习虚拟化技术,本文先从介绍Hypervisor技术开始,简单从产品经理角度理解这个特别的虚拟化产品。
虚拟化技术的学习笔记,一共分为三大部分
1、介绍Hypervisor
2、介绍QNX Hpervisor、XEN Hypervisor两款典型产品
3、介绍智能座舱(下节笔记)
引入
首先,解释一些专业的名词:
虚拟化:虚拟化是云计算架构中的关键技术。虚拟化是通过在物理平台上,虚拟出更多的虚拟平台,每一个虚拟平台都可以作为独立的终端使用。云计算的云端系统,可以看作是分布式系统。虚拟化技术可以将一台计算机虚拟为多台逻辑计算机,每台逻辑计算机运行不同的操作系统,多个应用程序可以在相对独立的空间内运行而且互不影响,从而可以提高计算机工作效率。
内核:操作系统的重要组成部分,内核程序是其中一个计算机程序,可以看作一个子集。直接访问硬件资源,实现管理存储、文件、外设、系统资源等功能
微内核:将内核划分多个模块,其中仅有某些核心所具备的功能,这些功能在核心空间中运行。微内核包含核心功能,如:CPU调度、内存管理、进程通信等。部分功能是在用户空间执行,例如:网络连接、文件形同、设备驱动。
分离内核:为了创建分区,管理分配分区资源,以及控制信息如何从这些资源流向每个分区中运行内容。
一、 Hypervisor简介
1. 什么是Hypervisor
下面解释一下Hypervisor,叫做虚拟机管理系统,是一种将操作系统与硬件抽象分离的方法,也就是Host machine硬件能同时运行一个到多个虚拟机作为Gust machine的目的。
从而达到虚拟机高效分享主机硬件资源。官方解释:是一种运行在基础物理服务器和操作系统之间的中间软件,可以允许多个操作系统和应用共享硬件,也可以称为VMM(Virtual machine monitor)虚拟机监视器
可以理解Hypervisor是虚拟机的一个管理程序,或者一个虚拟机的容器。
Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisors不但协调着这些硬件资源的访问,而且在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘
2. Hypervisor特征
为什么要使用Hypervisor呢?以下特征描述了它的优势:
1) 提高主机硬件的使用效率。因为一个主机可以运行多个虚拟机,这样主机的硬件资源能被高效充分的利用起来。
2) 虚拟机移动性强。传统软件强烈捆绑在硬件上,转移一个软件至另一个服务器上耗时耗力(比如重新安装);然而,虚拟机与硬件是独立的,这样使得虚拟机可以在本地或远程虚拟服务器上低消耗转移。
3) 虚拟机彼此独立。一个虚拟机的奔溃不会影响其他分享同一硬件资源的虚拟机,大大提升安全性。
4) 易保护,易恢复。Snapshot技术可以记录下某一时间点下的虚拟机状态,这使得虚拟机在错误发生后能快速恢复。
3. Hypervisor种类
Type -1型,叫做bare-metal hypervisors:直接部署在主机硬件上,没有宿主机操作系统,以管理硬件和guest machine,例如Xen,VMware ESX
Type-2型,叫做hosted hypervisors,作为软件层部署在主机操作系统上,或者在系统里,这类通常是宿主机操作系统的一个应用程序,像其他应用程序一样受到宿主机操作系统的管理。例如:KVM、VMware Workstation
二、Xen Hypervisor简介
1. Xen 结构
Xen是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术。在Xen使用的方法中,没有指令翻译。这是通过两种方法之一实现的。第一,使用一个能理解和翻译虚拟操作系统发出的未修改指令的CPU(此方法称作完全虚拟化)。另一种,修改操作系统,从而使它发出的指令最优化,便于在虚拟化环境中执行(此方法称作准虚拟化)。
在Xen环境中,主要有两个组成部分。一个是虚拟机监控器(VMM)。VMM层在硬件与虚拟机之间,是必须最先载入到硬件的第一层。Hypervisor载入后,就可以部署虚拟机了。在Xen中,虚拟机叫做“domain”。在这些虚拟机中,其中一个扮演着很重要的角色,就是domain0,具有很高的特权。Domain 0是一个修改过的 Linux kernel,是唯一运行在 Xen Hypervisor 之上的虚拟机,它拥有访问物理 I/O 资源的权限,同时和系统上运行的其他虚拟机进行交互。Domain 0 需要在其它 Domain 启动之前启动
Domain0要负责一些专门的工作。由于hypervisor中不包含任何与硬件对话的驱动,也没有与管理员对话的接口,这些驱动就由domain0来提供了。通过domain0,管理员可以利用一些Xen工具来创建其它虚拟机(Xen术语叫domainU)。
这些domainU也叫无特权domain。运行在 Xen Hypervisor 上的所有半虚拟化(paravirtualized)虚拟机被称为“Domain U PV Guests”,其上运行着被修改过内核的操作系统,如 Linux、Solaris、FreeBSD 等其它 UNIX 操作系统。所有的全虚拟化虚拟机被称为“Domain U HVM Guests”,其上运行着不用修改内核的操作系统,如 Windows 等
2.Xen 特点
-
Domain0:这是Xen在初期引入的一个特权Dom,Xen Hypervisor在收到IO请求后,需要先把请求投递到Domain0,完成调度处理后,通过grant copy或者grant map转发到对应的虚拟机,相比KVM, 整个IO处理路径几乎被拉长了一倍。其次, x86_64的ring模型相比早期的x86_32也发生了较大变换,从而导致ring压缩,进一步恶化了中断处理的性能。 -
必须重复造轮子:最新10年来,CPU已经从单核逐步走向了双核,四核,甚至是几十核心,NUMA技术,TB级内存也基本成为现代服务器的标配,众多厂商和Linux社区在内存和CPU调度和管理上做了大量的工作,而Xen Hypervisor采用独立的CPU和内存调度管理,核心实现还停留在Linux 2.4时代,经过了10年的发展后,根本无力去同步这么多的更新,我们今天会发现,Xen已经落后的太多了,比如: -
hugepage:Xen只能提供2M物理页面,而DPDK需要1G的连续物理内存,这是DPDK不能支持Xen的最主要原因 -
KSM:透明页面共享。 -
多核(>128 CPU)调度: 虽然宣称能支持最大192+ core, 但是实际我们发现如果在128 core的4P服务器上创建大规格虚拟机并在其中使用高精度时钟,导致虚拟机频繁陷入陷出调度cpu,Xen就会出现严重问题,这显然是Xen没有经过大规模商业实践的表现。 -
对于Citrix这样以传统Windows桌面为主要业务的公司,这些高IO,高吞吐,大规格的场景其实并不是他们关心的技术方向。相比之下,VMware也有类似的技术问题,但是在2008年左右,VMware就果断的放弃了基于Domain 0架构的ESX, 转向ESXi。
三、 KVM Hypervisor简介
1. KVM 结构
KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor。KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚拟机的每个虚拟 CPU 被实现为一个常规的 Linux 线程。这使得 KMV 能够使用 Linux 内核的已有功能。
KVM 是基于硬件虚拟化扩展(Intel VT- X )和 QEMU 的修改版,KVM 属于 Linux kernel 的一个模块,可以用命令 modprobe 去加载 KVM 模块。加载了该模块后,才能进一步通过工具创建虚拟机。但是仅有 KVM 模块是不够 的。因为用户无法直接控制内核去做事情,还必须有一个运行在用户空间的工具才行。这个用户空间的工具,我们选择了已经成型的开源虚拟化软件 QEMU,QEMU也是一个虚拟化软件,它的特点是可虚拟不同的 CPU,比如说在x86的CPU 上可虚拟一个power的CPU,并可利用它编译出可运行在power上的CPU,并可利用它编译出可运行在power上的程序。KVM 使用了 QEMU的一部分,并稍加改造,就成了可控制 KVM 的用户空间工具了。这就是 KVM 和 QEMU 的关系。
2. KVM 特点
KVM是在虚拟机和硬件之间加了一个软件层--Hypervisor,或者叫做虚拟机管理程序(VMM),KVM的hypervisor是直接运行在物理硬件之上的。XEN是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,使客户操作系统集成了虚拟化方面的代码,该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。
最大的优势在于KVM使用Linux内核集成的,所以速度较快,同时,KVM是完全虚拟的,所以不需要区分pv和hvm,可以安装各种Linux发行版和Windows发行版,可以运行在支持虚拟化扩展的X86和X86-64硬件架构上。
对比总结
XEN实际上出现的时间要早于KVM,它是由剑桥大学开发的,一个开源的虚拟机监视器。半虚拟化架构决定了它注定不是真正的虚拟机,只是自己运行了一个内核的例子,同时区分Xen+pv+和Xen+hvm,其中pv只支持Linux,而hvm则支持Windows系统。除此之外,XEN还拥有更好的可用资源、平台支持、可管理性、实施、支持动态迁移和性能基准等优势。
目前来看,从性能和成熟度上而言,XEN要优于KVM,但是红帽等公司在KVM上的投入也越来越多,但诸如AWS、阿里云等云服务提供商仍然使用的XEN半虚拟化技术,XEN也积累了很多优秀的解决方案,稳定性更优,而KVM最大的好处就在于它是与Linux内核集成的,可以说KVM与ESX拥有相同的架构,这也让KVM今年得到大批用户的支持。
在网络技术、云计算迅速发展的今天,数据量迅速增加,虚拟化技术也得到了发展的土壤,甚至可以说云技术就是新型的虚拟化技术。无论软件虚拟化还是硬件虚拟化都受到企业的关注,而虚拟化所带来的降低企业TCO,快速部署等优势也让其需求不断增加
好好学习
天天向上
2020年9月22日
以上是关于虚拟化技术学习笔记的主要内容,如果未能解决你的问题,请参考以下文章