OS级虚拟化

OS级虚拟化是一个操作系统(OS)虚拟化范式,其中内核允许存在多个隔离的用户空间实例,称为容器LXCSolaris容器,AIX WPARS ,HP-UX SRP容器,Docker, DockerPodman ),区域,区域Solaris容器),虚拟私人服务器OpenVZ ),分区虚拟环境(VES),虚拟内核Draginfly BSD )或监狱FreeBSD监狱Chroot监狱)。从其中运行的程序的角度来看,这种情况可能看起来像真实的计算机。在普通操作系统上运行的计算机程序可以看到该计算机的所有资源(连接的设备,文件和文件夹,网络共享,CPU功率,可量化的硬件功能)。但是,在容器内部运行的程序只能看到分配给容器的容器内容和设备。

类似于Unix的操作系统上,此功能可以看作是标准Chroot机制的高级实现,它更改了当前运行过程及其子女的明显根文件夹。除隔离机制外,内核通常还提供资源管理功能,以限制一个容器活动对其他容器的影响。 Linux容器均基于Linux内核提供的虚拟化,隔离和资源管理机制,尤其是Linux名称空间CGroups

该术语容器虽然最广泛地指的是OS级虚拟化系统,但有时被模棱两可用来指的是与主机OS(例如Microsoft的Hyper-V容器)以不同程度的音乐会进行操作的Fuller Virtual Machine环境。自1960年以来,可以在虚拟化开发的时间表中找到一般的虚拟化概述。

手术

在个人计算机的普通操作系统上,计算机程序可以看到(即使它可能无法访问)所有系统的资源。他们包括:

该操作系统可能能够根据程序在运行的上下文中根据程序请求和用户帐户允许或拒绝对此类资源的访问。操作系统还可以隐藏这些资源,以便当计算机程序列举它们时,它们不会出现在枚举结果中。然而,从编程的角度来看,计算机程序与这些资源进行了互动,并且操作系统已经管理了互动行为。

通过操作系统虚拟化或容器化,可以在容器中运行程序,仅分配这些资源的一部分。一个期望看到整个计算机一旦运行在容器内的程序,只能看到分配的资源,并认为它们是所有可用的。可以在每个操作系统上创建几个容器,分配计算机资源的一个子集。每个容器可能包含任意数量的计算机程序。这些程序可能同时或分开运行,甚至可以相互交互。

容器化与应用程序虚拟化相似:在后者中,只有一个计算机程序放在一个隔离的容器中,并且该隔离仅适用于文件系统。

用途

操作系统级虚拟化通常用于虚拟托管环境中,在虚拟托管环境中,它可用于在大量相互分配的用户中安全地分配有限硬件资源。系统管理员还可以通过将其在单独的主机上移动到一台服务器上的容器中来合并服务器硬件。

其他典型场景包括将几个程序分开以将容器分开,以提高安全性,硬件独立性和添加的资源管理功能。但是,使用Chroot机制提供了改进的安全性,但是并不完美。能够实时迁移的操作系统级虚拟化实现也可以用于集群中节点之间的容器的动态负载平衡

高架

操作系统级虚拟化通常比完全虚拟化施加的开销少于全面虚拟化,因为OS级虚拟分区中的程序使用操作系统的正常系统调用接口,并且不需要进行仿真或在中间虚拟机中运行,具有完整虚拟化的情况(例如VMware ESXIQEMUHyper-V )和paraviratualization (例如Xen用户模式Linux )。这种虚拟化形式也不需要硬件支持才能进行有效的性能。

灵活性

操作系统级虚拟化不如其他虚拟化方法那么灵活,因为它不能托管与主机或其他访客内核不同的访客操作系统。例如,使用Linux ,不同的分布很好,但是其他操作系统(例如Windows)无法托管。使用变量输入系统的操作系统受虚拟化体系结构内的限制。包括云 - 服务器继电器分析在内的适应方法在这些应用程序中维护OS级虚拟环境。

