刘俊凯 发表于 2024-7-24 00:06:12

云计算底子-假造化技能的发展和详细研究

1、假造化技能产生的配景



[*]为了提高大型机的资源利用率和服从。在 20 世纪 60 年代,大型机是昂贵而稀缺的计算资源,为了让多种业务应用可以大概共享并充实利用大型机的集中化计算本事,IBM 等公司开辟了假造化技能,将大型机划分为多个逻辑分区,每个分区可以运行一个独立的操作体系和应用。
[*]为了适应分布式计算模子的发展。在 20 世纪 80 年代和 90 年代,随着客户端-服务器应用程序和自制的 x86 服务器及台式机的普及,分布式计算模子成为了主流,假造化技能也随之衰落。但是,分布式计算模子也带来了一些问题,如管理复杂性、资源浪费、安全风险等。为了办理这些问题,VMware 等公司在 20 世纪末重新推出了- 基于 x86 架构的假造化技能,使得多个假造机可以在一台物理服务器上运行,实现了资源的优化和隔离。
[*]为了支持云计算和新型应用的需求。在 21 世纪初,云计算和新型应用(如移动应用、微服务、容器等)的兴起,对计算资源的需求和机动性提出了更高的要求。假造化技能作为云计算的底子,可以实现计算资源的快速摆设、弹性扩缩、按需付费等特性。同时,假造化技能也不停创新和发展,出现了更多类型的假造化,如网络假造化、存储假造化、数据假造化、应用假造化等。
2、假造化是什么,为什么必要假造化?

假造化是指通过软件技能,将一台物理计算机分割成多个逻辑部分,每个逻辑部分都可以独立运行操作体系和应用程序,这些逻辑部分被称为假造机。假造化技能使得一个物理服务器可以大概同时运行多个假造机,假造化通过将计算资源(如 CPU、内存、存储和网络)假造化为多个假造机来实现这一目标。每个假造机都有自己的假造硬件,包罗 CPU、内存、磁盘和网络接口等。每个假造机都可以独立运行不同的操作体系和应用程序,从而实现资源的共享和利用,提高了服务器的利用率。
https://img-blog.csdnimg.cn/ed88f697300746f0bf53af38663c74c1.png
如图所示的 Virtual Machine Monitor (VMM,虛拟机监控器,也称为 Hypervisor)层,就是为了达到假造化而引人的一个软件层。它向下掌控实际的物理资源(相当于原本的操作体系);向上出现给假造机N 份逻辑的资源。为了做到这一点,就必要将假造机对物理资源的访问 “偷梁换柱”——截取并重定向,让假造机误以为自己是在独享物理资源。假造机监控器运行的实际物理情况,称为宿主机;其上假造出来的逻辑主机,称为客户机。
2.1 使用假造化技能带来了以下利益:



[*]提高服务器利用率:通过假造化技能,一台物理服务器可以同时运行多个假造机,每个假造机都可以独立运行不同的操作体系和应用程序,从而充实利用服务器资源,提高服务器利用率。
[*]简化管理和维护:假造化管理工具可以简化对假造机的管理和维护,比方快速创建、删除和迁徙假造机等操作。
[*]提高机动性和可用性:假造机之间相互隔离,发生故障时不会影响其他假造机,同时可以快速迁徙假造机到其他物理服务器上,提高应用程序的机动性和可用性。
[*]节流成本:通过假造化技能,可以在一台物理服务器上运行多个假造机,从而淘汰了硬件成本、能源消耗和数据中心空间。
2.2 假造化技能存在的一些缺点:



[*]性能损失:假造化的本质是在物理服务器上创建多个假造机,共享硬件资源。如果假造机之间使用相同的资源,那么这些资源就会成为瓶颈,造成性能损失。此外,由于每个假造机都必要通过假造化软件来访问物理硬件资源,因此会导致额外的CPU和内存开销。
[*]安全风险:假造化技能将多个假造机摆设在同一台物理服务器上,其中一个假造机遭受攻击大概会影响其他假造机。此外,假造情况中存在假造机移动、复制等操作,这些操作也大概带来安全风险。
[*]复杂性:假造化技能必要假造化软件和管理工具来完成假造机的创建、配置、监控、迁徙和备份等任务,这些软件和工具的学习和操作都必要肯定的专业知识和技能,增长了复杂性和难度。
[*]单点故障:假造化技能使得多个假造机运行在同一台物理服务器上,如果该物理服务器发生故障,则会影响全部运行在其上的假造机。因此,在摆设假造化情况时必要筹划合理的冗余机制来避免单点故障。
[*]扩大错误影响面:如果物理机出现故障或硬盘损坏,上面的全部假造机都会受到影响,大概导致数据丢失或不可用。
今天云计算的快速发展其实就是在利用假造化技能的优势、并通过其他技能来弥补假造化技能的缺点。
3、 假造化的分类



[*]服务器假造化:是指将一台物理服务器划分为多个假造服务器,每个假造服务器都可以运行独立的操作体系和应用程序,共享物理服务器的硬件资源。服务器假造化可以提高硬件利用率,低落成本,提高机动性和可靠性。
[*]存储假造化:是指将多个物理存储设备抽象为一个逻辑存储池,从而屏蔽存储设备的物理特性,简化存储管理和配置。存储假造化可以提高存储空间利用率,实现数据备份和恢复,提高数据安全性和可用性。
[*]网络假造化:是指将物理网络资源(如交换机、路由器、网卡等)抽象为逻辑网络资源,从而实现网络功能的软件化,简化网络摆设和管理。网络假造化可以提高网络性能,实现网络隔离和负载均衡,提高网络安全性和可扩展性。
[*]桌面假造化:是指将用户的桌面情况(包罗操作体系、应用程序和数据)从本地计算机迁徙到中央服务器上,并通过远程访问方式提供给用户使用。桌面假造化可以低落终端设备成本,实现桌面情况的集中管理和更新,提高用户体验和数据安全性。
[*]操作体系假造化:是指在一台计算机上运行多个操作体系,每个操作体系都有自己的内核和用户空间,并通过一个称为 Hypervisor (假造机监控程序) 的软件举行管理和调度。操作体系假造化可以实现操作体系的隔离和兼容,支持多种类型和版本的操作体系并行运行。
4、服务器假造化技能的研究

软件假造化

软件假造化是指利用软件技能,在现有的物理平台上实现对物理平台访问的截获和模拟。软件假造化不必要硬件支持,但是会带来肯定的性能开销,由于必要对客户机操作体系的敏感指令举行模拟或翻译。软件假造化的类型有完全假造化、半假造化、操作体系层假造化等。常见的软件假造化产品有QEMU(最纯粹的软件假造化,在没有启用硬件假造化辅助的时候,它通过软件的二进制翻译日仿真出;目标平台出现给客户机,客户机的每一条目标平台指令都会被 QEMU截取,并翻译成宿主机平台的指令,然后交给实际的物理平台实行。由于每一条都必要这么操作一下,其假造化性能是比较差的,同时其软件复杂度也大大增长。但利益是可以出现各种平台给客户机,只要其二进制翻译支持。)、VMware Workstation(windows用户最常用的一种,在windows体系中下载workstation后按照假造机,这时候假造机运营在OS层上的假造化层上)、VirtualBox等。
硬件假造化

硬件假造化是指通过硬件辅助支持模拟运行情况,使客户机操作体系可以独立运行,实现完全假造化的功能,而不必要假造化层截获。硬件假造化必要处理器或其他硬件设备提供的假造化扩展功能,如Intel-VT或AMD-V(CPU厂商的支持)。硬件假造化可以淘汰软件层的干预,提高假造机的性能和安全性。常见的硬件辅助假造化产品有KVM、Xen、Hyper-V等。以x86架构为例,它提供一个略微受限制的硬件运行情况供容户机运行 (non-rootmode ),在绝大多数情况下,客户机在此受限情况中运行与原生体系在非假造化情况中运行没有什么两样,不必要像软件假造化那样每条指令都先翻译再实行,而 VMM运行在 rootmode,拥有完整的硬件访问控制权限。仅仅在少数必要的时候,某些客户机指令的运行才必要被 VMM 截获并做相应处理,之后客户机返回并继承在 non-root mode 中运行。可以想见,硬件假造化技能的性能靠近于原生体系目,而且,极大地简化了 VMM 的软件筹划架构。
半假造化和全假造化



