【虚拟化】典型虚拟化系统

简介: 【虚拟化】典型虚拟化系统

1.4 典型虚拟化系统

针对上述三种主要的虚拟化实现方式,本节主要介绍在虚拟化历史上起重要作用、并且目前仍在广泛使用的虚拟化系统。通过介绍典型虚拟化系统,加深对虚拟化方法的理解。

1.4.1 典型虚拟化系统简介

1.VMware

斯坦福大学Mendel Rosenblum教授带领课题组研发了分布式操作系统Hive、机器模拟器SimOS和虚拟机监控器DISCO[插图]。基于这些技术积累,Mendel Rosenblum作为共同创始人在1998年创建了VMware公司,也是硅谷产学研结合的典型代表。由于当时x86架构在硬件上还不支持虚拟化,因此VMware公司采用动态二进制翻译技术与直接执行相结合的全虚拟化技术来优化性能,其虚拟机性能达到物理机的80%以上,CPU密集型的应用性能损失仅为3%~5%。

具体而言,虚拟机用户态代码可直接运行(包括虚拟8086模式),虚拟机内核态代码基于动态二进制翻译执行。虽然动态二进制翻译增加了开销,但保证了敏感指令在Hypervisor监控下执行,符合1.3.2节描述的波佩克与戈德堡虚拟化需求中第一条准则(资源控制),弥补了x86架构的虚拟化漏洞。同时,由于用户态代码直接运行,性能比采用纯二进制翻译的系统大为提高,取得了x86架构中虚拟化技术的突破,也被视为第一个成功商业化的虚拟化x86架构。

VMware公司在1999年发布了桌面虚拟化产品Workstation 1.0(见图1-6(a)),可以在一台PC上以虚拟机的形式运行多个操作系统,属于Type Ⅱ全虚拟化技术,Windows客户机操作系统不加修改就可以运行。2002年VMware公司发布了其第一代Type I虚拟化产品ESX Server 1.5(见图1-6(b)),采用服务器整合(Server Consolidation)的方式,支持将多个服务器整合到较少的物理设备中。通常可以将10台虚拟机整合到1台物理机中(10∶1),这种“一虚多”的虚拟化方式大幅提升了服务器资源利用率,降低了数据中心的硬件成本,因此得到了广泛应用。

2.Xen

2003年,剑桥大学Ian Pratt教授等发表了虚拟化领域的著名论文Xen and the art of virtualization[插图],提出了以半虚拟化技术为基础的代表性开源项目Xen。由于当时x86硬件还没有支持虚拟化,如果不修改客户机操作系统,采用二进制翻译或软件模拟的全虚拟化技术,则内存和I/O的虚拟化开销比较大。

以内存虚拟化为例,VMware采用影子页表技术,系统同时存在影子页表和客户机操作系统的原有页表,两套页表通过缺页异常(Page Fault)保持同步,引入了大量的同步开销。而Xen通过修改客户机操作系统,不再保留两套页表(消除同步开销),同时通过超调用主动更新页表。这样既保证了客户机操作系统可以快速访问页表,并自由于每次更新都需要经过Xen的监控,又保证了Hypervisor对内存资源的资源控制。

Xen属于Type I Hypervisor(见图1-7),Hypervisor直接运行于物理硬件上,为了提供功能丰富的设备模型,提出了基于Dom0和DomU的资源管理架构。Dom0是修改后的特权Linux内核,专门提供访问物理设备的特权操作。并行存在多个DomU,但均没有访问物理设备的权限(设备直通除外),在客户机操作系统中提供了各种设备的前端驱动(Frontend Driver),取代了原有的设备驱动(需要修改客户机操作系统)。

前端驱动通过I/O环(I/O Ring)和后端驱动(Backend Driver)共享数据(基于共享内存避免数据复制),前端驱动和后端驱动的控制面通过事件通道(Event Channel)进行通信,并通过授权表(Grant Table)控制各个虚拟机的访问权限(事件通道和授权表在图1-7中均未画出),后端驱动通过传统的设备驱动访问真实物理设备。

Xen在内存虚拟化和I/O虚拟化的性能提升方面取得了突破,不足之处是需要修改客户机操作系统内核。但随着Xen的广泛采用,基于前、后端驱动的架构也逐渐稳定,并形成了virtio标准化接口(如磁盘驱动virtio-blk、网络驱动virtio-net和GPU驱动virtio-GPU等),并被各主流操作系统(如Windows、Linux等)支持。因此,目前客户机操作系统已经原生支持virtio驱动接口,大部分情况下不再需要修改内核(但有时仍需要配置内核或安装驱动)。

3.KVM/QEMU

