虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
目前虚拟技术主要分为服务器虚拟化(也称操作系统虚拟化)、存储虚拟化、网络虚拟化、应用虚拟化(也称桌面虚拟化)。
服务器虚拟化是将系统虚拟化技术应用于服务器上,将一个或若干个服务器虚拟成若干个服务器来使用。通过虚拟化软件向上提供对硬件设备的抽象和对服务器的管理,目前有两种常见的实现模式。
虚拟机监视器(virtual Machine Monitor,VMM),虚拟机监视器负责对虚拟机提供硬件资源抽象,为客户操作系统提供运行环境。又称寄宿虚拟化。虚拟机监视器是运行在宿主操作系统之上的应用程序,利用宿主操作系统的功能来实现硬件资源的抽象和虚拟机的管理。性能较低,典型实现有VMware Workstation和microsoft Virtual PC。
虚拟化平台Hypervisors,负责虚拟机的托管和管理,它直接运行在硬件之上,因此其实现直接受底层体系结构的约束。又称原生虚拟化。直接运行在硬件之上的不是宿主的操作系统,而是虚拟化平台,虚拟化平台提供指令集和设备接口,以提供对虚拟机的支持,性能较好,实现较为复杂,典型的实现有Citrix Xen 、VMware ESX Server 和Microsoft Hyper-V。
服务器虚拟化安实现原理分为:基于CPU的虚拟化、基于内存的虚拟化、基于设备和I/O的虚拟化。
基于CPU虚拟化的技术是把物理CPU抽象成虚拟CPU,每个可以使用一个或多个虚拟CPU,彼此的运行相互隔离,互不影响。在经典的CPU虚拟化模型中,CPU的虚拟化通常采用的是“特权解除”(Privilege Deprivileging)和“陷入-模拟”(trap-and-emulation)技术。
“特权解除”是指为了实现VMM对虚拟机的控制,降低Guest OS运行的特权等级,而将VMM运行在最高特权级的技术。
解除了Guest OS的特权之后,Guest OS的大部分指令仍可以在硬件上直接运行,只有当Guest OS执行到特权指令的时候,才会“陷入”到最高特权级的VMM模拟执行,即实现“陷入-模拟”。
在X86体系中,处理器有4个运行级别,分别为Ring0、Ring1、Ring2、Ring3,其中Ring0具有最高权限,可以执行任何指令。应用程序一般运行在Ring3,目前有全虚拟化(Full-virtualization)和半虚拟化(Para-virtualization)。
全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。在全虚拟化下,CPU虚拟化是采用二进制代码动态翻译技术,即在执行时动态地重写虚拟机的执行代码。
在客户机操作系统看来,虚拟的平台和现实的平台是一样的,客户机操作系统觉察不到是运行在一个虚拟平台上。
半虚拟化通过修改GuestOS的内核代码,将待监控的操作替换为对VMM的超级调用(Hypercall),完成虚拟化。适用于Linux、Solaris及其他开源操作系统。不适用于windows。
对于虚拟化环境来说,存在四种地址,GVA(Guest virtual address,客户机虚拟地址)、GPA(Guest physical address,客户机物理地址)、HVA(Host virtual address,宿主机虚拟地址)、HPA(Host physical address,宿主机物理地址)。对于客户机应用程序来说,它想访问一个具体的物理地址需要两级页表转换,即GVA到GPA和GPA到HPA。
基于内存的虚拟化,内存虚拟化技术把物理机的真实物理内存统一管理,包装成多个虚拟的物理内存分别供若干个虚拟机使用,使得每个虚拟机拥有各自独立的内存空间。在内存虚拟化中,虚拟机监视器要能够管理物理机上的内存,并按照虚拟机对内存的需求划分机器内存,同时保持各个虚拟机对内存访问的相互隔离。内存虚拟化管理单元的实现主要有两种方法。
第一种是影子页表法,影子页表的本意是在VMM中创建一个客户机页表的影子页表,能够一步完成从GVA到HPA的转换。
以Linux 32位为例,寻址时需要32的地址号,我们知道这32位可以分为3个部分,最后12位是页偏移量,中间10位称为PT(Page Table,页表),最前面的10位称为PD(Page Descriptor,页目录)。在寻址时,首先根据前20位找到对应的物理页,在根据最后12位的偏移量找到具体内容,因此一般把前20位称为物理页帧号,引入影子页表后,就会引入三种物理页帧号,分别是GFN(Guest Frane Number,客户机页帧号),MFN(Machine Frane Number,机器物理页帧号)和SMFN(Shadow Machine Frane Number,影子宿主机物理页帧号),
第二种是页表写入法,当客户操作系统创建一个页表时,需要向VMM注册该页表。此时,VMM将剥夺客户操作系统对页表的写权限,并向该页表写入由VMM维护的机器内存地址。当客户操作系统访问内存时,他可以在自己的页表中获得真实的机器地址。
基于设备与I/O的虚拟化把物理机的真实设备统一管理,包装成多个虚拟设备供若干个虚拟机使用,响应每个虚拟机的设备访问和I/O请求。
存储虚拟化,通过对存储(子)系统或存储服务的内部功能进行抽象、隐藏或隔离,使存储或数据的管理与应用、服务器、网络资源的管理分离,从而实现应用和网络的独立管理。
对存储服务和设备进行虚拟化,能够在对下一层存储资源进行扩展时进行资源合并、降低实现的复杂度。存储虚拟化可以在系统的多个层面实现,比如建立类似于HSM(分级存储管理)的系统。磁盘阵列Redundant Array of independent Disk (RAID)、网络附属存储Network Attached Storage(NAS)和存储区域网络Storage Area Network(SAN)是目前用的存储虚拟化技术。
磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。
NAS被定义为一种特殊的专用数据存储服务器,包括存储器件(例如磁盘阵列、CD/DVD驱动器、磁带驱动器或可移动的存储介质)和内嵌系统软件,可提供跨平台文件共享功能。NAS通常在一个LAN上占有自己的节点,无需应用服务器的干预,允许用户在网络上存取数据,在这种配置中,NAS集中管理和处理网络上的所有数据,将负载从应用或企业服务器上卸载下来。
存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。
网络虚拟化,网络虚拟化通常包括虚拟局域网和虚拟专用网(Virtual Private Network,VPN)。虚拟局域网是其典型的代表,它可以将一个物理局域网划分成多个虚拟局域网,或者将多个物理局域网中的节点划分到一个虚拟局域网中,这样提供一个灵活便捷的网络管理环境,使得大型网络更加易于管理,可以通过集中配置不同位置的物理设备来实现网络的最优化。
VPN帮助管理员维护IT环境,防止来自内网或者外网中的威胁,使用户能够快速、安全地访问应用程序和数据。目前虚拟专用网在大量的办公环境中使用。
应用虚拟化技术,原理是基于应用/服务器计算A/S架构,采用类似虚拟终端的技术,把应用程序的人机交互逻辑(应用程序界面、键盘及鼠标的操作、音频输入输出、读卡器、打印输出等)与计算逻辑隔离开来。在用户访问一个服务器虚拟化后的应用时,用户计算机只需要把人机交互逻辑传送到服务器端,服务器端为用户开设独立的会话空间,应用程序的计算逻辑在这个会话空间中运行,把变化后的人机交互逻辑传送给客户端,并且在客户端相应设备展示出来,从而使用户获得如同运行本地应用程序一样的访问感受。
原文:https://blog.csdn.net/weixin_37123068/article/details/88240469