[*]半假造化:
1)客户机完全不知道自己运行在假造化情况中,还以为自己运行在原生情况里。
2)完全不必要 VMM 介入容户机的运行过程。
纯软件的虛拟化可以做到第一个目标,但性能不是很好,而且软件筹划的复杂度大大增长。
那么如果放弃第一个目标呢?**让客户机意识到自己是运行在假造化情况里,并做相应修改以配合 VMM,这就是半假造化(Para-Virtualization)。**一方面,可以提升性能和简化VMM 软件复杂度;另一方面,也不必要太依赖硬件假造化的支持,从而使得其软件筹划(至少是 VMM 这一侧)可以跨平台且是优雅的。“本质上,准假造化弱化了对假造机特殊指令的被动截获要求,将其转化成客户机操作体系的自动关照。但是,准虛拟化必要修改客户机操作体系的源代码来实现自动关照。”典范的半假造化技能就是virtio,使用virtio必要在宿主机/MM 和客户机里都相应地装上驱动。
[*]全假造化:
与半虛拟化相反的,全虛拟化(Full Virtualization)坚持第一个理想化目标:**客户机的操作体系完全不必要改动。敏感指令在操作体系和硬件之间被 VMM 捕捉处理,客户操作体系无须修改,全部软件都能在假造机中运行。**因此,全假造化必要模拟出完整的、和物理平台一模一样的平合给客户机,这在达到了第一个目标的同时也增长了假造化层(VMM)的复杂度。性能上,2005年硬件假造化兴起之前,软件实现的全假造化完败于 VMM 和客户机操作体系协同运作的半假造化,这种情况不停延续到2006年。之后以Intel VT-X、AMD-V为代表的硬件假造化技能的兴起,让由硬件假造化辅助的全假造化全面凌驾了半假造化。但是,以virtio 为代表的半假造化技能也不停在演进发展,性能上只是略逊于全假造化,加之其较少的平台依赖性,依然受到广泛的欢迎。
关于CPU敏感指令的补充:

联合下图来分析:


[*]CPU的ring0-ring3是指Intel的x86处理器的特权级别,用来举行访问控制。特权级别共分为4层,从ring0到ring3,ring0拥有最高的权限,可以访问全部层的数据和实行全部指令,ring3拥有最低的权限,只能访问ring3层的数据和实行非特权指令。
[*]一般来说,操作体系工作在ring0层,拥有对硬件的完全控制,而应用程序工作在ring3层,受到操作体系的管理和保护。如果应用程序必要实行特权指令或访问特权数据,就必要通过体系调用或中断等方式切换到ring0层,并由操作体系代为实行。
[*]ring1和ring2层是中间层,可以访问本层以及权限更低层的数据和指令。它们主要是为其他驱动程序或假造化软件提供服务。但是在现代操作体系中,这两层很少被使用,由于大多数驱动程序都运行在ring0层或者用户态。
因此如果运行假造化的VM,其实原则上是他是在ring1,没办法直接运行ring0的指令,这样就必要去转换,先通过guest os 给到VMM,然后VMM再给到操作体系层,再到CPU的过程。但是这样其实并欠好,由于有转换的开销,我们的理想是guest os直接能运行在ring 0下,这样假造机的服从就被提高了。intel和AMD的CPU推出了硬件辅助假造化技能实现了这一工作
[*]以intel为例:因特尔intel-VT技能是一种硬件辅助假造化技能,它可以让一个CPU工作起来就像多个CPU并行运行,从而使得在一台电脑内可以同时运行多个操作体系。它的核心思想是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式)下,且Guest OS运行在Ring 0下。
[*]对于假造化来说,intel-VT技能可以办理x86架构在假造化方面存在的缺陷,比如敏感指令的处理、内存管理、I/O设备访问等。它可以使未经修改的Guest OS运行在特权级0,同时淘汰VMM对Guest OS的干预。它还可以通过使VMM将特定I/O设备直接分配给特定的Guest OS,淘汰VMM对I/O处理的管理,不但加速数据传输,且消除了大部分性能开销。
[*]对于ring0-3特权指令来说,intel-VT技能可以实现根模式和非根模式之间的相互转换,从而实现对特权指令的控制和管理。在根模式下,VMM运行在ring0层,拥有最高的权限,可以访问全部层的数据和实行全部指令。在非根模式下,Guest OS运行在ring0层,但是受到VMM的监控和保护。如果Guest OS实行了敏感指令或发生了中断等情况,会触发VMExit操作,切换回根模式运行VMM。VMM根据VMExit的缘故原由作出相应处理,处理完成后再通过VMEntry操作切换回非根模式继承运行Guest OS。
https://img-blog.csdnimg.cn/4365dcb48a1447fc9b34cd523770d054.png
https://img-blog.csdnimg.cn/d1f32d79e49b47fe892a599a5f41181f.png
Type-1型假造化和2型假造化

从软件框架的角度上,根据假造化层是直接位于硬件之上照旧在一个宿主操作体系之上,将虛拟化划分为Type-1和Type-2。
https://img-blog.csdnimg.cn/552a3cbd667c4e1eaa0374f899ea1215.png


