` virtual(三) | 听云轩

virtual(三)

常见的虚拟化架构

1.OpenVZ(OVZ)

采用SWsoft的virtutozzo虚拟化服务器软件产品的内核,是基于Linux平台的操作系统级服务器虚拟化架构。这个架构直接调用宿主机(母机)中的内核,模拟生成出子服务器(VPS,小机)所以,他经过虚拟化后相对于母服务器,性能损失大概只有1-3%。OVZ可以超售,用户用多少资源就扣除宿主机多少资源;另一个特点是直接调用宿主机的内核,所以导致部分软件无法使用,以及部分内核文件是无法修改的。

2、KVM

是Linux下的全功能虚拟化架构,基于KVM架构的VPS,默认是没有系统的,可自己上传ISO或调用服务商自带的ISO手动安装系统或使用服务商提供的官方的KVM模板。由于KVM架构全功能虚拟化架构,甚至拥有独立的BIOS控制,所以对宿主机性能影响较大,所以基于KVM的VPS较贵,但较为自由。

KVM是基于虚拟化扩展(inter VT或AMD-V)的x86硬件,是Linux完全原生的全虚拟化解决方案。在KVM架构中,虚拟机实现为常规的Linux进程,由标准的Linux调度进程去进行调度。事实上,每个虚拟CPU显示为一个常规的Linux进程,这样使得KVM能够享受Linux内核的所有功能。

它本身不执行任何模拟,需要用户空间程序通过/dev/kvm接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的I/O,并将它的视频显示映射回宿主机显示屏。

eIpvUU.png

关于KVM的内存特性:

  • 内存管理

一个虚拟机的内存与任何其他Linux进程的内存一样进行存储,可以以大页面的方式进行交换以实现更高的性能,也可以以磁盘文件的形式进行共享。NUMA(非一致性内存访问,针对多处理器的内存设计)允许虚拟机有效地访问大量内存。

KVM支持最新的基于硬件的内存虚拟化功能,支持inter的扩展页表(EPT)和AMD的嵌套页表,以实现更低的CPU使用率和更高的吞吐量。

内存页面共享通过一项名为内核同页合并(KSM)的内核功能来支持。KSM扫描每个虚拟机的内存,如果虚拟机拥有相同的内存页面,KSM将这些页面合并到一个虚拟机之间共享的页面,仅存储一个副本。如果一个客户机尝试更改这个共享页面,那么他将得到自己的专用副本。

  • 存储

KVM能够使用Linux支持的任何存储方式来存储虚拟机的镜像,像本地磁盘,NAS,SAN等。多路径I/O可用于改进存储的吞吐量和提供冗余。由于KVM是Linux内核的一部分,它可以利用所有成熟可靠的存储架构。

KVM还支持全局文件系统等共享文件系统上的虚拟机镜像,以允许虚拟机镜像在多个宿主之间共享或者使用逻辑卷共享。磁盘空间按需分配,仅在虚拟机需要的时候分配存储空间,而不是提前分配好,提供了存储利用率。

  • 设备驱动程序

KVM支持混合虚拟化,其中准虚拟化的驱动程序安装在客户机操作系统中,允许虚拟机使用优化的I/O接口而不使用模拟的设备,从而为网络和块设备提供了高性能的I/O。

  • 性能和可伸缩性

它继承了Linux的性能和可伸缩性。

3、Xen

是基于硬件的完全分割,物理上有多少的资源就只能分配多少资源,因此很难超售,可分为Xen-PV(半虚拟化)和Xen-HVM(全虚拟化)。

它是一个直接在系统硬件上运行的虚拟机管理程序,Xen在系统硬件和虚拟机之间插入一个虚拟化层,将系统硬件转换为一个逻辑计算资源池,然后动态地分配给任何操作系统或者是应用程序。使得在虚拟机中运行的操作系统能够与虚拟资源交互。

eoSyb6.png

Xen被设计成微内核的实现,其本身只是负责管理处理器和内存资源。在上面运行的所有虚拟机中存在一个特殊的虚拟机(虚拟机0),里面运行的是经过修改的支持半虚拟化的Linux系统,大部分的输入输出设备都交由这个虚拟机直接控制,而Xen本身并不直接控制他们。这样做可以最大程度地复用Linux内核的驱动程序。其次,Xen上面运行的虚拟机,即可以支持半虚拟化又可以支持全虚拟化。

4、hyper-V

它是微软的一款虚拟化产品,不可以超售内存但是可以超售硬盘。它的设计借鉴了Xen,采用了微内核的架构,兼顾了安全性和性能的要求。hyper-V底层的hypervisor运行在最高的特权级别下,微软将其称为ring -1(inter称其为rootmode),而虚拟机的操作系统内核和驱动运行在ring0,应用程序运行在ring3。

5、inter虚拟化

inter虚拟化技术其实是一系列硬件技术的集合,VMM软件选择利用各项技术,从而提高虚拟化软件的性能或者实现各种不同的功能。

eo9efg.png

大致可以分为三类:

  • 第一类是和处理器相关的,叫做VT-X,是实现处理器虚拟化的硬件扩展,这也是硬件虚拟化的基础。

  • 第二类是和芯片组相关的,称为VT-D,是从芯片组的层面为虚拟化提供支持,通过它,可以实现像直接分配物理设备给客户机的功能。

  • 第三类是输入输出设备相关的,主要目的是通过定义新的输入输出协议(VMDq),使新一代的输入输出设备可以更好的支持虚拟化环境。

------ 本文结束 ------
您的支持将鼓励我继续创作