虚拟化概述与相关资料

文章目录

  • 前言
  • 一、虚拟化技术
    • 1.纯软件仿真
    • 2.虚拟化翻译
    • 3.容器技术

  • 二、Hypervisor的分类
    • 1.裸金属型
    • 2.宿舍型
  • 总结


前言

在计算技术中,虚拟化意味着创建设备或资源的虚拟版本,如服务器、存储设备、网络或者操作系统等等。

一、虚拟化技术

虚拟化技术包括系统虚拟化、存储虚拟化、网络虚拟化、GPU虚拟化、软件虚拟化、硬件支持虚拟化。

1.系统虚拟化

        这种虚拟化通常表现为在单一的,物理的系统上运行多个操作系统,这些操作系统是相互独立的,同时运行的。下面展示一个虚拟机发展史的图表:

虚拟化概述与相关资料_第1张图片

         从表可看出,虚拟化系统是从上个世纪六十年代出现的,只不过是在大型机上。

        虚拟化有三种实现方式:

                纯软件仿真

                虚拟化翻译

                容器技术

1.纯软件仿真:

       不明思议纯软件仿真就是通过模拟完整的硬件环境来虚拟化来宾平台。处了可以模拟X86以外,还可以模拟ARM、PowerPC等多种CPU。这种纯软件仿真最大的缺点就是效率比较低。其产品或方案有QEMU、Bochs、PearPC。

 2.虚拟化翻译:

       多数的虚拟化而采用虚拟机管理程序Hypervisor,Hypervisor是一个软件层或子系统,也称为VMM(Virtual Machine Monitor),即虚拟机监控器。虚拟化概述与相关资料_第2张图片 

它可以允许多种操作系统在相同的物理系统中运行,如上图所示在这里面还有一个专门的术语,物理机也称为宿主机(Host),上面一个一个VM我们称之为来宾操作系统,对于Hypervisor对于上面的来宾操作系统提供访问底层硬件的途径,给来宾操作系统提供虚拟化的硬件。在了解Hypervisor之前呢,我们可以先了解一下X86CPU的保护环。虚拟化概述与相关资料_第3张图片

         X86操作系统原来设计是直接在硬件上或裸机设备上来进行,它们认为自己会占有所有计算机的硬件。X86提供了四个特权的运行级别,使操作系统和应用程序来使用,称之为环,Ring。环指运行级别,而Ring 0是最高级别,就是上图圆心红色部分。就X86操作系统而言,内核需要访问这种硬件、内存,因此它的代码要运行在最高级别Ring 0上,这样就可以使用特权指令,包括中断、修改页表、访问设备等等。而应用程序的代码是运行在最低的级别上,也就是Ring3上,它不能做一些受限制的操作,如果要做,比如访问硬盘、写文件就要执行系统调用或者系统函数,这样执行调用的时候,CPU的级别就从Ring 3到Ring 0进行切换,并且跳转到系统调用的相应的代码中,这样就可以由内核来完成设备的访问,完成之后从Ring 0返回给Ring 3,这个过程称为用户态和内核态的切换,这是对于X86的。

        而对于虚拟化则有三种方式:

                 第一种,无硬件辅助的全虚拟化,也就是没有CPU帮忙的情况。虚拟化概述与相关资料_第4张图片

        Hypervisor运行在Ring 0上,Hypervisor对Guest OS提供CPU的模拟,由Hypervisor模拟出出一个CPU给VM,这个VM并不是真正的访问真实的CPU,在这种结构里面Guest OS不需要修改,就是不需要要改这些东西,依然是尝试运行在Ring 0上,只不过是模拟的CPU的Ring 0上。Hypervisor对Guest OS的Ring 0指令进行一些翻译变成CPU真正的指令,然后在运行在Ring 1 ,来宾操作系统是运行在Ring 1上,它执行特权指令时会出现一些异常,这些异常会被Hypervisor或者VMM捕获到这种异常,然后进行一些模拟翻译之后,把最终的执行结果给来宾的操作系统,这个过程就是我们常说的异常、捕获、翻译(这个过程有一定的开销的)。所以为了降低开销就出现了有硬件辅助的虚拟化。

               第二种,半虚拟化,也称为超虚拟化、操作系统辅助虚拟化,在这里Hypervisor仍然运行在Ring 0中,Guest OS不能直接运行在Ring 0中,所以对半虚拟化来说,需要对内核进行修改,使得运行在Ring 0上的指令转为调用Hypervisor。半虚拟化的思想是修改操作系统内核,Guest内核,替换掉不能虚拟化的指令,通过和底层的Hypervisor来进行通讯,这样Hypervisor就可以通过超级调用的接口来满足一些关键指令的操作,比如说,内存管理,中断和时间保持。对于Guest OS它是知道自己运行在虚拟化平台的,这种方法省去了全虚拟化里面的大量捕获、模拟等等,提高了效率。Xen就是使用这种半虚拟化的技术。对于Guest OS是需要修改的。

                第三种,硬件辅助的全虚拟化,便于理解可以认为Intel VT和AMD-V硬件辅助创建一个新的Ring -1层,单独给Hypervisor使用。而Guest OS可以直接使用Ring 0而无需修改。目前使用硬件辅助的全虚拟化的例子比较多,比如:VMware ESXi、Microsoft Hyper-V、Xen3.0、KVM。虚拟化概述与相关资料_第5张图片

3.容器技术

LXC和Docket,容器技术是一种轻量级/操作系统虚拟化方式它要求有Linux内核的支持。容器最早是起源于chroot系统调用,对于容器技术和传统的虚拟化技术区别在于一个容器是不需要Hypervisor的,一个容器之间是相互独立的,一个容器在操作系统上是单独的进程。所以容器带来的应用上的优势在于,首先不需要有Hypervisor的支持,不需要一个完整的操作系统,所以它的启动、硬盘使用、性能各个方面都比较好,管理也比较方面,可以更快速的交付和部署,更高效的虚拟化,更轻松的迁移和扩展。虚拟化概述与相关资料_第6张图片

二、Hypervisor的分类

1.裸金属型

                               虚拟化概述与相关资料_第7张图片

2.宿主型

                        虚拟化概述与相关资料_第8张图片

总结

这里对文章进行总结:

        虚拟化实现技术:

                纯软件仿真:QEMU、Bochs、PearPC

                虚拟化翻译:

                        无硬件辅助的全虚拟化

                        半虚拟化

                        硬件辅助的全虚拟化

                容器技术:LXC和Docker

        Hypervisor的分类:

                类型1:裸金属型

                类型2:宿主型

你可能感兴趣的:(云计算)