Solaris部分克服了上面及其品牌区域功能所描述的限制,该功能提供了在Solaris 10主机中模拟较旧的Solaris 8或9版本的容器中运行环境的能力。 Linux品牌区域(称为“ LX”品牌区域)也可以在基于X86的Solaris系统上提供,为执行Linux应用程序的执行提供了完整的Linux用户空间;此外,Solaris还提供了“ LX”区域内安装Red Hat Enterprise Linux 3.x或Centos 3.X Linux分布所需的实用程序。但是,在2010年,Linux品牌区域被从Solaris中删除。 2014年,他们在Illumos中重新引入了开源Solaris叉,支持32位Linux内核

贮存

某些实现提供了文件级复印件(COW)机制。 (最常见的是,分区之间共享标准文件系统,而更改文件的那些分区会自动创建自己的副本。)这比块级复制更容易备份,更容易备份,更简单地缓存- 在全系统虚拟化器上常见的编写方案。但是,全系统虚拟化器可以与非本地文件系统一起使用,并创建和回滚整个系统状态的快照。

实施

机制 作业系统 执照 自从或之间积极开发 特征
文件系统隔离 复制写 磁盘配额 I/O率限制 内存限制 CPU配额 网络隔离 嵌套虚拟化 分区检查点和实时迁移 根特权隔离
chroot 大多数类似Unix的操作系统 随着操作系统而变化 1982 部分的 是的
Docker LinuxFreeBSDWindows X64 MacOS Apache许可证2.0 2013 是的 是的 不是直接 (自1.10以来) 是的 是的 是的 是的 仅在CRIU的实验模式下[1] (自1.10以来)
Linux-Vserver
(安全环境)
LinuxWindows Server 2016 GNU GPLV2 2001 是的 是的 是的 是的 是的 是的 部分的 ? 部分的
lmctfy Linux Apache许可证2.0 2013–2015 是的 是的 是的 是的 是的 是的 部分的 ? 部分的
LXC Linux GNU GPLV2 2008 是的 是的 部分的 部分的 是的 是的 是的 是的 是的 是的
奇异性 Linux BSD许可证 2015 是的 是的 是的 是的
OpenVZ Linux GNU GPLV2 2005 是的 是的 是的 是的 是的 是的 是的 部分的 是的 是的
Virtuozzo LinuxWindows 试用器件 2000 是的 是的 是的 是的 是的 是的 是的 部分的 是的 是的
Solaris容器(区域) Illumosopensolaris ),
Solaris
CDDL,
所有权
2004 是的 是(ZFS) 是的 部分的 是的 是的 是的 部分的 部分的 是的
FreeBSD监狱 FreeBSD蜻蜓BSD BSD许可证 2000 是的 是(ZFS) 是的 是的 是的 是的 是的 是的 部分的 是的
vkernel 蜻蜓BSD BSD许可证 2006 是的 是的 ? 是的 是的 是的 ? ? 是的
Sysjail NETBSD OpenBSD BSD许可证 2006–2009 是的 是的 ?
wpars AIX 商业专有软件 2007 是的 是的 是的 是的 是的 是的 是的 ?
ICORE虚拟帐户 Windows XP 免费软件 2008 是的 是的 ? ?
沙盒 视窗 GNU GPLV3 2004 是的 是的 部分的 部分的 是的
Systemd-nspawn Linux gnu lgplv2.1+ 2010 是的 是的 是的 是的 是的 是的 是的 ? ? 是的
涡轮 视窗 免费增值 2012 是的 是的 是的
RKT火箭 Linux Apache许可证2.0 2014–2018 是的 是的 是的 是的 是的 是的 是的 ? ? 是的

上面未列出的Linux容器包括:

  • LXD ,围绕LXC的替代包装,由Canonical开发
  • Podman,高级Kubernetes准备的无根的安全倒入Docker的替换,并支持多个容器图像格式,包括OCI和Docker Images
  • charliecloud,用于HPC系统上的一组容器工具
  • KATA容器MicroVM平台
  • Bottlerocket是一种基于Linux的开源操作系统,由Amazon Web服务专门构建,用于在虚拟机或裸机上运行的容器
  • CBL-MARINER是一种开源Linux发行版,由Microsoft Azure专门构建,类似于Fedora CoreOS

也可以看看