首页 > 其他分享 >【EC-VT】OpenHarmony啃论文俱乐部——虚拟化技术的前世今生

【EC-VT】OpenHarmony啃论文俱乐部——虚拟化技术的前世今生

时间:2022-10-20 20:32:55浏览次数:91  
标签:OpenHarmony 虚拟化 容器 虚拟机 技术 EC VT 计算 Docker

大家好! 我是复旦大学CodeWisdom实验室的同学,在OpenHarmony成长计划啃论文俱乐部里,与华为、软通动力、润和软件、拓维信息、深开鸿等公司一起,学习和研究内核、边缘计算和虚拟化等技术。我们所在的小组是【EC-VT】Edge Computing - Virtualization Technology。

本期看点

  • 【小组规划】
  • 【智慧场景】
  • 【技术地图】
  • 【内容介绍】
    • 发展历史
    • 常用的虚拟化技术
    • 参考文献

小组规划

小组学习的主要目标就是学习虚拟化技术,虚拟化技术主要分为两大类:虚拟机和容器技术。依据鸿蒙操作系统的特性,我们会首先依据历史地图和容器技术的技术地图逐层的研究容器技术,随后我们会再去研究虚拟机技术。

智慧场景

相信虚拟机和docker大家都略有耳闻。我们在购买云服务器的时候买的就是一个个虚拟机,而我们在服务器部署mysql、nacos这样的服务时会采用docker一条命令安装。这些都是典型的虚拟化技术使用场景。

vmware.png

此外,物联网这个词自诞生以来已经过了20多个年头了,但发展并不令人满意。微小的物理设备很难承受复杂的计算任务,所以提出了一种新的思路,利用边缘计算为物联网设备提供额外的计算资源。相比较云计算,边缘计算设备有非常大的异构性,大到边缘云小到手机等移动设备。云计算与边缘计算最重要的技术就是虚拟化技术,所以虚拟化技术非常有意义。

技术地图

  • 虚拟化技术的历史地图

虚拟化技术的历史地图.png

虚拟化技术的历史地图2.png

  • 容器技术的技术地图

容器技术的技术地图.png (上图可以忽略arm架构,因为容器技术也可以在其他架构上只是本图没有体现)

  • 虚拟机技术的技术地图

主流虚拟机技术.png

内容介绍

所有的技术都与当时的历史场景息息相关。计算机的发展历史可以大致的认为是大型机->个人主机->云计算->边缘计算,所以虚拟化技术也在每个阶段有不同的表现。

大型机时期(PC出现之前)

虚拟化技术的起源就是在大型机时期,当时所有的计算机大到只能在实验室部署。同时许多大型机操作系统同时段仅能处理单任务。所以多任务处理(多道程序编程)在研究员心里萌芽。对于多道程序处理这个想法研究员主要分为三条路去探索:分时操作系统、基于能力的操作系统、硬件虚拟化。多任务处理就是虚拟机和容器技术的起源,也就是后面两条路的发展。

虚拟机技术的起源是硬件虚拟化的想法。研究员探索将任务涉及到的CPU、内存和I/O进行虚拟化,这样就可以将一个物理机虚拟出许多物理机的假象,供多个人同时使用这个物理机。当然这个虚拟化的研究过程非常漫长,一直到1970年左右个人主机出现。

容器技术的起源是基于能力的操作系统。研究员希望给每个任务分配一个域,也就是一部分物理资源。基于能力的操作系统是给任务分配能力,任务和任务之间的运行环境完全是隔离开的。这类研究因为硬件设备、实验以及个人主机的出现等种种原因在1970年左右也停止了。

个人主机时期

个人主机的出现后,操作系统不断的完善多任务处理的能力。文件系统管理、进程管理、IO管理等等模块不断的丰富,也使得虚拟化技术消失在人们视野中。

云计算时期

20世纪90年代之前,虽然云计算的技术已经纷纷出现了,但人们沉浸于PC市场的繁荣,主要精力都放在了软件和网络上。直到90年代后,云计算相关的理念重新回到了人们的视野。不过这次它换了一个更简单的名字,叫做**网格计算(Grid Computing)**。

