(1)infrastructure as server(IaaS):根本举动步伐即做事,物理机的管理,虚拟机的管理,存储资源的管理。—供应给消费者的做事是对所有打算机根本举动步伐的利用,包括处理CPU,用户能够支配和运行任意软件,包括操作系统和运用程序.—iaas 常日分为三种用法:公有云,私有云,稠浊云、(2)platform as a service(PaaS):平台及做事,虚拟机搭建的开拓平台,比如配置好的Apache、MySql或者PHP环境,—以做事器平台或开拓环境作为做事进行供应就成为paas—运营商所需供应的做事,不仅仅是纯挚的根本平台,还针对该平台的技能支持做事,乃至针对该平台而进行的运用系统开拓,优化等做事—大略地说,paas平台是指定云环境中的运用根本举动步伐做事,也可以说是中间件即做事(3) software-as a service(SaaS):软件即做事,比如购物网站、博客网站、微博网站等。—是一种通过internet 供应软件的模式,厂商将运用软件统一支配在自己的做事器上—客户可以根据自己的实际需求,通过互联网向厂商订购所需的运用软件做事.—用户不用在购买软件,而是向供应商租用基于web的软件.来管理企业经营活动,不用对软件进行掩护,供应商会全权管理和掩护软件,同时也供应软件的离线操作和本地数据存储.
4、什么是kvm1)kvm的来源KVM—基于内核的虚拟机(Kernel-Based Virtual Machine),将Linux内核变成Hypervisor的一种虚拟化技能,属于硬件级虚拟化类型的全虚拟化的办理方案。是Linux的内核特性,KVM须要两个条件:硬件支持全虚拟化,操作系统是Linux。
如图2-1所示。

