为什么会出现云之传统数据中学面临的问题
物理服务器的利用率非常低,浪费资源,且资源分配不合理,比如一台服务器CPU使用率不到40%,或者某个应用需要的硬件配置低但是服务器硬件配置高等等。
云计算概念
云这个概念流行时间很久了,但是仍然很多人不懂不理解什么是云,所以在此先解释下什么是云:
云就是天上的云,天上的云由水蒸气遇冷凝聚而成,水蒸气由陆地或海洋等地表水蒸发而来,而地表水又通过大气降水的形式来获取,所以整个流程如下:
上图的特点就是:循环使用
那云还有一个功能就是动态分配:
我们指定地理环境导致降水不均,所以有时候需要人工参与降水,那么此时缺水的地方通过人工降水降水量会多点,这就形成了一个动态分配的功能,哪里需要多点就人工降雨,不需要的地方人工驱雨。
所以云计算它有以下三个特点:
- 它是一种模式
- 使用方法需要网络访问
- 按需付费,便捷的,可用的。
所以,综上所述,云的特点就是:按需分配(动态分配),循环使用。
云计算分类
- 私有云
数据安全性高,但是需要公司人工来搭建。 - 公有云
一般商业化,卖给个人或公司。特点就是数据不安全性,机密的数据不适合放在这里。 - 混合云
既有自己的私有云,也有购买到的阿里云的,混合使用就是混合云。
云计算分层
- SaaS(Software as a service)
软件服务,卖软件服务给用户,用户不需要关系软件版本升级,漏洞修补之类的信息,只需要学会使用就行了。 - Paas(platform as a service)
平台服务,我们不需要关心系统,中间价等等系统和硬件之类的信息,我们只需要关心自己开发的代码和相关的数据。 - Iaas( Infrastructure as a service)
基础设施服务,云供应商提供基础环境,比如确保网络畅通,云主机不会经常宕机等等,它就给你一个操作系统,操作系统下面的硬件我们作为使用者不需要关心。
SAAS,PAAS,IAAS的概念如下图所示:
云计算与虚拟化的关系
云计算依赖于虚拟化,虚拟化不等于云计算。
例如Openstack使用的KVM的技术。
所以下面说说KVM的虚拟化技术。
虚拟化技术-KVM(Kernel-based virtual machine)
虚拟化是一个广义的术语,是指计算机元件在虚拟的基础上而不是真实的基础上运行,是一个简化管理、管理资源的解决方案。
如上图所示,我们可以将一般的计算模型抽象成为一定的物理资源和运行于之上的计算元件,他们之间通过定义的物理资源接口进行交互。随着计算机硬件技术的发展,物力资源的容量越来越大而价格越来越低,在既有的计算元件架构下,物理资源不可避免地产生了闲置和浪费。为了充分利用新的物力资源,提高效率,一个比较直接的方法就是更新计算元件以利用更加丰富的物理资源。但是人们往往出于稳定性和兼容性的追求,并不愿意频繁地对已经存在的计算元件做大幅度的变更。虚拟化技术则是另辟蹊跷,通过引入一个新的虚拟化层,对下管理真实的硬件物理资源,对上提供虚拟的系统资源,从而实现了在扩大硬件容量的同时,简化软件的重新配置过程。
对于上端话说的资源这个词,我们可以理解为各式各样的形式,例如把系统以及提供的系统调用作为资源,那么虚拟化好就表现为操作系统虚拟化,在一台真实服务器上虚拟出多台linux系统。
在X86平台虚拟化技术中,新引入的虚拟化层通常称为虚拟机监控器(Virtual Machine Monitor),也叫做Hypervisor。虚拟机监控器运行的环境,也就是真实的物理平台,称之为宿主机。而虚拟出来的平台成为虚拟机,里面运行的系统对应地也成为客户端操作系统。
软件虚拟化和硬件虚拟化
在上面的虚拟化介绍基础之上,我们再说说软件虚拟化和硬件虚拟化。但是得首先了解一个概念:是不是什么物理资源都可以被虚拟化的。
如下图所示,实现虚拟化的第一步就在于,虚拟化层能够截获计算元件对物理资源的直接访问,并将其重定向到虚拟资源池中。根据虚拟化层是通过纯软件的方法,还是通过物理资源提供的机制来实现这种“截获并重定向”,我们可以把虚拟化划分为软件虚拟化和硬件虚拟化。
软件虚拟化
通过软件的方法在现有的物理平台上(往往不支持硬件虚拟化)实现物理平台访问的截获和模拟。
常见的软件虚拟机就是QEMU,它是通过软件的来仿真X86平台处理的取指,解码和执行,客户机的指令并不是在物理平台上的直接执行。由于所有的指令都是软件模拟的,因此性能往往较差,但是可以在同一平台上模拟不同的架构平台的虚拟机。
还有一种是VMware,VMware使用了动态二进制编译的技术。VMware软件在可控制的范围内,允许客户机的指令在物理平台上直接运行。但是客户机指令在运行前会被VMware扫描到,其中突破VMware限制的指令会被动态替换为可以在物理平台上直接运行的安全指令,或者替换为对VMware的软件掉哟个。这样做的好处就是比纯软件模拟有大幅提升。但是同时也失去了跨平台的能力。
硬件虚拟化
物理平台提供了对特殊指令的截获和重定向的硬件支持。甚至,新的硬件会提供额外的资源来帮助软件实现关键硬件资源的虚拟化,从而提升性能。
以X86平台的虚拟化为例,支持虚拟化技术的X86 CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集、VMM会容易将客户机置于一种受限制的模式下运行,一旦客户机试图访问物理资源,硬件会暂停客户机的运行,将控制权交回给VMM处理。VMM还可以利用硬件的虚拟化增加机制,将客户机在受限模式下对一些特定资源的访问,完全由硬件重定向到VMM指定的虚拟资源,整个过程不需要暂停客户机的运行和VMM软件参与。
由于虚拟化硬件提供全新的架构,支持操作系统直接在上面运行,无需进行二进制转换,减少了相关的性能开销,极大的简化了VMM设计,进而使VMM能够按通用的变准进行编写,性能更加强大。
硬件虚拟华技术是一套解决方案。完整的情况需要CPU,主板芯片组,BIOS和软件的支持。例如VMM软件或者某些操作系统本身。即使只是CPU支持虚拟化技术,在配合VMM软件的情况下,也会比完全不支持虚拟化技术的系统有更好的性能。
准虚拟化和全虚拟化
准虚拟化(半虚拟化 para-virtualization)
我们指定软件虚拟化可以在缺乏硬件虚拟化支持的平台上完全通过VMM软件来实现对各个虚拟机的监控,以保证他们之间彼此独立和隔离的。但是付出的代价是软件复杂度的增加和性能上的损失。减轻这种负担的一种方法就是,改动宿主机,使它以为自己运行在虚拟环境下,能够与虚拟机监控机(虚拟软件)来协同工作。这种方法就叫做准虚拟化,也叫做半虚拟化。本质上,准虚拟化弱化了对虚拟机特殊指令的被动截获或要求,将其转化宿主机操作系统的主动通知。但是,半虚拟化需要修改宿主机操作系统的源代码来实现主动通知。
XEN就是开源准虚拟化技术的一个例子。
全虚拟化(full virtaulization)
与半虚拟化技术不同,全虚拟化为宿主机提供了完整的虚拟X86平台,包括处理器,内存,外设,支持运行任何理论上可在真实物理平台上运行的操作系统,为虚拟机的配置提供了最大程度的灵活。不需要对客户机操作系统做任何修改即可正常运行任何非虚拟化环境中已存在基于X86平台的操作系统和软件,是全虚拟化最大的优势。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:1 云计算系列之云计算概述和KVM虚拟化简介 - Python技术站