VMware和Xen均是在x86硬件不支持虚拟化的情况下,采用软件的手段弥补虚拟化漏洞,随着Intel和AMD等厂商相继提出了硬件支持的虚拟化扩展,基于硬件辅助的虚拟化技术应运而生,并由于其性能优势,逐渐占据主流地位。

KVM是Linux内核提供的开源Hypervisor,也是目前主流的虚拟化技术,拥有活跃的社区和论坛(KVM Forum)。KVM自内核2.6.20起被合并进Linux,作为Linux的一个内核模块,在Linux启动时被动态加载。KVM利用了硬件辅助虚拟化的特性,能够高效地实现CPU和内存的虚拟化。

事实上,KVM无法单独使用,因为它既不提供I/O设备的模拟,也不支持对整体虚拟机的状态进行管理。它向用户态程序(如QEMU)暴露特殊的设备文件/dev/kvm作为接口,允许用户态程序利用它来实现最为关键的CPU和内存虚拟化,但还缺少I/O虚拟化需要的设备模型(Device Model),而QEMU正好可以弥补这块功能。

QEMU是开源的软件仿真器,它能够通过动态二进制翻译技术来实现CPU虚拟化,同时提供多种I/O设备的模拟,因此可以作为低速的Type Ⅱ虚拟机监视器系统进行工作。

然而,二进制翻译这种模拟方法带来了巨大的性能开销,导致虚拟机运行缓慢。为此QEMU利用KVM暴露的/dev/kvm接口,以KVM作为“加速器”,从而极大地改善虚拟机的性能。

由于QEMU通常和KVM配合使用,因此整体称为QEMU/KVM,其架构如图1-8所示:QEMU通过打开设备文件/dev/kvm实现和KVM内核模块(kvm.ko)的交互。

在创建虚拟机时,QEMU会根据用户配置完成创建vCPU线程、分配虚拟机内存、创建虚拟设备(包括磁盘、网卡等)等工作。在QEMU中,虚拟机的每个vCPU对应QEMU的一个线程,当QEMU完成了所有初始化工作后,会通过ioctl指令进入内核态的KVM模块中,由KVM模块通过虚拟机启动或恢复指令(如x86的VMLAUNCH或VMRESUME指令)切换到虚拟机运行,执行虚拟机代码。

因此从宿主机操作系统的角度来看,虚拟机的每个CPU对应于系统中的一个线程,并且该线程受到QEMU的控制和管理。当CPU执行了特权指令或发生特定行为时,会触发虚拟机陷出事件退出到KVM,由KVM判断能否进行处理(比如对一个QEMU中模拟的I/O设备进行操作)。如果不能,则进一步返回到QEMU,由QEMU负责处理。

4.ACRN

随着万物互联时代的到来,虚拟化技术进一步扩展到移动终端、嵌入式和车载设备等资源受限的平台,一系列嵌入式、轻量级虚拟化被提出来,例如QNX Hypervisor、Jailhouse、Xvisor、PikeOS和OKL4等。

Linux基金会于2018年3月发布了开源的轻量级虚拟化平台ACRN[插图]。ACRN针对实时性和安全性(针对车载场景)进行了适配优化,并为关键业务提供了安全性隔离。ACRN通过GVT-g支持GPU虚拟化,可以在车载场景下共享GPU。

ACRN是Type I虚拟化架构(见图1-9),类似于Xen的Dom0,采用特权级的服务操作系统(Service OS)来管理物理I/O设备的使用;类似于Xen的DomU,用户操作系统(User OS)由ACRN Hypervisor进行创建和管理。设备分为前、后端驱动,两者之间的数据共享(环/队列)通过标准的virtio接口进行访问。

表1-2总结了上述4种典型虚拟化系统的特点,它们是2000年之后有代表性的虚拟化系统,至今仍广泛使用。IBM、微软等主流操作系统厂商的虚拟化产品、亚马逊和阿里巴巴等主流云计算提供商的新型虚拟化技术(如亚马逊Nitro Hypervisor、阿里神龙服务器)和VirtualBox、Xvisor等开源系统也在市场中占据重要地位,限于篇幅,本书不做介绍

1.4.2 openEuler的虚拟化技术

openEuler是一款开源操作系统[插图]。当前openEuler内核源于Linux,支持鲲鹏及其他多种处理器,是由全球开源贡献者构建的高效、稳定且安全的开源操作系统,适用于数据库、大数据、云计算和人工智能等应用场景。

同时,openEuler是一个面向全球的操作系统开源社区,通过社区合作打造创新平台,构建支持多处理器架构、统一和开放的操作系统。openEuler社区还孵化了A-Tune和iSula两个开源子项目。

