赞
踩
虚拟化技术的概念
虚拟化bai是指计算元件在虚du拟的基础上zhi而不是真实的基础上运行。虚dao拟zhuan化技术可以扩大硬shu件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
虚拟化技术也与目前VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。
虚拟化,原本是指资源的抽象化,也就是单一物理bai资源的多个逻辑表示,或者多个物理资源的单一逻辑表示。具体到服务器虚拟化,就是多个物理资源的单一逻辑表示。另外,存储虚拟化就是这种模式的一个例子。
对不了解虚拟化的终端用户来说,听到上面说“单一物理资源的多个逻辑表示”,往往会认为“虚拟化技术也太抽象了”。可是,如果要看计算机架构的话,虚拟化正是计算机的本质。
想一下,PC同时启动使用邮件和Web浏览器等多个应用,这时候你就会理解虚拟化技术。在这个情况下,操作系统把PC物理资源抽象化了,将多个应用集中到一个物理资源环境下。因为虚拟化hypervisor是运行在操作系统上层的,所以会被认为有些抽象。不过,如果试着从计算机结构来理解的话,也不是那么晦涩。
虚拟化的主要类型:主机型和hypervisor型
虚拟化的类型大致可以分为主机型和hypervisor型。当虚拟化最初应用于PC时的主流类型是主机型。
主机型是将虚拟化软件作为一个应用安装的主机操作系统中。虚拟硬件包括主机操作系统中的虚拟化软件、操作系统和应用。因为是被作为一个应用,所操作系统不是那么快。
主机型虚拟化的问题在于,如果主机操作系统发生故障,就会波及到作为该操作系统一个应用的虚拟化软件。而且,在硬件模拟过程中也会发生诸多问题。
接下来是hypervisor型。hypervisor型是指通过低层级软件让多个操作系统得以共享相同的硬件设备。
虚拟化技术的分类
1.网络虚拟化
网络虚拟化相对计算、存储虚拟化来说是比较抽象的,以我们在学校书本上学的那点网络知识来理解网络虚拟化可能是不够的。在我们的印象中,网络就是由各种网络设备(如交换机、路由器)相连组成的一个网状结构,世界上的任何两个人都可以通过网络建立起连接。带着这样一种思路去理解网络虚拟化可能会感觉云里雾里——这样一个庞大的网络如何实现虚拟化?其实,网络虚拟化更多关注的是数据中心网络、主机网络这样比较「细粒度」的网络,所谓细粒度,是相对来说的,是深入到某一台物理主机之上的网络结构来谈的。如果把传统的网络看作「宏观网络」的话,那网络虚拟化关注的就是「微观网络」。网络虚拟化的目的,是要节省物理主机的网卡设备资源。从资源这个角度去理解,可能会比较好理解一点。
为了完成虚拟机在同主机和跨主机之间的通信,需要借助某种“桥梁”来完成用户态到内核态(Guest 到 Host)的数据传输,这种桥梁的角色就是由虚拟的网络设备来完成,上面介绍了一个第三方的开源方案——OVS,它其实是一个融合了各种虚拟网络设备的集大成者,是一个产品级的解决方案。但 Linux 本身由于虚拟化技术的演进,也集成了一些虚拟网络设备的解决方案,主要有以下几种:(1)TAP/TUN/VETHTAP/TUN 是 Linux 内核实现的一对虚拟网络设备,TAP 工作在二层,TUN 工作在三层。Linux 内核通过 TAP/TUN 设备向绑定该设备的用户空间程序发送数据,反之,用户空间程序也可以像操作物理网络设备那样,向 TAP/TUN 设备发送数据。基于 TAP 驱动,即可实现虚拟机 vNIC 的功能,虚拟机的每个 vNIC 都与一个 TAP 设备相连,vNIC 之于 TAP 就如同 NIC 之于 eth。当一个 TAP 设备被创建时,在 Linux 设备文件目录下会生成一个对应的字符设备文件,用户程序可以像打开一个普通文件一样对这个文件进行读写。比如,当对这个 TAP 文件执行 write 操作时,相当于 TAP 设备收到了数据,并请求内核接受它,内核收到数据后将根据网络配置进行后续处理,处理过程类似于普通物理网卡从外界收到数据。当用户程序执行 read 请求时,相当于向内核查询 TAP 设备是否有数据要发送,有的话则发送,从而完成 TAP 设备的数据发送。TUN 则属于网络中三层的概念,数据收发过程和 TAP 是类似的,只不过它要指定一段 IPv4 地址或 IPv6 地址,并描述其相关的配置信息,其数据处理过程也是类似于普通物理网卡收到三层 IP 报文数据。VETH 设备总是成对出现,一端连着内核协议栈,另一端连着另一个设备,一个设备收到内核发送的数据后,会发送到另一个设备上去,这种设备通常用于容器中两个 namespace 之间的通信。(2)BridgeBridge 也是 Linux 内核实现的一个工作在二层的虚拟网络设备,但不同于 TAP/TUN 这种单端口的设备,Bridge 实现为多端口,本质上是一个虚拟交换机,具备和物理交换机类似的功能。Bridge 可以绑定其他 Linux 网络设备作为从设备,并将这些从设备虚拟化为端口,当一个从设备被绑定到 Bridge 上时,就相当于真实网络中的交换机端口上插入了一根连有终端的网线。如下图所示,Bridge 设备 br0 绑定了实际设备 eth0 和 虚拟设备设备 tap0/tap1,当这些从设备接收到数据时,会发送给 br0 ,br0 会根据 MAC 地址与端口的映射关系进行转发。 Bridge 与 TAP/TUN 的关系 因为 Bridge 工作在二层,所以绑定到它上面的从设备 eth0、tap0、tap1 均不需要设 IP,但是需要为 br0 设置 IP,因为对于上层路由器来说,这些设备位于同一个子网,需要一个统一的 IP 将其加入路由表中。这里有人可能会有疑问,Bridge 不是工作在二层吗,为什么会有 IP 的说法?其实 Bridge 虽然工作在二层,但它只是 Linux 网络设备抽象的一种,能设 IP 也不足为奇。对于实际设备 eth0 来说,本来它是有自己的 IP 的,但是绑定到 br0 之后,其 IP 就生效了,就和 br0 共享一个 IP 网段了,在设路由表的时候,就需要将 br0 设为目标网段的地址。总结传统网络架构到虚拟化的网络架构,可以看作是宏观网络到微观网络的过渡TAP/TUN/VETH、Bridge 这些虚拟的网络设备是 Linux 为了实现网络虚拟化而实现的网络设备模块,很多的云开源项目的网络功能都是基于这些技术做的,比如 Neutron、Docker network 等。OVS 是一个开源的成熟的产品级分布式虚拟交换机,基于 SDN 的思想,被大量应用在生产环境中。
2.储存虚拟化
存储虚拟化是指通过在存储设备上加入一个逻辑层,管理员通过逻辑层访问或者调整存储资源,提高存储利用率。这样便于集中的存储设备以及提供更好的性能和易用性。存储虚拟化包括基于主机的存储虚拟化方式、基于存储设备的虚拟化方式以及基于网络的存储虚拟化方式。基于主机的虚拟存储依赖于代理或管理软件,通过在一个或多个主机上进行安装和部署,来实现存储虚拟化的控制和管理。这种方法的可扩充性较差,实际运行的性能不是很好。由于这种方法要求在主机上安装控制软件,因此一个主机的故障可能影响整个SAN系统中数据的完整性。基于主机的虚拟化实现起来比较容易,设备成本最低。基于存储设备的存储虚拟化是在通过第三方的虚拟软件,基于存储的虚拟化通常只能提供一种不完全的存储虚拟化解决方案。这种技术主要用在同一存储设备内部,进行数据保护和数据迁移。优势在于与主机无关,不占用主机资源,数据管理功能丰富。容易和某个特定存储供应商的设备相协调,所以更容易管理。
基于网络的虚拟化方法是在网络设备之间实现存储虚拟化功能:1.基于互联设备的虚拟化基于互联设备的虚拟化方法能够在专用服务器上运行,使用标准操作系统,例如Windows、Linux或供应商提供的操作系统。这种方法具有基于主机方法的诸多优势——易使用、设备便宜。但是,基于设备的方法也有一些不足,机的故障或不适当的主机配置都可能导致访问到不被保护的数据。2. 基于路由器的虚拟化基于路由器的方法是在路由器固件上实现存储虚拟化功能。在此方法中,路由器被放置于每个主机到存储网络的数据通道中,用来截取网络中任何一个从主机到存储系统的命令。由于不依赖于在每个主机上运行的代理服务器,这种方法比基于主机或基于设备的方法具有更好的安全性。当连接主机到存储网络的路由器出现故障时,仍然可能导致主机上的数据不能被访问。但是只有联结于故障路由器的主机才会受到影响,其他主机仍然可以通过其他路由器访问存储系统。路由器的冗余可以支持动态多路径,这也为上述故障问题提供了一个解决方法。基于网络的存储虚拟化是通过在存储区域网(SAN)中添加虚拟化引擎实现的。主要用于异构存储系统的整合和统一数据管理。它的优势是:第一,与主机无关,不占用主机资源;第二,能够支持异构主机、异构存储设备;第三,能使不同存储设备的数据管理功能统一;第四,可以构建统一管理平台,可扩展性好。但也存在缺点:第一,部分厂商数据管理功能弱,难以达到虚拟化统一数据管理的目的;第二,部分厂商产品成熟度较低,仍然存在和不同存储和主机的兼容性问题。
3.服务器虚拟化
虚拟化是一种方法,本质上讲是指从逻辑角度而不是物理角度来对资源进行配置,是从
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。