LabsguideDPDK技术为NFV领域数据包转发性能的提升奠定了基础,软硬件解耦后,各个功能网元的隔离共生,资源级别在一般服务器上能实现的问题,就需要虚拟化技术来解决。虚拟化利用软件对IT资源进行重新定义和划分,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源的利用率,使IT资源真正成为社会基础设施,为企业提供灵活服务。各行各业。不断变化的应用需求。一、什么是虚拟化说白了,虚拟化就是欺骗。随着个人电脑的普及,广泛使用的术语“虚拟化”已经脱离了技术本身,成为一种通用语言、流行文化和哲学。自20世纪90年代互联网热潮初期以来,任何与网络相关的事物都被称为“虚拟”,通过菲利普·迪克的科幻小说、让·鲍德里亚的后现代主义研究,以及《黑客帝国》和《盗梦空间》等电影,这个概念模拟现实已经深入人心。在技??术领域,虚拟化是指利用“作弊”技术,将一台计算机虚拟成多台逻辑计算机。在一台计算机上同时运行多台逻辑计算机,每台逻辑计算机可以运行不同的操作系统,应用程序可以在独立的空间运行,互不影响,从而显着提高计算机的工作效率。传统架构是每台物理机只能有一个操作系统,大多数情况下只能有一个负载。很难在服务器上运行多个主要应用程序,因为如果这样做,可能会出现冲突和性能问题。事实上,当前的计算最佳实践是每台服务器只运行一个应用程序以避免这些问题。但是,这样做的结果是大部分时间的利用率都很低。如前所述,我们浪费了购买的大部分计算能力。您必须在浪费硬件和降低风险之间找到平衡点。随着业务的增长,随之而来的成本压力也会发生变化,相关的管理效率会变低,消耗的资源也会增加。企业实施虚拟化战略的核心目的是提高作为业务支撑部门的IT部门的工作效率,从而达到节约成本、提高效率的目的。虚拟化的重要使命之一就是提高管理效率,从而降低成本,提高硬件利用率,让管理更简单。虚拟化的主要方向是减少物理服务器的部署,将物理机上的操作系统和应用程序无缝迁移到虚拟机上,从而集中管理这些不同平台的虚拟环境。传统框架下,APP:OS:Phy=1:1:1。这将导致资源利用率低下。为了不浪费资源,会增加APP部署。进一步的影响是不同应用程序之间的资源抢占和隔离性差。OS主要是为应用程序提供运行环境,但在资源调度方面比较薄弱,不能彻底有效地解决上述问题。为了在不引起冲突的情况下提高资源利用率,最好在OS上部署一个APP,于是虚拟化技术应运而生。在一台主机上部署多个虚拟客户端并安装OS,在每个OS上安装一个APP,就解决了这个问题。应用程序:操作系统:物理层=n:n:1。虚拟化后,实现了上层操作系统与下层硬件的解耦。也就是说,操作系统不再依赖物理硬件,而是在VMM层上构建OS,VMM层实现OS的硬件需求。1.1虚拟化的几个重要概念主机(HostMachine):指物理机器资源,Hypervisor用来执行一个或多个虚拟机的计算机称为主机。客户端(GuestMachine):指虚拟机资源,在Hypervisor上运行多个虚拟机称为客户端。GuestOS和HostOS:如果将一台物理机虚拟成多个虚拟机,则物理机称为HostMachine,其上运行的OS为HostOS;多个虚拟机称为GuestMachine,其上运行的OS称为GuestOS。Hypervisor:通过虚拟化层的模拟,使虚拟机在上层软件眼中就是真实的机器。这个虚拟化层一般称为虚拟机监视器(VirtualMachineMonitor,VMM)。需要注意一点:在VMware的ESX虚拟化架构中,VMM只是Hypervisor中的一个进程,所以在这种场景下,VMM不等于Hypervisor。2、什么是Hypervisor(VMM)维基百科对它的定义如下:Hypervisor,又称虚拟机监视器(英文:virtualmachinemonitor,缩写为VMM),是用来创建和执行虚拟机的软件、固件或硬件。通俗地说:hypervisor是运行在物理服务器和操作系统之间的中间层软件,允许多个操作系统和应用程序共享一套基本的物理硬件。Hypervisor可以看作是虚拟环境中的“元”操作系统,可以协调和访问服务器上的所有物理设备和虚拟机,因此也被称为虚拟机监视器(virtualmachinemonitor)。Hypervisor是所有虚拟化技术的核心,无中断支持多负载迁移是Hypervisor的基本功能。当服务器启动并执行管理程序时,它会为每个虚拟机分配适当数量的内存、cpu、网络和磁盘资源,并加载所有虚拟机的客户操作系统。目前主流的hypervisor有微软的Hyper-V、VMware、Xen、KVM,但KVM主要应用于电信云NFV领域。为了加深大家对KVM的理解,我们还要说说Xen。毕竟在KVM被广泛应用之前,云架构的底层虚拟化技术是Xen。2.1虚拟化和hypervisor有什么关系?虚拟化是以某种方式隐藏底层物理硬件的过程,以便多个操作系统可以透明地使用和共享它。这种架构的另一个更常见的名称是平台虚拟化。在典型的分层架构中,提供平台虚拟化的层称为管理程序(有时称为虚拟机管理器或VMM)。来宾操作系统称为虚拟机(VM),因为对于这些VM,硬件是专门为它们虚拟化的。如下图所示:从上图可以看出,hypervisor是提供底层机器虚拟化的软件层(某些情况下需要处理器支持)。并非所有虚拟化解决方案都是一样的(有关详细信息,请参阅管理程序分类部分)。客户操作系统(GuestOS)通过VMM访问机器底层资源。管理程序的对象不是客户端中的进程,而是整个客户操作系统(GuestOS)。Hypervisor主要可以分为类型1和类型2两大类,以及基于此的混合类型和操作系统类型。类型1:此管理程序可以直接在物理硬件上运行。也就是说,它不需要宿主操作系统(HostOS)的支持,可以自行管理底层硬件的资源。其实质是在Hypervisor中嵌入了一个简化的Linux操作系统内核。Xen和VMWare的ESXi都属于这种类型。这种虚拟化的模型如下图所示。其特点是硬件支持,转发性能强(因为缺少了hostOS层)。VMM是主机操作系统。类型2:此管理程序在另一个操作系统中运行(在物理硬件上运行)。也就是说,这种Hypervisor是部署在HostOS上的。从HostOS的角度来看,上层的所有VM都对应着Hypervisor进程。从VM的角度来看,它对底层硬件资源的访问需要Hypervisor和HostOS的配合。KVM、VirtualBox和VMWareWorkstation都属于这一类。这种虚拟化的模型如下图所示。特点是灵活,比如支持虚拟机嵌套(嵌套是指hypervisor可以运行在虚拟机中),但是转发性能明显不如类型1。目前随着转发性能提升的需求和应用微服务架构需求,混合虚拟化和基于HostOS的操作系统虚拟化在Type2的基础上演化而来。混合虚拟化:通过在宿主机的操作系统中加入虚拟硬件管理模块,生成每个虚拟机通过虚拟硬件管理模块。属于Type2虚拟化的增强模型。与2类虚拟化相比,它的特点是无冗余、高性能、可以支持多种操作系统。但是,底层硬件需要??支持虚拟化扩展。现阶段的KVM和Hyper-V都属于这种增强型2类虚拟化技术。操作系统虚拟化:没有单独的管理程序层。相反,主机操作系统本身负责在多个虚拟服务器之间分配硬件资源并使这些服务器相互独立。最重要的前提是:如果使用操作系统层虚拟化,所有虚拟服务器必须运行相同的操作系统(但每个实例都有自己的应用程序和用户帐户),本质上是应用程序在操作系统上的一个进程,主要用于应用的微服务架构场景。特点是:简单、易于实施、管理成本极低。但是隔离性差,多个虚拟化实例共享同一个操作系统。最典型的就是目前比较火的容器技术Docker和Virtuozzo。3、虚拟化的特点和优势从前面的描述可以看出,虚拟化技术是将“大块资源”逻辑划分为“功能独立的小块资源”。这个功能是通过Hypervisor来实现的。对于服务器领域,一台物理服务器通过Hypervisor被虚拟成若干个小的逻辑服务器,每个逻辑服务器具有与物理服务器相同的功能,所有逻辑服务器的资源总和等于物理服务器的所有资源。因此,运行在Hypervisor上的逻辑服务器本质上是由物理服务器上的单个文件组成的。与物理服务器相比,它天生具有四个特点:分区、隔离、封装和相对硬件独立性。分区:在单个物理服务器上同时运行多个虚拟机。分区是指虚拟化层为多个虚拟机划分服务器资源的能力;每个虚拟机可以同时运行一个单独的操作系统(相同或不同),使您能够在单个服务器程序上运行多个应用程序。每个操作系统只能看到虚拟化层提供给它的“虚拟硬件”(虚拟网卡、CPU、内存等),从而认为自己运行在自己的专用服务器上。隔离:将同一台服务器上的虚拟机相互隔离。虚拟机彼此隔离。例如:一个虚拟机崩溃或故障(例如,操作系统故障、应用程序崩溃、驱动程序故障等)不会影响同一台服务器上的其他虚拟机;病毒、蠕虫等。机器被隔离,就好像每个虚拟机都在单独的物理机器上一样。资源控制可用于提供性能隔离,例如:可以为每个虚拟机指定最小和最大资源使用量,以确保一个虚拟机不会占用所有资源而使同一系统中的其他虚拟机没有资源可用;多个工作负载/应用程序/操作系统可以在一台机器上同时运行,而不会出现由于传统x86服务器架构的限制而导致的DLL冲突等问题。封装:整个虚拟机存储在一个文件中,通过移动文件可以迁移虚拟机。封装意味着将整个虚拟机(硬件配置、BIOS配置、内存状态、磁盘状态、CPU状态)存储在独立于物理硬件的一小组文件中。这样,只需复制几个文件,就可以随时随地复制、保存和移动虚拟机。相对硬件无关:无需修改即可在任何服务器上运行(主要基于全虚拟化技术的虚拟机,半虚拟化技术的虚拟机只支持开源操作系统,如Linux)。因为虚拟机运行在虚拟化层,它只能看到虚拟化层提供的虚拟硬件,而不会关注物理服务器的情况。这样,虚拟机可以在任何x86服务器(IBM、Dell、HP等)上运行而无需任何修改。这打破了操作系统和硬件以及应用程序和操作系统/硬件之间的约束。同时,由于Hypervisor的存在,虚拟机具有同质化、高效和资源可控三大特点。同质性(Equivalence),即VM的运行环境和物理机的环境在本质上是一样的,在性能上可能存在一些差异。比如CPU的ISA必须一致(实际上可以不一致),CPU核心数可以不一样。效率,即虚拟机的性能必须接近物理机。因此,普通的模拟器(boches,simics...)不能称为VM。为此,当软件在虚拟机上运行时,大部分指令直接在硬件上执行,只有少数指令需要虚拟机管理器模拟或处理。资源控制(Resourcecontrol),即Hypervisor对物理机的所有资源拥有绝对的控制权。Hypervisor虚拟化后,物理资源在资源利用率、独立性、运行效率、安全性等方面与传统物理服务器相比具有不同的优势。资源利用率:在虚拟化之前,每台主机都有一个操作系统,系统的资源利用率低。虚拟化后,主机与操作系统之间没有一一对应关系,按需分配使用,系统资源利用率高。独立性:在虚拟化之前,软件和硬件紧密结合,硬件成本高且不灵活。虚拟化后,操作系统和硬件不依赖,虚拟机独立于硬件,可以运行在任何硬件上。程序运行效率:在虚拟化之前,同一台主机上同时运行多个程序容易产生冲突,运行效率低。虚拟化后,操作系统和应用程序被封装成一个实体,不同实体之间不存在冲突。在同一台机器上高效运行多个程序。安全性:在虚拟化之前,故障影响范围大,安全性差。虚拟化后,通过资源池化,有强大的安全和故障隔离机制。4、虚拟化技术的发展近年来,随着云计算技术的广泛应用,虚拟化技术也引起了大家的关注。事实上,虚拟化技术的出现比云计算技术早了大约半个世纪。20世纪60年代,虚拟化技术已经应用于大型机。1999年,逻辑分区的概念出现在小型机上,这就是存储虚拟化的雏形。2000年,VMware首先在x86平台上提出了平台虚拟化技术的概念,随着CPU速度越来越快,Intel和AMD分别将虚拟化指令引入到CPU指令架构中。中心内部虚拟化技术的大发展催生了云计算技术的出现。可以说,虚拟化技术是云计算技术实现和推广的重要基石。同时,随着云计算技术的演进,虚拟化技术也在不断演进,从最早的计算虚拟化到现在的应用虚拟化。两者是相辅相成的螺旋关系。从诞生到现在,云计算技术经历了云计算1.0、云计算2.0和云计算3.0三个阶段。在不同阶段,虚拟化技术的表现形式和侧重点不同。其关系如下图所示:云计算1.0时代,主要是将传统的IT硬件基础设施改造为虚拟化基础设施,以提高资源利用率。这一阶段的关键特征是:通过引入计算虚拟化技术,将企业IT应用与底层基础设施完全分离解耦,多个企业IT应用实例和运行环境(客户端操作系统,GuestOS)被复用在相同的物理服务器,通过虚拟化的集群调度软件,可以在更少的服务器节点上复用更多的IT应用,从而提高资源利用效率。在云计算2.0时代,主要为云租户提供资源池化服务和精细化自动化管理,推动企业业务向云化演进。这一阶段的主要特点是:不仅通过计算虚拟化完成CPU、内存、裸机服务器等池化资源的集中管理和自动调度,还引入存储虚拟化和网络虚拟化技术,实现整合数据中心内部存储资源。网络资源池化集中管理,统一调度。面向内外部租户,将原本需要数据中心管理员人工干预的复杂低效的基础设施资源申请、发布、配置流程,转变为一键式全自动化资源发放服务流程。该阶段大大提高了企业基础设施资源的快速敏捷供应能力,缩短了基础设施资源的准备周期,实现了资源按需灵活供应。为企业核心业务走向敏捷化,更好地应对瞬息万变的竞争与发展奠定了基础。在云计算2.0阶段,为云租户提供基础设施资源服务的方式可以是虚拟机、容器(轻量级虚拟机),也可以是物理机。现阶段企业云化的演进还没有涉及基础设施层以上的IT应用、中间件、数据库软件架构的变化。云计算3.0时代,为应用开发者和管理维护者提供分布式微服务应用架构和大数据智能服务。这一阶段的主要特点是:企业IT应用架构逐渐开始去IOE,依托开源增强,跨不同业务应用领域的数据库高度共享,中间件平台服务层和功能更加轻量级解耦,数据和应用逻辑彻底分离的分布式无状态架构支撑企业业务的敏捷和智能,以及资源利用效率的提升。5、数据中心内部虚拟化技术的分类目前,数据中心内的虚拟服务器、虚拟网络、虚拟存储、虚拟设备等“虚拟技术”对传统基础设施进行了反击。在云计算的上述三个阶段中,虚拟化技术和云计算技术大发展的关键是2.0时代。主要特点是从计算虚拟化向存储虚拟化和网络虚拟化转变。从支持云计算按需、资源灵活分配、与硬件解耦的虚拟化技术来看,云计算早期主要集中在计算虚拟化领域。事实上,早在IBM370时代,计算虚拟化技术就诞生在其大型机操作系统上。技术原理是通过在OS和裸机硬件之间插入一个虚拟化层,在裸机硬件指令系统上模拟多台370主机的“运行环境”,让上层“误以为”运行在在一个独享的系统之上,计算虚拟化引擎实际上是在多个虚拟机之间进行CPU分时调度,同时对内存、I/O、网络的访问也进行了屏蔽。后来,当x86平台发展成为IT领域的主流硬件平台时,VMwareESX、XEN、KVM等依赖单机OS的计算虚拟化技术,在x86的硬件架构下实现了IBM370的虚拟化机制服务器。以及在单机/单机虚拟化基础上,具有虚拟机动态迁移和HA调度能力的中小型集群管理软件,如:VMware的vCenter/vSphere、Citrix的XENCenter、华为的FusionSphere等。已被引入以形成当前的计算虚拟化主体。与此同时,存储作为数据信息的持久化载体,也逐渐从服务器计算中分离出来,与不可或缺的CPU计算能力一样,在数据中心中发挥着至关重要的作用。现在数据中心内部不再封闭,内部服务器和外部互联网相互访问的需求,使得存储和网络与计算一样,成为企业IT基础设施不可或缺的“三大要素”。数据中心。就数据中心端到端的基础设施解决方案而言,不仅需要计算资源的按需分配、弹性伸缩、硬件解耦等需求,还需要存储资源和网络资源的需求。因此,存储虚拟化和网络虚拟化技术应运而生。对于普通的x86服务器,CPU和内存资源被虚拟化,然后以vCPU/vMemory的形式按需提供给用户/租户。计算在计算虚拟化中,只有资源池“大”和“小”的问题。但是对于存储来说,由于硬盘容量有限,客户/租户对数据容量的需求越来越大,需要在数据中心为多个分布式服务器存储资源,例如:服务器中的存储资源,外部SAN/NAS等进行“小聚大”融合,形成存储资源池。这个存储资源池可以是单一厂商提供的同构资源池,也可以是存储虚拟化层整合成跨多个厂商的异构统一资源池。可以以统一的块存储、对象存储或文件存储格式访问各种存储资源池。数据存储虚拟化的示意图如下:对于数据中心网络,网络是业务应用的真实资源需求,是连接到服务器节点的计算和存储资源。在传统的数据中心内部,网络交换功能是在物理交换机和路由器上执行的。对于上层业务应用,网络功能只是通过通信链路连接起来的孤立的“盒子”,无法动态感知上层业务的网络功能需求,完全需要手动配置才能满足业务层网络的需求网络和安全隔离策略。在云时代多租户虚拟化的环境下,不同的租户对边缘路由和网关设备的配置和管理有着非常不同的要求。即使是物理路由器和防火墙的多实例能力也无法满足云环境的租户数量。如果使用与租户数量相等的路由器和防火墙设备,成本是无法接受的。因此,伯克利大学NickMckeown教授提出将网络本身的功能从专用的封闭平台迁移到服务器的通用x86平台,SDN的概念由此诞生。网络资源虚拟化后,服务器节点的应用VM连接被区分,可以由云操作系统自动创建和销毁,任意两个网络端节点之间的虚拟连接可以通过建立在物理网络连接矩阵进行一度。通信链路的建立和必要的安全隔离保证实现业务驱动的网络自动化管理配置,大大降低数据中心网络管理的复杂度。从资源利用的角度来看,任意两个虚拟网络节点之间的流量带宽都需要通过物理网络进行交换和承载,只要不超过物理网络的资源配额上限即可(一般推荐即物理网络遵循非阻塞CLOS模式)设计实现),一旦虚拟节点被释放,其对应的网络带宽占用也将同步释放,因此相当于实现了最大限度的“网络资源动态共享”用于物理网络资源。通俗地说,网络虚拟化让多个盒子状的网络实体,首次以统一整合的“网络资源池”的形式出现在业务应用层面前,同时,也统一具有计算和存储资源。协同机制。网络虚拟化示意图如下图所示:以上基础设施虚拟化技术“三要素”是电信云领域需要重点关注的三大类,属于云IaaS服务的内容计算。此外,还有基于PaaS和SaaS的桌面虚拟化技术。这部分内容目前没有涉及到电信云领域,所以在本站的云计算分类中会有相关介绍,这里不再赘述。后面在NFV关键技术分类中,会按照计算虚拟化、存储虚拟化和网络虚拟化三大块一一介绍,并重点介绍KVM的部署和性能调优。【本文为专栏作家《移动实验室》原创稿件,转载请联系原作者】点此阅读更多本作者好文