KVM作为Hypervisor运行在宿主机内核(Host OS Kernel),支持对CPU、内存、I/O的仿照,对虚拟机的监控,并为Qemu供应实体支撑。Qemu作为进程运行在宿主机的用户态,它基于KVM及内核的特性,为Guest OS仿照出CPU、内存、I/O等硬件,支撑Guest OS在进程中运行。虚拟化管理做事有多种,大部分都基于libvirt实现,libvirt 库是一种实现 Linux 虚拟化功能的 Linux API,它支持各种虚拟机监控程序。
3)qemu、kvm、qemu-kvm、libvert之间的关系(1)qemuQemu是一个独立的虚拟化办理方案,通过intel-VT 或AMD SVM实现全虚拟化,安装qemu的系统,可以直接仿照出另一个完备不同的系统环境,虚拟机的创建通过qemu-image既可完成。QEMU本身可以不依赖于KVM,但是如果有KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM供应的功能来提升性能。(2)kvmKVM是集成到Linux内核的Hypervisor是X86架构且硬件支持虚拟化技能(IntelVT或AMD-V)的Linux的全虚拟化办理方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。准确来说,KVM是Linux kernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不足的,由于用户无法直接掌握内核模块去干工作,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开拓者选择了已经成型的开源虚拟化软件QEMU。提及来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM利用了QEMU的一部分,并稍加改造,就成了可掌握KVM的用户空间工具了。以是你会看到,官方供应的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。也便是说,你可以只升级KVM模块,也可以只升级QEMU工具。这便是KVM和QEMU的关系。KVM内核模块本身只能供应CPU和内存的虚拟化,以是它必须结合QEMU才能构成一个完全的虚拟化技能,这便是下面要说的qemu-kvm。(3)kvm-qemuQemu将KVM整合进来,通过ioctl调用/dev/kvm接口,将有关CPU指令的部分交由内核模块来做。kvm卖力cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能仿照其他设备。qemu仿照IO设备(网卡,磁盘等),kvm加上qemu之后就能实现真正意义上做事器虚拟化。由于用到了上面两个东西,以是称之为qemu-kvm。Qemu仿照其他的硬件,如Network, Disk,同样会影响这些设备的性能,于是又产生了pass through半虚拟扮装备virtio_blk, virtio_net,提高设备性能。
(4)libverta)观点虚拟云实现的三部曲:虚拟化技能实现–>虚拟机管理–>集群资源管理(云管理)。各种不同的虚拟化技能都供应了基本的管理工具。比如,启动,停用,配置,连接掌握台等。这样在构建云管理的时候就存在两个问题:((1)) 如果采取稠浊虚拟技能,上层就须要对不同的虚拟化技能调用不同管理工具,很是麻烦。((2)) 虚拟化技能发展很迅速,系统虚拟化和容器虚拟化均在发展和蜕变中。可能有新的虚拟化技能更加符合现在的运用处景,须要迁移过去。这样管理平台就须要大幅改动。为了适应变革,我们惯用的手段是分层,使之相互透明,在虚拟机和云管理中设置一个抽象管理层。libvirt便是扮演的这个角色。libvirt供应各种API,供上层来管理不同的虚拟机。Libvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件凑集。它包括一个API库,一个守护程序(libvirtd)和一个命令行工具(virsh);libvirt本身构建于一种抽象的观点之上。它为受支持的虚拟机监控程序实现的常用功能供应通用的API。libvirt的紧张目标是为各种虚拟化工具供应一套方便、可靠的编程接口,用一种单一的办法管理多种不同的虚拟化供应办法。b)功能虚拟机管理:包括不同的领域生命周期操作,比如:启动、停滞、停息、保存、规复和迁移。支持多种设备类型的热插拔操作,包括:磁盘、网卡、内存和CPU。远程机器支持:只要机器上运行了libvirt daemon,包括远程机器,所有的libvirt功能就都可以访问和利用。支持多种网络远程传输,利用最大略的SSH,不须要额外配置事情。存储管理:任何运行了libvirt daemon的主机都可以用来管理不同类型的存储:创建不同格式的文件镜像(qcow2、vmdk、raw等)、挂接NFS共享、列涌现有的LVM卷组、创建新的LVM卷组和逻辑卷、对未处理过的磁盘设备分区、挂接iSCSI共享,等等等等。由于libvirt可以远程事情,所有这些都可以通过远程主机利用。网络接口管理:任何运行了libvirt daemon的主机都可以用来管理物理和逻辑的网络接口。虚拟NAT和基于路由的网络:任何运行了libvirt daemon的主机都可以用来管理和创建虚拟网络。c) 体系架构没有利用libvirt的虚拟机管理办法如图所示:
为支持各种虚拟机监控程序的可扩展性,libvirt履行一种基于驱动程序的架构,该架构许可一种通用的API以通用办法为大量潜在的虚拟机监控程序供应做事。下图展示了libvirt API与干系驱动程序的层次构造。这里也须要把稳,libvirtd供应从远程运用程序访问本地域的办法。
libvirt的掌握办法有两种:((1))管理运用程序和域位于同一节点上。管理运用程序通过libvirt事情,以掌握本地域。
(((2))管理运用程序和域位于不同节点上。该模式利用一种运行于远程节点上、名为libvirtd的分外守护进程。当在新节点上安装libvirt时该程序会自动启动,且可自动确定本地虚拟机监控程序并为其安装驱动程序。该管理运用程序通过一种通用协议从本地libvirt连接到远程libvirtd。
5)openstack, kvm, qemu-kvm及libvirt之间的关系
KVM是最底层的hypervisor,它是用来仿照CPU的运行,它短缺了对network和周边I/O的支持,以是我们是没法直接用它的。QEMU-KVM便是一个完全的仿照器,它是构建基于KVM上面的,它供应了完全的网络和I/O支持。Openstack不会直接掌握qemu-kvm,它会用一个叫libvirt的库去间接掌握qemu-kvm。libvirt供应了跨VM平台的功能,它可以掌握除了QEMU之外的仿照器,包括vmware, virtualbox, xen等等。所以为了openstack的跨VM性,以是openstack只会用libvirt而不直接用qemu-kvm。libvirt还供应了一些高等的功能,例如pool/vol管理。
6)openstack的架构A、做事Dashboard–Horizon
—用于管理openstack各种做事的,基于web的管理接口—通过图形界面实现创建用户,管理网络,启动实例等操作Networking–Neutron
1)、一种软件定的网络做事,供应网络连接做事,比如OpenStack打算。为用户供应API定义网络和利用,基于插件的架构,其支持浩瀚的网络供应商和技能。—用于创建网络,子网,路由器,管理浮动ip地址—可以实现虚拟交流机,虚拟路由器—管理OpenStack环境中所有虚拟网络根本举动步伐(VNI),物理网络根本举动步伐(PNI)的接入层。neutron架构:
(1)位于最上层的Neutron Server充当一个门派中的“掌门人”角色(RESTful Server),卖力接管来自外部门派(项目)的API要求,比如Nova API创建网络的要求。(2)位于中间层的Neutron plugin充当一个门派中的“信使”角色,卖力传达最高层指令给下面的人。(3)位于下层的Neutron Agent充当一个门派中“干活”角色,卖力实行一些详细的任务和操作。2)、Neutron分别供应了二层(L2)vSwitch交流和三层(L3)Router路由抽象的功能,对应于物理网络环境中的交流机和路由器实现。详细实现了如下功能:(1)Router:为租户供应路由、NAT等做事。(2)Network:对应于一个真实物理网络中的二层局域网(VLAN),从租户的的角度而言,是租户私有的。(3)Subnet:为网络中的三层观点,指定一段IPV4或IPV6地址并描述其干系的配置信息。它附加在一个二层Network上,指明属于这个network的虚拟机可利用的IP地址范围。B、存储Object Storage—Swift—通过一个 RESTful,基于HTTP的运用程序接口存储和任意检索的非构造化数据工具。—它拥有高容错机制,基于数据复制和可扩展架构。—Swift的目的是利用普通硬件来构建冗余的、可扩展的分布式工具存储集群,存储容量可达PB级。—Swift并不是文件系统或者实时的数据存储系统,它是工具存储,用于永久类型的静态数据的长期存储,这些数据可以检索、调度,必要时进行更新。最适宜存储的数据类型的例子是虚拟机镜像、图片存储、邮件存储和存档备份。—Swift无需采取RAID(磁盘冗余阵列),也没有中央单元或主控结点。Swift通过在软件层面引入同等性哈希技能和数据冗余性,捐躯一定程度的数据同等性来达到高可用性(High Availability,简称HA)和可伸缩性,支持多租户模式、容器和工具读写操作,适宜办理互联网的运用处景下非构造化数据存储问题。
Block Storage—Cinder为运行实例而供应的持久性块存储。它的可插拔驱动架构的功能有助于创建和管理块存储设备。1)、理解 Block Storage,操作系统得到存储空间的办法一样平常有两种:(1)通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区、格式化、创建文件系统;或者直策应用裸硬盘存储数据(数据库)(2)通过 NFS、CIFS 等 协议,mount 远程的文件系统第一种裸硬盘的办法叫做 Block Storage(块存储),每个裸硬盘常日也称作 Volume(卷)。第二种叫做文件系统存储。NAS 和 NFS 做事器,以及各种分布式文件系统供应的都是这种存储。2)、Block Storage Servicet 供应对 volume 从创建到删除全体生命周期的管理。从 instance 的角度看,挂载的每一个 Volume 都是一块硬盘。OpenStack 供应 Block Storage Service 的是 Cinder,其详细功能是:(1)供应 REST API 利用户能够查询和管理 volume、volume snapshot 以及 volume type。(2)供应 scheduler 调度 volume 创建要求,合理优化存储资源的分配。(3)通过 driver 架构支持多种 back-end(后端)存储办法,包括 LVM,NFS,Ceph 和其他诸如 EMC、IBM 等商业存储产品和方案。C、共享做事Identity service–Keystone—用于组件之间的统一认证,供应认证和授权的集中身份管理做事—供应了集中的目录做事—支持多种身份认证模式,如密码认证,令牌认证,以及AWS(亚马逊web做事)登录—为用户和其他做事供应SSO认证做事Image service–Glance—存储和检索虚拟机磁盘镜像,OpenStack打算会在实例支配时利用此做事。—运行用户为直接存储拷贝做事器镜像—这些镜像可以用于新建虚拟机的模板Telemetry–Ceilometer为OpenStack云的计费、基准、扩展性以及统计等目的供应监测和计量。D、高层次做事
Orchestration–HeatOrchestration做事支持多样化的综合的云运用,通过调用OpenStack-native REST API和CloudFormation-compatible Query API,支持:term:HOT <Heat Orchestration Template (HOT)>格式模板或者AWS CloudFormation格式模板Compute–Novaa、在OpenStack环境中计算实例的生命周期管理。b、按需相应包括天生、调度、回收虚拟机等操作。c、在节点上用于虚拟机的做事d、Nova是一个分布式的做事e、Nova被设计成在标准硬件上能够进行水平扩展Nova 处于 Openstak 架构的中央,其他组件都为 Nova 供应支持:f、Glance 为 VM 供应 imageg、Cinder 和 Swift 分别为 VM 供应块存储和工具存储h、Neutron 为 VM 供应网络连接j、nova compute通过libvirt管理kvm,打算节点是真正运行虚拟机的地方