使用wordpress搭建手机网站,常熟做网站价格,苏州网页制作服务商,做一套网站多钱虚拟化技术介绍
虚拟化#xff08;Virtualization#xff09;的含义很广泛。将任何一种形式的资源抽象成另一种形式的技术都是虚拟化#xff0c;是资源的一种逻辑表示。解除了物理硬件和操作系统之间的紧耦合关系。 •虚拟化是云计算的基础。简单地说#xff0c;虚拟化使得…虚拟化技术介绍
虚拟化Virtualization的含义很广泛。将任何一种形式的资源抽象成另一种形式的技术都是虚拟化是资源的一种逻辑表示。解除了物理硬件和操作系统之间的紧耦合关系。 •虚拟化是云计算的基础。简单地说虚拟化使得在一台物理的服务器上可以跑多台虚拟机虚拟机共享物理机的CPU、内存、IO硬件资源但逻辑上虚拟机之间是相互隔离的。 •在计算机方面虚拟化一般指通过对计算机物理资源的抽象提供一个或多个操作环境实现资源的模拟、隔离或共享等。 •本质上虚拟化就是对硬件资源的一种抽象与模拟。通过空间上的分割、时间上的分时以及模拟虚拟化可将一份资源抽象成多份亦可将多份资源抽象成一份。 虚拟化中的重要概念 虚拟化架构
宿主虚拟化 很好理解就是你想装虚拟化软件需要先装一个操作系统 就比如 Windows系统上的 VMware Workstation \ VirtualBox 软件 Mac OS 上的 Parallels Desktop 软件 宿主虚拟化的 hypervisor 就像是安装在子操作系统上的一个应用这种方式比裸机虚拟化的 hypervisor 提供更好的硬件兼容性因为调用硬件的流程是 虚拟机内核 - Hypervisor - 操作系统 - 硬件但这也导致了宿主虚拟化的性能是要比裸机虚拟化差很多的 优点 1、硬件兼容性好 2、使用方便附加功能比较丰富 缺点 1、性能差 裸金属虚拟化 这个不需要操作系统, 虚拟管理程序本身就是一个操作系统例如VMware ESXI 、Proxmox VE、Microsoft Hyper-V 裸机虚拟化的性能是要优于宿主虚拟化的一般IDC都是运行的这类系统 裸机型在虚拟化中Hypervisor直接管理访问硬件资源不需要底层操作系统也可以将Hypervisor看作是一个很薄的操作系统 hypervisor直接访问硬件资源这个使得虚拟机能够获得更好的性能、扩展性与稳定性。 调用的流程是 虚拟机内核 - Hypervisor - 硬件 优点 1、性能好损耗极低 2、一般拥有资源管理、高可用性和安全方面的功能比较适合企业数据中心 缺点 1、硬件支持有限因为hypervisor通常内置的设备驱动很有限比如esxi 虚拟化类型(全虚/半虚/硬件辅助拟化) 分类说明全虚拟化使用VMM实现CPU、内存、设备I/O的虚拟化而Guest OS和计算机系统硬件都不需要进行修改。该方式兼容性好但会给处理器带来额外开销。半虚拟化使用VMM实现CPU和内存虚拟化设备I/O虚拟化由Guest OS实现。需要修改 Guest OS使其能够与VMM协同工作。该方式兼容性差但性能较好。硬件辅助虚拟化借助硬件主要是处理器的支持来实现高效的全虚拟化。该方式不需要修改Guest OS兼容性好。该技术将逐渐消除软件虚拟化技术之间的差别成为未来的发展趋势。
虚拟化特点 •分区分区意味着虚拟化层为多个虚拟机划分服务器资源的能力每个虚拟机可以同时运行一个单独的操作系统相同或不同的操作系统使您能够在一台服务器上运行多个应用程序每个操作系统只能看到虚拟化层为其提供的“虚拟硬件”虚拟网卡、CPU、内存等以使它认为运行在自己的专用服务器上。 •隔离虚拟机是互相隔离的 ▫一个虚拟机的崩溃或故障例如操作系统故障、应用程序崩溃、驱动程序故障等等不会影响同一服务器上的其它虚拟机。 ▫一个虚拟机中的病毒、蠕虫等与其它虚拟机相隔离就像每个虚拟机都位于单独的物理机器上一样。 ▫可以进行资源控制以提供性能隔离您可以为每个虚拟机指定最小和最大资源使用量以确保某个虚拟机不会占用所有的资源而使得同一系统中的其它虚拟机无资源可用。 ▫可以在单一机器上同时运行多个负载/应用程序/操作系统而不会出现我们刚才讨论传统x86服务器体系结构的局限性时所提到的那些问题应用程序冲突、DLL冲突等。 •封装封装意味着将整个虚拟机硬件配置、BIOS配置、内存状态、磁盘状态、CPU 状态储存在独立于物理硬件的一小组文件中。这样您只需复制几个文件就可以随时随地根据需要复制、保存和移动虚拟机。 •相对于硬件独立因为虚拟机运行于虚拟化层之上所以只能看到虚拟化层提供的虚拟硬件此虚拟硬件也同样不必考虑物理服务器的情况这样虚拟机就可以在任何x86服务器IBM、Dell、HP等上运行而无需进行任何修改。这打破了操作系统和硬件以及应用程序和操作系统/硬件之间的约束。 虚拟化优势 CPU虚拟化 •x86操作系统是设计成直接运行在裸硬件设备上的因此它们自动认为它们完全占有计算机硬件。x86架构提供四个特权级别给操作系统和应用程序来访问硬件。Ring是指CPU的运行级别Ring 0是最高级别Ring 1次之Ring 2更次之…… 就Linuxx86 来说 ▫操作系统内核需要直接访问硬件和内存因此它的代码需要运行在最高运行级别Ring0上这样它可以使用特权指令控制中断、修改页表、访问设备等。 ▫应用程序的代码运行在最低运行级别上Ring 3上不能做受控操作。如果要做比如要访问磁盘写文件那就要通过执行系统调用函数执行系统调用的时候CPU的运行级别会发生从Ring 3到Ring 0的切换并跳转到系统调用对应的内核代码位置执行这样内核就为你完成了设备访问完成之后再从Ring 0返回Ring 3。这个过程也称作用户态和内核态的切换。 •那么虚拟化在这里就遇到了一个难题因为宿主操作系统是工作在Ring 0 的客户操作系统就不能也在Ring 0 了但是它不知道这一点以前执行什么指令现在还是执行什么指令但是没有执行权限是会出错的。所以这时候虚拟机管理程序VMM需要避免这件事情发生。VM通过VMM实现Guest CPU对硬件的访问根据其原理不同有三种实现技术 ▫全虚拟化 ▫半虚拟化 ▫硬件辅助的虚拟化 CPU和vCPU的对应关系 •vCPU数量和物理CPU对应关系如图所示。 •以RH服务器使用2.6 GHz主频CPU为例单台服务器有2个物理CPU每颗CPU有8核又因为超线程技术可以提供每个物理内核两个处理线程因此每颗CPU有16线程总vCPU数量为28232个vCPU。总资源为32*2.6 GHz83.2 GHz。(线程数等于vcpu的数量) •虚拟机vCPU数量不能超过单台CNA节点可用vCPU数量。多个虚拟机间可以复用同一个物理CPU因此单CNA节点上运行的虚拟机vCPU数量总和可以超过实际vCPU数量。 内存虚拟化
HPA物理内存地址–GPA虚拟机OS获取的地址–GVA虚拟机应用程序获取的地址
把物理机的真实物理内存统一管理包装成多份虚拟的内存动态分配给若干虚拟机使用。
KVM通过内存虚拟化共享物理系统内存动态分配给虚拟机。 •KVM中虚机的物理内存即为qemu-kvm进程所占用的内存空间。KVM使用CPU辅助的内存虚拟化方式。
•内存虚拟化 - 影子页表
▫由于宿主机MMU不能直接装载客户机的页表来进行内存访问所以当客户机访问宿主机物理内存时需要经过多次地址转换。即首先根据客户机页表把客户机虚拟地址GVA转换成客户机物理地址GPA然后再通过客户机物理地址GPA到宿主机虚拟地址HVA之间的映射转换成宿主机虚拟地址最后再根据宿主机页表把宿主机虚拟地址HVA转换成宿主机物理地址HPA。而通过影子页表则可以实现客户机虚拟地址到宿主机物理地址的直接转换。
▫Intel的CPU提供了EPTExtended Page Tables扩展页表技术直接在硬件上支持GVA-GPA-HPA的地址转换从而降低内存虚拟化实现的复杂度也进一步提升内存虚拟化性能。
•KVM为了在一台机器上运行多个虚拟机需要增加一个新的内存虚拟化层客户机物理地址空间这个地址空间不是真正意义上的物理地址空间它们之间还有一层转换。客户机虚拟地址GVA到客户机物理地址GPA的转换。
•但是客户操作系统不能直接访问实际机器内存因此VMM需要负责映射客户物理内存到实际机器内存GPA -HPA。
I/O虚拟化 全虚拟化 VM–Hypervisor–QEMUDomain0–IO设备 半虚拟化 VM–QEMUDomain0–IO设备 设备直通 硬件辅助虚拟化 VM–IO设备
I/O虚拟化可以被看作是位于服务器组件的系统和各种可用I/O处理单元之间的硬件中间件层使得多个guest可以复用有限的外设资源。
设备虚拟化I/O虚拟化的过程就是模拟设备的这些寄存器和内存截获Guest OS对IO端口和寄存器的访问通过软件的方式来模拟设备行为。
在QEMU/KVM中客户机可以使用的设备大致可分为三类 模拟设备完全由QEMU纯软件模拟的设备Virtio设备实现VIRTIO API的半虚拟化设备PCI设备直接分配PCI device assignment
•I/O虚拟化需要解决两个问题
▫ 设备发现
▪需要控制各虚拟机能够访问的设备
▫ 访问截获
▪通过I/O端口或者MMIO对设备的访问
▪设备通过DMA与内存进行数据交换。 •模拟I/O设备方式的优点是对硬件平台依赖性较低、可以方便模拟一些流行的和较老久的设备、不需要宿主机和客户机的额外支持因此兼容性高而其缺点是I/O路径较长、VM-Exit次数很多因此性能较差。一般适用于对I/O性能要求不高的场景或者模拟一些老旧遗留legacy设备如RTL8139的网卡。 •Virtio半虚拟化设备方式的优点是实现了VIRTIO API减少了VM-Exit次数提高了客户机I/O执行效率比普通模拟I/O的效率高很多而其缺点是需要客户机中与Virtio相关驱动的支持较老的系统默认没有自带这些驱动Windows系统中需要额外安装Virtio驱动因此兼容性较差而且I/O频繁时的CPU使用率较高。
主流虚拟化技术介绍
xen虚拟化虚拟机虚拟化安全性 Domain0 处于特权级别的虚拟机实现IO的虚拟化管理DomainU管理硬件 DomainU 普通用户虚拟机 KVM虚拟化软件虚拟化性能好—充分利用了CPU的硬件辅助虚拟化能力 KVMKernel-based Virtual Machine是基于内核的虚拟机 架构 内核态启用KVM.KO内核模块以实现CPU和内存的虚拟机用户态部署QEMU以实现IO虚拟机 KVMKernel-based Virtual Machine是基于内核的虚拟机。 KVM本质是Linux内核中的虚拟化功能模块kvm.ko利用Linux做大量的事如任务调度、内存管理与硬件设备交互等。 KVM是开源软件于2007年2月被集成到Linux2.6.20内核中。 KVM中虚拟机其实就是一个Linux进程由CPU进行调度运行。 KVM运行在内核空间提供CPU、内存的虚拟化它本身不执行任何模拟。运行在用户空间的QEMU提供硬件I/O的虚拟化模拟。
KVM与QEMU •KVM基本结构如上图。KVM已经是内核模块被看作是一个标准Linux字符集设备/dev/kvm。QEMU通过Libkvm应用程序接口用fd文件描述符通过ioctl向设备驱动来发送创建、运行虚拟机命令。设备驱动KVM会解析命令。
•KVM模块让Linux主机成为了一个虚拟机监视器VMM在原有执行模式基础上增加了客户模式。在虚拟机运行时三种模式的工作为
▫客户模式执行非I/O的客户代码虚拟机运行在这个模式下。
▫用户模式代表用户执行I/O指令QEMU运行在这个模式下它用来为虚拟机模拟执行I/O类的操作请求。
▫内核模式实现客户模式切换处理因I/O或者其他指令引起的从客户模式退出动作VM-Exit。KVM模块工作在这个模式下。此模式下可以真正操作硬件当Guest OS执行I/O类操作或特权指令操作时需要向用户模式提交请求然后由用户模式再次发起硬件操作请求给内核模式从而真正操作硬件。
KVM工作原理 虚拟化平台管理工具 - Libvirt Xen vs KVM 思考题
1.全虚拟化使用VMM实现CPU和内存虚拟化设备I/O虚拟化由Guest OS实现。需要修改Guest OS使其能够与VMM协同工作。该方式兼容性差但性能较好。
A.正确
B.错误
2.Libvirt是Linux上的虚拟化库主要目标是提供一种通用并且稳定的软件层来管理物理主机上多种不同的虚拟化方式和虚拟主机并支持远程管理。
A.正确
B.错误
KVMKernel-based Virtual Machine基于内核的虚拟机
VMMVirtual Machine Monitor虚拟化软件层/虚拟机监控机
答案在下面
▫B
▫A
习题精讲
分区隔离封装相对于硬件独立
以下关于虚拟化特点中隔离的描述正确的是哪些项?
A.虚拟化的隔离使得一个虚拟机的崩溃或故障不会影响同—服务器上的其它虚拟机(正确答案)
B.隔离指对通过分区所建立的多个虚拟机采用逻辑隔离措施(正确答案
C.隔离可以使服务器在同—时间运行多个操作系统(正确答案)
D.隔离不能进行资源控制
隔离特点
可以进行资源控制以提供性能隔离您可以为每个虚拟机指定最小和最大资源使用量以确保某个虚拟机不会占用所有的资源而使得同一系统中的其它虚拟机无资源可用。
裸金属和宿主虚拟化
以下关于裸金属虚拟化的描述正确的是哪些项?
A.裸金属虚拟化Hypervisor直接调用硬件资源不需要底层Host OS (正确答案)
B.裸金属虚拟化实现虚拟化层的内核开发难度小相较于硬件辅助虚拟化易于实现
C.所有的虚拟机和虚拟资源都由时Hypervisor负责统一管理并分配(正确答案)
D.创建在裸金属虚拟化上的虚拟机不要求一定使用某个类型的操作系统(正确答案)
在裸金属虚拟化中虚拟化层Hypervisor不可以直接调用硬件资源错误
KVM
KVM虚拟化平台专用的虚拟机磁盘格式的描述 VDI是Oracle的,VMDK是VMware的
闭源和开源虚拟化技术
主流的虚拟化技术有很多一般分为开源和闭源两类其中FusionCompute是闭源类虚拟化技术。
开源技术KVM和Xen
一类裸金属和二类宿主虚拟化技术
我们常见的 VMWare Workstation、VirtualBox、Parallels Desktop、Hyper-V等均属于二型 虚拟化 软件他们需要运行于宿主操作系统。
而企业级 虚拟化 平台例如 VMWare vSphere、KVM、Hyper-V server 等则属于一型 虚拟化 他们直接运行于裸金属服务器。
RISC和CISC指令集
RISCReduced Instruction Set Computer就是“精简指令运算集”
CISCComplex Instruction Set Computer。就是“复杂指令运算集”
在RISC指令集架构的服务器中敏感指令是虚拟化的一种特殊指令是指将Guest OS中原本需要在Ring0模式下才能运行的特权指令剥夺特权后交给VMM来执行的指令。