[*]Type-1型假造化:
假造化层直接打仗硬件,没有宿主操作体系,假造化层直接控制硬件和客户机,如XEN和Vmware ESX。
[*]Type-2型假造化:
Hypervisor 运行在一个宿主机操作体系之上,如 VMware Workstation;或体系里,如KVM。这类Hypervisor 通常就是宿主机操作体系的一个应用程序,像其他应用程序一样受宿主机操作体系的管理。比如 VMware Work.station 就是运行在 Windows 或者Linux操作体系上的一个程序而已日。客户机是在宿主机操作体系上的一个抽象,通常抽象为进程。
总结

https://img-blog.csdnimg.cn/c2e08dff32f14c03b85979f8bff7f097.png
以假造化技能维度,分类如下:
【全假造化】也称为原始假造化技能,运行在假造机上的操作体系通过Hypervisor来最终分享硬件,以是假造机发出的指令需颠末Hypervisor捕获并处理。
【半假造化】半假造化技能是后来才出现的技能,它就是在全假造化的底子上,把客户操作体系举行了修改,增长了一个专门的API,这个API可以将客户操作体系发出的指令举行最优化,即不必要Hypervisor耗费肯定的资源举行翻译操作,因此Hypervisor的工作负担变得非常的小,因此整体的性能也有很大的提高。
【硬盘辅助假造化】Hypervisor可以在部分功能上与硬件直接交互,提升性能。比如在CPU性能较差的网络IO方面与硬件直接交互。
4.1 KVM假造化

https://img-blog.csdnimg.cn/51e749d307f046d5bd1819d590c62d1f.png


[*]KVM的全称是Kernel-based Virtual Machine,字面意思是基于内核假造机。其最初是由Qumranet公司开辟的一个开源项目,KVM最初是由Quroranet 公司的AviKivity 开辟的,作为他们的 VDI 产品的后台虛拟化办理方案。为了简化开辟,Avi Kivity 并没有选择从底层开始新写一个 Hypervisor,而是选择了基于 Linux kernel,通过加载模块使Linux kernel 自己变成一个Hypervisor。2008年,Qumranet被RedHat所收购,但KVM自己照旧一个开源项目,由RedHat、IBM等厂商支持。作为一个功能和成熟度都逊于 xen 的项目,在这么快的时间内被内核社区接纳,主要缘故原由在于:
1)在假造化方兴末艾的其时,内核社区急于将假造化的支持包罗在内,但是Xen 代替内核由白身管理体系资源的架构引起了内核开辟人员的不满和抵触。
2)xen诞生于硬件假造化技能出现之前,以是它在筹划上采用了半虛拟化的方式,这让xen 采用硬件假造化技能有了更多的历史包袱,不如KVM 新兵上阵一身轻。
直到2008年9月4日,Redhat 公司以1.07亿美元收购了 Qurranet 公司,包罗它的 KVM开源项目和开辟人员。自此,Redhat 开始在其RFIEL 发行版中集成KVM,渐渐代替 xen,并从RHEL7开始,正正式不支持XEN架构。
[*]与XEN类似,KVM支持广泛的CPU架构,除了X86/X86_64 CPU架构之外,还将会支持大型机(S/390)、小型机(PowerPC、IA64)及ARM等。
[*]KVM充实利用了CPU的硬件辅助假造化本事,并重用了Linux内核的诸多功能,使得KVM自己黑白常瘦小的,KVM的首创者Avi Kivity声称KVM模块仅有约10000行代码,但我们不能认为KVM的Hypervisor就是这个代码量,由于从严格意义来说,KVM自己并不是 Hypervisor,它仅是Linux内核中的一个可装载模块,其功能是将Linux内核转换成一个裸金属的Hypervisor。
[*]通过KVM模块的加载将Linux内核转变成Hypervisor,KVM在Linux内核的用户(User)模式和内核(Kernel)模式底子上增长了客户(Guest)模式。Linux自己运行于内核模式,主机进程运行于用户模式,假造机则运行于客户模式,使得转变后的Linux内核可以将主机进程和假造机举行同一的管理和调度,这也是KVM名称的由来。
[*]**KVM 用来模拟 CPU 的运行,但缺少了对 Network 和 I/O 的支持。QEMU-KVM 是一个完整的模拟器,它基于 KVM 上,提供了完整的 Network 和 I/O 支持。**其中 Openstack 为了跨 VM 性,以是不会直接控制 QEMU-KVM,而是通过 libvit 的库去间接控制 QEMU-KVM 。
[*]KVM利用修改的QEMU提供BIOS、显卡、网络、磁盘控制器等的仿真,但对于I/O设备(主要指网卡和磁盘控制器)来说,则必然带来性能低下的问题。因此,KVM也引入了半假造化的设备驱动,通过假造机操作体系中的假造驱动与主机Linux内核中的物理驱动相配合,提供近似原生设备的性能。今后可 以看出,KVM支持的物理设备也即是Linux所支持的物理设备。
https://img-blog.csdnimg.cn/f75915cdd1734637bab316c9b9e8ca24.png
[*]KVM从诞生开始就定位于基于硬件虛拟化支持的全假造化实现。它以内核模块的情势加载之后,就将 Linux 内核变成了一个 Hypervisor,但硬件管理等照旧通过 Linux kernel 来完成的,以是它是一个典范的 Type 2 Hypervisor。
[*]一个KVM客户机对应于一个 Linux进程,每个vCPU 则是这个进程下的一个线程,还有单独的处理IO 的线程,也在一个线程组内。以是,宿主机上各个容户机是由宿主机内核像调度普通进程一样调度的,即可以通过 Linux 的各种进程调度的本事来实现不同客户机的权限限定、优先级等功能。
[*]客户机所看到的硬件设备是QEMU模拟出来的(不包罗 VT-d 透传的设备),当客户机对模拟设备举行操作时,由 QEMU 截获并转换为对实际的物理设备(大概设备都不实际物理地存在)的驱动操作来完成。
4.2 qemu假造化

