简介

欢迎来到用户模式Linux

用户模式Linux是第一个开源虚拟化平台(1991年首次发布),也是第二个用于x86 PC的虚拟化平台。

UML与使用虚拟机有什么不同

我们已经开始假设虚拟化也意味着某种程度的硬件模拟。事实并非如此。只要虚拟化包为操作系统提供了操作系统可以识别的设备,并且有驱动程序,这些设备就不需要模拟真实的硬件。今天的大多数操作系统都内置了对一些只在虚拟化下使用的“假”设备的支持。用户模式Linux将这个概念发挥到了极致——没有一个真正的设备在眼前。它是100%人工的,或者如果我们用正确的术语100%半虚拟的。所有UML设备都是抽象的概念,它们映射到主机提供的某些东西上——文件、套接字、管道等。

UML和各种虚拟化包之间的另一个主要区别是,UML内核和UML程序的操作方式有明显的不同。UML内核只是一个在Linux上运行的进程——和其他程序一样。它可以由非特权用户运行,并且不需要任何特殊的CPU功能。然而,UML用户空间有点不同。主机上的Linux内核帮助UML拦截运行在UML实例上的程序试图执行的所有操作,并使UML内核处理它的所有请求。这与其他虚拟化包不同,后者在客户内核和客户程序之间没有任何区别。这种差异导致了UML相对于QEMU的许多优点和缺点,我们将在本文档的后面介绍。

UML 优点

  • 如果用户模式Linux内核崩溃,您的主机内核仍然很好。它不会以任何方式加速(vhost, kvm等),也不会试图直接访问任何设备。事实上,这是一个和其他过程一样的过程。

  • 您可以以非root用户的身份运行用户模式内核(您可能需要为某些设备安排适当的权限)。

  • 您可以为特定任务运行一个非常小的VM,占用最小的内存(例如32M或更少)。

  • 您可以在与主机内核隔离的情况下获得任何“内核特定任务”(如转发、防火墙等)的极高性能。

  • 您可以在不破坏任何东西的情况下使用内核概念。

  • 您不会被“模拟”硬件所束缚,因此您可以尝试一些奇怪而奇妙的概念,这些概念在模拟真实硬件时很难得到支持,例如时间旅行和使您的系统时钟依赖于UML所做的事情(对于测试之类的事情非常有用)。

UML 缺点

  • UML使用的系统调用拦截技术使得它在任何用户空间应用程序中都变得更慢。虽然它可以像大多数其他虚拟化包一样执行内核任务,但它的用户空间很慢。根本原因是UML创建新进程和线程的成本非常高(大多数Unix/Linux应用程序都认为这是理所当然的)。

  • UML目前是严格的单处理器。如果您想运行一个需要许多cpu才能运行的应用程序,那么这显然是一个错误的选择。