云计算:
定义:云计算是一种按使用量付费的模式,这种模式提供可用的,便捷的,按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用程序,服务),这些资源能够被快速提供,只需要投入很少的管理工作,或与服务供应商进行很少的交互。
云计算之前使用的模式与技术
1.IDC托管
2.IDC租用
3.虚拟主机(卖空间)
vps:虚拟专用主机 openvz(通过超卖技术坑人)xen(不支持)
云计算之前传统数据中心面临的问题
1.资源利用率低
2.资源分配不合理
3.初始成本高
4出差,安装时,费时费人力
云计算是什么
1.云计算是一个概念,不是任何技术(指的是资源使用和交付模式)
2.云计算使用方法必须通过网络来访问
3.云计算的优势,弹性付费,按需付费,快速扩展。
4.云计算不用关系底层基础设施架构(无需关心计算存储网络)
云计算的优势和特点
1.【超大规模】
海量动态资源池,灵活的调配和绑定
2.【
无处不在的网络访问】
云计算基于网络访问实现
3.
【服务的高可用性和通用性
】
(通过集成海量存储和高性能的的计算能力,
提供了较高的服务质量,自动检测失效节点并排除切换,不影响只能个体的运行。
通用性一个云可以支撑多个不同类型的应用同时运行)
4.【快速弹性伸缩】
(随客户的业务规模扩大进行扩张,不影响客户的业务发展)
5.随需应变的自助服务【按需服务】
(通过支付不同的费用获得不同级别的服务,无需了解云计算具体机制)
6【
.经济相对廉价】
7【自动化】
(无论是应用,服务,还是软硬件管理,主要通过自动化的方式管理和执行)
8.【高层次的编程模型】
云计算系统主要采用(mapreduce模型)
用户通过简单学习,
可以编写自己的云计算编程,
在云系统上执行。
9.【完善的运维机制】
(云的另一端,专业团队来帮助保护用户的利益)
10.虚拟化【?】
云计算的层次和分类
1.【云计算层次】
(一)基础设施服务层
(二)平台服务层
(三)软件服务层

【云计算分类】
1.公有云
2.混合云
3.私有云
4.行业云(tip:又被成为社区云,缺点支持范围小仅能针对某一行业;建设成本高)
实现云计算模式的方式
虚拟化
注释:
云计算不等于虚拟化,两者不能作比较;
云计算是一种资源和使用的交互方式;
虚拟化是一种具体的技术;
云计算需要虚拟化技术实现
二.虚拟化
1.什么是虚拟化?
虚拟化,是用过虚拟化技术将一套硬件虚拟为多台逻辑计算机(一块蛋糕分为几块小的蛋糕)
多台逻辑计算机可以运行不同的操作;
并且虚拟机之间互不影响。进而提升物理资源的利用率;
没有虚拟化的时候一套硬件仅能运行一个OS(操作系统)
使用虚拟化可以实现一套硬件运行多个OS;