QEMU 假造化技能是一种基于软件的假造化模拟器,它可以模拟各种硬件设备,如 CPU、内存、磁盘、网卡等,从而创建出一个可以大概运行操作体系的假造机。QEMU 有以下几种使用方式:


[*]纯软件(二进制翻译)实现的全假造化假造机,性能较低,但兼容性较好。
[*]基于硬件辅助假造化(KVM)的全假造化假造机,性能较高,但必要处理器支持假造化扩展(Intel VT 或 AMD-V)。
[*]仿真器:为用户空间的进程提供 CPU 仿真,让在不同处理器结构体系上编译的程序得以跨平台运行。
[*]QEMU-KVM 是 QEMU 和 KVM 的联合,它利用了 KVM 的处理器和内存假造化功能,为 QEMU 的假造机提供了硬件加速。在 QEMU-KVM 中,KVM 运行在内核空间,提供 CPU 和内存的虚级化,以及 Guest OS 的 I/O 拦截。QEMU 运行在用户空间,提供硬件 I/O 假造化,并通过 ioctl 调用 /dev/kvm 接口将 KVM 模块相干的 CPU 指令通报到内核中实行。当 Guest OS 的 I/O 被 KVM 拦截后,就会将 I/O 哀求交由 QEMU 处理。
4.3 XEN假造化

https://img-blog.csdnimg.cn/20cfb799d9ee43baace077ce3a832ff2.png
XEN最初是剑桥大学Xensource的一个开源研究项目,2003年9月发布了首个版本XEN 1.0,2007年Xensource被Citrix公司收购,开源XEN转由www.xen.org继承推进,该构造成员包罗个人和公司(如 Citrix、Oracle等)。该构造在2011年3月发布了版本XEN 4.1。


