百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

openstack学习笔记之一:基础知识

qihemm 2025-06-05 17:36 21 浏览 0 评论

1、什么是openstack

openstack是一套iaas解决方案
OpenStack是由美国国家宇航局(NASA)和RackSpace合作开发的旨
为公有云和私有云提供软件的开源项目,其目的在于提供可靠的云部署方案及良好的可扩展性。简单的说OpenStack就是云操作系统,或者说是云管理平平台,自身并不提供云服务,只是提供部署和管理平平台。

2、什么是云计算

基于互联网的相关服务的增加,使用和交付模式
-这种模式提供可用的,编辑的,按需的网络访问,进行可配置的计算资源共享池
-这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互
-通常涉及互联网来提供动态衣扩展且经常是虚拟化资源

3、三层网络


(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、什么是kvm

1)kvm的来源

KVM—基于内核的虚拟机(Kernel-Based Virtual Machine),将Linux内核变成Hypervisor的一种虚拟化技术,属于硬件级虚拟化类型的全虚拟化的解决方案。是Linux的内核特性,KVM需要两个条件:硬件支持全虚拟化,操作系统是Linux。

2)KVM的架构

如图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)qemu
Qemu是一个独立的虚拟化解决方案,通过intel-VT 或AMD SVM实现全虚拟化,安装qemu的系统,可以直接模拟出另一个完全不同的系统环境,虚拟机的创建通过qemu-image既可完成。QEMU本身可以不依赖于KVM,但是如果有KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。
(2)kvm
KVM是集成到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-qemu
Qemu将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)libvert
a)概念
虚拟云实现的三部曲:虚拟化技术实现–>虚拟机管理–>集群资源管理(云管理)。各种不同的虚拟化技术都提供了基本的管理工具。比如,启动,停用,配置,连接控制台等。这样在构建云管理的时候就存在两个问题:
((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–Heat

Orchestration服务支持多样化的综合的云应用,通过调用OpenStack-native REST API和CloudFormation-compatible Query API,支持:term:HOT <Heat Orchestration Template (HOT)>格式模板或者AWS CloudFormation格式模板
Compute–Nova
a、在OpenStack环境中计算实例的生命周期管理。
b、按需响应包括生成、调度、回收虚拟机等操作。
c、在节点上用于虚拟机的服务
d、Nova是一个分布式的服务
e、Nova被设计成在标准硬件上能够进行水平扩展
Nova 处于 Openstak 架构的中心,其他组件都为 Nova 提供支持:
f、Glance 为 VM 提供 image
g、Cinder 和 Swift 分别为 VM 提供块存储和对象存储
h、Neutron 为 VM 提供网络连接
j、nova compute通过libvirt管理kvm,计算节点是真正运行虚拟机的地方

相关推荐

VLOOKUP的18种高阶用法大公开!99%的人都不知道的神操作!

作为被头条用户催更的Excel课代表,今天带来让HR追着要模板、让老板主动加薪的VLOOKUP终极指南!从基础到高阶一网打尽,文末送36个行业专用模板!一、为什么你的VLOOKUP总报错?血泪大数据...

Vlooup公式,2种模糊查找匹配,1分钟学会

工作中,VLOOKUP公式使用频率是很高的,用来各种查找匹配问题今天我们分享两种模糊查找匹配问题,一种是文本的模糊查找匹配,一种是数字的模糊查找匹配问题1、文本模糊查找匹配使用模拟数据举个例子,原始数...

与vlookup功能相似的函数,照样搞定表格数据查询,简单还实用

在日常表格数据处理工作,说到数据查询,很多小伙伴首先想到的是Vlookup函数,老师的教程中也多次讲到Vlookup函数的用法和实例。其实在Excel中还有其他的数据查询函数公式或技巧,今天我们先来学...

别再折腾VLOOKUP了!DGET逆向查找10秒通关,小白必看

今天要掀翻一个“过气网红”——VLOOKUP!你是不是也经历过这些崩溃瞬间:逆向查找要交换列顺序,复制粘贴到手软!多条件查找要嵌套MATCH,公式长到怀疑人生!别忍了!今天教你用DGET函数一键封...

职场新人必学!VLOOKUP函数10分钟速成指南

正文:"今天来讲解办公人入职期初函数VLOOKUP,这是所有职场人最重要也是最基础的技能。掌握它,90%的数据查找再不用求人!特别献给刚入职场的你——别让Excel成为加班理由。"——...

巧用Vlookup函数揪出“第三者”(vlookup第三个参数是什么)

在一张Excel表格的重复记录中,让你快速列出每种不同物品第2次或第n次出现的记录,你会怎么做?Vlookup函数就有这个本事。举例来说,产品或者物流表格中往往会记录有同一货物的多笔数据(如下图的今日...

分享12个VLOOKUP超经典用法(vlookup通俗易懂)

刚毕业那会,面试的时候经常会被问到会不会用Excel?我就理直气壮地回答:“会啊。”毕竟,简历上可是写着熟练。接着面试官扔出一句“那你会VLOOKUP吗?”我还是会一口咬定:“我会。“其实,我都没用过...

查找匹配别只知道Vlookup,Sumifs也可以!

工作中遇到查找匹配问题的时候,大家第一反应是不是都想到的Vlookup公式呢,有没有小伙伴们给Sumifs一点点机会的呢,有时候Sumifs比Vlookup更好用1、Vlookup公式举个例子,左边是...

Excel函数讲解:VLOOKUP函数,轻松玩转数据查找

常用函数系列教学:VLOOKUP函数讲解(46)。不懂VLOOKUP函数怎么高效查找数据?闲话少叙直接开讲。基本含义:VLOOKUP函数用于在表格按垂直方向(到)上查找返回行数据。如何使用及注意事项?...

CHOOSEROWS+CHOOSECOLS原来是一个超级查找函数组合!

场景一:要在学生名册中,抽查一名学生成绩。公式:=CHOOSEROWS(A1:D5,2)解析:第一参数A1:D5为数据区域,第二参数2表示提取第2行数据。把数据区域改为A2:D5,结合RANDBETW...

数据查询不止有vlookup函数,自定义zlookup函数查询操作更高效

Excel数据查询,相信大家首先会想到vlookup函数。毋庸置疑vlookup函数在Excel数据查询中作用是非常的强大。但是它也有一些不能实现的数据查询。如上图所示,我们需要根据人员的出现次数,提...

「EXCEL进阶」VLOOKUP函数怎么查询一个值返回多个结果

前言:VLOOKUP函数一般一次只能返回一个结果,本例介绍通过辅助列的方法使VLOOKUP函数查询一个值,返回这个值对应的多个结果。使用场景举例:根据表格中同一数值,返回对应值的多个结果。比如这张数据...

WPS查找能手VLOOKUP函数使用方法讲解

各位同学好!今天我们来深度剖析WPS最实用的查找工具——VLOOKUP函数。这个函数能帮你在表格中快速定位并提取所需数据,可以帮你快速核对两批数据差异,还可以合并多个表格的关联信息,甚至可以帮你制作动...

Excel常用10个函数:跨表查找Vlookup,适用于大数据中查找精确值

Hello大家好,我是Office米,今天,我们将和大家一起分享交流,常用的10个函数之一:查找引用函数VLOOKUP。在说VLOOKUP函数之前,我们要先了解,平时Excel日常工作中会遇到哪些问题...

掌握了这个套路,无论用 Excel vlookup 函数查找第几次结果都很轻松

用vlookup查找默认情况下是一对一出结果,如果要一对多查找,就需要用到各种技巧,具体方法我写过非常多了,可以搜索一下历史记录。只要掌握了今天这个套路,无论你想查找第几次重复值,都易如反掌。案例...

取消回复欢迎 发表评论: