WatchStor.com — 领先的中文存储网络媒体 | 51CTO旗下网站

新闻资讯 > 私有云 > 正文
微软和Vmware遭遇Linux开源容器威胁
作者: WS 2017-06-05 10:06 【WatchStor】

六年前,大家将容器视为"每个系统管理员的梦想"。甚至如今Linux基金会的年度盛会也已经从"LinuxCon + CloudOpen + Embedded Linux会议"更名为"LinuxCon + ContainerCon"。

因为这十余年来,虚拟化已经成为企业级IT的最青睐的技术,云计算的兴起也起到了很好地带动作用。市场一旦变大,谁都想跳坑,只是要找准姿势--容器比全系统虚拟化要高效得多,以成本节约和性能见长。而代价是管理员必须学习新的安全和管理技能与工具。

不过,最近的一个重要的趋势有些始料未及--这两种截然不同的技术开始融合了。

传统的虚拟化是一种特殊的模拟器--模拟系统本身。大型机有大约40年的历史,可大家认为x86没有这种运气。一切"类型1","类型2管理程序"的东西都是营销话题--VMware为PC提供了一个接近本机速度的PC模拟器。这就是KVM到Hyper-V的工作方式。软件从BIOS到磁盘和NIC模拟整个PC,因此你可以运行一个其它的操作系统。

概念上很简单。难的是让它速度快。VMware的巨大创新在于本地运行用户的大部分代码,并找到了一种只捕获"ring 0"内核模式代码的方法,并通过其软件x86 CPU模拟器运行。后来,其他人找到了做同样事情的方式,之后英特尔和AMD将它们的芯片扩展到硬件--通过底层插入"ring -1"代码加速运行另一个操作系统下的ring 0代码。

但虚拟化的效率依然低。有黑客能够实现RAM过量使用,稀疏捆绑磁盘等等,但做得太过,性能受到了严重影响。系统管理员必须手动分区,而且虚拟机需要很长的启动时间,以限制快速的扩展。

在计算方面它也有些尴尬。50年来,动态内存管理和多任务操作系统的研发都是为了避免手动执行这项操作。

后来虽然有所改进,加了很好的管理工具等,但所有的PC操作系统都是以跑在它们自身专用硬件上为前提的。虚拟化仍然是一个"杂牌军"。

而容器提供隔离且无需模拟,这就是容器更高效的原因。普通PC操作系统被分成了两个部分--ring 0里的内核和驱动程序,以及ring 3里所有普通的非特权代码--GNU/Linux中的"GNU"部分--和你的应用程序。

单个内核凭借容器可以运行多个独立隔离的用户空间,它还可以全面控制所有容器里的所有进程。

没有模拟器,没有独立的内存空间或虚拟磁盘。单个内核用于一个内存空间里处理多个进程。一个容器是保存一个进程还是一千个都不重要。对于内核,它们只是加载的普通程序,可以在毫秒内暂停,复制,删除或重启。

但是它只有一个内核,所以你只能在Linux上运行Linux容器。一个核心操作系统只有一个副本,如果容器内的应用程序需要升级操作系统,那么电脑必须重启。

从根本上说,这些是不同的方案。那么,如何将它们融合在一起,或者将这两种完全不同的方法之间基本区别缩小呢?

管理程序不是一个管理程序

开源操作系统公司Canonical已经提出了类似的组合产品,但有一定的局限性。其LXD"容器管理程序"(containervisor)运行系统容器--从init系统往上都有Linux发行版。 这个"容器机"只共享内核,因此它们可以包含不同版本的Ubuntu--甚至完全不同的发行版。

LXD使用btrfs或zfs提供快照和写时备份,允许在主机之间进行快速地实时迁移。主机上的块设备--磁盘驱动器,网络连接几乎所有的东西--都可以用于特定的容器,并对RAM,磁盘,处理器和IO使用进行设置和动态更改。你可以改变一个容器在运行中CPU内核数量,或将容器定位到特定内核上。

虽然一些营销人员声称,这不是一个完全的管理程序,你无法运行非Linux容器。实际上,你只能运行在主机版Ubuntu内核上运行的发行版本。你甚至不能在运行不同Ubuntu版本的主机之间自由地迁移容器。此外,Linux内核里的所有全局限制(如IP地址等)都适用于主机上的所有容器。

但是,它确实提供了Xen或KVM类型的Linux-on-Linux虚拟化的大部分功能,效率也大大提高,资源和认证成本的开销有所降低。对于Canonical来说重要的是,它只允许Ubuntu服务器在已认证或支持现有企业版本(如RHEL或SLES)的软件上运行。

容器不是真正的容器

另一方面设法让虚拟机模仿容器什么呢?20世纪60年代,IBM创造了虚拟机管理程序,它还创建了两种不同的大型机操作系统,一种主要用于在虚拟机中托管其它操作系统,另一种则仅用于在虚拟机内运行。

前段时间,英特尔将Linux改良为类大型机的系统--一个专用的用户操作系统,另外还有一个专用于运行该操作系统的虚拟机管理程序。一个只运行专有Linux内核的虚拟机管理程序,和一个只运行于该虚拟机管理程序的内核,这样的组合让英特尔在这两方面省掉很多麻烦。虚拟机不兼容PC,没有BIOS或引导过程,只需要把内核复制到RAM上执行。不需要模拟显示器或其他IO,包括根目录文件系统在内的所有内容都可以通过简单,快速,纯虚拟化的网络连接进行访问。访客控制和容器一样是通过ssh完成。

结果是一个小型简易的虚拟机管理程序和小型虚拟机,瞬时开启,并且需要一小部分常规存储,几乎不涉及任何模拟。换句话说,像容器一样。

几年前,英特尔打起了带有误导性的"Clear Containers"旗帜。但容器并未席卷全球,相反发展缓慢,支持率倒一直在涨。首先,CoreOS将支持清除容器添加到了基于容器的操作系统里。之后,微软将其添加到Azure。现在Docker也支持它,这可能会加快普及的速度。

现在,Docker和CoreOS rkt容器可以在真正的的虚拟机上启动以获得隔离和更高的安全性,而Linux发行版供应商正在提供一个类似运行虚拟机管理程序的容器系统。这是一个无奇不有的时代,而我们现在看到一点就是,它真切地威胁到了VMware和微软。


标签:私有云 

了不起的IT经理
LecVideo
论坛与活动