云计算是什么
?
【科普】
[日期:2014-04-16] | 来源:中国云计算 作者:中国云计算 | [字体:大 中 小] |
老叟发现,即使是一些搞计算机的人,也不了解
“
云
”
是什么。于是,俺卖车之余就写了一篇科普:
到底什么是云
(云计算)
有很多关于云的介绍。然而,大都是用比喻的形式来介绍云的属性。比较有名的比喻是餐馆、和电网。但是,云毕竟不是餐馆、或电网,如果只有这些比喻,仍然不清楚到底什么是云。
本文试图不用任何比喻,直接从普通的PC电脑入手,逐步递进,来介绍云的构成。你只需要具有初中文化,并对CPU、内存、硬盘等计算资源有些基本的概念,就可以了。
一、传统的电脑
当你启动一台个人电脑
(PC
机
)
时,电脑所做的事,就是把硬盘上的操作系统
(OS
,本文以微软的
Windows 8
为例,但也可以是
Unix
、
Linux
等等
)
的一些基本的控制程序调入到电脑的内存中去。一旦这个过程完成,这台电脑就完全由
Windows
控制了。你所谓的电脑,其实就是你在上面工作的
Windows
。
对
Windows
而言,它所赖以运行的,只有电脑的处理器
(CPU)
、内存、和存储设备
(
硬盘
)
这三个要素
(
或者说三项资源
)
。电脑还有机箱,但那只是起着封装、固定、再加供电的作用
;
电脑还有主板,但那只是起着电脑内各主要部件通信连接的作用。当然,你可能还需要网络连接,
但那只是一项外在资源,不是
Windows
本身所必需的。作为
PC
机,你还需要键盘和显示器等外部设备来直接在机器上工作。如果是服务器,则不需要键盘和显示器,一切都可以是远程登录访问。
所以,一台电脑实质上就是在
CPU
、内存、和硬盘上运行的
Windows
。当打开
Windows
的任务管理器,你就会发现,
CPU
和内存大部分是闲置的。特别是
CPU
,其利用率通常不到
10%
。
Windows
在硬盘占有的空间一般就是几个
GB
。
也就是说,一个
Windows
独占了电脑的全部资源,而大部分资源又都是闲置的。
那么,有没有这种可能:不让一个
Windows
单独控制一台机器,而是在一台机器上安装多个操作系统,并且让它们同时地运行
?
有,最好的方案就是虚拟化
--
二、虚拟化
当安装一台电脑的时候,你不再是安装普通的
Windows
,而是安装一个资源调度程序,也叫
“
监控程序
” (Hypervisor)
。这个监控程序很小。取决于哪个厂家的产品,小的只有
100
多兆字节,
大的也只有几个
G
的字节。
监控程序安装完成之后,会得到一个工作界面,你通过这个界面设置一个网络连接
(IP
地址
)
。这个界面很简单,多数情况下你可以通过浏览器从别的机器上访问这个界面。
前面说了,一个
Windows
机器,实质上就是一个由
CPU
、内存、和硬盘组成的一个组合体。通过监控程序的界面,你可以建立多个组合体。每个这种组合体,就是一台仿真的电脑。当监控程序创建一个仿真的电脑时,它实际上只是创建了两个文件:一个是关于这个组合体的配置信息
(
被分配了多少
CPU
、多大内存、多大的硬盘
);
另外一个文件,这个仿真电脑的
“
硬盘
”
,这个仿真的
“
硬盘
”
实际上就是一个封装的文件
(
在有些情况下,也可以是几个文件
)
。
当你点击
“
开机
”
来启动这个仿真的电脑的时候,监控程序开始实际为它分配
CPU
和内存、并且启动它。当然,这
“
台
”
仿真的电脑在第一次启动的时候,是没有安装任何操作系统的
“
裸机
”
,那个封装的文件也是空的,这时你可以进行正常的系统安装
(
比如
安装
Windows)
。
对
Windows
而言,它不知道真假,它反正能够得到所需要的
CPU
、内存、和硬盘就可以正常运行了,一切都和真的机器一样。对监控程序而言,这个
Windows
不是直接和硬件打交道的,一切资源都需要监控程序来调度和分配,所以这
“
台
”Windows
机器
(
组合体
)
就是一台虚拟的机器,简称
VM
。
这种通过监控程序把硬件的机器、同操作系统分开的过程,就是虚拟化。
当监控程序创建一个VM时,它就给VM配置资源的大小,比如2个1GHz的CPU、2GB内存、和100GB硬盘。这样,这个VM(Windows)就以为自己拥有了双核的1GHz CPU、2GB内存、和100GB 硬盘。但这只是Windows所能使用资源的上限。Windows在实际运行中并不需要消耗那么多,监控程序只是给它按需分配实际消耗的资源,比如 0.1GHz CPU、0.5GB 内存、和20GB 硬盘。表现在实际的硬件消耗上,这20GB的存储量,就是实际硬盘上的那个20GB大小的封装文件。
一台电脑,可以通过监控程序创建几个、几十个、甚至上百个
VMs
。比如,一台拥有
16GB
内存的
PC
机,你可以创建
10
个
VMs
,给每个
VM
分配
4GB
内存。看似总共分配出了
40GB
的内存,但
PC
机的实际内存只有
16GB
。
通过虚拟化,一个单台的硬件机器可以同时运行多个虚拟的机器
(VMs);
更重要的是,虽然一个虚拟的
Windows
的系统盘
(C
盘
)
上有成千上万个系统文件,但它表现在硬件的存储设备
(
硬盘
)
上,只是一个或几个打包的大文件。当你把这一个或几个大文件移到别的地方,整个
VM
就移走了。
三、配载调配和平衡
如果虚拟化的不只是一台机器,而是
A
、
B
两台,并且两台机器都共享一个大的存储设备
(
硬盘阵列、或硬盘库
)
,那会怎样
?
前面说了,一个
VM
就是一个
(
或几个
)
大文件。如果这个大文件放在共享的存储设备上,
A
、
B
两台机器上的监控程序都能看到这个
VM
。那么,这个
VM
既可以在
A
机器上运行、也可以在
B
机器上运行。所谓在哪台机器上运行,就是通过那台机器上的监控程序,把
Windows
启动到其分配的虚拟内存就是了。
假设
VM1
到
VM10
等
10
个
VMs
在
A
上运行,
VM11
到
VM20
等
10
个
VMs
在
B
上运行。现在要对
A
进行关机维护,那么它上面的
10
个
VMs
就可以在线移动到
B
上,而且所有
10
个
Windows
都保持不间断,用户根本意识不到变化,因为所移动的东西,只不过是内存中的数据而已。
这个移动不是由
A
、或
B
指挥的,而是由装在另外一个
C
机器上的专门的数据中心管理软件指挥的。
这个数据中心管理服务器
C
,
可以监控
A
和
B
的运行状态,一旦出现资源紧张,它可以自动触发在线迁移,把一个或多个
VM
移到对方的机器上运行。当然,这里需要一个事先设定的阈值标准。
如果是创建新的
VM
,
C
可以自动决定把新的
VM
放在哪台机器上。
这里只是假设
A
、
B
两台机器。实际上,
C
可以管理几十、几百、上千台机器。共享的存储设备也不止一套,可以是多套
(VMs
也可以在不同的存储设备间移动,只是移动的时间较长而已
)
。
C
通过各机器上的监控程序,间接管理所有的资源。
至此,云的雏形出现了,但还不是云。因为,所有的这些管理和控制,都还是数据中心自己的职责。用户还无法对所需要的资源进行自主管理。
四、云的最后形成
数据中心服务器
C
可以不止一个,可以有多个。它们创建和管理的一些
VMs
也许可以供外界的用户访问
(
比如网站
)
,但用户无法直接管理
VMs
,更无法管理
C
提供的服务、或资源。
1.
资源池:
现在,再加一个更上层的服务器
D --
由它来管理一个或多个
C!
这个
D
,就是云服务器了
:
C
把各自管理的资源提交给
D
,比如,一个或几个
C
总共向
D
提供了
5000GHz CPU
、
3TB
内存、
3PB
存储空间。
D
再把所有资源组成一个大池子,叫做
“
资源池
”
。
这个池子的大小是可以动态变化的。当
C
控制的资源增加了、升级了,
C
可以动态向这个池子贡献资源,这个庞大的资源池也就随之增长得更大。
2.
二次虚拟:
为了便于分配和管理,
D
把庞大的资源池划分成多个子集
(
小组
)
,这每个子集就相当一个虚拟的数据中心
(
或叫
“
计算中心
”)
。
D
再从各个
“
计算中心
”
里提取计算资源,创建一个个用户环境。每个用户环境就相当于一个
“
机房
”
,这个
“
机房
”
包括
CPU
、内存、存储等资源。
D
同时还给用户提供登陆访问的接口。用户通常用浏览器来登录这个接口。
作为用户,当你用浏览器连接到
D
提供的访问界面,就可以建立一个账户,并且输入你的信用卡号。这时,云服务器
D
就可以根据你的要求,提供所需要的
“
机房
”
。
这个
“
机房
”
的大小,完全根据用户的需求而定,比如可以包括
50GHz CPU
、
100GB
内存、和
2TB
硬盘。这些
“
机房
”
的资源,都是由云服务器
D
从它的那些虚拟的
“
计算中心
”
里抓给你的。
通过层层抽象和虚拟,在每个
“
机房
”
里,你看不到、也不用去关心每个计算资源实际来自哪里。
3.
用户的自主管理:
当你作为用户拥有了一个
“
机房
”
,你就可以随意干你所需要的的事:
建立多台虚拟的机器
(VMs)
。云商在你的机房里已经提供了很多现成的
VM
模板,有各种
Windows
、有各种
Linux
、等等,你可以随意拷贝过来、定制自己的配置、启动,就可以了。当然,你也可以自己从初始安装。
4.
连接到网络:
在本文开头提到,
网络也是计算资源。在谈及单个
VM
的时候可以暂不谈网络,但是在连接
VM
的时候就需要了。云在给你提供一个
“
机房
”
的时候,它已经就按需求给你提供了虚拟的交换机、路由器、
IP
地址池等等。这些网络资源,同样也是由数据中心服务器
C
提供给云服务器
D
的
;C
则是从所管理的各个监控程序得到
;
各监控程序管理着实际的硬件网卡。
从用户的角度,各个
“
机房
”
是完全独立的,彼此是不可见的。你在自己的
“
机房
”
里干任何事都干扰不了别人的
“
机房
”
,别的
“
机房
”
也干扰不了你。
这就是云。下面还要介绍一些分类。
这里再回溯一下这个云“机房”的来源:
“
机房
”<--
云服务器
D
管理的虚拟的
“
计算中心
”<--
数据中心服务器
C
提供给
D
的资源池
<-- C
动态管理
A
、
B
两台
(
或多台
)
机器所连接的计算资源
<-- A
、
B
两台
(
或多台
)
电脑通过监控程序的虚拟化
<-- PC
机
在实际配置中,
PC
机一般为企业级的服务器所取代,比如联想的
System X
服务器。但这些服务器和
PC
机没有本质区别,性能和可靠性不同而已。
五、云的种类
这里描述的云的建立过程和结构,只是一种比较普通和容易理解的形式。由于技术的不同、实现方式的不同,各家云的实现方式和结构会有很大的不同。但是,一些基本的概念是相同的,其共同的核心要点包括:
一定要有资源池。把分散的计算资源集中到大的资源池里,以方便统一管理和分配。例如前面讲的D所管理的资源池。
按需分配、自助服务。用户实际消耗多少资源,就被分配多少资源
;
用户对自己得到的资源能够自助管理。例如前面讲的
“
机房
”
。
灵活的资源变化。随便撤掉一台硬件的电脑,其上面的信息和活动会自动转移到别处去
;
随便增加一台电脑,其资源会随时添加到资源池里去。所有这些增减,用户根本意识不到。例如前面讲的
“
配载调配和平衡
”
。
一定要有记账系统。用户消耗了多少资源,如何给这些资源计费,系统有详尽的信息采集和报告,以便对用户收费
(
即使是免费,也得有详细的记账
)
。例如前面提到用户输入信用卡,就是以记账为前提。
在组建云的技术上,说到底,就是用软件产品
(
如前面提到的
C
和
D
,并通过监控程序
)
来管理、组织、和分配经过抽象或虚拟的硬件计算资源。除了个别企业用自己的技术建设、和服务外,现在常见的云技术提供者主要有:
VMware
、微软、
Citrix
、和
OpenStack
等。前两者是完全的商业产品
;Citrix
公司在监控程序上采用的是开源的
Xen;OpenStack
则完全是开源免费的,它的监控程序主要采用开源的
KVM
和
Xen
,也可以是其它的开源软件。
按照服务的对象和范围,云可以分为三类:
私有云:建一个云,如果只是为了单位(企业或机构)自己使用,就是私有云。就前面提到的“机房”而言,每个“机房”只是为本单位的不同部门、或不同用途而设立的。
公众云:如果云的服务对象是社会上的客户,就是公众云。前面提到的
“
机房
”
可以是任何社会上的企业、单位、或个人。
Amazon
公司的
AWS
是现在世界上最大的公众云。其它公众云提供商还有
Google
、
Salesforce
、苹果的
iCloud
等等。
混合云:如果一个云,既是为单位自己使用,也对外开放资源服务,就是混合云。有时,把两个或多个私有云的联合,也叫混合云。
按照服务的模式,云又分为如下几类:
基础设施即服务(IaaS):作为一个用户,如果得到了前面的“机房”,那你就拥有了信息系统的基础设施,你可以安装多个服务器,你可以配置自己的网络。由于这个基础设施完全是云所提供的服务,所以叫“基础设施即服务”。
平台即服务
(PaaS)
:你不一定需要
“
机房
”
里的所有服务,比如说你只需要
“
机房
”
里的一个服务器作为公司软件开发的平台,那么,你得到的这个平台也是以服务的形式出现的。
软件即服务
(SaaS)
:你甚至都不需要管理一整个服务器,你不关心什么服务器、也不关心服务器是怎么工作的,你只需要一种软件的功能。比如,你只想管理公司的客户信息
(CRM)
,你就从云商那里得到完备的
CRM
软件功能。所以,软件也是服务。
其它
(XaaS)
:很多人使用
iCloud
,实际上就用
iTunes
在
“
机房
”
里开了一个用户帐号,这个账号给你提供
5GB
的免费存储空间,如果还需要更大一点,你就需要输入信用卡号了。这是
“
存储即服务
”
。你还可以把
PC
机放在云上
(
当然,你需要有一个小盒子能连到云上,这个小盒子还能连接显示器、键盘、鼠标等
)
,这就是
“
桌面即服务
”
。
“
桌面即服务
”
有另外一个时髦的叫法,即
“
云桌面
”
。。。总之,都是
XaaS
,你可以试着把
X
换成任何东西。
你只要理解了前面说的
“
机房
”
,就可以理解它能提供的各式的服务
(XaaS)
,大到综合性的基础设施,小到单一的云存储,你就不怕别人说一个什么时髦的新服务,都只不过是
“
机房
”
里的不同服务花样而已
!
六、云的诱惑
试想,有了云上的
“
机房
”
,你如果是中小企业的
IT
部经理或
CIO
,你还会在建设机房上操心供电、空调、消防、设备故障等等琐事吗
?
你还会去调研购买何种服务器设备吗
?
你只需要一个帐号、一个信用卡,你就可以在云上
“
机房
”
里随意创建任何服务器,喜欢就启动,不喜欢就删除。你可以安装所需要的操作系统、配置任何数据库。你甚至不需要为员工购置
PC
电脑,有
“
云桌面
”
就可以了。
英国政府用不到一年的时间,迅速建起了统一的
“
政府云
”(
简称
“G
云
”)
,目的是把国家各个政府部门的
IT
系统都逐步转移到
G
云上去。自
2012
年正式启用之日起,政府各个部门一律禁止购买硬件的服务器,所有新增内容都必须是从
G
云上创建。
不管是企业、政府、还是个人,如果想避开云,看来是很困难了。这就是为什么要多少了解一下“到底什么是云”。