云计算,简单点理解就是以一个资源池的方式,弹性的提供可靠的计算,存储资源。呈现给使用者的界面不再是具体的哪个 PC 或几台 PC ,而是一个统一的界面,需要多少资源等。
云计算的划分
云服务上划分
主要从服务包装程度上划分,包括了 SAAS, PAAS, IAAS 。前两者都是包装的程度要高一些。
云计算的应用划分
i. 集群计算,代表有 hadoop ,适用于那些大型计算类的数据挖掘,海量数据处理等。
ii. 云存储,代表有 hdfs, swift
iii. 提供弹性的计算单元服务,这类服务可以作为大网站的峰值期间弹性增加服务,如 Amazon 的 EC2
目前 iii 主要是以虚拟机的方式提供对外服务的。
下面我们谈谈与其相关的一些 虚拟化 管理软件。
虚拟化管理软件
目前主流的虚拟管理软件分为两个主流
浅包装,他们对 KVM 或 XEN 进行了简单的包装,大部分如此,比如 convirture 和 XenServer 等。
全托管。稍微复杂些,对资源进行了集中式管理,对虚拟机资源分配提供黑盒式的服务,如 Openstack 和Eucalyptus 。
这些软件具体的安装实现上又区分有 agent 和无 agent ,个人感觉差不多,所谓的无 agent 其实也是利用了linux 自带的命令进行操作的,实质上都是基于 KVM 和 XEN 的管理。
这些软件提供给终用户的功能:
虚拟机支持
OpenStack 和 Eucalyptus 只提供 VM 模板的方式,主控并不会记住具体运行该虚拟机是在那台服务的那个IMAGE 上,所以在该虚拟机上所有修改在其关闭后会丢失(重启后 OpenStack 会使用模板 EMI 根据某种算法重新运行在某台机器上,之前那个会丢失了; Amazon 在这种情况下会自动为其另存一个 EMI)
其它的模板和console都支持
存储支持
Eucalyptus 增加可以 mount 弹性存储功能,这些存储也是由 Eucalyptus 托管的,对用户是透明的。
OpenStack 也提供了 mount弹性存储。它的体系中也有额外独立的存储组件,目前 Swift 实现了这套功能。 提供了一套基于 rest API 的对象存储方案(对存储内容有冗余功能,保证数据不因硬件问题而丢失)。这套东西是以一个独立功能组件提供的,没有依赖 OpenStack ,所以其它解决方案可以自由使用。
其它的软件还没有自带的存储组件
KVM 和 XEN
这些虚拟管理软件都支持 KVM 和 XEN ,它们的虚拟化终都将物理机上通过KVM或XEN或其它虚拟化软件来实现。
KVM和XEN的区别
XEN 比 KVM 性能更好
XEN 是半虚拟化,这样更靠近硬件层,性能高;不足是需要定制的操作系统,这样灵活度不够
TMEM 技术( Transcendent Memory ,超内存技术)等技术,资源分配更具有弹性,当前不活跃的虚拟机占用资源不多,这样同时支持的虚拟机更多,特别适合那些 UI 测试机;不足是隔离性不好,部分高带宽应用会影响其它人。
这些只是主要特点,很多细节,比如网卡,备份等。
KVM 的优点是隔离性更好,几乎是独占资源。