由于直接部署在裸机上,虚拟机管理程序需要自带硬件驱动,虚拟机的所有操作都需要通过虚拟机管理程序。还有一种虚拟化虚拟机管理程序,KVM是最流行的一种(安装在个人电脑上的virtualbox和工作站也是)。它们依赖于主机操作系统。这样做的好处是他们可以充分利用主机的各种资源管理和驱动,但是效率会打折扣。下图是使用IO时KVM的流程图。
当然,从完全虚拟化、半虚拟化和硬件辅助虚拟化的角度来看,数据中心现在基本上是硬件辅助虚拟化。完全虚拟化完全依靠软件模拟,半虚拟化需要修改操作,让他们知道自己在虚拟环境中运行。硬件辅助为每个Guest OS提供一组寄存器,Guest OS可以直接在特权级运行,从而提高效率。
虽然VMware的ESXI仍然是数据中心的主要虚拟化软件,但KVM正在慢慢赶上OpenStack,KVM是开源的。下面简单介绍一下KVM。KVM是基于内核的,从内核2.6开始带。它可以在x86和power等主流架构上运行。KVM主要是CPU和内存的虚拟化,其他设备的虚拟化和虚拟机的管理都需要QEMU。一个虚拟机本质上就是一个进程,运行在qemu-KVM进程地址空,KVM (kernel 空)和QEMU (user 空)相结合,为用户提供一个完整的虚拟化环境。
2.网络虚拟化
网络虚拟化是一种重要的网络技术,它可以在物理网络上虚拟多个隔离的虚拟网络,而不依赖于底层的物理连接,并且可以动态改变网络拓扑结构,提供多租户隔离,从而使不同的用户可以使用独立的网络资源片,从而提高网络资源的利用率,实现灵活的网络。目前最火的是软件定义网络(SDN)。SDN的出现使得网络虚拟化的实现更加灵活高效,同时网络虚拟化也成为SDN应用中的一个重量级应用。其核心技术OpenFlow将网络设备的控制平面和数据平面分开,从而实现对网络流量的灵活控制,使网络作为一个管道更加智能化。
通过SDN实现网络虚拟化包括物理网络管理、网络资源虚拟化和网络隔离三个部分。这三部分往往由专门的中间层软件来完成,我们称之为网络虚拟化平台。虚拟化平台需要完成物理网络管理和抽象虚拟化,并提供给不同的租户。此外,虚拟化平台还应该实现不同租户之间的相互隔离,以确保不同租户之间互不影响。虚拟化平台的存在使得租户无法感知网络虚拟化的存在,即虚拟化平台可以实现用户透明的网络虚拟化。
(1)虚拟化平台
虚拟化平台是数据网络拓扑和租户控制器之间的中间层。面向数据平面,虚拟化平面是控制器;对于租户控制器,虚拟化平台就是数据平面。因此,虚拟化平台本质上有两个属性:数据平面和控制平面。在虚拟化的核心层,虚拟化平台需要完成从物理网络资源到虚拟资源的虚拟化映射过程。面对租户控制器,虚拟化平台充当数据平面,并将模拟的虚拟网络呈现给租户控制器。从租户控制器往下看,只能看到自己的虚拟网络,不知道真实的物理网络。从数据角度看,虚拟化平台就是控制器,交换机并不知道虚拟平面的存在。因此,虚拟化平台的存在实现了租户和底层网络的透明虚拟化,管理所有物理网络拓扑,为租户提供隔离的虚拟网络。
网络虚拟化平台示意图
虚拟化平台不仅可以实现物理拓扑到虚拟拓扑的“一对一”映射,还可以实现物理拓扑的“多对一”映射。由于租户网络不能垄断物理平面的交换机,所以虚拟网络本质上实现了“一虚多”和“多虚一”的虚拟化。这里的“一个虚拟多台”是指单个物理交换机可以虚拟映射到多个虚拟租户网络中的逻辑交换机,从而由不同的租户共享;“多个虚拟交换机”是指将多个物理交换机和链路资源虚拟化为一个大型逻辑交换机。也就是说,租户眼中的交换机可以通过多个物理交换机进行物理连接。
将单个虚拟节点映射到多个物理节点
(2)网络资源虚拟化
为了实现网络虚拟化,虚拟化平台需要对物理网络资源进行抽象虚拟化,包括拓扑虚拟化、节点资源虚拟化和链路资源虚拟化。
拓扑虚拟化
拓扑虚拟化是网络虚拟化平台最基本的功能。虚拟平台需要完成从虚拟节点和虚拟链路到租户虚拟网络中物理节点和链路的映射。这包括“一对一”和“一对多”映射。在“一对一”映射中,虚拟节点将映射到物理节点,虚拟链路也是如此。在“一对多”映射中,一个虚拟节点可以映射成多个连接在一起的物理节点;逻辑链路也可以映射到链接在一起的多个链路。对于物理节点,一个物理节点可以被多个逻辑节点映射。
节点资源虚拟化
节点资源的虚拟化包括节点Flow表、CPU等资源的抽象虚拟化。流表资源本身就是交换节点的稀缺资源。如果可以虚拟化,然后由虚拟化平台分配给不同的租户,那么不同的租户可以分配和限制节点资源的使用。拓扑抽象只是完成了从虚拟节点到物理节点的映射,并没有指定不同用户/租户对物理节点资源的分配。如果要对网络进行更细粒度的虚拟化,就需要对节点资源进行虚拟化。
链接资源虚拟化
和节点资源一样,链路资源也是网络中重要的资源,但是拓扑抽象并没有规定一些用户可以使用多少链路资源。因此,为了实现链路资源的合理分配,有必要对链路资源进行虚拟化。可以抽象虚拟化的链路资源包括租户可用的带宽、端口的队列资源等。
(3)网络隔离
网络资源虚拟化只是完成了从物理资源到虚拟资源的抽象过程。为了实现完整的网络虚拟化,需要为不同的租户提供隔离的网络资源。网络隔离需要隔离SDN的控制平面和数据平面,以保证不同租户控制器之间的互补干扰和不同虚拟网络之间的隔离。另外,为了满足用户在地址空之间的定制需求,虚拟化平台还需要对网络地址进行虚拟化。
控制平面隔离
控制器的性能对SDN的整体性能影响很大,所以虚拟化平台需要保证租户的控制器在运行时不受其他租户控制器的影响,从而保证租户可以使用虚拟化平台的资源。虚拟化平台连接到租户控制器时,需要保证进程能够获得一定的资源,比如CPU资源。虚拟化平台本身可以轻松地将租户的控制器相互隔离。
数据平面隔离
数据平面的资源包括节点的CPU和流表、链路带宽、端口的队列资源等。为了保证每个租户的正常使用,需要相应隔离数据平面的资源,以保证租户的资源不被其他租户占用。如果资源没有在数据平面上隔离,那么数据平面上租户的数据之间就会产生竞争,不能保证租户对网络资源的需求,所以需要在数据平面上隔离资源。
地址隔离
为了使租户能够在自己的虚拟租户网络中任意使用地址,虚拟化平台需要完成地址隔离。地址隔离主要通过地址映射来实现。租户可以随意定制地址空,这些地址是面向租户的虚拟化平台虚拟地址。虚拟化平台在转发租户控制器南行协议报文时,需要将虚拟地址翻译成整个网络唯一的物理地址。租户服务器的地址在发送到接入交换机时会被修改为物理地址,然后数据包的转发会基于修改后的物理地址。当数据到达租户目的地址的主机出口时,控制器需要将该地址转换为原租户设置的地址,从而完成地址的虚拟映射。地址的虚拟映射使租户可以使用完整的地址空和任意的FlowSpace (flow 空:由流表匹配项组成的多维空),而物理层实现地址隔离,使不同租户使用特定的物理地址和数据不会相互干扰。
3.存储虚拟化
存储虚拟化是一种贯穿整个信息技术环境的技术,用于简化原本可能相对复杂的底层基础架构。存储虚拟化的思想是将资源的逻辑映像从物理存储中分离出来,从而为系统和管理员提供简化和无缝的资源虚拟视图。存储虚拟化在云计算之前已经发展了很长时间,与云计算没有特别的关系。云计算存储通常指亚马逊的S3存储或EBS存储,它将一个统一的资源库划分为多个用户。
对用户来说,虚拟化存储资源就像一个巨大的“存储池”。用户看不到特定的磁盘和磁带,也不必关心他们的数据通向哪个特定的存储设备。
从管理角度来看,虚拟存储池采用集中式管理,根据具体需求动态分配存储资源给各种应用。值得指出的是,通过使用虚拟化技术,磁带库可以由磁盘阵列模拟,为应用程序提供与磁盘一样快但与磁带库一样大的存储资源。这就是VTL,虚拟磁带库(VTL),它如今被广泛使用,在当今的企业存储系统中扮演着越来越重要的角色。
主流存储虚拟化有以下三种技术。在云计算场景中,通常会根据实际场景选择合适的技术。
疗养院
先说高端存储。现在高端存储应该是以EMC、IBM、HDS为主。近年来,外部存储随着廉价磁盘不断提高容量和性能,推动了存储区域网络和主机光纤通道接口的不断成熟,在数据中心,尤其是金融领域变得非常普遍。
存储区域网络提供块存储。例如,一个磁盘阵列中有10个测试数据磁盘,然后10个数据磁盘可以按磁盘阵列或逻辑卷(LVM)划分。但是,这10个数据磁盘不同于以前的物理磁盘。逻辑盘可以具有提供100克的第一物理盘和提供300克的第二物理盘。对于操作系统来说,无法感知是物理磁盘还是逻辑磁盘,这就是存储资源池的概念。RAID或LVM不仅可以提供数据保护,还可以重新划分磁盘大小,提高读写速率。
但是SAN也不是没有缺点,价格也比较贵。光纤端口和光纤交换机价格高,所以有IPSAN存储,存储协议由IP协议承载;无法提供数据共享,一个磁盘只能挂在一台主机上,所以有NAS存储。
噪声控制协会
NAS是文件存储。与块存储相比,文件存储具有最大的数据共享优势。它基于标准的网络协议,存储区域网络有自己的一套存储协议。常见的NAS包括NFS、FTP、HTTP文件服务器等。由于这类设备通常有IP,一般客户端可以作为数据网关服务器直接访问。网络连接存储建立在传统网络上,因此可以远距离传输。NAS易于安装和维护,但速度通常比SAN慢很多。
分布式存储
随着x86性能的提高,用x86芯片搭建的小型存储系统开始在中端存储领域崭露头角。利用X86本地磁盘构建大型存储集群。分布式存储通常可以提供块存储和文件存储。没有必要引入与OpenStack紧密集成的分布式存储ceph。下图是ceph官网的整体模块图,提供了CEPH FS文件存储系统和POSIX接口,对象存储和最常用的快速存储。
其基石是以下RADOS,然后是系统组件,包括:
ceph osds:ceph的OSD(对象存储设备)守护进程。主要功能包括:数据存储、复制数据处理、数据恢复、数据补偿、平衡数据分布。并提供一些与数据相关的监控信息给cephmonitor,让cephmonitor可以检查其他OSD的心跳状态。CEPH存储集群需要至少两个CEPH操作系统才能有效存储两个数据。请注意,这里的两个ceph OSD指的是运行在两个物理服务器上的守护进程,而不是一个物理服务器上的两个ceph OSD。
监视器:CEPH的Moniter守护进程,其主要功能是维护集群状态表组,该组包含多个表,包括Moniter:CEPH、OSD映射、PG(放置组)映射和CRUSH映射。
mdss:ceph的MDS(元数据服务器)守护进程,主要保存ceph文件系统的元数据。请注意,CEPH的数据块设备和CEPH对象存储都不需要CEPH MDS守护程序。Cephemds为基于POSIX文件系统的用户提供了一些基本命令,比如ls、find等。,可以大大降低CPEH存储集群的压力。
另一个开源对象存储是openstack的Swift。Swift的初衷是低成本存储超大容量的数据。swift使用容器来管理对象,允许用户存储、检索和删除对象及其元数据,所有这些都是通过用户友好的RESTful界面完成的。