KVM和LXC之间的区别

问题描述 投票:35回答:3

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

linux-kernel kvm lxc cgroups linux-namespaces
3个回答
30
投票

来自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 Containers和KVM虚拟化都具有某些优点和缺点,这些优点和缺点会影响通常应用这些技术的用例:

KVM虚拟化

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

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

来宾虚拟机与主机更改隔离,允许您在主机和虚拟机上运行同一应用程序的不同版本。 KVM还提供许多有用的功能,例如实时迁移。有关这些功能的更多信息,请参阅“Red Hat Enterprise Linux 7虚拟化部署和管理指南”。

Linux容器:

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

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

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

source


7
投票

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

KVM代表了自己的Linux内核中构建的虚拟化功能。正如之前的答案中已经说明的那样,它是类型2的管理程序,即它不是在裸机上运行。


6
投票

本白皮书介绍了虚拟机管理程序和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内核),因为它们不能以与容器相同的方式共享页面。这种高级容器共享意味着容器中的密度(可以在系统上运行的虚拟机的容器数量)比Hypervisor情况高出三倍。

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

© www.soinside.com 2019 - 2024. All rights reserved.