为什么说一个全新的操作系统是必要的?
注:此文是 OSv 官网介绍的文章,感觉对于理解 OSv 很有帮助,特翻译如下,原文地址
Today’s cloud-based applications run a heavyweight stack: the hypervisor, which divides the hardware resources among virtual machines; the operating system, which divides the virtual machine’s resources among applications; and the application server, which divides the application’s resources among the end users.
当今的云应用都运行在一个非常重的技术栈上: Hypervisor (虚拟机管理程序) ,要将硬件资源从虚拟机中分离; OS 操作系统,要将虚拟机从应用中分离; App Server 应用服务,要将应用资源从终端用户处分离。
Clearly, there is a lot of duplication going on. Each layer adds its own overhead in an attempt to abstract away and hide the problems caused by the lower layer. The result is inefficient and complex.
很明显,这中间有很多的重复。每一层都添加了额外的开销用来抽象和隐藏低一层所产生的问题。结果是低效和复杂的。
Enter OSv - the operating system for the cloud. On the one hand, designed and optimized to run on a hypervisor. On the other hand, designed to run an application stack without getting in the way. Designed for the cloud.
来到 OSv —— 专为云而生的操作系统。一方面,它是专为虚拟机管理而设计和优化的。另一方面,专为无障碍地运行整个应用(包括 OS 系统)。专为云设计。
It’s cloudy out there and we love it
它就在云上,我们喜欢它!
The public cloud era opens new horizons and opportunities for hi-tech businesses. Virtualization is dominant, resources are evergreen and agility is the key. The role of the OS in this form changes. The need to massively scale out forces developers to run multiple copies of identical Virtual Machines (VMs). VMs are the new process that needs to be lightweight, blazing fast, scalable and cheap. DevOps and PaaS solutions bypass the OS and allow developers to deploy their code directly to the cloud. All these goodies are rapidly penetrating the enterprise space with matching private cloud capabilities and virtual appliances that act as bridges to the public cloud
公有云时代为高科技企业展开了全新的视野和机会。虚拟机占到了主导地位,资源的快速响应和持久在线是关键。而操作系统 OS 的角色在这样的情况下也有所改变。大规模扩展的需求迫使开发人员同时要运行多个相同的虚拟机(VM)。 VMs 是一个需要轻量级、快速、可扩展和廉价的新流程。DevOps 和 PaaS 解决方案绕过操作系统,允许开发者将代码直接放到云上。所有这些优点都迅速渗透到企业空间中,并提供了与公有云相匹配的私有云功能和虚拟设备。
Virtualization 2.0
虚拟化 2.0
VMware had brought virtualization into the x86 world (recall that virtualization was introduced by IBM’s mainframes in the 70s). While VMware has done a fantastic job shifting the enterprise from physical to virtual, it stopped there. Amazon Web Services had wider vision; Amazon do not use terminology such as virtual machine. Amazon sees the entire user workload and solves scaling issues.
VMware 将虚拟化引入到了 x86 型机的世界(记得虚拟化是由IBM的大型机在上世纪70年代引入的概念)。虽然 VMware 做了一项出色的工作,将企业从物理机带入虚拟机世界,但它也就止步于此。 而 Amazon 网络服务则有更广阔的视野; Amazon 不使用诸如虚拟机之类的术语。 Amazon 看到了用户整个的工作负载并解决了缩放问题。
The right(tm) way - the new world is compose out of the smallest building blocks possible, running in clusters of multiple VMs. Common components are NoSQL databases, MemCacheD, front end webservers, backend webservers, etc. One single application is hosted within the virtual machine. That application uses a fraction of the guest OS capabilities - there is no hardware as the hypervisor owns that, there are no real users as this is a server, there are no other apps to schedule. Users pay for CPU cycles they don’t really need and need to maintain and tune a full blown generic OS.
正确(TM)的方式 —— 新的世界是由尽可能小的积木组成,运行在多个虚拟机集群中。 常见的组件是 NoSQL 数据库,缓存,前端 Web 服务器,后台服务器等,单个应用程序托管在虚拟机内。该应用程序使用了客户机操作系统功能的一小部分——没有 Hypervisor (虚拟机管理程序) 中的硬件,没有真正的用户,因为这是一个服务器,没有其他应用程序需要去调度。 所以用户不必为他们并不真正需要的 CPU 损耗付费,也不必维护和调整一个完整的通用操作系统。
Unlike new infrastructure such as hypervisors, NoSQL, PaaS, etc, the operating system hasn’t changed much. The same OS image that powers physical machines, from tiny embedded devices to room-size top500 supercomputers, is also used in the cloud.
不象新的基础设施如 Hypervisors 虚拟机管理程序,NoSQL,PaaS 等,操作系统并没有太大变化。 与之相同的实现了物理机功能的操作系统映像 (从小型嵌入式设备的房间大小的TOP500超级计算机) 也都用在了云上。
Typical cloud workloads run application servers using Java, Ruby, Python and JavaScript (node.js). This historical evolution is not ideal - Java, Linux and the hypervisor implement parallel/duplicated mechanisms for protection and abstraction. These mechanisms are redundant when combined, and impose a large overhead in terms of CPU and memory.
常见的云应用服务器使用 Java、Ruby、Python 和 JavaScript (node.js)。而这个历史演变过程实际并不理想 —— Java, Linux 和 Hypervisor (虚拟机管理程序) 为了保护和抽象而实现了并行或复制机制。这些机制在组合时是多余的,在 CPU 和内存方面强加了大量的开销。
The management efforts needed to maintain Linux are extensive. Thousands of packages, multiple security updates, complex tuning and specialists to manage. It doesn’t stop in the OS level. JVM workloads require manual tuning in a variety of ways and VM templates and instances needs to be software managed by tools like Puppet and Chef.
维护 Linux 所需的管理工作是广泛的。 数千个包、多个安全更新、复杂的配置和专用列表需要管理。它不会停止在操作系统级别。JVM 工作负载需要以各种方式手动调优,VM 模板和实例也需要用像 Puppet 和 Chef 这样的工具软件来管理。
These tools help to manage multiple OS configurations but if we’ll examine their operation on a single OS instance, we’ll discover that their roots go to the Unix OS of the 1970s. They’re based on pushing human configuration files and strings to /etc files. Typical OSs still do not have a fully automated API. OSv takes a simpler approach, with a common REST API for all configuration and data collection.
这些工具有助于管理多个操作系统配置, 但如果我们在一个操作系统实例上检查它们的操作,我们会发现它们根本是在 20 世纪 70 年代的 UNIX 操作系统上建立的, 它们是基于将人为的配置文件和字符串入到 /etc 文件目录中来实现的。 常见的操作系统仍然没有完全自动化的 API 。而 OSv 则是用一个简单的方法,用一个共同的 REST API 来完成所有的配置和数据采集。