[*]相对于ESX和Hyper-V来说,XEN支持更广泛的CPU架构,前两者只支持CISC的X86/X86_64 CPU架构,XEN除此之外还支持RISC CPU架构,如IA64、ARM等。
[*]XEN的Hypervisor是服务器颠末BIOS启动之后载入的首个程序,然后启动一个具有特定权限的假造机,称之为Domain 0(简称Dom 0)。Dom 0的操作体系可以是Linux或Unix,Domain 0实现对Hypervisor控制和管理功能。在所承载的假造机中,Dom 0是唯一可以直接访问物理硬件(如存储和网卡)的假造机,它通过自己加载的物理驱动,为别的假造机(Domain U,简称DomU)提供访问存储和网卡的桥梁。
[*]XEN支持两种类型的假造机,一类是半假造化(PV,Paravirtualization),另一类是全假造化(XEN称其为 HVM,Hardware Virtual Machine)。半假造化必要特定内核的操作体系,如基于Linux paravirt_ops(Linux内核的一套编译选项)框架的Linux内核,而Windows操作体系由于其封闭性则不能被XEN的半假造化所支持,XEN的半假造化有个特别之处就是不要求CPU具备硬件辅助假造化,这非常实用于2007年之前的旧服务器假造化改造。全假造化支持原生的操作体系, 特别是针对Windows这类操作体系,XEN的全假造化要求CPU具备硬件辅助假造化,它修改的Qemu仿真全部硬件,包罗:BIOS、IDE控制器、 VGA显示卡、USB控制器和网卡等。为了提升I/O性能,全假造化特别针对磁盘和网卡采用半假造化设备来代替仿真设备,这些设备驱动称之为PV on HVM,为了使PV on HVM有最佳性能。CPU应具备MMU硬件辅助假造化。
[*]XEN的Hypervisor层非常薄,少于15万行的代码量,不包罗任何物理设备驱动,这一点与Hyper-V黑白常类似的,物理设备的驱动均是驻留在Dom 0中,可以重用现有的Linux设备驱动程序。因此,XEN对硬件兼容性也黑白常广泛的,Linux支持的,它就支持。
[*]Xen 在架构上是一个典范的 Type 1 Hypervisor,与KVM形成鲜明对比。严格来说,它没有宿主机的概念,而是由 Xen Hypervisor (VMM)完全管控硬件,但用户却看不见、摸不着它,只能通过特殊的0号假造机(Dom0),通过其中xl 工具栈 (toolsstack)与Xen Hypervisor 交互来管理其他普通假造机(DomU)。0号假造机是一个运行修改过的半假造化的内核的 Linux 假造机。从架构上,Xen 的假造化方案既利用了 Linux 内核的I0部分(Dom0 的内核),将Linux 内核的 CPU、内存管理等核心部分排除在外由自己接手(Xen Hypervisor),以是,一开始就受到了 Linux 内核开辟人员的抵制,致使 Linux 内核作为Dom0 对xen 的支持部分不停不能合人 Linux 内核社区。不停到 2010 年,在采用基于内核的 PVOPs 方式大量重写了 xen代码以后,才委曲合人 Linux 内核社区。2011年,从Linux内核 2.6.37 版本开始,正式支持 Xen Dom0。
https://img-blog.csdnimg.cn/b59588ebb5694814bca7fe5a1a76a4d2.png
4.4 hyper-V假造化

https://img-blog.csdnimg.cn/39abf92d6d9e40d4a4f4f040945f0b8a.png


[*]Hyper-V是微软新一代的服务器假造化技能,首个版本于2008年7月发布,Hyper-V有两种发布版本:一是独立版,如Hyper-V Server 2008,以命令行界面实现操作控制,是一个免费的版本;二是内嵌版,如Windows Server 2008,Hyper-V作为一个可选开启的角色。
[*]对于一台没有开启Hyper-V角色的Windows Server 2008来说,这个操作体系将直接操作硬件设备,一旦在其中开启了Hyper-V角色,体系会要求重新启动服务器。在这次重启动过程中,Hyper-V的Hypervisor接受了硬件设备的控制权,先前的Windows Server 2008则成为Hyper-V的首个假造机,称之为父分区,负责其他假造机(称为子分区)以及I/O设备的管理。Hyper-V要求CPU必须具备硬件辅助假造化,但对MMU硬件辅助假造化则是一个增强选项。
其实Hypervisor仅实现了CPU的调度和内存的分配,而父分区控制着I/O设备,它通过物理驱动直接访问网卡、存储等。子分区要访问I/O设备必要通过子分区操作体系内的VSC(假造化服务客户端),对VSC的哀求由VMBUS(假造机总线)通报到父分区操作体系内的VSP(假造化服务提供者),再由VSP重定向到父分区内的物理驱动,每种I/O设备均有各自的VSC和VSP配对,如存储、网络、视频和输入设备等,整个I/O设备访问过程对于子分区的操作体系是透明的。其实在子分区操作体系内,VSC和VMBUS就是作为I/O设备的假造驱动,它是子分区操作体系初次启动时由Hyper-V 提供的集成服务包安装,这也算是一种半假造化的设备,使得假造机与物理I/O设备无关。如果子分区的操作体系没有安装Hyper-V集成服务包或者不支持 Hyper-V集成服务包(对于这种操作体系,微软称之为Unenlightened OS,如未经认证支持的Linux版本和旧的Windows版本),则这个子分区只能运行在仿真状态。其实微软所宣称的发蒙式 (Enlightenment)操作体系,就是支持半假造化驱动的操作体系。
[*]Hyper-V的Hypervisor是一个非常精简的软件层,不包罗任何物理驱动,物理服务器的设备驱动均是驻留在父分区的Windows Server 2008中,驱动程序的安装和加载方式与传统Windows体系没有任何区别。因此,只要是Windows支持的硬件,也都能被Hyper-V所兼容。
https://img-blog.csdnimg.cn/3e3a33912c104b26aa2942d28c4e10c8.png
Hyper-V 在架构上与Xen类似,也是Type-1 Hypervisor。 它有Partition 的概念,有一个Parent Partition,类似于Xen Dom0,有管理硬件资源的权限;HyperV 的 Child Partition就类似于普通的客户机的 DomU。对 Hypervisor 的哀求以及对容户机的管理都要通过 Parent Partition,硬件的驱动也由 Parent Partition 来完成。客户机看到的都是假造出来的硬件资源,它们对其假造硬件资源的访问都会被重定向到 Parent Partition,由它来完成实际的操作,这种重定向是通过 VMBus 毗连 Parent Partition 的 VSP ( Virtualization Service Provider) 和child partition 的 vsC (Virtualization Service Consumer) 来完成的,而这个过程对客户机 os都是透明的。如图中,Hyper-V 的Hypervisor 运行在 Ring -1,也就是Intel VMX 技能的 root mode (特权模式),而 parent partition 和child partition 的内核都运行在non-root mode 的 Ring。和Ring 了,也就黑白特权模式的内核态和用户态。这样的架构安全性是比较好的。
4.5 Vmware假造化

