网站首页 > 技术文章 正文
半虚拟化是一种重新编译客户机操作系统(OS)将其安装在虚拟机(VM)上的一种虚拟化类型,并在主机操作系统(OS)运行的管理程序上运行。与传统的完全虚拟化相比,半虚拟化可以减少开销,并提高系统性能。
虚拟化这一术语指的是创建资源的虚拟化而非实际(物理)版本,如操作系统(OS)、服务器、桌面、存储设备或网络。半虚拟化、完全虚拟化和部分虚拟化分别是三种类型的虚拟化。
虚拟化通过采用包括仿真、机器仿真、硬件和软件分区等技术将资源划分为多个执行环境。
在企业中,虚拟化通常用于以下目的:
?在计算机上同时运行多个操作系统(OS)。
?将大型系统分成更小的部分,以更有效地使用物理硬件。
?隔离在虚拟机(VM)中运行的程序,以使它们免受同一主机上另一虚拟机(VM)中发生进程的影响。例如,如果一个虚拟机(VM)发生故障,则其他虚拟机(VM)可以保持正常运行。
虚拟机(VM)等效于在另一个系统之上运行的计算机系统。虚拟机(VM)通过名为管理程序的软件程序创建和运行。
虚拟机监控程序分为两类:第一类是“裸机”虚拟机管理程序,其行为类似于操作系统(OS),并直接在系统的硬件上操作客户机虚拟机。第二类是“托管”虚拟机管理程序,其行为更像传统的软件应用程序。
什么是半虚拟化?
?通过允许操作系统识别虚拟机管理程序的存在,并直接与虚拟机管理程序通信,半虚拟化提供了比软件辅助的完全虚拟化更好的性能。半虚拟化还可以确保在将客户机操作系统(OS)安装到虚拟机中之前对其进行重新编译。但是一般来说,半虚拟化要求修改客户机操作系统(OS),以实现API,用于将虚拟机管理程序发送的命令交换到服务器。
?Xen/Xenserver可能是最知名的半虚拟化管理程序软件之一。在3.0版本中,Xen还开始在启用的Intel和AMD处理器上支持硬件辅助的完全虚拟化,以实现与不可修改的操作系统(OS)(例如Windows)的可操作性。Xen在4.7版中引入了实时补丁。而在4.10版本中,Xen增加了对半虚拟化硬件(PVH)的初始支持,并在2018年年中发布的4.11更新中增加了对半虚拟化硬件(PVH)的支持。
?半虚拟化硬件(PVH)致力于将最佳的半虚拟化技术与硬件虚拟机(HVM)方法相结合。在半虚拟化硬件系统的某些元素(包括网络和磁盘接口)的情况下,原生/硬件虚拟机(HVM)虚拟化遵循不同的过程,并为虚拟化访问系统硬件接口提供有限形式的硬件仿真。硬件虚拟机(HVM)接口现在可用于大多数系统硬件。
?广泛的支持:IBM LPAR、用于SPARC的Oracle VM(LDOM)和用于X86的Oracle VM(ODM)支持半虚拟化。
半虚拟化接口
与完全虚拟化不同,半虚拟化不需要模拟虚拟机的硬件。与其相反,它提供了到虚拟机的接口,该接口有点类似于基础硬件。其中包括Linux和Windows在内的大多数现代操作系统(OS)都支持一个或多个半虚拟化接口。
VirtualBox半虚拟化接口
VirtualBox可以公开半虚拟化接口,以在虚拟机中更准确、更高效地执行软件。并提供了三个半虚拟化接口:
Minimal(对于运行Apple Mac OS X客户机是必需的)、KVM(建议用于Linux客户机)、Hyper-V(建议用于Windows客户机)。
什么是完全虚拟化?
完全虚拟化允许未经修改的客户机操作系统在驻留在服务器上的虚拟机内独立运行。客户机操作系统不知道已被虚拟化。完全虚拟化有两种类型:软件辅助虚拟化和硬件辅助虚拟化。
(1)软件辅助虚拟化
?软件辅助的完全虚拟化通常涉及耗时的过程,例如二进制翻译。实现二进制翻译虚拟化的一个经典方法是采用陷阱和仿真方法。在这种方法中,系统管理程序对CPU进行配置,以使所有潜在的不安全指令都将产生陷阱或特殊情况,从而将控制权转移回系统管理程序。系统管理程序收到陷阱后,它将检查指令,并以安全的方式对其进行仿真,然后继续执行指令。
?二进制翻译虚拟化可以与直接执行结合使用,其中大多数代码直接在CPU上执行,只有需要翻译的代码才被真正被翻译。二进制翻译虚拟化的替代方法包括二进制补丁和完整的系统仿真。
?在软件辅助的完全虚拟化中使用的管理程序软件包括VMware工作站(32位客户机),VMWare Server、Virtual PC和Oracle VM VirtualBox(32位客户机)。
?但是,“托管”虚拟机管理程序VirtualBox采用了自己的虚拟化方法。通过支持Ring-0的内核驱动程序启动虚拟机时,VirtualBox会将主机系统设置为本地运行大多数客户机代码。但是VirtualBox也可以在需要时(例如在执行特权指令时)承担控制权。发生陷阱时,VirtualBox通过将请求路由到虚拟设备或将处理委托给客户机操作系统(OS)或主机操作系统(OS)来管理情况。VirtualBox还提供半虚拟化接口。
(2)硬件辅助虚拟化
?硬件辅助的完全虚拟化消除了对二进制翻译虚拟化或其替代方法的需要。硬件辅助虚拟化是依靠硬件扩展,以帮助虚拟机管理程序在处理器级别管理复杂任务。这包括X86虚拟化技术,例如英特尔虚拟化技术和AMD虚拟化处理器命令集扩展。
?支持硬件辅助虚拟化的裸机虚拟机管理程序软件包括VMware ESXi/ESX、Hyper-V、KVM(Linux内核的一部分,可以直接运行虚拟机)和Xen/Xenserver。
?支持硬件辅助的完全虚拟化的托管虚拟机管理程序软件包括VMware Workstation(仅64位的客户机),VirtualBox(仅64位的客户机))和VMware Server(已停用)。
VMWorkstation/Server支持Linux和Windows。
什么是部分虚拟化?
在部分虚拟化中,某些应用程序(而不是整个操作系统)在虚拟机中运行。部分虚拟化只能涉及少数应用程序。顾名思义,部分虚拟化模拟系统的物理硬件,并且只是部分模拟。
优点和缺点:半虚拟化vs.完全虚拟化vs.部分虚拟化
?半虚拟化旨在增强系统性能并最大程度地减少开销,从而防止虚拟机的使用不足。它非常有效地扩展。半虚拟化还通过减少完成操作所需的时间来简化单个集合或硬件上不同操作系统的操作。但是,不利的一面是,像Windows这样的未经修改的操作系统将无法在Xen等超虚拟化的虚拟机管理程序上运行,除非可能带有该操作系统的超虚拟化驱动程序。此外,根据工作负载的类型,半虚拟化相对于完全虚拟化的性能优势可能会有很大差异。
?全面虚拟化,硬件辅助技术的发展已经改变了游戏规则。硬件辅助虚拟化通过卸载许多耗时的任务而从软件辅助的完整虚拟化向前迈出了一大步,否则这些任务将由虚拟机管理程序或虚拟机管理器(VMM)执行。但是,作为一个次要限制,硬件辅助的完全虚拟化不支持处理器不兼容的旧硬件。
?部分虚拟化比完全虚拟化容易实施,并且可以很好地在多个用户之间共享资源。但是,由于难以预测特定应用程序已经使用了哪些功能,因此在需要向后兼容性或可迁移性的情况下,不能使用部分虚拟化。
半虚拟化的理想用途
半虚拟化技术在高效的系统利用率和可扩展性、节能和易于备份方面表现突出。半虚拟化最普遍的用途之一是将环境从测试系统中分离出来。
然而,还有许多其他应用程序也在继续利用其功能,其中包括服务器整合、数据迁移、灾难恢复,以及容量管理。
猜你喜欢
- 2024-11-01 Windows远程桌面连接时遇到的问题分享~
- 2024-11-01 Oracle 11g centos 无图形化(静默)安装
- 2024-11-01 JAVA 8 环境安装配置 java环境的安装配置
- 2024-11-01 Qt编译数据库插件通用步骤说明 qt编写插件
- 2024-11-01 面试经常被问如何进行JVM调优?阿里P6:很难吗?我都总结在这里了
- 2024-11-01 linux 常用性能优化参数及理解 linux 常用性能优化参数及理解实验报告
- 2024-11-01 JavaEE 项目常见错误汇总(进一步补充)
- 2024-11-01 网友测试Win10仅在192MB内存上运行,仅128MB内存会死机蓝屏
- 2024-11-01 Oracle、PostgreSQL与Mysql数据写入性能对比
- 2024-11-01 你可能疏忽的plsql和navicat连接Oracle注意点
你 发表评论:
欢迎- 632℃几个Oracle空值处理函数 oracle处理null值的函数
- 625℃Oracle分析函数之Lag和Lead()使用
- 614℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 608℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 606℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 598℃【数据统计分析】详解Oracle分组函数之CUBE
- 588℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 572℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- oracle 19cOCM认证有哪些内容(oracle认证ocm月薪)
- Oracle新出AI课程认证,转型要持续学习
- oracle 表的查询join顺序,可能会影响查询效率
- Oracle DatabaseAmazon Web Services正式可用,Oracle数据库上云更容易了
- Oracle 19.28 RU 升级最佳实践指南
- 汉得信息:发布EBS系统安装启用JWS的高效解决方案
- 如何主导设计一个亿级高并发系统架构-数据存储架构(三)
- Java 后端开发必看!工厂设计模式轻松拿捏
- ORA-00600 「25027」 「x」报错(抱错孩子电视剧 爸爸是武术 另一个爸爸是画家)
- 新项目终于用上了jdk24(jdk新建项目)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)