什么是Linux容器和Linux虚拟机管理程序?


10

我查看了stackexchange网站,但找不到任何东西。我查看了Linux容器https://en.wikipedia.org/wiki/LXC以及hypervisor https://en.wikipedia.org/wiki/Hypervisor上的Wikipedia条目,但是对这两者的解释超出了一个人的范围既没有工作也不会理解。我还看到了http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun,但这也没有解释。

我玩过虚拟机,例如virtualbox。据我有限的理解,最初的想法可能是针对虚拟机的,也许是在沙盒环境中测试软件(当您无法购买/负担得起该机器时,拥有一个Solaris盒子,并且仍然对正在开发的软件有一些想法。适用于该目标硬件)。这可能也是它在云计算中取得飞跃的方式之一。问题很广泛,所以这就是我的提法-

有人可以解释一下管理程序和* nix容器是什么(如果可能的话,可以类推)?
* nix管理程序与虚拟机相同还是有区别?

Answers:


9

一个虚拟机(VM)是许多虚拟化技术相当的总称。

虚拟化技术有很多变体,但主要有:

  • 硬件级虚拟化
  • 操作系统级虚拟化

qemu-kvm并且VMWare是第一个示例。他们使用管理程序来管理运行完整操作系统的虚拟环境。例如,在qemu-kvm系统上,您可以使一个VM运行FreeBSD,另一个VM运行Windows,另一个VM运行Linux。

这些技术创建的虚拟机对于来宾而言就像孤立的单个计算机一样。这些都有一个虚拟的CPU,RAM,NIC,图形等,客人认为这是真正的文章。因此,可以在VM上安装许多不同的操作系统,并且它们“开箱即用”地工作,而无需修改。

尽管这非常方便,但是许多操作系统无需费劲即可安装,但它的缺点是虚拟机管理程序必须模拟所有硬件,这会降低速度。另一种选择是半虚拟化硬件,其中为来宾开发了一个新的虚拟设备和驱动程序,旨在在虚拟环境中提高性能。 为此qemu-kvm提供virtio设备和驱动程序的范围。不利的一面是必须支持客户操作系统。但是如果得到支持,性能收益将是巨大的。


lxc是操作系统级别虚拟化或容器的示例。在此系统下,仅安装了一个内核-主机内核。每个容器只是用户区进程的隔离。例如,Web服务器(例如apache)安装在容器中。就该Web服务器而言,唯一安装的服务器就是它自己。另一个容器可能正在运行FTP服务器。该FTP服务器不知道Web服务器的安装-只有它自己的。另一个容器可以包含Linux发行版的完整userland安装(只要该发行版能够与主机系统的内核一起运行)。

但是,在使用容器时,没有单独的操作系统安装,仅是单独的Userland服务实例。因此,您不能在容器中安装其他平台-Linux上没有Windows。

通常使用来创建容器chroot。这/将为要使用的进程创建一个单独的私有根()。通过创建许多单独的私有根,进程(Web服务器或Linux发行版等)在它们自己的隔离文件系统中运行。更高级的技术,例如cgroups可以隔离其他资源,例如网络和RAM。


关于哪种方法最好,长期辩论都各有利弊。

  • 容器较轻,因为没有为每个容器安装完整的操作系统。管理程序就是这种情况。因此,它们可以在规格较低的硬件上运行。但是,它们只能运行Linux guest虚拟机(在Linux主机上)。另外,由于它们共享内核,因此受损容器有可能影响另一个容器。
  • 虚拟机管理程序更加安全,并且可以运行不同的操作系统,因为每个VM中都安装了完整的操作系统,而来宾系统不知道其他VM。但是,这会在主机上利用更多的资源,该资源必须相对强大。

2

容器有点像chroot环境,除了它可以实现对用户空间的更完全隔离。它不提供真实的VM,而是提供虚拟操作系统。VM造成了多台计算机的错觉,其中每台计算机都可以像在裸机上一样运行真实,完整的操作系统。这里的“完整操作系统”包括一个内核。某些虚拟机(例如QEMU)甚至允许刺激不同种类的“裸机”架构。

容器反而造成了多个内核的错觉,每个内核都运行着一个完整的用户区。例如,您可以在一个容器中运行Debian,在另一个容器中运行Arch,因此从容器内部的角度与VM几乎相同。但是,您只能运行与一个实际内核(在本例中为Linux)兼容的OS用户域。这与实际的VM不同,在真实的VM中,您可以运行独立的内核,因此可以运行任何类型的操作系统。

因此,就资源而言,真正的虚拟机要比容器贵。如果在每个VM中不需要不同的内核,则最好使用一个容器。

还有其他虚拟化系统可以做类似于LXE的事情,例如VPS供应商广泛使用的openVZ。openVZ VPS是使用其主机OS内核的独立用户区。这就是为什么这样的VPS具有大量Linux风格,而没有别的功能的原因。它们必须与主机内核兼容。

OpenVZ和LXC样式的虚拟化称为操作系统级虚拟化

管理程序是管理虚拟机,诸如系统的VirtualBox,QEMU,或Xen的。一些虚拟机管理程序(例如Xen)在裸机上运行,​​不需要主机操作系统(尽管它们可能需要主机操作系统作为控制接口)。其他如VirtualBox和QEMU则在主机OS中运行。QEMU之类的工具可以模拟不同的机器架构。其他(例如VirtualBox)则不这样做(即,VM体系结构始终与真实主机相同)。模拟架构需要更多的资源,就像真实的VM需要的资源比容器更多。

系统管理程序样式的虚拟化称为平台级虚拟化

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.