KVM和Linux容器(LXC)有什么区别?对我来说,如果我们同时使用内核的“命名空间”和“控制组”功能,LXC也是在同一内核中创建多个虚拟机的一种方式。
答案 0 :(得分: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还提供许多有用的功能,如live 移民。有关这些功能的更多信息,请参阅Red Hat “企业Linux 7虚拟化部署和管理指南”。
Linux容器:
当前版本的Linux容器主要是为了设计的 支持隔离一个或多个应用程序,并计划实施 在不久的将来完整的操作系统容器。你可以创建或销毁 容器非常容易,维护方便。
每个容器中都可以看到系统范围的更改。例如,如果你 升级主机上的应用程序,此更改将适用于 所有运行此应用程序实例的沙箱。
由于容器是轻量级的,因此可以运行大量容器 同时在主机上。理论最大值为6000 容器和12,000个绑定挂载的根文件系统目录。 此外,容器创建速度更快,启动时间也更短。
答案 1 :(得分:7)
LXC ,或Linux容器是基于轻量级和便携式操作系统的虚拟化单元,它们共享基本操作系统的内核,但同时充当具有自己的文件系统,进程和TCP /的隔离环境IP堆栈。可以将它们与FreeBSD上的Solaris Zones 或 Jails 进行比较。由于没有虚拟化开销,因此它们的性能远远低于虚拟机。
KVM 表示在自己的Linux内核中构建的虚拟化功能。正如前面的答案中已经说明的那样,它是类型2的管理程序,即它不是在裸机上运行。
答案 2 :(得分:5)
本白皮书介绍了虚拟机管理程序和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