常见的虚拟化架构
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,并将它的视频显示映射回宿主机显示屏。
关于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在系统硬件和虚拟机之间插入一个虚拟化层,将系统硬件转换为一个逻辑计算资源池,然后动态地分配给任何操作系统或者是应用程序。使得在虚拟机中运行的操作系统能够与虚拟资源交互。
Xen被设计成微内核的实现,其本身只是负责管理处理器和内存资源。在上面运行的所有虚拟机中存在一个特殊的虚拟机(虚拟机0),里面运行的是经过修改的支持半虚拟化的Linux系统,大部分的输入输出设备都交由这个虚拟机直接控制,而Xen本身并不直接控制他们。这样做可以最大程度地复用Linux内核的驱动程序。其次,Xen上面运行的虚拟机,即可以支持半虚拟化又可以支持全虚拟化。
4、hyper-V
它是微软的一款虚拟化产品,不可以超售内存但是可以超售硬盘。它的设计借鉴了Xen,采用了微内核的架构,兼顾了安全性和性能的要求。hyper-V底层的hypervisor运行在最高的特权级别下,微软将其称为ring -1(inter称其为rootmode),而虚拟机的操作系统内核和驱动运行在ring0,应用程序运行在ring3。
5、inter虚拟化
inter虚拟化技术其实是一系列硬件技术的集合,VMM软件选择利用各项技术,从而提高虚拟化软件的性能或者实现各种不同的功能。
大致可以分为三类:
-
第一类是和处理器相关的,叫做VT-X,是实现处理器虚拟化的硬件扩展,这也是硬件虚拟化的基础。
-
第二类是和芯片组相关的,称为VT-D,是从芯片组的层面为虚拟化提供支持,通过它,可以实现像直接分配物理设备给客户机的功能。
-
第三类是输入输出设备相关的,主要目的是通过定义新的输入输出协议(VMDq),使新一代的输入输出设备可以更好的支持虚拟化环境。