网格(Grid)的叫法,和我们日常理解的“网格化管理”有很大不同,它是直接照搬自电网的概念(Electric Power Grid)。它的本质目的,还是把大量机器整合成一个虚拟的超级机器,给分布在世界各地的人们使用,也就是公共计算服务。

随着云计算的兴起,虚拟化技术也再度出现在人们视野中。云计算也分为不同阶段,从物理资源池化通过虚拟机来共享物理资源,到通服务来共享物理资源。

从20世纪90年代至今,虚拟机技术从纯软件虚拟化发展到硬件虚拟化(CPU提供VT指令集与软件一同完成虚拟化技术)。现在的技术在不断追求虚拟机的安全性和性能提升上,主要用于Iaas这样基础设备供应平台,例如阿里、腾讯云等。甚至最新的技术大家在修改内核架构去更好虚拟化物理资源。

同时期,容器技术从chroot开始使用命名空间等技术对资源进行隔离和管理。01年随着大规模集群管理中的资源共享思想的发展,提出了pod概念,就是利用命名空间来约束一组进程和资源形成最小单位可以使其子物理机上自由迁移。容器概念提出在08年LXC,然后是14年Docker用libcontainer取代了LXC,同年Docker开始着手开发Swarm,并将其描述为Docker的集群系统。谷歌开始开发Kubernetes,这是一种用于部署和管理容器生命周期的编制工具。2015年,Docker将容器运行时拆分为一个独立的项目runc,以支持由开放容器倡议(OCI)维护的独立于供应商的容器运行时规范。

当前常用的虚拟化技术

  • KVM Linux KVM虚拟化全称为kernel-based Virtual Machine,是一个开源的系统虚拟化模块,基于内核的虚拟机 (KVM) 是针对包含虚拟化扩展(Intel VT 或 AMD-V)的 x86 硬件上的 Linux 的完全原生的虚拟化解决方案。目前KVM已经被redhat公司收购,成为Linux 内核里面的一种加速虚拟机的功能扩展。 Linux中还有一种虚拟化技术Qemu,和KVM互为补充,叫做Qemu-kvm,它补充了kvm技术的不足,而且在性能上对kvm进行了优化。 Libvirt又是什么呢。它是一系列提供出来的库函数,用以其他技术调用,来管理机器上的虚拟机。包括各种虚拟机技术,kvm、xen与lxc等,不同虚拟机技术就可以使用不同驱动,都可以调用libvirt提供的api对虚拟机进行管理。我们创建的各种虚拟机都是基于libvirt库及相关命令去管理的。

KVM.png

  • Docker Docker是一款轻量级、高性能的虚拟化技术,是目前互联网使用最多的虚拟化技术,Docker虚拟化技术的本质类似集装箱机制,最早集装箱没有出现的时候,码头上有许多搬运的工人在搬运货物,集装箱出现以后,码头上看到更多的不是工人,而且集装箱的搬运模式更加单一,更加高效。将货物多打包在集装箱里面,可以防止货物之间相互影响。并且到了另外一个码头需要转运的话,有了在集装箱以后,直接把它运送到另一个码头即可,完全可以保证里面的货物是整体的搬迁,并且不会损坏货物本身。 Docker虚拟化是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。 Docker容器是完全使用沙箱机制,相互之间不会有任何接口,几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。 Docker虚拟化技术是在硬件的基础上,基于现有的操作系统层面上实现虚拟化,直接复用本地主机的操作系统,直接虚拟生成Docker容器,而Docker容器上部署相关的APP应用(Apache、MYSQL、PHP、JAVA)。

docker.png

参考资料

计算虚拟化技术总述 浅析主流虚拟化技术-Hyper-V,KVM,ESXI,XEN,Docker 论文:The Ideal Versus the Real: Revisiting the History of Virtual Machines and Containers 论文:Container Technologies for ARM Architecture: A Comprehensive Survey of the State-of-the-Art

标签:OpenHarmony,虚拟化,容器,虚拟机,技术,EC,VT,计算,Docker
From: https://blog.51cto.com/u_14601312/5780536

相关文章