📜  虚拟化 | Xen:半虚拟化

📅  最后修改于: 2021-10-22 03:31:27             🧑  作者: Mango

先决条件 – 虚拟化简介,虚拟化的机器参考模型
Xen是一个基于半虚拟化的开源管理程序。它是半虚拟化最流行的应用。 Xen 已扩展为与使用硬件辅助虚拟化的完全虚拟化兼容。它使执行客户操作系统的高性能成为可能。这可能是通过在执行需要大量处理的指令时消除性能损失以及通过修改由 Xen 执行的客户操作系统的部分来完成的,参考此类指令的执行。因此,这特别支持 x86,这是商品机器和服务器上最常用的架构。

图 – Xen 架构和来宾 OSnManagement

上图描述了 Xen 架构及其到经典 x86 特权模型的映射。基于 Xen 的系统由 Xen 管理程序处理,该管理程序以最高特权模式执行并维护客户操作系统对基本硬件的访问。来宾操作系统在域之间运行,代表虚拟机实例。

此外,具有对主机的特权访问权限并处理所有其他来宾操作系统的特定控制软件在称为域 0 的特殊域中运行。这是虚拟机管理器完全启动后唯一加载的域,并托管一个 HTTP 服务器提供虚拟机创建、配置和终止请求。该组件建立了共享虚拟机管理器 (VMM) 的主要版本,它是提供基础架构即服务 (IaaS) 解决方案的云计算系统的必要部分。

各种 x86 实现支持四种不同的安全级别,称为环,即

Ring 0,
Ring 1,
Ring 2,
Ring 3

这里,Ring 0 代表最高权限的级别,Ring 3 代表最低权限的级别。几乎所有经常使用的操作系统,除了OS/2,都只使用两个级别,即内核代码的Ring 0和用户应用程序和非特权OS程序的Ring 3。这为 Xen 提供了实现半虚拟化的机会。这使 Xen 能够控制不变的应用程序二进制接口 (ABI),从而允许从应用程序角度简单地转换到 Xen 虚拟化解决方案。

由于 x86 指令集的结构,一些指令允许在 Ring 3 中执行代码切换到 Ring 0(内核模式)。这样的操作是在硬件级别完成的,因此在虚拟化环境之间,它会导致 TRAP 或静默故障,从而阻止客户操作系统的一般操作,因为它现在在环 1 中运行。

这种情况基本上是由系统调用的一个子集发生的。为了消除这种情况,操作系统的实现需要修改,所有敏感的系统调用都需要用超级调用重新实现。在这里,超级调用是由 Xen 的虚拟机 (VM) 接口显示的特定调用,通过使用它,Xen 管理程序倾向于捕获所有敏感指令的执行,管理它们,并将控制权返回给客户操作系统提供的处理程序的帮助。

半虚拟化要求更改操作系统代码库,因此不能将所有操作系统都称为基于 Xen 的环境中的来宾操作系统。这种情况适用于硬件辅助虚拟化不能免费的地方,它允许在 Ring 1 中运行管理程序和在 Ring 0 中运行来宾操作系统。因此,Xen 在传统硬件和传统操作系统方面表现出一些限制。

实际上,由于无法访问它们的代码库,因此无法修改它们以安全地在 Ring 1 中运行,同时,主要硬件不支持以比 Ring 0 更特权的模式执行它们。 开源操作系统,如Linux 可以简单修改,因为它的代码是公开可用的,Xen 提供对虚拟化的全面支持,而 Windows 的组件基本上与 Xen 不兼容,除非有硬件辅助的虚拟化可用。由于新版本的操作系统被设计为虚拟化,问题正在得到解决,新硬件支持 x86 虚拟化。

优点:

  • a) Xen 服务器是基于开源 Xen 管理程序开发的,它结合了基于硬件的虚拟化和半虚拟化。操作系统和虚拟化平台之间的这种紧密耦合的协作使系统能够开发更轻巧、灵活的虚拟机管理程序,以优化的方式提供其功能。
  • b) Xen 支持高效平衡大型工作负载,捕获 CPU、内存、磁盘输入输出和网络输入输出数据。它提供了两种模式来处理这种工作负载:性能增强和处理数据密度。
  • c)它还配备了一种特殊的存储功能,我们称之为 Citrix 存储链接。这允许系统管理员使用来自巨头公司的阵列的功能 – Hp、Netapp、Dell Equal logic 等。
  • d)它还支持多处理器、一台机器到另一台机器的Iive迁移、物理服务器到虚拟机或虚拟服务器到虚拟机的转换工具、集中式多服务器管理、window和linux上的实时性能监控。

缺点:

  • a) Xen 在 linux 上比在 windows 上更可靠。
  • b) Xen 依赖第 3 方组件来管理驱动程序、存储、备份、恢复和容错等资源。
  • c)随着时间的推移,Xen 部署可能会给您的 Linux 内核系统带来负担。
  • d) Xen 有时可能会因高输入输出速率而导致资源负载增加,并可能导致其他虚拟机的饥饿。