49

KVM 和 Linux 容器 (LXC) 有什么区别?在我看来,如果我们同时使用内核的“命名空间”和“控制组”功能,LXC 也是在同一个内核中创建多个 VM 的一种方式。

4

3 回答 3

37

文本来自https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7-Beta/html/Resource_Management_and_Linux_Containers_Guide/sec-Linux_Containers_Compared_to_KVM_Virtualization.html版权所有 © 2014 Red Hat, Inc .:

Linux 容器与 KVM 虚拟化的比较

KVM 虚拟化和 Linux 容器之间的主要区别在于,虚拟机需要单独的内核实例才能运行,而容器可以从主机操作系统部署。这显着降低了容器创建和维护的复杂性。此外,减少的开销使您可以创建大量具有更快启动和关闭速度的容器。Linux 容器和 KVM 虚拟化都具有影响这些技术通常应用的用例的某些优点和缺点:

KVM 虚拟化

KVM 虚拟化让您可以启动不同类型的完整操作系统,甚至是非 Linux 系统。但是,有时需要复杂的设置。虚拟机是资源密集型的,因此您只能在主机上运行有限数量的虚拟机。

运行单独的内核实例通常意味着更好的分离和安全性。如果其中一个内核意外终止,它不会禁用整个系统。另一方面,这种隔离使虚拟机更难与系统的其余部分进行通信,因此必须使用多种解释机制。

来宾虚拟机与主机更改隔离,这使您可以在主机和虚拟机上运行同一应用程序的不同版本。KVM 还提供了许多有用的功能,例如实时迁移。有关这些功能的更多信息,请参阅 Red Hat Enterprise Linux 7 Virtualization Deployment and Administration Guide。

Linux 容器:

当前版本的 Linux Containers 主要设计用于支持一个或多个应用程序的隔离,并计划在不久的将来实现完整的 OS 容器。您可以非常轻松地创建或销毁容器,并且它们易于维护。

在每个容器中都可以看到系统范围的更改。例如,如果您升级主机上的应用程序,此更改将应用​​于运行此应用程序实例的所有沙箱。

由于容器是轻量级的,它们中的大量可以在主机上同时运行。理论最大值是 6000 个容器和 12,000 个根文件系统目录的绑定挂载。此外,容器的创建速度更快,启动时间短。

资源

于 2014-05-13T10:25:14.383 回答
10

本白皮书介绍了虚拟机管理程序和 linux 容器之间的区别以及容器背后的一些历史 http://sp.parallels.com/fileadmin/media/hcap/pcs/documents/ParCloudStorage_Mini_WP_EN_042014.pdf

论文摘录:管理程序的工作原理是让主机操作系统模拟机器硬件,然后在该硬件之上启动其他虚拟机 (VM) 作为来宾操作系统。这意味着来宾和主机操作系统之间的通信必须遵循硬件范例(可以在硬件中完成的任何事情都可以由主机对来宾完成)。

另一方面,容器虚拟化(如图 2 所示)是操作系统级别的虚拟化,而不是硬件级别的虚拟化。因此,每个客户操作系统都与主机共享相同的内核,有时甚至是操作系统的一部分。这种增强的共享给容器带来了很大的优势,因为它们比虚拟机管理程序来宾更精简和更小,这仅仅是因为它们与主机共享更多的部分。它还为他们提供了巨大的优势,即来宾内核在容器之间共享资源方面效率更高,因为它将容器视为要管理的简单资源。

示例:容器 1 和容器 2 打开同一个文件,主机内核打开文件并将其中的页面放入内核页面缓存。然后将这些页面根据需要分发给容器 1 和容器 2,如果两者都想读取相同的位置,则它们都将获得相同的页面。在 VM1 和 VM2 做同样的事情的情况下,主机打开文件(在主机页面缓存中创建页面)但随后 VM1 和 VM2 中的每个内核都做同样的事情,这意味着如果 VM1 和 VM2 读取相同的文件,现在有三个单独的页面(一个在主机、VM1 和 VM2 内核的页面缓存中)仅仅是因为它们不能像容器那样共享页面。

总结:KVM是一个基于仿真虚拟硬件的Hypervisor。另一方面,容器基于共享的操作系统并且更精简。但这对我们使用单个共享内核的容器构成了限制,因此无法在相同的共享硬件上运行 Windows 和 Linux

于 2014-08-05T01:06:11.977 回答
10

LXC或 Linux 容器是基于轻量级和可移植操作系统的虚拟化单元,它们共享基本操作系统的内核,但同时充当具有自己的文件系统、进程和 TCP/IP 堆栈的隔离环境。它们可以与FreeBSD 上的 Solaris ZonesJails进行比较。由于没有虚拟化开销,它们的性能比虚拟机好得多。

KVM代表了内置在自己的 Linux 内核中的虚拟化能力。正如前面的答案中已经说过的,它是类型 2 的管理程序,即它不是在裸机上运行的。

于 2015-05-26T13:01:23.063 回答