VMware 建立手1998 年,是最早专注于假造化商业软件(并成功)的公司,从它的名宇也可以看出它对自己的定位和目标。从十几年前假造化软件兴起开始,它就是这个市场的霸主。它现在最稳定的私有云假造化-VMware。在公有云兴起的配景之下,Mware 开始受到KVM和Xen 等开源项目以及微软 Azure/HlyperV 的寻衅。VMware 最初是由一对夫妇等几人建立的,2004年被 EMC 收购。2016年,EMC又被 Dell 收购,以是现在
VMware 是 Dell 旗下的子公司。
VMware 从诞生起就不停专注于假造化,其产品线非常全,既有Paas 产品,也有Iaas产品;既有Hypervisor,也有应用管理、存储管理等配套软件;既有面向个人用户的桌面级假造化产品,也有面向企业的服务器级产品;既有运行于 Linux平台上的产品,也有Windows 和Mac 平台上的产品。

[*]VMware Workstation
VMware Workstation 是 VMware 最早的产品,也是最广为人知的产品,1999年发布。在刚开始的时候,还没有硬件假造化技能,以是它是采用二进制翻译的方式实现假造化的。但是由于它的二进制翻译技能独步其时,性能还很出色,尤其跟其时同类产品相比。可以说,是VMware Workstation 莫定了 VMware 在虛拟化软件行业的地位。 VMware Workstation是桌面级虛拟化产品,运行在 Windows、Linux 和 Mac 操作体系上,是 Type 2 Hypervisor使用它必要购买 License, 但 VMware 同时提供了与 Workstation 功能类似,只是有所删减的
Workstation Player,供大家非商业化地免费使用。
[*]VMware ESXi
VMware ESxi 是服务器级的虛拟化软件。与Workstation 不同,它直接运行在硬件平台上,是Type1-Hypervisor。在架构上与xen有些相像,是现在 VMware 的拳头产品,大多数大公司的私有云都是用它搭建的。除了VMotion(即Live Migration 功能)、HA ( FighAvailability,指软硬件运行的不问断地冗余备份)等业界常见功能外,ESXi还支持 CiscoNexus 1000v ,作为分布式假造交换机运行在 ESxi 集群中。
https://img-blog.csdnimg.cn/c8d77a300d76451a9873cd5649a28ae4.png


[*]ESXi是VMware的企业级假造化产品,ESXi服务器启动时,首先启动Linux Kernel,通过这个操作体系加载假造化组件,最重要的是ESX的Hypervisor组件,称之为VMkernel,VMkernel会从 LinuxKernel完全接受对硬件的控制权,而该Linux Kernel作为VMkernel的首个假造机,用于承载ESXi的serviceConsole,实现本地的一些管理功能。
[*]VMkernel负责为所承载的假造机调度全部的硬件资源,但不同类型的硬件会有些区别。
[*]假造机对于CPU和内存资源是通过VMkernel直接访问,最大水平地淘汰了开销,CPU的直接访问得益于CPU硬件辅助假造化(Intel VT-x和AMD AMD-V,第一代假造化技能),内存的直接访问得益于MMU(内存管理单元)硬件辅助假造化。
[*]假造机对于I/O设备的访问则有多种方式,以网卡为例,有两种方式可供选择:一是利用I/O MMU硬件辅助假造化的VMDirectPath I/O,使得假造机可以直接访问硬件设备,从而淘汰对CPU的开销;二是利用半假造化的设备VMXNETx,网卡的物理驱动在VMkernel中,在假造机中装载网卡的假造驱动,通过这二者的配对来访问网卡,与仿真式网卡相比有着较高的服从。半假造化设备的安装是由假造机中 VMware tool来实现的,可以在Windows假造机的右下角找到它。网卡的这两种方式,前者有着显着的先进性,但后者用得更为普遍,由于VMDirectPath I/O与VMware假造化的一些核心功能不兼容,如:热迁徙、快照、容错、内存过量使用等。
[*]ESXi的物理驱动是内置在Hypervisor中,全部设备驱动均是由VMware预植入的。因此,ESXi对硬件有严格的兼容性列表,不在列表中的硬件,ESXi将拒绝在其上面安装。
4.6 Container