A-Tune是智能性能优化系统软件,即通过机器学习引擎对业务应用建立精准模型,再根据业务负载智能匹配最佳操作系统配置参数组合,实现系统整体运行效率的提升;iSula是一种云原生轻量级容器解决方案,可以通过统一、灵活的架构满足ICT(Information Communications Technology,信息和通信技术)领域端、边与云场景的多种需求。

在全场景虚拟化方面,提出了基于Rust语言的下一代虚拟化平台StratoVirt,构建面向云数据中心的企业级虚拟化平台,实现了一套架构统一支持虚拟机、容器和Serverless三种场景。

openEuler社区版本分为LTS(Long-Term Storage,长期支持版本)和创新版本,版本号按照交付年份和月份进行命名。

  • (1)长期支持版本。发布间隔定为2年,提供4年社区支持。社区LTS版本openEuler 20.03于2020年3月正式发布。
  • (2)社区创新版本。每隔6个月openEuler会发布一个社区创新版本,提供6个月社区支持。

openEuler 20.09于2020年9月发布。openEuler目前提供了支持AArch64和x86_64处理器架构的KVM虚拟化组件,支持鲲鹏处理器和容器虚拟化技术,与开源QEMU、StratoVirt和Libvirt等共同构成了完整的系统虚拟化运行环境。

有关openEuler及虚拟化组件的安装、配置和管理请参考openEuler开源网站。本书后续章节将以openEuler为例详细描述系统虚拟化的原理和特性,本书第6章将从零开始动手构建一个精简版的StratoVirt,用于加深对虚拟化技术的理解。

表1-3列出了openEuler软件包提供的虚拟化相关组件。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
6月前
|
Linux Shell KVM
Kali系统基于qemu虚拟化运行img镜像文件
QEMU是一个由Fabrice Bellard创建的开源虚拟化器,能在多种平台上运行,如x86、ARM、PowerPC。它支持硬件仿真和虚拟化,允许在宿主系统上运行不同架构和OS,如Windows、Linux。QEMU特点包括硬件仿真、虚拟化支持(与KVM配合)、磁盘和网络仿真、快照及回滚功能。此外,文档还展示了在Kali Linux中安装和配置QEMU的步骤,包括下载、内存设置、源更新、软件安装、创建桥接脚本以及启动和管理虚拟机。
175 1
Kali系统基于qemu虚拟化运行img镜像文件
|
5月前
|
监控 安全 调度
【虚拟化】系统虚拟化的主要功能和分类
【虚拟化】系统虚拟化的主要功能和分类
367 0
|
5月前
|
Linux KVM 虚拟化
系统虚拟化基本概念与发展历史和趋势展望
系统虚拟化基本概念与发展历史和趋势展望
379 0
|
6月前
|
存储 安全 虚拟化
【专栏】虚拟化技术将物理资源转化为虚拟资源,提高资源利用率和系统灵活性。
【4月更文挑战第28天】虚拟化技术将物理资源转化为虚拟资源,提高资源利用率和系统灵活性。通过服务器、存储和网络虚拟化,实现数据中心管理优化、云计算基础构建、企业IT成本降低及科研教育领域创新。尽管面临性能、安全挑战,但技术融合与创新、行业标准制定和可持续发展将推动虚拟化技术未来发展,为各领域带来更多可能性。
191 0
|
虚拟化
虚拟化——成功解决使用ovirt安装虚拟机系统时不能正常引导安装
虚拟化——成功解决使用ovirt安装虚拟机系统时不能正常引导安装
|
存储 测试技术 网络安全
SDN 系统方法 | 8. 网络虚拟化
SDN 系统方法 | 8. 网络虚拟化
432 0
SDN 系统方法 | 8. 网络虚拟化
|
弹性计算 安全 Linux
CentOS7下KVM虚拟化环境中体验Aliyun Linux 2系统
CentOS7下KVM虚拟化环境中体验Aliyun Linux 2系统
342 0
CentOS7下KVM虚拟化环境中体验Aliyun Linux 2系统
|
存储 5G Linux
虚拟化C-RAN的概念证明验证 | 带你读《5G系统关键技术详解》之九
上节介绍了 C-RAN 中虚拟化实现的挑战。由于虚拟化主要是一个实现问题,在本节介绍的内容中,开发了一个 PoC 来验证虚拟化 C-RAN 的适用性。
虚拟化C-RAN的概念证明验证  | 带你读《5G系统关键技术详解》之九
|
Linux 虚拟化 网络虚拟化
虚拟化学习笔记-Linux 系统在虚拟机迁移中的技术难点
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396683 磁盘分区名被硬编码。
1575 0