虚拟化技术简介
3.1虚拟化技术简介
虚拟化技术其实很早以前就已经出现了,虚拟化的概念也不是最近几年才提出来的
拟化技术最早出现于20世纪60年代,那时候的大型计算机已经支持多操作系统同时运行
且相互独立。如今的虚拟化技术不再是仅仅只支持多个操作系统同时运行这样单一的功能了
它能够帮助用户节省成本,同时提高软硬件开发效率,为用户的使用提供更多的便利。尤其
年来,虚拟化技术在云计算与大数据方向上的应用更加广泛。虚拟化技术有很多分类,
户不同的需求涌现出了不同的虚拟化技术与方案,如网络虚拟化、服务器虚拟化、操作系统
拟化等,这些不同的虚拟化技术为用户很好地解决了实际需求。
虚拟化技术的概念
3.1.1虚拟化技术的概念
虚拟化技术是一个广义的术语,对不同的行业或不同的人有着不同的意义。在计算机在
学领域中,虚拟化技术意味着对计算机资源的抽象。虚拟化是指通过虚拟化技术将一台计算用
虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不相
同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算
机的工作效率。也就是说,虚拟化技术是模拟真正的(或者称物理的)计算机资源,例如
CPU、内存、存储、网络等用户可见的物理的硬件资源。用户通过虚拟化技术在使用这些资源
时,除了不能物理接触以外,其他都与使用物理计算机没有任何区别。
虚拟化技术可以实现大容量、高负载或者高流量设备的多用户共享,每个用户可以分配到一部分独立的、相互不受影响的资源。每个用户使用的资源是虚拟的,相互之间都是独立的,虽然这些数据有可能存放在同在一台物理设备中。以虚拟硬盘来说,用户使用的是由虚拟化技术提供的虚拟硬盘,而这些虚拟硬盘对于用户来说就是真实可用的硬盘,这些虚拟硬盘在物理存储上可能就是两个不同的文件,但用户只能访问自己的硬盘,不能访问别人的硬盘,所以他的各自的数据是安全的,是相互不受影响的。甚至各个用户使用的网络接口都是不一样的,所使用的网络资源也是不一样的,使用的操作系统也不一样。
使用虚拟化技术可以将很多零散的资源集中到一处,而使用的用户则感觉这些资源是一个整体。如存储虚拟化技术则可以实现将很多的物理硬盘集中起来供用户使用,用户使用时看到的只是一块完整的虚拟硬盘。
使用虚拟化技术可以动态维护资源的分配,动态扩展或减少某个用户所使用的资源。用户如果产生了一个需求,如需要添加更多的硬盘空间或添加更多的网络带宽,虚拟化技术通过更改相应的配置就可以很快地满足用户的需求,甚至用户的业务也不需要中断。
虚拟化技术的分类
虚拟化技术根据用途不同,也形成了自己的分层结构,从上往下是网络虚拟化,存储虚拟化,服务器虚拟化,操作系统虚拟化,服务虚拟化,桌面虚拟化,应用程序虚拟化以及用户体验虚拟化。每一层都有相对应的用途范围,不同的用户根据需求,选择不同的虚拟化技术即可。这个分层结构,实际也就是虚拟化技术的一种分类。
1.网络虚拟化:网络虚拟化就是将硬件与软件的网络设备资源,以及网络功能整合为一个统一的,基于软件可管理的虚拟网络。网络虚拟化是一种包含至少部分是虚拟网络连接的计算机网络。虚拟网络连接是指,在多个计算设备间不包含物理链接,而是通过网络虚拟化来实现的网络连接。有两种常见的虚拟网络:基于协议的虚拟网络和基于虚拟设备的虚拟网络。
2.存储虚拟化:即整合所有存储资源为一个存储池,对外提供逻辑存储接口,用户通过逻辑接口进行数据的读写,不论有多少个硬件存储设备,对外看到的只有一个。最通俗的理解就是对存储硬件资源进行抽象化表现,通过将一个或多个目标服务或功能与其他附加的功能集成,统一提供全面的功能服务。经过虚拟存储化后,用户看到的就是一块硬盘,而与硬盘的交互也只需要与这一块硬盘进行交互即可。
存储虚拟化的实现方式主要有两种方式:块虚拟化和文件虚拟化。块虚拟化通过存储区域网络将远程的硬盘块挂载到本地,然后再通过逻辑卷管理的方式将这些硬盘块组合到一起成为一个新的硬盘。
文件虚拟化是通过SAN将远程的文件系统路径挂载到本地,即在本地看到的则是指定路径下的文件,而并非是一个硬盘块。
3.服务器虚拟化:服务器虚拟化有时也称为平台虚拟化,是将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,用户不再受限于物理上的界限,实现CPU,内存,磁盘,等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理,实现服务器整合。
服务器虚拟化实际上是将操作系统和应用程序打包成虚拟机,从而让操作系统和应用具备良好的移动性。虚拟机是指通过软件模拟的具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统。在虚拟机里运行的操作系统称为客户机操作系统,而管理这些虚拟机的平台称为虚拟机监视器。运行虚拟机监视器的操作系统被称为主机操作系统,它是虚拟机技术的核心,是一层位于操作系统和计算机硬件之间的代码,用来将硬件平台分割成多个虚拟机。不仅可以管理虚拟机运行状态,还可以对虚拟机进行定制,如CPU数量,内存大小等。
服务器虚拟化从是否包含HostOS主机操作系统的角度可将服务器虚拟化分为两种类型:裸金属架构和寄居架构。如图所示:
裸金属架构:虚拟化层直接运行在硬件上,即裸机上,这种架构也被称为裸金属架构。Hypervisor直接安装到裸机上,运行效率可以提高很多,用户通过控制台或者网页对虚拟化层进行管理。对于用户来说,每个用户都会感觉到自己在一台独立的,与其他用户相隔离的计算机上进行操作,尽管事实上为每个用户提供服务的都是同一台机器。在此种情况下,一台虚拟机就是由一个潜在的控制程序管理的操作系统。
寄居架构:虚拟化层运行在一个操作系统中,虚拟机需要以应用程序的方式安装到操作系统中,并以应用程序的方式运行,即它是一个应用程序,在操作系统中可以看到应用程序运行的进程情况;虚拟机的运行依赖主机当前的物理资源以及对虚拟化支持的情况,并且运行效率低于裸金属架构。
从虚拟化的程度来看,服务器虚拟化还可以分为:全虚拟化,半虚拟化,和硬件虚拟化。
全虚拟化:也称为原始虚拟化技术, 是另一种虚拟化方法. 该模型使用虚拟机协调客户 操作系统和原始硬件(见图2). 这里"协调"是一个关键词, 因为VMM在客户操作系统和裸硬件之间用于工作协调. 一些受保护的指令必须由Hypervisor(虚拟机管理程序)来捕获和处理. 因为操作系统是通过Hypervisor来分享底层硬件。 全虚拟化的运行速度要快于硬件模拟, 但是性能方面不如裸机, 因为Hypervisor需要占用一些资源。全虚拟化最大的优点是操作系统没有经过任何修改。它的唯一限制是操作系统必须能够支持底层硬件(比如, PowerPC)。
半虚拟化:半虚拟化(Paravirtualization)是另一种类似于全虚拟化的热门技术。它使用Hypervisor(虚拟机管理程序)分享存取底层的硬件, 但是它的客户操作系统集成了虚拟化方面的代码。 该方法无需重新编译或引起陷阱, 因为操作系统自身能够与虚拟进程进行很好的协作。 半虚拟化需要客户操作系统做一些修改(配合Hypervisor), 这是一个不足之处。但是半虚拟化提供了与原始系统相近的性能。与全虚拟化一样, 半虚拟化可以同时能支持多个不同的操作系统。
硬件辅助虚拟化:这是CPU提供的功能,专门用于提高虚拟机运行的效率,使得虚拟可以再快速的执行特权命令,减少过多的上下文切换与模拟。
4.操作系统虚拟化
操作系统虚拟化是指在同一操作系统上,同时运行单个或者多个独立的用户,他们都有自己的运行空间,KVM、XEN等虚拟化技术允许各个虚拟机拥有自己独立的操作系统。与KVM、XEN等虚拟化技术不同,所谓操作系统级虚拟化,也被称作容器化,是操作系统自身的一个特性,它允许多个相互隔离的用户空间实例的存在。这些用户空间实例也被称作为容器。普通的进程可以看到计算机的所有资源而容器中的进程只能看到分配给该容器的资源。通俗来讲,操作系统级虚拟化将操作系统所管理的计算机资源,包括进程、文件、设备、网络等分组,然后交给不同的容器使用。容器中运行的进程只能看到分配给该容器的资源。从而达到隔离与虚拟化的目的。