[*]Container 严格来说与前面提到的虛拟化软件不是一个大类,首先,它不是某个假造化软件,而是某类软件的统称,包罗Docker 和LXC 等;其次,它不是硬件乎台级的虛拟化技能,而是软件运行情况的假造化,是一种操作体系级的假造化技能,与前面提到的不是个层次的。
[*]Container 技能利用了 Linux kernel 提供的 cgroup、namespace 等机制,将应用之间隔离起来,好像自己是操作体系上的唯一一个应用似的。而 Linux kernel 除了封装出这些应用单独的运行情况以外,还可以控制分配给各个应用的资源配额,比如 CPU 利用率、内存、网络带宽等。
[*]与平合假造化技能相比,Container 技能省去了启动和维护整个假造客户机的开销(硬件初姶化、Kernel boot、init 等),因而它非常轻量级,非常实用于 Paas 服务模子。但另一方面,由于各个 Contained instance 其实照旧共用一个OS、一个Kernel,以是安全性比不上平台假造化技能。总而言之,Container 和KVM 等平合假造化技能,现在照旧各有所长,还处在相互取长补短的过程中。
总结



[*]当前具备假造化功能的技能有多种,如微软Hyper-V、VMware Vsphere、KVM、Xen等,为了方便管理多种假造化技能并向上提供同一、标准的接口,业界开始推出开源云管理平台项目,当前影响最大的当属OpenStack,当前已有500+厂商到场此开源项目,不乏IBM、AMD、Intel当前已成为事实云平台标准。
[*]传统概念下的半假造化和全假造化的界限越来越含糊了,而且半假造化和全假造化得到了有机的整合,如半假造化的设备驱动和全假造化的假造机在上述四种假造化架构中得到了同一,许多假造化厂商也不再明白自己的假造化产品归类(如VMware和微软)。
[*]随着CPU硬件辅助假造化技能发展到了二代,而且新版的操作体系对假造化技能的原生支持(如Windows7的Natively Enlightened,Linux的paravirt_ops内核选项),以及Hypervisor对假造机的CPU调度和内存管理越来越少的干预。则软件做得越少而硬件做得越多,如假造机之间内存管理所需用到的地址翻译由软件的影式分页(Shadow Paging)转变为由CPU硬件加速的嵌套分页(Nested Paging),各种假造化技能既有全假造化技能对操作体系的兼容性,又有半假造化技能所带来的性能优势。
[*]从架构上来看,各种假造化技能没有显着的性能差距,稳定性也在逐渐逼近中,各自有着自身的优势场景和市场群体。因此,我们在举行假造化技能选型时,不应局限于某一种假造化技能,而应该有一套综合管理平台实现对各种假造化技能的兼容并蓄,实现不同技能架构的同一管理及跨技能架构的资源调度,最终达到云计算可运营的目。如OpenStack、阿里云飞天、AWS等。
5、假造化技能的展望



[*]假造化是一种利用软件技能将物理资源抽象、转换和隔离的方法,它可以提高资源的利用率、机动性和安全性。假造化技能有多种类型,如服务器假造化、网络假造化、存储假造化、桌面假造化等,它们都在不同的范畴和场景中发挥偏重要的作用。
[*]对于假造化的展望,有以下几个方面:
[*]假造化技能将与云计算、边缘计算、物联网等新兴技能深度融合,实现更高效、更智能、更安全的资源管理和服务交付。
[*]假造化技能将进一步提升性能和兼容性,利用硬件辅助假造化、容器技能、微服务架构等本事,低落假造化的开销和复杂度,提高假造化的服从和机动性。
[*]假造化技能将进一步增强隔离性和安全性,利用加密、签名、审计等本事,保护假造机和假造网络的数据和通信的完整性和机密性,防止恶意攻击和数据泄露。
[*]假造化技能将进一步扩展应用范围和场景,利用假造实际、增强实际、元宇宙等本事,打破假造与实际的边界,实现更丰富、更沉浸、更交互的用户体验。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 云计算底子-假造化技能的发展和详细研究