2.虚拟化使用场景
场景1:一台服务器运行多个版本的PHP(会出现依赖关系)
场景2:机房的迁移,无需关心底层硬件或软件
场景3:开发环境和测试环境,使用虚拟化
场景4:不清楚硬件服务器运行什么(历史遗留)
场景5:业务的快速部署
3.虚拟化厂商
针对个人用户:VMware workstation,Vmware Fusion
针对企业用户:hype - v(微软) VMware Vsphere vcenter (vm基本上都是收费使用)
QEMU-KVM(平时都说出KVM)
基于虚拟化构建云平台:(openstack 或者zstack
【
ZStack是下一代开源的云计算IaaS(基础架构即服务)软件。
[1]
它主要面向的是未来的
智能
数据中心,通过提供的API来
管理
包括
计算
、存储和
网络
在内的数据中心的各种
资源
。跟OpenStack相比,ZStack具有易用、稳定、灵活、超高性能等特点。
[1-2]
】
4.虚拟化的实现原理
1 . 宿主机和虚拟机的区别
HostOS GuestOS
2.vmm【虚拟机的监控器,没有vmm无法实现安装虚拟化】
3.ring0 ~ ring3 ?
4.全虚拟化
5.半虚拟化
6.硬件辅助虚拟化
前言:前面所提到的虚拟化,不是一个硬件上安装多个操作系统,
而是在硬件基础上安装了一个特殊的操作系统(vmm)
用来监控虚拟机,实现虚拟化,一定要vmm

虚拟化中的宿主机,和客户机

3.ring0~ring3的区别
linux -x86来说
操作系统(内核)的代码运行在最高级别ring0上,可以使用特权指令,控制中断,修改页表,访问设备等等
应用程序的代码运行在最低级别ring3上,比如访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,
cpu的运行级别会发生从ring3到ring0的切换,跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成之后,从ring0返回ring3,这个过程也称作用户态和内核态的切换。
虚拟化就在这里遇到了问题,宿主机工作在ring0的,客户操作系统就不能在ring0了,但是客户操作系统(guest OS)并不知情,
但是在执行什么指令时,并无权限。所以这个时候虚拟机管理程序(VMM)来避免这件事情发生

2.VMM
运行架设在ring0上,一般以驱动程序的形式体现,驱动程序都是工作在ring0上,否则驱动不了设备
此时VMM工作在ring0上,我们的客户操作系统执行在ring1上,那么执行特权指令时,会触发异常(cpu机制
没权限的指令触发异常)然后通过VMM捕获异常,对异常进行二进制翻译以及模拟转换,调取相应的资源,最后返回到客户操作系统内,
客户操作系统接受后认为自己的特权指令工作正常,继续运行。
3.全虚拟化
全虚拟化通过二进制翻译技术,然后客户端始终认为自己运行在ring0上面。
弊端:二进制完全虚拟化是由于纯软件是实现的,所以性能极低。因为一条简单的一条指令可以执行完,
现在却要经过复杂的二进制翻译一个过程
4.半虚拟化
半虚拟化的思想就是让客户操作系统知道是在虚拟机上运行的,工作状态在非ring0,如果客户操作系统执行特权指令或感指令的时候,他认为没有权限执行的,所以通过Hypercall的方式主动告诉VMM,说它要执什么,然后VMM进行调用硬件资源给客户端使用,这种方式是实现的虚拟化就不需要vmm主动捕获异常,翻译模拟的过程了,所以性能耗损非常低(但是需要修改代码进行约束规范才能实现半虚拟化)
【简单说
半虚拟化,客户机知道自己是运行在虚拟机上,缺点:需要对客户机操作系统进行修改,所以对不能修改的系统(windows系统)不支持;优点:消耗资源小性能好,】
这是XEN这种半虚拟化架构的优势,这也是为什么XEN只支持虚拟化linux,无法虚拟化windos原因
5.硬件辅助虚拟化
【比前两者都好】
cpu厂商开始支持虚拟化,拿x86来说,inter-VT技术引入新的指令和新的模式,有root,和no-root两种模式,
并且两种模式都支持ring0~ring3这四个级别,vmm可以运行在root模式下,通常情况下,guestOS的核心指令可以直接下达计算机
硬件执行,而且不需要经过VMM,不过当客户操作系统执行特殊的时候系统回切换到vmm.让vmm来处理特殊指令,也就说硬件在这层做了一些区分,这样客户操作系统在全虚拟化下,就不需要此前捕捉异常来模拟实现虚拟化了。而且硬件辅助全虚拟化不需要对客户端操作系统进行修改

使用虚拟化后【资源能达到有效的利用和处理】、
图:左一:虚拟化前

虚拟化后
,将计算,储存,网络全部通过虚拟化将这些资源整合到一起,形成了一个资源池,那么这个资源池它会按需提取相应的资源,进而安装不同的操作,安装不同的应用提供不同的服务。
实际上是将物理资源进行整和和逻辑划分提供一些虚拟资源,为我们上层应用提供的服务,这样能够让我们的硬件资源使用率得到很大的提升,并且也会降低我们的IT成本,同事也能提高我们的效率

6.虚拟化主要厂商和产品
针对个人用户:VMware workstation vmware fusion
针对企业用户:hyper-V vmware Vsphere vcenter QEMU-KVM
虚拟化软件:
qemu 软件纯模拟全虚拟化软件,特别慢!AIX,兼容性好!
xen(半) 性能特别好,需要使用专门修改之后的内核,兼容性差! redhat 5.5 xen
KVM(linux) 全虚拟机,它有硬件支持cpu,基于内核,而且不需要使用专门的内核 centos6 kvm
性能较好,兼容较好
7.KVM虚拟化相关实战
1.qemu
2.KVM
3.qemu.-kvm
1.什么是QEMU
QEMU是主机上的一个VMM,通过动态二进制转换进行来模拟硬件设备,通常VM认为自己是直接与硬件进行交互,但是实际上VM和QEMU模拟出来的设备进行交互的,当VM 需要使用硬件时,QEMU将VM调用硬件的操作,通过二进制翻译成HOSTS的指令,之后交给真正的硬件处理 (软件级二进制模拟虚拟化)
2.什么是KVM
KVM全称Kernel-based virtual Machine内核级虚拟化技术,
使用KVM需要处理器硬件本身支持虚拟化发展,如inter VT和AMD-V技术
KVM包含一个内核模块KVM.ko用来实现虚拟化功能,以及和处理器相关的模块KVM-inter.ko或KVM-amd.ko
(内核模拟虚拟化)
3.QEMU-KVM二者组合和实现原理

8.KVM的管理方式
KVM工作在操作系统内核,用户如果需要管理虚拟机,必须借助管理工具来进行管理,在LINUX系统下提供了QEMU-KVM管理KVM 同时还提供了libvirt,virsh,等管理工具
libvirt 则是目前使用最为广泛的,对KVM虚拟机进行管理的工具和API
libvirt 是一个daemon进程,libvirt主要实现条调用qemu-KVM操作虚拟机
9.KVM虚拟化安装
KVM需要硬件支持,所以需要开启虚拟化支持
1个人电脑直接在bios设置开启虚拟化
2.硬件设备直接在BIOS设置开启CPU虚拟化
2.VM需要找到对应虚拟化开启对应的VT-EPT虚拟化技术(硬件辅助虚拟化)